版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章VHDL基本语句与基本设计EDA技术与VHDL设计第7章VHDL基本语句与基本设计EDA技术与VHDL设计17.1顺序语句
并行语句VHDL组合逻辑电路设计VHDL时序逻辑电路设计7.27.37.4VHDL基本语句与基本设计7.1顺序语句并行语句VHDL组合逻辑电路设计V2顺序语句的执行顺序与书写顺序一致,与传统软件设计语言的特点相似。顺序语句只能用于进程和子程序中,被用来描述组合逻辑和时序逻辑。常用的顺序描述语句有:赋值语句、IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句、子程序、RETURN语句、WAIT语句和NULL语句。7.1顺序语句顺序语句的执行顺序与书写顺序一致,与传统软件设计语言的特点相3信号赋值语句:7.1.1赋值语句
赋值目标<=赋值源;变量赋值语句:赋值目标:=赋值源;信号赋值语句:7.1.1赋值语句赋值目标<=赋值源;变量4根据语句所设条件,if语句有选择地执行指定的语句,其语法格式由简单到复杂可以分为三种:(1)具有开关控制的IF语句(2)具有二选择控制的IF语句(3)具有多选择控制的IF语句7.1.2IF语句
根据语句所设条件,if语句有选择地执行指定的语句,其语法格式5一般格式:if条件then 顺序语句; endif;当条件成立,执行顺序语句,否则跳过语句。具有开关控制的IF语句
一般格式:具有开关控制的IF语句6if(EN=’1’)thenA<=B;--当条件EN=1时,A随B变化;否则,该语句不执行endif;具有开关控制的IF语句举例
if(EN=’1’)then具有开关控制的IF语句举例7一般格式:if条件then 顺序语句; else 顺序语句; endif;条件成立执行then后顺序语句;否则执行else后的顺序语句。具有二选择控制的IF语句
一般格式:具有二选择控制的IF语句8ifOE=‘0’then Y<=notx;else Y<=‘Z’; --高阻符号“Z”要大写endif;用IF语句描述三态非门
ifOE=‘0’then用IF语句描述三态非门9一般格式:if条件then顺序语句; elsif条件then顺序语句; [elsif条件then顺序语句;] [else顺序语句;] endif;具有多选择控制的IF语句
一般格式:具有多选择控制的IF语句10case语句根据表达式的取值直接从多组顺序语句中选择一组执行,其语句格式为: case表达式is when选择值=>顺序语句;when选择值=>顺序语句;...... whenothers=>顺序语句; endcase;7.1.3CASE语句
case语句根据表达式的取值直接从多组顺序语句中选择一组执行11一般格式:(1)关键词others只能出现一次,且只能作为最后一种条件取值。使用others的目的是为了使条件句中的所有选择值能涵盖表达式的所有取值,以免综合器会插入不必要的锁存器。使用CASE语句注意事项
一般格式:使用CASE语句注意事项12一般格式:(2)条件句中的选择值必须在表达式的取值范围内。(3)case语句中每一条件句的选择值只能出现一次,不能有相同选择值的条件语句出现。(4)case语句执行必须选中,且仅能选中所列语句中的一条。使用CASE语句注意事项
一般格式:使用CASE语句注意事项13(1)WHEN取值=>顺序语句:(2)WHEN取值|取值|…|取值=>顺序语句:(3)WHEN取值TO取值=>顺序语句;(4)WHEN取值DOWNTO取值=>顺序语句;(5)WHENOTHERS=>顺序语句;CASE语句中WHEN字句书写格式
(1)WHEN取值=>顺序语句:CASE语句中WHEN字句14d0<=‘0’;d1<=‘0’;d2<=‘0’;d3<=‘0’;CASEselISWHEH“00”=>d0<=d;WHEN“01”=>d1<=d;WHEN“10”=>d2<=d;WHENOTHERS=>d3<=d;ENDCASE;CASE语句应用举例
d0<=‘0’;d1<=‘0’;CASE语句应用举例15LOOP语句与其它高级语言中的循环语句相似,它可以使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定。LOOP语句有三种格式:(1)无限LOOP语句(2)FOR_LOOP语句(3)WHILE_LOOP语句7.1.4LOOP语句
LOOP语句与其它高级语言中的循环语句相似,它可以使所包含的16[标号:]LOOP顺序语句EXIT标号;ENDLOOP;举例:L2:LOOPa:=a+1;EXITL2WHENa>10;ENDLOOPL2;无限LOOP语句[标号:]LOOP无限LOOP语句17[标号]:FOR循环变量IN离散范围LOOP顺序处理语句;ENDLOOP[标号];注意:(1)循环变量是LOOP内部自动声明的局部量,仅在LOOP内可见。(2)离散范围必须是可计算的整数范围。循环次数范围规定LOOP语句中的顺序语句被执行的次数。FOR_LOOP语句
[标号]:FOR循环变量IN离散范围LOOPFO18LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDENTITYparity_check;ARCHITECTUREoneOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;BEGINtmp:=’1’;FORiIN0TO7LOOPtmp:tmpxora(i);ENDLOOP;y<=tmp;ENDPROCESS;END;用FORLOOP语句描述8位奇偶校验电路
LIBRARYIEEE;用FORLOOP语句描述8位奇19[标号]:WHILE循环条件LOOP顺序处理语句;ENDLOOP[标号];例:sum:=0;i:=0;abcd:WHILE(i<10)LOOPsum:=sum+i;i:=i+1;ENDLOOPabcd;WHILE_LOOP语句
[标号]:WHILE循环条件LOOPWHILE_LO20LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDENTITYparity_check;ARCHITECTUREoneOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;VARIABLEi:INTEGER;BEGINtmp:=’0’;i:=0;WHILE(i<8)LOOPtmp:tmpxora(i);i:=i+1;ENDLOOP;y<=tmp;ENDPROCESS;END;用WHILE_LOOP语句描述8位奇偶校验电路
LIBRARYIEEE;用WHILE_LOOP语句描述821在LOOP语句中,NEXT语句用来跳出本次循环。其格式分三种:(1)NEXT:无条件终止当前的循环,跳回到本次循环LOOP语句开始处,开始下次循环。(2)NEXT:[标号];无条件终止当前的循环,跳转到指定标号的LOOP语句开始处,重新开始执行循环操作。(3)NEXT[标号][WHEN条件表达式];7.1.5NEXT语句
在LOOP语句中,NEXT语句用来跳出本次循环。其格式分三种22L1:WHILEi<10LOOPL2:WHILEj<20LOOP
NEXTL1WHENi=j;
ENDLOOPL2;ENDLOOPL1;NEXT语句举例L1:WHILEi<10LOOPNEXT语句举例23EXIT语句是LOOP语句的内部循环控制语句,作用是结束循环状态。而区别在于NEXT语句是跳向LOOP语句的起始点,EXIT语句则是跳向LOOP语句的终点。EXIT的语句格式也有3种:(1)EXIT;(2)EXITLOOP标号;(3)EXITLOOP标号WHEN条件表达式;7.1.6EXIT语句
EXIT语句是LOOP语句的内部循环控制语句,作用是结束循环24PROCESS(a)VARIABLEint_a:INTEGER;BEGINint_a:=a;FORiIN0TOmax_limitLOOPIF(int_a<=0)THENEXIT;ELSEint_a:=int_a-1;ENDIF;ENDLOOP;ENDPROCESS;EXIT语句举例PROCESS(a)EXIT语句举例25在进程中(包括过程中),当执行到WAIT(等待语句时),运行程序将被挂起,直到满足此语句设置的结束挂起条件后,才重新开始执行进程或过程中的程序。WAIT语句有以下四种不同的语句格式:(1)WAIT--无限等待(2)WAITON--敏感信号量变换(3)WAITUNTIL--条件满足(可综合)(4)WAITFOR--时间到7.1.7WAIT语句
在进程中(包括过程中),当执行到WAIT(等待语句时),运行26进程中其一般格式为:WAITON信号[,信号];例如,以下两种描述是完全等价的:PROCESS(a,b)PROCESSBEGINBEGINy<=aANDb;y<=aANDb;ENDPROCESS;WAITONa,b;ENDPROCESS;敏感信号量列表和WAIT语句选其一,不能同时使用。1.WAITON语句
进程中其一般格式为:WAITON信号[,信号];1.27进程中其一般格式为:WAITUNTIL表达式;例如,WAITUNTIL语句有三种表达方式:(1)WAITUNTIL信号=某个数值;(2)WAITUNTIL信号’EVENTAND信号=某个数值;(3)WAITUNTILNOT(信号’STABLE)AND信号=某个数值;2.WAITUNTIL语句
进程中其一般格式为:WAITUNTIL表达式;2.W28在进程中允许对子程序进行调用。对子程序的调用语句是顺序语句的一部分。子程序包括过程和函数,可以在VHFL的结构体或程序包中的任何位置对子程序进行调用。子程序调用可以在任何地方根据其名称调用子程序。7.1.8子程序调用语句
在进程中允许对子程序进行调用。对子程序的调用语句是顺序语句的29调用过程的语句格式如下:
过程名([参数名=>]表达式{,[参数名=>]表达式});其中表达式也称为实参,它可以是一个具体的数值,也可以是一个标识符,是当前调用程序中过程形参的接受体。
过程调用
调用过程的语句格式如下:过程调用30函数调用与过程调用十分类似,不同之处是调用函数将返回一个指定类型的值,函数的参量只能是输入值。函数调用的一般格式为:函数名([参数名=>]表达式{,[参数名=>]表达式});函数调用
函数调用与过程调用十分类似,不同之处是调用函数将返回一个指定317.2并行语句
并行信号赋值语句进程语句并行过程调用语句元器件例化语句生成语句7.2并行语句并行信号赋值语句3233/387.2.1并行信号赋值语句三种并行信号赋值:简单信号赋值条件信号赋值选择信号赋值33/387.2.1并行信号赋值语句三种并行信号赋值:3334/381.并行简单信号赋值语句34/381.并行简单信号赋值语句3435/382.条件信号赋值语句35/382.条件信号赋值语句3536/38用when-else语句描述2选一的MUXentitymux2to1isport(a,b:inbit;sel:inbit; y:outbit);endmux2to1;architectureoneofmux2to1isbeginy<=bwhensel='1'elsea;endone;信号定义成比特类型,可取0和1。如果把=‘1’去掉,结果如何?36/38用when-else语句描述2选一的MUXenti3637/38用when-else语句描述4选1的MUXentitymux4to1isport(a,b,c,d:inbit;sel1,sel0:inbit; y:outbit);endmux4to1;architectureoneofmux4to1isbeginy<=awhen(sel1='0')and(sel0='0')elsebwhen(sel1='0')and(sel0='1')else cwhen(sel1='1')and(sel0='0')elsed;endone;问题:如果00时选a,01时选b,10和11时都选c,怎么办?y<=awhen(sel1='0')and(sel0='0')elsebwhen(sel1='0')and(sel0='1')elsecwhen(sel1=‘1’)and(sel0=‘0’)elsed;37/38用when-else语句描述4选1的MUXenti3738/383.选择信号赋值语句38/383.选择信号赋值语句3839/38问题:如果00时选a,01时选b,10和11时都选c,怎么办?architectureoneofmux4to1issignalsel:bit_vector(1downto0);beginsel(1)<=sel1;sel(0)<=sel0;withselselecty<=awhen"00",bwhen"01", cwhenothers;endone;entitymux4to1isport(a,b,c:inbit;sel1,sel0:inbit; y:outbit);endmux4to1;注意:whenothers包含那些未被列出的可能。39/38问题:如果00时选a,01时选b,10和11时都选3940/38如果信号类型换成STD_LOGIClibraryieee;useieee.std_logic_1164.all;entitymux4to1isport(a,b,c:instd_logic;sel1,sel0:instd_logic; y:outstd_logic);endmux4to1;architectureoneofmux4to1issignalsel:std_logic_vector(1downto0);beginsel(1)<=sel1;sel(0)<=sel0;withselselecty<=awhen"00",bwhen"01", cwhenothers;endone;40/38如果信号类型换成STD_LOGIClibrary4041/38VHDL模型-并行信号赋值libraryieee;useieee.std_logic_1164.all;entitycmpl_sigisport(a,b,sel:instd_logic;x,y,z:outstd_logic);endcmpl_sig;architecturelogicofcmpl_sigisbeginx<=(aandnotsel)or(bandsel);y<=awhensel='0'elseb;withselselectz<=awhen'0',bwhen'1','0'whenothers;endlogic;信号赋值执行是并行的,与语句放置的位置先后无关。41/38VHDL模型-并行信号赋值libraryieee4142/387.2.2进程语句过程语句有(1)隐含的过程:并行信号赋值语句元件语句过程的敏感信号在表达式右边。(2)直接的过程:也是并行语句只包括顺序语句--ExplicitProcessStatementPROCESS(敏感信号表)ConstantDeclarationsTypeDeclarationsVariableDeclarationsBEGIN
--顺序语句#1;--…
…..--顺序语句#N;ENDPROCESS;42/387.2.2进程语句过程语句有--Explic4243/38Process语句的执行process语句靠wait语句和敏感信号表来控制语句执行次数。敏感信号表隐含着在process的后面有一个wait语句。一个process可以有多个wait语句。Process必须具有敏感信号表和wait语句中的一个。.注意:逻辑综合将对wait和敏感信号表作出限制。process(a,b)begin--sequentialstatementsendprocess;processbegin--sequentialstatementswaiton(a,b);endprocess;43/38Process语句的执行process语句靠wai4344/38多进程语句一个构造体可以有多个process。process之间是并发的。在process内部,语句执行是有顺序的。构造体process1
processN信号信号44/38多进程语句一个构造体可以有多个process。构p4445/38VHDL模型-多进程语句process语句的执行是并行的,与位置没有关系。在process内的语句执行是顺序的。process语句内也可进行信号赋值。45/38VHDL模型-多进程语句process语句的执行是4546/38信号赋值-延时(Delay)信号赋值可以在process语句内部也可以在外部进行(如三种并行赋值语句)。信号赋值发生时会有时延,延时的类型有两种:固有(Inertial)延时(缺省的)信号在传输过程中会时间长度增加。传输延时无论距离多近,都有传输延时。在VHDL中,除此之外的延时均不考虑。46/38信号赋值-延时(Delay)信号赋值可以在proc4647/38请看两个程序是否等效?并行赋值语句右边的变量全为敏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度不锈钢栏杆生产设备采购与技术升级合同
- 滑动门用非金属滑轨市场发展预测和趋势分析
- 纸制宠物拾便袋市场发展现状调查及供需格局分析预测报告
- 运载工具用电压调节器市场发展现状调查及供需格局分析预测报告
- 2024年度云计算服务合同数据处理规定
- 2024年度广告代理合同协议
- 2024年度中秋月饼定制采购合同
- 游泳池用充气玩具市场需求与消费特点分析
- 皮制行李标签市场需求与消费特点分析
- 2024年度劳动合同(含薪资待遇、工作时间及福利制度)
- 大马大马告诉我
- TSG 81-2022 场(厂)内专用机动车辆安全技术规程
- 口腔组织病理学教学课件:牙源性肿瘤
- 通用模板-封条模板
- 高考冲刺主题班会——勇往直前无畏风雨课件(17张PPT)
- 种群的数量特征——第2课时
- 植物源农药的提取分离和结构鉴定基础
- 正弦交流电路相量
- 企业盈利能力分析——以青岛啤酒股份有限公司为例
- 输尿管结石病人护理查房
- 下肢缺血分级
评论
0/150
提交评论