• 沒有找到結果。

异步置位/复位边沿 D 触发器的设计

TYPE X IS ARRAY (7 DOWNTO 0) OF INTEGER;

项目 5 异步置位/复位边沿 D 触发器的设计

设计一个边沿 D 触发器,带异步置位端和复位端。

 理解并行语句的概念。

 掌握常用的并行语句的使用。

步骤 1:绘制功能框图,确定输入/输出端口

带异步置位端口和复位端口的 D 触发器的功能框图如图 3-31 所示。

图 3-31 功能框图 步骤 2:库和包的声明

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

步骤 3:实体描述 ENTITY DFF IS

PORT(D: IN STD_LOGIC;

CP: IN STD_LOGIC;

R: IN STD_LOGIC;

S: IN STD_LOGIC;

Q: OUT STD_LOGIC;

NQ: OUT STD_LOGIC);

CP’event AND CP='0'表示检测时钟下降沿有效。

CP’event AND CP='1'表示检测时钟上升沿有效。

知识链接:信号属性

信号属性用来表示信号的某种特性,例如:

signal A:std_logic_vector(3 downto 12);表示定义 A 为一个矢量信号,包含从 A(3)到 A(12)

共 10 位;A’left 表示信号 A 的左边界值,A 的左边界值在此处为 3;A’right 表示信号 A 的右边 界值,A 的右边界值在此处为 12;A’high 表示 A 的最高端边界值,为 12;A’low 表示 A 的最低 端边界值,为 3;A’length 表示 A 的长度,为 10;A’range 表示 A 的范围,为 3 to 12。

event 属性表示信号内涵改变,if(clk’event and clk='1')表示信号 clk 发生变化而且 clk 的值 为 1,即 clk 上升沿触发,也可以用如下语句表示:

if(rising_edge(clk))

结构体描述部分的代码如下:

ARCHITECTURE RT1 OF DFF1 IS BEGIN

PROCESS(CP,S,R) BEGIN

IF(S='0'AND R='1') THEN Q<='1';NQ<='0';

ELSIF(S='1'AND R='0')THEN Q<='0';NQ<='1';

ELSIF(CP'event AND CP='0') THEN Q<=D;

NQ<=NOT D;

END IF;

END PROCESS;

END RT1;

知识链接:并行语句的概念

VHDL 中的代码按照执行顺序可以分为并发代码和顺序代码两大类。

所谓顺序代码,就是按照语句的顺序逐行执行的。

所谓并发代码,语句是并发执行的,和语句的先后顺序无关。

VHDL 中的并发描述语句有进程语句(PROCESS)、并行信号赋值语句、条件信号赋值语

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY AND_GATE IS PORT(A,B:IN STD_LOGIC;

Y: OUT STD_LOGIC);

END AND_GATE;

ARCHITECTURE RT OF AND_GATE IS BEGIN

ARCHITECTURE RT OF AND_GATE IS

PROCESS (A,B);

BEGIN Y<=A AND B;

END PROCESS;

END RT;

ARCHITECTURE aa OF mux8 IS BEGIN

Y<=D(0) WHEN A="000" ELSE D(1) WHEN A="001" ELSE

表达式 N WHEN 选择值 N;

判断过程是:判断选择表达式的值,如果和选择值 1 相同,将表达式 1 的值赋给信号量;

如果和选择值 2 的值相同,将表达式 2 的值赋给信号量;……如果和选择值 N 的值相同,则 将表达式 N 的值赋给信号量。

项目 4 中的八选一数据选择器可以用条件信号赋值语句实现如下:

ARCHITECTURE aa OF mux8 IS BEGIN

WITH A SELECT Y<=D(0) WHEN "000", D(1) WHEN "001", D(2) WHEN "010", D(3) WHEN "011", D(4) WHEN "100", D(5) WHEN "101", D(6) WHEN "110", D(7) WHEN "111", 'Z' WHEN OTHERS;

END aa;

在实际的电子系统中,几乎所有的操作都是并发执行的,这些操作之间没有具体的顺序 之分,一旦得到事件触发,它们就会开始并行工作。VHDL 所提供的并行语句即可实现这种 并行操作性。

进程语句(PROCESS)、并行信号赋值语句、条件信号赋值语句、选择信号赋值语句是几 种常见的并行语句。在用户使用 VHDL 的时候,可以根据需要选择其中的一种来使用。

分别用进程语句、条件信号赋值语句、选择信号赋值语句来实现四选一数据选择器。

该选择器包括两个地址输入端 A0、A1 和 4 个数据输入端 D0、D1、D2、D3,一个输出 端 Y,还有一个使能端口 EN。

工作原理:如果 EN=1,则电路开始工作。

当 A1 A0 为 00 时,输出 Y 为 D0。

当 A1 A0 为 01 时,输出 Y 为 D1。

当 A1 A0 为 10 时,输出 Y 为 D2。

当 A1 A0 为 11 时,输出 Y 为 D3。

相關文件