名称:AD7706b驱动及PWM波输出设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
AD7606B输入
(4800-输入)/8(仿真时=学号后3位)
PWM输出
(600=100%)
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
PWM占空比为学号除以600乘以100%
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
整体仿真图
AD7606B模块仿真
PWM模块仿真
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; --8通道adc7606b的硬件模式,并行输出模式 ENTITY?AD7606B?IS ???PORT?( ??????clk???????:?IN?STD_LOGIC;--时钟 ??????rst_n?????:?IN?STD_LOGIC;--复位 ??????os????????:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0);--输出低电平 ??????adc_cvt???:?OUT?STD_LOGIC;--convst ??????adc_rst???:?OUT?STD_LOGIC;--高电平复位 ??????rd????????:?OUT?STD_LOGIC;--低电平读 ??????cs????????:?OUT?STD_LOGIC;--低电平使能 ??????busy??????:?IN?STD_LOGIC;--忙 ??????ad_data???:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0);--并行输入AD ??????ch1???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--输出通道1 ??????ch2???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--输出通道2 ??????ch3???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--输出通道3 ??????ch4???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--输出通道4 ??????ch5???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--输出通道5 ??????ch6???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--输出通道6 ??????ch7???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--输出通道7 ??????ch8???????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0)?--输出通道8 ???); END?AD7606B; ARCHITECTURE?behave?OF?AD7606B?IS ???type?state?is?( ??????IDLE??????, ??????CVT???????, ??????BUSY_S??????, ??????RD_ST?????, ??????GET_DATA?? ???); ???SIGNAL?state_c???????:?state; ???SIGNAL?flag??????????:?STD_LOGIC; ??? ???SIGNAL?state_n???????:?state; ???SIGNAL?get_data_en???:?STD_LOGIC; ??? ???SIGNAL?cnt_mum???????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?cnt_cvt???????:?STD_LOGIC_VECTOR(1?DOWNTO?0); ???SIGNAL?cnt_ch????????:?STD_LOGIC_VECTOR(2?DOWNTO?0); ???SIGNAL?adc_cvt_buf?:?STD_LOGIC; ???SIGNAL?rd_buf??????:?STD_LOGIC; BEGIN ???adc_cvt?<=?adc_cvt_buf; ???rd?<=?rd_buf; ??? ???os?<=?"000";--输出0 ???adc_rst?<=?NOT(rst_n);--取反 ???get_data_en?<=?'1'?when?(cnt_mum?=?"11111001")?else?'0';--采样使能 ??? --计数250 ???PROCESS?(clk,?rst_n) ???BEGIN ??????IF?((NOT(rst_n))?=?'1')?THEN ?????????cnt_mum?<=?"00000000"; ??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????IF?(cnt_mum?=?"11111001")?THEN ????????????cnt_mum?<=?"00000000";--计数到11111001=249 ?????????ELSE ????????????cnt_mum?<=?cnt_mum?+?"00000001";--计数 ?????????END?IF; ??????END?IF; ???END?PROCESS; ??? ???--状态跳转 ???PROCESS?(clk,?rst_n) ???BEGIN ??????IF?((NOT(rst_n))?=?'1')?THEN ?????????state_c?<=?IDLE; ??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????state_c?<=?state_n; ??????END?IF; ???END?PROCESS;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1029
							阅读全文
							
						
					
								
								
								
352