好文档 - 专业文书写作范文服务资料分享网站

VHDL复习题

天下 分享 时间: 加入收藏 我要投稿 点赞

VHDL复习题

的双向总线缓冲器有两个数据输入/输出端A和B,一个方向控制端DIR和一个选通端EN。EN=0时双向缓冲器选通。若DIR=0,则A=B,反之则B=A。

BIDIRENDIRA[7..0]ENDIRA[7..0]

【例3.9.9】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY BIDIR IS

PORT(A,B:INOUTSTD_LOGIC_VECTOR(7 DOWNTO 0); EN,DIR:IN STD_STD_LOGIC); END ENTITY BIDIR;

ARCHITECTURE ART OF BIDIR IS

SIGNA AOUT,BOUT: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(A,EN,DIR) IS --A为输入 BEGIN

IF((EN=‘0’)AND (DIR=‘1’))THEN BOUT<=A; ELSE BOUT<=\; END IF ;

B<=BOUT; --B为输出 END PROCESS;

PROCESS(B,EN,DIR) IS --B为输入 BEGIN

IF((EN=‘0’)AND (DIR=‘1’))THEN AOUT<=B; ELSE AOUT<=\; END IF ;

A<=AOUT; --A为输出 END PROCESS;

END ARCHITECTURE ART; 5. 时序逻辑电路设计

本节的时序电路设计主要有触发器、寄存器、计数器、序列信号发生器和序列信号检测器等的设计实例。 1.触发器

1) D触发器 【例3.9.10】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY DCFQ IS

B[7..0]B[7..0]VHDL复习题

PORT(D,CLK:IN STD_LOGIC; Q:OUT STD_LOGIC); END ENTITY DCFQ;

ARCHITECTURE ART OF DCFQ IS BEGIN

PROCESS(CLK) IS BEGIN

IF (CLK'EVENT AND CLK=‘1’)THEN

-- 时钟上升沿触发 Q<=D; END IF;

END PROCESS;

END ARCHITECTURE ART; 4) JK触发器 【例3.9.13】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY JKCFQ IS

PORT(J,K,CLK:IN STD_LOGIC; Q,QB:BUFFER STD_LOGIC); END ENTITY JKCFQ;

ARCHITECTURE ART OF JKCFQ IS SIGNA Q_S,QB_S:STD_LOGIC; BEGIN

PROCESS(CLK,J,K) IS BEGIN

IF (CLK'EVENT AND CLK=‘1’)THEN IF(J=‘0’ AND K=‘1’) THEN Q_S<=‘0’; QB_S<=‘1’;

ELSIF (J=‘1’ AND K=‘0’) THEN Q_S<=‘1’; QB_S<=‘0’;

ELSIF (J=‘1’ AND K=‘1’) THEN Q_S<=NOT Q_S;

QB_S<=NOT QB_S; END IF; END IF ; Q<=Q_S; QB<=QB_S; END PROCESS;

END ARCHITECTURE ART;

6. 触发器的同步和非同步复位

触发器的初始状态应由复位信号来设置。按复位信号对触发器复位的操作

VHDL复习题

不同,可以分为同步复位和非同步复位两种。所谓同步复位,就是当复位信号有效且在给定的时钟边沿到来时,触发器才被复位;非同步复位,也称异步复位,则是当复位信号有效时,触发器就被复位,不用等待时钟边沿信号。下面以D触发器为例分别予以举例。 1) 非同步复位/置位的D触发器 【例3.9.14】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY ASYNDCFQ IS

PORT(CLK,D,PRESET,CLR:IN STD_LOGIC;

Q:OUT STD_LOGIC); END ENTITY ASYNDCFQ;

ARCHITECTURE ART OF ASYNDCFQ IS BEGIN

PROCESS(CLK,PRESET,CLR) IS BEGIN

IF(PRESET='1')THEN --置位信号为1,则触发器被置位 Q<='1';

ELSIF(CLR='1')THEN --复位信号为1,则触发器被复位 Q<='0';

ELSIF(CLK'EVENT AND CLK=‘1’)THEN Q<=D; END IF; END PROCESS;

END ARCHITECTURE ART; 2) 同步复位的D触发器 【例3.9.15】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY SYNDCFQ IS

PORT(D, CLK,RESET:IN STD_LOGIC;

Q:OUT STD_LOGIC); END ENTITY SYNDCFQ;

ARCHITECTURE ART OF SYNDCFQ IS BEGIN

PROCESS(CLK) IS BEGIN

IF(CLK'EVENT AND CLK=‘1’)THEN IF(PRESET=‘0’)THEN

Q<=‘0’; --时钟边沿到来且有复位信号,触发器被复位 ELSE Q<=D; END IF; END IF;

END PROCESS;

VHDL复习题

END ARCHITECTURE ART; 7. 计数器

计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。 1) 同步计数器

下面是一个模为60,具有异步复位、同步置数功能的8421BCD码计数器。 【例3.9.18】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNTM60 IS

PORT(CI:IN STD_LOGIC; --计数控制

NRESET:IN STD_LOGIC; --异步复位控制 LOAD:IN STD_LOGIC; --置数控制 D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC;

CO:OUT STD_LOGIC; --进位输出

QH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); --输出高4位 QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); --输出低4位 END ENTITY CNTM60; ARCHITECTURE ART OF CNTM60 IS BEGIN

CO<=‘1’WHEN(QH=\ QL=\‘1’)ELSE'0'; --进位输出的产生 PROCESS(CLK,NRESET) IS BEGIN

IF(NRESET=‘0’)THEN --异步复位

QH<=\; QL<=\;

ELSIF(CLK'EVENT AND CLK=‘1’)THEN --同步置数 IF(LOAD=‘1’)THEN

QH<=D(7 DOWNTO 4); Q L<=D(3 DOWNTO 0); ELSIF(CI=‘1’)THEN --模60的实现 IF(QL=9)THEN

QL<=\; IF(QH=5)THEN

QH<=\;

ELSE --计数功能的实现

QH<=QH+1;

END IF; ELSE

QL<=QL+1; END IF;

VHDL复习题

END IF; --END IF LOAD END IF; END PROCESS;

END ARCHITECTURE ART; 8. 序列信号发生器

在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号。产生序列信号的电路称为序列信号发生器。 1) “”序列发生器

该电路可由计数器与数据选择器构成,其VHDL描述如下: 【例3.9.20】 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SENQGEN IS

PORT(CLK,CLR,CLOCK:IN STD_LOGIC;

ZO:OUT STD_LOGIC); END ENTITY SENQGEN;

ARCHITECTURE ART OF SENQGEN IS

SIGNA COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNA Z:STD_LOGIC :=‘0’; BEGIN

PROCESS(CLK,CLR) IS --注意各进程间的并行性 BEGIN

IF(CLR=‘1’)THEN COUNT<=\; ELSE

IF(CLK=‘1’AND CLK'EVENT)THEN

IF(COUNT=\; ELSE COUNT<=COUNT +‘1’; END IF; END IF; END IF; END PROCESS; PROCESS(COUNT) IS BEGIN

CASE COUNT IS

WHEN \‘0’; WHEN \‘1’; WHEN \‘1’; WHEN \‘1’; WHEN \‘1’; WHEN \‘1’; WHEN \‘1’; WHEN OTHERS=>Z<=‘0’;

VHDL复习题

VHDL复习题的双向总线缓冲器有两个数据输入/输出端A和B,一个方向控制端DIR和一个选通端EN。EN=0时双向缓冲器选通。若DIR=0,则A=B,反之则B=A。BIDIRENDIRA[7..0]ENDIRA[7..0]【例3.9.9】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTI
推荐度:
点击下载文档文档为doc格式
9jhd961qg97e16g2f5026bod04q39t00p26
领取福利

微信扫码领取福利

微信扫码分享