微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一个延后半个周期输出的D触发器的分析

一个延后半个周期输出的D触发器的分析

时间:10-02 整理:3721RD 点击:
library ieee;use ieee.std_logic_1164.all;entity d_ffp is        port(clk,d:in std_logic;                                q:out std_logic);end d_ffp;architecture one of d_ffp is        signal q1: std_logic;        begin        process(cl)        begin                if clk'event and clk='1'                then q1<=d;                end if;                q<=q1;        end process;end architecture one;仿真后可发现其信号的输出延后了半个时钟周期,这样的结果是由信号的赋值特性造成的。当时钟发生变化时,进程启动,假设这时时钟上升沿到来,便将d的值赋给q1,但由于信号的赋值是在进程结束时才完成的,因此,当执行到语句“q<=q1"时,q1的值还不是等于d,因此q的值也就得不到更新。到了时钟下降沿到来时,clk再次变化,进程再次启动,由于此时不是时钟上升沿,所以不执行语句”q1<=d"而执行“q<q1",把上次q1得到的新值赋给q,因此,从波形图上可以看到q是在时钟下降沿到来时更新的。要使q在上升沿到来时更新,有两种办法,一种就是把语句“q<q1"置于进程之外,另一种,就是讲q1定义为变量。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top