第四章 VHDL语言应用基础3.ppt
文本预览下载声明
3. Concurrent Assignment Statement; 条件信号代入语句与含有IF语句的进程等价。但是又有不同:;(3)Selected Signal Assignment
Form:WITH SELECT
signal_name﹤=expression WHEN constant_value,
…
expression WHEN constant_value;; 注意:选择信号赋值语句本身不能在进程中应用,但其功能却与进程中的CASE语句的功能相似。 CASE语句的执行依赖于进程中敏感信号的改变而启动进程。选择信号语句中也有敏感量,即选择表达式 。当选择表达式 的值发生变化时,就将启动此语句对各子句的选择值进行测试对比,当发现有满足条件的子句的选择值时,就将此子句表达式中的值赋给赋值目标。 ;4. Component Instantiations;(2)元件例化 ;5. Generate Statement;格式2:
[标号:] IF 条件 GENERATE
说明语句;
BEGIN
并行语句;
END GENERATE [标号];;Exam:4-12 design a n_bit adder using generate statment; ARCHITECTURE ar_8 OF addern IS
COMPONENT adder_1
PORT ( x,y,cin: IN std_logic;
sum,cout: OUT std_logic);
END COMPONENT;
SIGNAL c: std_logic _Vector(n-1 DOWNTO 1);
BEGIN
mah : FOR I IN 1 TO n GENERATE ;Ex :用D触发器构成4位移位寄存器,用生成语句进行设计。;BEGIN
d(0)=din;
G:For i IN 0 TO 3 GENERATE
U:dff PORT MAP (d(i),clk,d(i+1));
END GENERATE G;
dout=d(4);
END a;
; EX:试把上面程序的构造体改成只含PORT MAP语句的 形式。 ;比较可以看出,前者用一条FOR-GENERATE语句代替了后者的4条PORT MAP语句,使程序更加简练了,而且改变i的取值范围可以描述任意长度的移位寄存器。
FOR-GENERATE语句只能处理规则的构造体。但是在大多数情况下,电路的两端(输入和输出)总是具有不规则性,无法用同一种结构表示。为解决这种不规则电路的统一描述方法,就可以采用IF-GENERATE语句。;Example:;;6. Assert Statement;Note: 用在仿真时传递信息。
Warning: 用于非平常情形,仿真仍继续,结果不可预知。
Error: 仿真不能继续。
Failure: 致命错误,必须立即停止。;LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY rs_1 IS
PORT (s,r: IN std_logic;
q,nq : OUT std_logic);
END rs_1;
ARCHITECTURE ar_11 OF rs_1 IS
BEGIN
PROCESS
VARIABLE blh_1:bit:=′0′;
BEGIN
ASSERT NOT(s=′1′AND r=′1′)
REPORTBOTH s AND r EQUAL TO′1′!“
SEVERITY ERROR;; IF s =′0′AND r=′0′ THEN
blh_1:=blh_1;
ELSIF s=′0′AND r=′1′THEN
blh_1:=′0′;
ELSE
blh_1:=′1′;
END IF;
q=blh_1 after 2 ns;
nq=NOT blh_1
WAIT ON
显示全部