- 1、本文档共133页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]武汉科技大学 EDA考试范围 3
选择赋值语句对于子句条件选择值的测试具有同期性,而条件信号赋值语句是按照子句的书写顺序从上至下逐条测试的。 选择赋值语句不允许有条件重叠的现象,也不允许存在条件涵盖不全情况。 简化的指令译码器,对应于由A、B、C三个位构成的不同指令码,由DATA1和DATA2输入的两个值将进行不同的逻辑操作,结果从DATAOUT输出。 【例3.5.14】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DECODER IS PORT(A,B,C: IN STD_LOGIC; DATA1,DATA2:IN STD_LOGIC; DATAOUT: OUT STD_LOGIC); END DECODER; ARCHITECTURE ART OF DECODER IS BEGIN SIGNAL INSTRUCTION:STD_LOGIC_VECTOR(2 DOWNTO 0); INSTRUCTION =C B A; WITH INSTRUCTION SELECT DATAOUT =DATA1 AND DATA2 WHEN 000, DATA1 OR DATA2 WHEN 001, DATA1 NAND DATA2 WHEN 010, DATA1 NOR DATA2 WHEN 011, DATA1 XOR DATA2 WHEN 100, DATA1 NXOR DATA2 WHEN 101, Z WHEN OTHERS;--当不满足条件时,呈高阻态 END ARCHITECTURE ART; 3.5.4 并行过程调用语句 并行过程调用语句可以作为一个并行语句直接出现在结构体或块语句中。并行过程调用语句的功能等效于包含了同一个过程调用语句的进程。并行过程调用语句的语句调用格式与前面讲的顺序过程调用语句是相同的,即过程名(关联参量名)。 例3.5.15 中,首先定义了一个完成半加器功能的过程。此后在一条并行语句中调用了这个过程,而在接下去的一条进程中也调用了同一过程。这两条语句是并行语句, 完成的功能是一样的。 【例3.5.15】 … PROCEDURE ADDER(SIGNAL A,B:IN STD_LOGIC;--过程名为ADDER SIGNAL SUM:OUT STD_LOGIC) Is; … ADDER(A1,B1,SUM1); --并行过程调用 … --在此,A1、B1、SUM1即为分别对应于A、B、SUM的关联参量名 PROCESS(C1,C2); --进程语句执行 BEGIN ADDER(C1,C2,S1); --顺序过程调用,在此C1、C2、S1即为分别对 END PROCESS; --应于A、B、SUM的关联参量名 若要同时检测出一系列有不同位宽的位矢信号,每一位矢信号中的位只能有一个位是1,而其余的位都是0,否则报告出错。可先设计一个具有这种位矢信号检测功能的过程,然后对不同位宽的信号并行调用这一过程。 例3.5.16中设计了一个过程CHECK,用于确定一给定位宽的位矢是否只有一个位是1,如果不是(或有多个1),则将CHECK中的输出参量“ERROR”设置为TRUE(布尔量)。 【例3.5.16】 PROCEDURE CHECK(SIGNAL A:IN STD_LOGIC_VECTOR;--在调用时 SIGNANL ERROR:OUT BOOLEAN) IS --再定位宽 VARIABLE FOUND_ONE:BOOLEAN:=FALSE; --设初始值 BEGIN FOR I IN ARANGE LOOP --对位矢量A的所有的位元素进行循环检测 IF A(I)=‘1’THEN --发现A中有‘1’ IF FOUND_ONE THEN --FOUND_ONE为TRUE,则表明发现了一个以上的‘1’
文档评论(0)