原创 同步整形电路原理

2007-3-2 16:47 3479 2 2 分类: FPGA/CPLD

library ieee;


use ieee.std_logic_1164.all;


entity dou is


    port(din,clk:in std_logic;    


                dout:out std_logic);


end dou;


architecture beha of dou is


signal x,y:std_logic;


begin


    process(clk)


    begin  


        if clk'event and clk='1' then         


            x<=din;        


            y<=x;


        end if;


        dout<=x and (not y);


end process;


end beha;


         这是一个同步整形电路,在进程中,信号不是在改变值之后立即变化的,其他语句使用的还是该信号的旧值,所以如果y=0,那么在时钟的上升沿:


如果:


           din="1";则x=1,y=0(虽然进程中改变了值,但不会立即被使用);则dout=x and (not y)=1;


如果:


          din="1超过一个时钟宽";则x=1,y=1(前次执行进程后,y的值已经改变了);则dout=x and (not y)=0;如果din在时钟周期内出现抖动,则因为不执行进程,所以输出无影响,还是被整成一个时钟宽度。


         所以不管是长按还是短按你的键,有效高电平宽度等于时钟。

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /2 下一条