• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的AD7705输入设计VHDL代码Quartus仿真

07/25 11:13
388
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240520124410Y1.doc

共1个文件

名称:基于FPGAAD7705输入设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

AD7705输入,(4000-输入)/7(仿真输出=学号后3位),8位∪ART发送输出。

每位交一个pdf文档,联系应用井至少比较一种不同方案进行方案分析。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

AD7705模块仿真

--042=(4000-x)/7

--x=3706

--==0000111001111010

数据拆分模块仿真

分频模块

UART发送模块

部分代码展示:

-042=(4000-x)/7
--x=3706
--==0000111001111010
LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
USE ieee.std_logic_arith.all;
--AD7705驱动
ENTITY AD7705_driver IS
   PORT (
      clk_in                : IN STD_LOGIC;
      reset_n                : IN STD_LOGIC;--系统复位信号,低有效
      AD_data_out            : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--输出AD数据
      AD_DRDY_n              : IN STD_LOGIC;--AD7705
      AD_dout                : IN STD_LOGIC;--AD7705
      AD_CS                  : OUT STD_LOGIC;--AD7705
      AD_clk                 : OUT STD_LOGIC;--AD7705
      AD_din                 : OUT STD_LOGIC--AD7705
   );
END AD7705_driver;
ARCHITECTURE behave OF AD7705_driver IS
   type state_type is(
      s_reset                ,--FFFF
      s_communicate_clkreg   ,--8'h20
      s_clk_reg              ,--8'h03
      s_communicate_setreg   ,--8'h10
      s_set_reg              ,--8'h40
      s_communicate_datareg  ,--8'h38,读通道1
      s_read_data            ,--读数16bit
      s_wait_DRDY             --等待DRDY==0
   );
   SIGNAL state :state_type:=s_reset;   
   --定义寄存器
   SIGNAL communicate_clkreg  : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00100000";
   SIGNAL clk_reg             : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000011";
   SIGNAL communicate_setreg  : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00010000";
   SIGNAL set_reg             : STD_LOGIC_VECTOR(7 DOWNTO 0) := "01000000";
   SIGNAL communicate_datareg : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00111000";
   
   SIGNAL cycle_cnt           : integer := 0;
   SIGNAL AD_clk_reg          : STD_LOGIC := '0';
   SIGNAL AD_clk_reg_cnt      : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
   SIGNAL clk_en              : STD_LOGIC := '0';
   SIGNAL AD_din_reg          : STD_LOGIC := '0';
   SIGNAL AD_clk_reg_buf      : STD_LOGIC := '0';
   SIGNAL AD_clk_reg_down     : STD_LOGIC;
   SIGNAL AD_clk_reg_rise     : STD_LOGIC;
   
   SIGNAL AD_data             : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000";
SIGNAL result  : INTEGER := 0; --计算结果
BEGIN
   AD_CS <= '0';--CS保持低电平
   
   --AD_clk最大5M,上升沿读写
   PROCESS (clk_in)
   BEGIN
      IF (clk_in'EVENT AND clk_in = '1') THEN
         IF (reset_n = '0') THEN
            AD_clk_reg_cnt <= "00000000";
         ELSIF (AD_clk_reg_cnt = "00001001") THEN--使用5M时钟,50/5=10;
            AD_clk_reg_cnt <= "00000000";
         ELSE
            AD_clk_reg_cnt <= AD_clk_reg_cnt + "00000001";
         END IF;
      END IF;
   END PROCESS;
   
   --50M分频为5MHz
   PROCESS (clk_in)
   BEGIN
      IF (clk_in'EVENT AND clk_in = '1') THEN
         IF (AD_clk_reg_cnt >= "00000101") THEN
            AD_clk_reg <= '1';
         ELSE
            AD_clk_reg <= '0';
         END IF;
      END IF;
   END PROCESS;
   
   AD_clk <= AD_clk_reg AND clk_en;--5M
   AD_din <= AD_din_reg AND clk_en;
   PROCESS (clk_in)
   BEGIN
      IF (clk_in'EVENT AND clk_in = '1') THEN
         AD_clk_reg_buf <= AD_clk_reg;
      END IF;
   END PROCESS;
   
   AD_clk_reg_down <= NOT(AD_clk_reg) AND AD_clk_reg_buf;--AD_clk_reg的下降沿
   AD_clk_reg_rise <= AD_clk_reg AND NOT(AD_clk_reg_buf);--AD_clk_reg的上升沿
   
   --初始化及读取AD值状态机
   PROCESS (clk_in)
   BEGIN
      IF (clk_in'EVENT AND clk_in = '1') THEN
         IF (reset_n = '0') THEN
            state <= s_reset;
            cycle_cnt <= 0;
            clk_en <= '0';
            communicate_clkreg <= "00100000";
            clk_reg <= "00000011";
            communicate_setreg <= "00010000";
            set_reg <= "01000000";
            communicate_datareg <= "00111000

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=767

  • 2-240520124410Y1.doc
    下载

相关推荐