AD7606驱动代码设计VHDL代码Quartus仿真

名称:AD7606驱动代码设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

AD7606B输入

(4800-输入)/8(仿真时=学号后3位),

PWM输出

(600=100%)

AD7606驱动代码.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 工程文件


2. 程序文件





3. 程序编译


4. RTL图


5. 仿真图

整体仿真图


AD7606模块



计算模块



PWM模块






部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--AD7606模块
ENTITY AD7606 IS
   PORT (
      sys_clk       : IN STD_LOGIC;--时钟
      reset     : IN STD_LOGIC;--复位
      RD_n        : OUT STD_LOGIC;--AD引脚
  CONVST   : OUT STD_LOGIC;--AD引脚
      ADRESET   : OUT STD_LOGIC;--AD引脚
      CS_n        : OUT STD_LOGIC;--AD引脚
      BUSY      : IN STD_LOGIC;--AD引脚
      DB_IN   : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--AD值引脚  
      OS        : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--AD引脚
      DOUT       : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--采样值
   );
END AD7606;
ARCHITECTURE RTL OF AD7606 IS
   SIGNAL AD_state:  STD_LOGIC_VECTOR(2 DOWNTO 0);
   SIGNAL div_count  : STD_LOGIC_VECTOR(7 DOWNTO 0);
   SIGNAL CONVST_signal : STD_LOGIC;
   SIGNAL read_en      : STD_LOGIC;
   SIGNAL RD_END      : STD_LOGIC;
   SIGNAL count       : STD_LOGIC_VECTOR(1 DOWNTO 0);
   SIGNAL VIM_CNT        : STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
   OS <= "000";
   ADRESET <= NOT reset ;
   
   --AD状态控制
   PROCESS (sys_clk, reset)
   BEGIN
      IF (reset = '0') THEN
         AD_state <= "000";
 div_count <= "00000000";
      ELSIF (sys_clk'EVENT AND sys_clk = '1') THEN
      CASE AD_state IS
         WHEN "000" =>
IF (div_count = "01100100") THEN
div_count <= "00000000";--计数到100
ELSE
div_count <= div_count + "00000001";
END IF;
            IF (div_count = "01100100") THEN---控制采样率,为系统时钟的100分频
               AD_state <= "001";
            END IF;
         WHEN "001" =>
            IF (CONVST_signal = '1') THEN--检测CONVST
               AD_state <= "010";
            END IF;
         WHEN "010" =>
            IF (BUSY= '0') THEN
AD_state <= "011";--检测BUSY
            END IF;
         WHEN "011" =>--读数
            AD_state <= "100";
         WHEN "100" =>
            IF (RD_END = '1') THEN--读完成
               AD_state <= "000";
            END IF;
         WHEN OTHERS =>
            AD_state <= "000";
      END CASE;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » AD7606驱动代码设计VHDL代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员