软件:Quartus
语言:VHDL
代码功能:
信号发生器设计
信号发生器由波形选择开关控制波形的输出,分别能输出正弦波、方波和三角波三种波形,波形的周期为2秒(由40M有源晶振分频控制)。
考虑程序的容量,每种波形在一个周期内均取16个取样点,每个样点数据是8位(数值范围:00000000~1111111),要求将D/A变换前的8位二进数据(以十进制方式)输出到数码管动态演示出来。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; ENTITY?wave_generation?IS ???PORT?( ??????clk_in?????????:?IN?STD_LOGIC;--输入时钟40M ??????sys_rst?????????:?IN?STD_LOGIC;--高电平复位 ?????? ??????wave_select?????:?IN?STD_LOGIC_VECTOR(1?DOWNTO?0);--00方波;01-三角波;10-正弦波 HEX2?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管 HEX1?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管 HEX0?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--数码管 ???); END?wave_generation; ARCHITECTURE?behaviour?OF?wave_generation?IS --分频模块,40m分频到8hz COMPONENT?div?IS ???PORT?( ?????????clk_in?:?IN?STD_LOGIC; ?????????clk_out?:?OUT?STD_LOGIC ???); END?COMPONENT; ???--波形发生模块 COMPONENT?carrier_wave?IS ??????PORT?( ?????????clk?????????????:?IN?STD_LOGIC; ?????????rst?????????????:?IN?STD_LOGIC; ?????????triangular_wave?:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????square_wave?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????sin_wave????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ??????); ???END?COMPONENT; --3选1模块,00方波;01-三角波;10-正弦波;wave_select控制3选1 COMPONENT?MUX_41?IS ???PORT?( ?????????triangular_wave?:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????square_wave?????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????sin_wave????????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????wave_select?????:?IN?STD_LOGIC_VECTOR(1?DOWNTO?0);--00方波;01-三角波;10-正弦波 ?????????wave_data???????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--波形输出 ???); END?COMPONENT; --数码管显示模块 COMPONENT?display?IS ???PORT?( ??????wave????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);--波形 HEX2?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管 HEX1?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管 HEX0?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--数码管 ???); END?COMPONENT; ???SIGNAL?sys_clk?:?STD_LOGIC; ???SIGNAL?triangular_wave?:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?square_wave?????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?sin_wave????????:?STD_LOGIC_VECTOR(7?DOWNTO?0); SIGNAL?wave_data???????:?STD_LOGIC_VECTOR(7?DOWNTO?0);--波形输出 BEGIN --分频模块,40m分频到8hz div_U?:?div ???PORT?MAP( ?????????clk_in=>clk_in, ?????????clk_out=>sys_clk ???); ??? ???--波形产生模块 ???carrier_wave_ge?:?carrier_wave ??????PORT?MAP?( ?????????clk??????????????=>?sys_clk, ?????????rst??????????????=>?sys_rst, ?????????triangular_wave??=>?triangular_wave, ?????????square_wave??????=>?square_wave, ?????????sin_wave?????????=>?sin_wave ??????);
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=565
阅读全文
265