名称:AD7321代码12位ADC,SPI接口模数转换连接DAC0832输出
软件:QuartusII
语言:VHDL
代码功能:
使用VHDL语言编写代码,实现AD7321的控制,将模拟信号转换为数字信号,再经过处理后,将数据通过DAC0832转换为模拟信号输出
AD7321输入,(2000-输入)/6(仿真输出=009),DAC0832输出。
要求:有vhdl代码(详尽注释),有fpga连线图,有完整功能仿真结果,有方案分析。
演示视频:AD7321代码12位ADC,SPI接口模数转换连接DAC0832输出
FPGA代码Verilog/VHDL代码资源下载网:www.hdlcode.com
代码下载:
AD7321代码12位ADC,SPI接口模数转换连接DAC0832输出(代码在文末付费下载)软件:QuartusII语言:VHDL代码功能:使用VHDL语言编写代码,实现AD7321的控制,将模拟信号转换为数字信号,再经过处理后,将数据通过DAC0832转换为模拟信号输出AD7321输入,(2000-输入)/6(仿真输出=009),DAC0832输出。要求:有vhdl代码(详尽注释),有fp名称:AD7321代码12位ADC,SPI接口模数转换连接DAC0832输出(代码在文末付费下载)软件:QuartusII语言:VHDL代码功能:使用VHDL语言编写代码,实现AD7321的控制,将模拟信号转换为数字信号,再经过处理后,将数据通过DAC0832转换为模拟信号输出AD7321输入,(2000-输入)/6(仿真输出=009),DAC0832输出。要求:有vhdl代码(详尽注释),有fphttp://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=219
部分代码展示
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --AD控制模块,输出011110011010 ENTITY AD7321 IS PORT ( clk : IN STD_LOGIC;--时钟 rst : IN STD_LOGIC;--复位 CS_n : OUT STD_LOGIC;--AD控制信号 SCLK : OUT STD_LOGIC;--AD控制信号 DOUT : IN STD_LOGIC;--AD控制信号 DIN : OUT STD_LOGIC;--AD控制信号 DB : OUT STD_LOGIC_VECTOR(11 DOWNTO 0)--输出AD值 ); END AD7321; ARCHITECTURE behaval OF AD7321 IS TYPE State_type IS (s_init, s_cs_h, s_sclk, s_end); -- 定义状态 SIGNAL state : State_type; SIGNAL cs_h_cnt : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--CS计数 SIGNAL sclk_cnt : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";--sclk计数 BEGIN --状态机控制 PROCESS (clk, rst) BEGIN IF (rst = '1') THEN--复位 state <= s_init; ELSIF (clk'EVENT AND clk = '1') THEN--时钟上升沿 CASE state IS WHEN s_init =>--初始状态 state <= s_cs_h; WHEN s_cs_h =>--cS高电平状态 IF (cs_h_cnt >= "1010") THEN--计数10个时钟 state <= s_sclk; END IF; WHEN s_sclk =>--SCLK状态 IF (sclk_cnt >= "00100000") THEN--计数32时钟 state <= s_end;--结束 END IF; WHEN s_end =>--结束状态 state <= s_init; WHEN OTHERS => END CASE; END IF; END PROCESS; --根据状态控制CS信号 PROCESS (clk, rst) BEGIN IF (rst = '1') THEN CS_n <= '1';--复位 ELSIF (clk'EVENT AND clk = '1') THEN--时钟上升沿 IF (state = s_cs_h) THEN--CS高电平状态 CS_n <= '1';--输出高电平 ELSIF (state = s_sclk) THEN--SCLK状态 CS_n <= '0';--输出低电平 END IF; END IF; END PROCESS; --根据状态控制SCLK信号 PROCESS (clk, rst) BEGIN IF (rst = '1') THEN SCLK <= '1';--复位 ELSIF (clk'EVENT AND clk = '1') THEN--时钟上升沿 IF (state = s_sclk) THEN--SCLK状态 SCLK <= NOT(sclk_cnt(0));--SCLK输出sclk_cnt(0)取反信号作为SCLK ELSIF (state = s_end) THEN SCLK <= '1'; END IF; END IF; END PROCESS;
设计文档:
设计文档.doc
1. 工程文件
2. 程序文件
连线图
3. 程序编译
4. RTL图
5. 仿真图