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

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

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

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
    下载

相关推荐