文档详情

第四章 VHDL语言应用基础3.ppt

发布:2016-07-22约字共20页下载文档
文本预览下载声明
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
显示全部
相似文档