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

对一个方波的任意周期延迟设计VHDL代码Quartus仿真

10/14 09:26
419
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2411191SKC49.doc

共1个文件

名称:对一个方波的任意周期延迟设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

对一个方波的任意周期延迟

用EPM570T100硬件,实现对一个方波(占空比可能不是50%)的任意周期延迟(延迟时间不大于信号正半周时间),延迟周期数由16位总线设置;信号频率小于400Khz,时钟周期240Mhz。用vhdl语言编写,仿真和测试波形。软件用quartus9.0。

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

演示视频:

设计文档:

1. 工程文件

Quartus9.0版本

2. 程序文件

3. 程序编译

4. 仿真图

仿真图说明:图中time_set信号即为16位并行输入的延迟时间,图中可以看到可以按设计的值进行延迟,需要说明的是,由于输入的波形和时钟是异步的,故代码中使用了2级触发器进行打拍,以保证信号无亚稳态,所以实际输出的波形会比设置的延迟周期多2拍。比如设置time_set为9,实际延迟11个时钟后输出。可以按所需的减2进行设置,或者删除2级同步触发器也可以。

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?delay_wave?IS
???PORT?(
??????clk???????:?IN?STD_LOGIC;--时钟
??????wave_in???:?IN?STD_LOGIC;--输入方波
??????time_set??:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0);--输入16位延迟值
??????wave_out??:?OUT?STD_LOGIC--输出波形
???);
END?delay_wave;
ARCHITECTURE?RTL?OF?delay_wave?IS
?--内部信号定义??
???SIGNAL?wave_buf0?:?STD_LOGIC:='0';
???SIGNAL?wave_buf1?:?STD_LOGIC:='0';
???SIGNAL?rst_n?????:?STD_LOGIC:='1';
???SIGNAL?count_h???:?STD_LOGIC_VECTOR(15?DOWNTO?0):=x"0000";
???SIGNAL?count_l???:?STD_LOGIC_VECTOR(15?DOWNTO?0):=x"0000";
BEGIN
??????rst_n?<='1'?;--不复位
--D触发器打拍
???PROCESS?(clk,?rst_n)
???BEGIN
??????IF?((NOT(rst_n))?=?'1')?THEN
?????????wave_buf0?<=?'0';
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????wave_buf0?<=?wave_in;
??????END?IF;
???END?PROCESS;
--D触发器打拍???
???PROCESS?(clk,?rst_n)
???BEGIN
??????IF?((NOT(rst_n))?=?'1')?THEN
?????????wave_buf1?<=?'0';
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????wave_buf1?<=?wave_buf0;
??????END?IF;
???END?PROCESS;
???
???--使用2级D触发器打拍后的信号
???
???--计数
???PROCESS?(clk,?rst_n)
???BEGIN
??????IF?((NOT(rst_n))?=?'1')?THEN
?????????count_h?<=?x"0000";--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(wave_buf1?=?'1')?THEN--计数高电平
if(count_h=x"FFFF")THEN
count_h<=x"FFFF";
else
count_h?<=?count_h?+?x"0001";
end?if;
?????????ELSE
????????????count_h?<=?x"0000";
?????????END?IF;
??????END?IF;

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

  • 2-2411191SKC49.doc
    下载

相关推荐