文档详情

触发器、计数器、数字钟设计.ppt

发布:2018-03-04约8.98千字共30页下载文档
文本预览下载声明
触发器、计数器、数字钟设计 一、触发器设计 触发器触发方式的描述 触发器要在时钟信号的驱动下,才可以改变其输出。触发器的驱动方式有: 电平触发,包括:高电平触发和低电平触发; 边沿触发,包括:上升沿触发和下降沿触发。 利用进程语句描述触发器的驱动方式: 1) 电平驱动: PROCESS( d ) . . . BEGIN IF clk=‘1’ THEN . . . 时钟信号clk和输入d作为进程的敏感信号,clk或d发生变化时都会使进程语句执行。 当clk为高电平时,才会执行条件句内的功能语句。 ... PROCESS (CLK,D) BEGIN IF CLK = ‘1’ THEN Q= D ; END IF; END PROCESS ; P119【例4-14】 2) 边沿触发 PROCESS(clk) . . . BEGIN IF clk=‘1’ THEN . . . PROCESS . . . BEGIN WAIT UNTIL clk=‘1’; . . . 使用了等待语句wait until就不能使用敏感信号表。 等待语句放在顺序语句的开头或结尾处。 当clk变化且变化后为‘1’ 时,wait until语句才结束等待,程序继续执行后面的语句。 PROCESS(clk) . . . BEGIN IF clk=‘1’ THEN . . . PROCESS . . . BEGIN WAIT UNTIL clk=‘1’; . . . ... PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D; END IF; END PROCESS ... PROCESS BEGIN wait until CLK = 1; Q = D ; END PROCESS; P118【例4-13】 P118【例4-12】 利用LAST_VALUE属性表示CLK跳变前的值;CLK跳变前为0时,则发生了一次由’0’到’1’的上升沿变化。 ... PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND(CLKLAST_VALUE=0) THEN Q = D ; END IF; END PROCESS ; P117【例4-9】 ... PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ; P117【例4-10】 PROCESS(clk, d) . . . BEGIN IF clk’EVENT and clk=‘1’ THEN . . . LIBRARY IEEE; USE STD_LOGIC_1164.ALL; . . . PORT( clk: IN STD_LOGIC; . . .); . . . PROCESS(clk, d) . . . BEGIN IF rising_edge (clk) THEN . . . clk’EVENT and clk=‘1’: 当clk发生变化(clk’EVENT),且clk为高电平,则条件为真,执行条件句内的功能语句。 可用rising_edge( )函数检测信号是否有上升沿变化,若有则条件为真。若检测下降沿则falling_edge( )函数。 只有标准逻辑类型的信号(STD_LOGIC、STD_LOGIC_VECTOR)可使用边沿检测函数。 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END ; P117【例4-11】 利用条件语句的门闩控制方式来描述触发器功能: 时钟信号到来? 把输入信号d送到输出端Q 结束 TRUE FALSE IF . . . THEN Q=d; END IF; 当时钟信号到来,条件成立,输入端d的数据会
显示全部
相似文档