




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.5.3VHDL的行为描述并发(Concurrent)描述语句顺序(Sequential)描述语句行为描述语句顺序语句:描述逻辑关系、算法并行语句:硬件并行的特点一、VHDL的并行语句并行行为赋值语句(简单、选择、条件)进程语句(process)例化语句(component)描述硬件最基本的本质特性--并行行为。进程行为之间并行关系,进程内部是顺序行为。
信号〈=表达式;1.赋值语句:语法格式赋值的原则:相同位宽,相同数据类型。(1)简单并行赋值:特点:执行与书写顺序无关。每一个赋值相当于一个进程。ENTITYexeISport(a,b:INbit;y:OUTbit);ENDexe;
ARCHITECTUREartOFexeIS
SIGNALc:bit;
BEGINy<=c;c<=aandb;
ENDart1;(2)选择赋值with-select-whenWITH
选择表达式SELECT信号名<=表达式1WHEN
选择值1,表达式2WHEN选择值2,
...
表达式nWHENothers
;
不能有重叠的条件分支。最后条件为others。选择值必须覆盖所有取值可能。没有优先级判断。语法格式结束为“,”例:用选择赋值语句描述四选一电路
LIBRARY
ieee;USEieee.std_logic_1164.all;entitymux4is
port
(d0,d1,d2,d3,a0,a1:in
std_logic;f:outstd_logic);endmux4;architecturertl
ofmux4issignal
sel:std_logic_vector(1downto0);beginsel<=a1&a0;
withselselectf<=d0when“00”,d1when“01”,d2when
“10”,d3when
others;end
rtl;
MUX4(3)条件赋值when-else信号名<=表达式1WHEN
条件式1ELSE
表达式2WHEN
条件式2ELSE
...条件式n-1
ELSE
表达式n;
注意:最后的Else项是必须的;
有优先级逻辑关系,先判断第一条件
类似if(在process中使用)的嵌套语句语法格式libraryieee;
use
ieee.std_logic_1164.all;
entitycoderis
port
(D:instd_logic_vector(7downto0);A:outstd_logic_vector(2downto0));
endcoder;例:8-3优先编码器。architecturertl
ofcoderisbeginA<=“000”whenD(7)=‘0’else“001”whenD(6)=‘0’else“010”whenD(5)=‘0’else“011”whenD(4)=‘0’else“100”whenD(3)=‘0’else“101”whenD(2)=‘0’else“110”whenD(1)=‘0’else“111”;Endtr1
语句With-select-whenWhen-elseIf-elseCase-when选择条件一个信号的不同值,互斥多个信号多种组合,不必互斥多个信号多种组合,不必互斥一个信号的不同值,互斥语句属性并行并行顺序顺序用途编码、译码、多路选择器优先编码器,地址译码器优先编码器,地址译码器编码、译码、多路选择器状态机libraryieee;useieee.std_logic_1164.all;entitydec38isport(A:instd_logic_vector(2downto0);Y:outstd_logic_vector(7downto0));enddec38;architecturem1ofdec38isbeginwithAselectY<=“11111110"when"000",“11111101"when"001",“11111011"when"010",“11110111"when"011",“11101111"when"100",“11011111"when"101","10111111"when"110",“01111111"when"111","11111111"whenothers;
endm1;libraryieee;useieee.std_logic_1164.all;entitybcdisport(A:instd_logic_vector(3downto0);Y:outstd_logic_vector(6downto0));endbcd;七段显示译码器A3A2A1A0fgabcde5107七段显示译码器architecturem1ofbcdisBeginy<="1111110"whenA="0000"else
--0"0001100"when
A="0001"else--1"1101101"whenA="0010"else--2"1111001"whenA="0011"else--3"0110011"whenA="0100"else
--4"1011011"whenA="0101"else
--5“0011111"whenA="0110"else
--6"1110000"whenA="0111"else
--7"1111111"whenA="1000"else
--8"1110011"whenA="1001"else--9"0000000";Endm1;3、进程语句语法格式[进程名:]PROCESS
(敏感信号表)
[变量说明语句];
BEGIN
顺序说明语句;
ENDPROCESS;提供了一种用算法描述硬件行为的方法。几个进程语句之间是并行行为。外部并行,内部顺序。敏感信号表:进程中要读取的信号。敏感信号的变化都将启动进程。组合逻辑中,所有输入都作为敏感信号。architecturebehavofa_varisbeginoutput<=a(i);endbehav;architecturebehavofa_varisbeginprocess(a,i)beginoutput<=a(i);endprocess;endbehav;一个简单并行信号赋值语句是一个进程的缩写。进程的并发特点:等效:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex1ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex1;ARCHITECTURErtlOFex1ISSIGNALc:STD_LOGIC;BEGIN
y<=c;c<=aandb;ENDrtl;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex2;ARCHITECTURErtlOFex2ISSIGNALc:STD_LOGIC;BEGINPROCESS(a,b)BEGINc<=aandb;ENDPROCESS;
PROCESS(c)BEGINy<=c;ENDPROCESS;ENDrtl;不等效:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex1ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex1;ARCHITECTURErtlOFex1ISSIGNALc:STD_LOGIC;BEGINc<=aandb;y<=c;ENDrtl;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYex2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDex2;ARCHITECTURErtlOFex2ISSIGNALc:STD_LOGIC;BEGIN
PROCESS(a,b,c)BEGINc<=aandb;y<=c;ENDPROCESS;ENDrtl;二、VHDL顺序语句执行顺序与书写顺序一致。只能出现在进程(process)和子程序中。描述逻辑关系,具体算法(类似C)。顺序行为If-then-elseCase–is-whenFor-loop
赋值语句
信号〈=表达式;语法格式赋值的原则:相同位宽,相同数据类型。(1)简单顺序赋值:
变量:=表达式;赋值对象可为信号、变量变量赋值与信号赋值的差异:硬件实现的功能不同信号:实际的硬件连线;变量:电路单元内部的操作,代表暂存的临时数据。
赋值行为的不同信号赋值:延迟更新数值;变量赋值:立即更新数值。
信号的多次赋值
a.一个进程:最后一次赋值有效
b.多个进程:多源驱动线与、线或、三态总线
变量赋值:
architecturertlofvarisbegin
process(a,b,c)variabled:std_logic;--定义变量
begind:=a;x<=canddd:=b;y<=canddendprocess;endrtl;
-结果:x=cay=cb例:信号赋值与变量赋值的比较
信号赋值:
architecturertlofsigis
signald:std_logic;begin
process(a,b,c)
begind<=a;x<=candd;d<=b;y<=candd;
endprocess;
endrtl;--定义信号读出(process中)更新(endprocess后)-结果:x=cby=cb不要在一个process中对同一信号多次赋值(2)转向控制语句:主要有:
if
语句、case
语句、loop
语句通过条件控制决定是否执行一条或几条语句,或重新执行一条或几条语句,仿真时顺序进行。if、case、loop语句必需在Process语句中。注意!if语句的门闩控制(不完全if)if
条件式
then
顺序处理语句;end
if
;1)if语句对于不完全的if语句,VHDL综合器将引进一个时序元件保持当前状态值。用于锁存器或触发器。if语句的电平触发LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.all;ENTITYlatchIS
port(ena,d:INstd_logic;q:OUTstd_logic);
ENDlatch;
ARCHITECTURErt1OFlatchIS
BEGIN
PROCESS(ena,d)
BEGIN
IF(ena=‘1’)thenq<=d;
ENDIF;
ENDPROCESS;ENDrt1;
综合后生成锁存器(latch)敏感信号表敏感信号表无d的波形LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.all;ENTITYfdISport(clk,d:INstd_logic;q:OUTstd_logic);
ENDfd;ARCHITECTURErt1OFfdIS
BEGIN
PROCESS(clk)
BEGIN
IF(clk’eventandclk=‘1’)thenq<=d;
ENDIF;
ENDPROCESS;ENDrt1;if语句的时钟沿触发敏感信号表
综合后生成寄存器(register)时钟上升沿触发LIBRARY
ieee;USEieee.std_logic_1164.all;ENTITYdffIS
PORT
(d:instd_logic;clk:instd_logic;q:outstd_logic);ENDdff;ARTHITECTUREarc
OFdffIS
BEGIN
PROCESS(clk)
VARIABLEa,b:std_logic;
BEGINIF(clk’eventAND
clk='1')THENa:=d;b:=a;q<=b;
ENDIF;
ENDPROCESS;
ENDarc;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYreg3IS
PORT
(d:instd_logic;clk:instd_logic;q:outstd_logic);ENDreg3;
ARTHITECTUREarc
OFreg3ISSIGNAL
a,b:std_logic;
BEGINPROCESS(clk)
BEGIN
IF
(clk’eventANDclk='1')THENa<=d;b<=a;q<=b;
ENDIF;
ENDPROCESS;
ENDarc;语法格式IF
条件表达式1
THEN
顺序语句11;顺序语句12;ELSIF
条件表达式2
THEN
顺序语句21;顺序语句22;ELSIF
…
ELSE
顺序语句n1;顺序语句n2;
ENDIF;
if_then_elsif语句中最先出现的条件优先级最高(自上而下优先)。可以有多个elsif,但只能有一个else(组合逻辑)。if多选择语句libraryieee;
use
ieee.std_logic_1164.all;
entitycoderis
port
(input:instd_logic_vector(7downto0);output:outstd_logic_vector(2downto0));
endcoder;例:8-3优先编码器。architectureartofcoderisbegin
process(input)begin
ifinput(7)=‘0’thenoutput<=“000”;
elsifinput(6)=‘0’
thenoutput<=“001”;
elsif
input(5)=‘0’thenoutput<=“010”;
elsif
input(4)=‘0’thenoutput<=“011”;
elsif
input(3)=‘0’
thenoutput<=“100”;
elsifinput(2)=‘0’thenoutput<=“101”;
elsif
input(1)=‘0’thenoutput<=“110”’;
elseoutput<=“111”;
endif;
end
process;
endart;组合逻辑一定有else,否则综合为锁存器CASE语句根据某个表达式的值来选择执行体。无优先级。
(2)CASE语句语法格式CASE
选择表达式
IS
WHEN
分支值1=>顺序处理语句11;语句12;
WHEN分支值2=>顺序处理语句21;语句22;
WHENOTHERS=>顺序处理语句32;语句32;
END
CASE;
分支条件须在表达式范围内,且不能重合。执行时必须选中且只能选中一个分支。所有值必须列举穷尽,对sted_logic等必须用others。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtest_caseISPORT(
s1,s0:IN
STD_LOGIC;
d0,d1,d2,d3:INSTD_LOGIC;
z:OUTSTD_LOGIC
);END
test_case;ARCHITECTUREbehaveOFtest_caseISSIGNAL
s:STD_LOGIC_VECTOR(1DOWNTO0);BEGIN
PROCESS(s1,s0,d0,d1,d2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度知识产权代办理合同书
- 2025年度酒店景观设计施工合同规范
- 妇幼保健员检查工具使用试题及答案
- 二零二五年度公司终止职工劳动合同解除及离职保障与再就业服务协议
- 2025年度足浴馆整体资产及品牌转让合同
- 二零二五年度医疗健康合作协议字体格式规定
- 2025年度车库租赁与停车场改造及扩建合同
- 2024人力资源管理师考试训练题试题及答案
- 二零二五年度新能源汽车维修技师解聘合同终止证明文件
- 软件工程中的风险管理试题及答案
- 劳务派遣外包人力资源采购投标方案(技术方案)
- 与稻田重逢(2022年湖南张家界中考语文试卷记叙文阅读题及答案)
- 2024人形机器人产业半年研究报告
- Unit 10 Connections Topic talkConnections 教学设计-2023-2024学年高中英语北师大版(2019)选择性必修第四册
- 幼儿园中班心理健康《我会倾诉》课件
- 中华传统文化集萃智慧树知到答案2024年四川音乐学院
- 压力容器设备安装合同范本(2024版)
- 02R111小型立、卧式油罐图集
- 运动解剖学(李世昌主编,第二版)-绪论
- NB-T20048-2011核电厂建设项目经济评价方法
- 证券投资管理制度汇编样本
评论
0/150
提交评论