




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.4VHDL语言的基本语句,VHDL语言描述系统硬件行为时,按语句执行顺序可以分为顺序(Sequential)描述语句和并发(Concurrent)描述语句。灵活运用这两类语句就可以正确地描述系统的并发行为和顺序行为。例如,进程语句(ProcessStatement)是一个并发语句。在一个构造体内可以有几个进程语句同时存在,各进程语句是并发执行的。但是,在进程内部所有语句应是顺序描述语句,也就是说,是按书写的顺序自上至下,一个语句一个语句地执行的。例如,IF语句、LOOP语句等都属于此类顺序描述语句。,1、顺序描述语句,执行顺序与书写顺序一致,与传统软件设计语言的特点相似。顺序语句只能用在进程与子程序中。在VHDL语言中顺序描述语句主要有以下几种:,*信号代入语句;*变量赋值语句;*WAIT语句;*IF语句;*CASE语句;*LOOP语句;*NEXT语句;*EXIT语句;,2、并发描述语句,VHDL的并发语句用来描述一组并发行为,它是并发执行的,与程序的书写顺序无关。进程语句(PROCESS);并发(CONCURRENT)信号代入语句;条件(CONDITIONAL)信号代入语句;选择(SELECTIVE)信号代入语句;并发(CONCURRENTPROCEDURE)过程调用语句;块(BLOCK)语句。,3.4.1信号代入语句,信号代入语句的作用是将数据或表达式的结果赋给一个目标对象,目标对象可以是内部信号,也可以是端口信号。信号代入语句可分为:简单信号代入语句、条件信号赋值语句和选择信号赋值语句三种。,1、简单信号代入语句,简单代入语句可以在进程内部使用,按顺序执行;代入语句也可以在构造体内部的进程外使用,且并发执行。并发代入语句在仿真时刻同时运行,它表征了各个独立器件的各自的独立操作。如:a=b+c;d=e*f;,-分别描述加法器和乘法器行为。在实际系统中加法器和乘法器是同时并发执行的。,书写格式:目的信号量=信号量表达式;意义:将右边信号量表达式的值赋给左边的目的信号量。,1、简单信号代入语句(续),代入符号“=”的右边可以用算术表达式,也可以用逻辑运算表达式,还可以用关系操作表达式。,注意,1)代入符号与小于等于的区别;2)代入符号两边信号量的类型和长度应一致;,a.一个进程:最后一次赋值有效,补充:信号的多次赋值,architecturertlofexissignala:std_logic;beginprocess()begina=b;a=c;endprocess;endrtl;,-结果是a=c,2、条件信号代入语句,格式:,目的信号量=表达式1WHEN条件1ELSE表达式2WHEN条件2ELSE表达式3WHEN条件3ELSE表达式n;,ELSE,在每个表达式后面都跟有用“WHEN”所指定的条件,如果满足该条件,则该表达式值代入目的信号量;如果条件不满足,则再判断下一个表达式所指定的条件。最后一个表达式可以不跟条件,即所有条件都不满足时,条件信号代入语句举例,利用条件信号代入语句实现四选一逻辑电路。ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTURErtlOFmux4ISSIGNALsel:STD_LOGIC_VECTOR(1DOWNTO0);BEGINsel=b,目的信号量=表达式1WHEN条件1ELSE表达式2WHEN条件2ELSE表达式3WHEN条件3ELSE表达式n;,格式:,WITH表达式SELECT目的信号量=表达式1WHEN条件1,表达式2WHEN条件2,表达式nWHEN条件n;,1)不能有重叠的条件分支。2)最后条件可为others。否则,全部条件必须能包含表达式的所有可能值。3)选择信号赋值语句与进程中的case语句等价。,3、选择信号代入语句,注,用选择信号代入语句实现四选一电路,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux;ARCHITECTUREbehaveOFmuxISSIGNALsel:INTEGER;BEGINWITHselSELECTq=i0WHEN0,i1WHEN1,i2WHEN2,i3WHEN3,XWHENOTHERS;,sel=0WHENa=0ANDb=0ELSE1WHENa=0ANDb=1ELSE2WHENa=1ANDb=0ELSE3WHENa=1ANDb=1ELSE4;ENDbehave;,选择信号代入语句,根据sel的不同值来完成选择功能,条件信号代入语句,根据a和b不同取值,对信号sel代入值,4、变量赋值语句,书写格式:目的变量:=表达式;意义:表达式的值替代目的变量的值,立即有效。,注意,1)两边的数据类型必须相同;2)目的变量的类型和范围应事先给出;3)右边的表达式可以是变量,信号或字符;4)变量只在进程或子程序中使用,它无法传递到进程之外。,1)赋值方式的不同:变量:=表达式;信号=表达式;2)硬件实现的功能不同:信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表暂存的临时数据。3)有效范围的不同:信号:程序包、实体、结构体;全局量。变量:进程、子程序;局部量。4)赋值行为的不同:信号赋值延迟更新数值;变量赋值立即更新数值;,补充:变量与信号的差异,信号赋值:architecturertlofsigissignala,b:std_logic;-定义信号beginprocess(a,b)begina=b;b=a;endprocess;endrtl;,补充举例:信号赋值与变量赋值的比较,在进程内部信号是延时更新,信号只有在整个过程执行完毕后(endprocess)才更新完成。此例中,a=b先是b的值赋给a,但a的值并不立即更新;所以在执行b=a时,a还是先前的a,即是要将a的原值赋给b;当程序执行到endprocess时,a和b才更新完成,最终a和b值互换。,-结果是a和b的值互换,变量赋值:architecturertlofvarisbeginprocessvariablea,b:std_logic;-定义变量begina:=b;b:=a;endprocess;endrtl;,补充举例:信号赋值与变量赋值的比较,变量的赋值立即生效,a的值立即更新为b的初始值,此时的a已经变为b的初值,于是就是将b的初值代入b,-结果是a和b的值都等于b的初值,3.4.2IF语句,IF语句是VHDL语言中最基础、最常用的语句,常用于选择器、比较器、编码器、译码器状态机的设计,。IF语句根据制定的条件来执行指定的语句,共有三种类型:1、单选控制;2、二选控制;3、多选控制。,1、IF语句的单选控制,格式:IF条件THEN顺序处理语句;ENDIF;当程序执行到该IF语句时,就要判断IF语句所指定的条件是否成立。如果条件成立,则执行顺序处理语句;不成立则跳过IF语句所包含的顺序处理语句,而向下执行IF语句的后续语句。这里的条件起到门闩的控制作用。,D触发器的描述举例,LIBRARYIEEE;USEIEEE.STD.LOGIC.1164.ALL;ENTITYdffISPORT(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDdff;ARCHITECTURErtlOFdffISBEGINPROCESS(clk)BEGINIF(clkEVENTANDclk=1)THENq=d;ENDIF;ENDPROCESS;ENDtrl;,注,此例中,IF语句的条件是时钟信号clk事件发生,且时钟clk=1(时钟脉冲上升沿到来)。只有在这个时候d端信号值才赋值给q端。当该条件不满足时,q端维持原来的输出值。,2、IF语句的二选择控制,格式:IF条件THEN顺序处理语句;ELSE顺序处理语句;ENDIF;当条件满足时,则执行THEN和ELSE之间的顺序处理语句;如不满足则执行ELSE和ENDIF之间的顺序处理语句。,IF二选择控制举例,二选一电路ARCHITECTURErtlOFmux2ISBEGINPROCESS(a,b,sel)BEGINIF(sel=1)THENc=a;ELSEc=b;ENDIF;ENDPROCESS;ENDrtl;,此例中,二选一电路的输入端为a和b,选择控制端为sel,输出端为c。,注,3、IF语句的多条件控制,格式:IF条件THEN顺序处理语句;ELSIF条件THEN顺序处理语句;ELSIF条件THEN顺序处理语句;ELSE顺序处理语句;ENDIF;,在多选择控制的IF语句中,设置了多个条件。当某个条件满足时就执行跟在该条件这后的顺序处理语句,如果条件都不满足则执行ELSE和ENDIF之间的语句。,注,IF语句多条件控制语句举例,四选一电路:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);sel:INSTD_LOGIC_VECTOR(1DOWNTO0);y:OUTSTD_LOGIC);ENDmux4;ARCHITECTURErtlOFmux4ISBEGINPROCESS(input,sel)BEGINIF(sel=“00”)THENy=input(0);ELSIF(sel=“01”)THENy=input(1);,ELSIF(sel=“10”)THENy=input(2);ELSEy=input(3);ENDIF;ENDPROCESS;ENDrtl;,注,if_then_elsif语句中隐含了优先级别的判断,最先出现的条件优先级最高,可用于设计具有优先级的电路。如8-3优先级编码器。,3、IF语句小结,(1)IF语句可以用于凡是可以进行条件控制的逻辑电路设计。(2)IF语句的条件判断的输出是布尔量,即是“真”(true)或“假”(FALSE)。因此在IF语句的条件表达式中只能使用关系运算操作符(=,/=,=)及逻辑运算操作符的组合表达式。(3)IF语句只能在进程内部使用。,条件信号赋值语句与进程中的多选择if语句等价:,q=aWHENsela=1ELSEbWHENselb=1ELSEc;,PROCESS(sela,selb,a,b,c)BEGINIFsela=1THENq=a;ELSIFselb=1THENq”所指的顺序处理语句。,CASE语句中条件表达式的形式可以是:1)一个值;2)多个值的逻辑“或”关系;3)一个取值范围;4)表示其它所有的缺省值(OTHERS)。如:WHEN值=顺序处理语句;-单个值WHEN值|值|值|值|=顺序处理语句;-多个值的“或”WHEN值TO值=顺序处理语句;-一个取值范围WHENOTHERS=顺序处理语句;-其它所有缺省值,CASE语句使用举例,ENTITYmux4ISPORT(a,b,i0,i1,i2,i3:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREmux4_behaveOFmux4ISSIGNALsel:STD_LOGIC_VECTOR(1DOWNTO0);BEGINselqqqq顺序处理语句;WHEN分支条件=顺序处理语句;WHEN分支条件=顺序处理语句;ENDCASE;,3.4.4LOOP语句,LOOP语句与其它高级语句中的循环语句一样,使程序能进行有规则的循环,循环次数受迭代算法控制。VHDL语言中常用来描述位片逻辑及迭代电路的行为。LOOP语句书写格式一般有两种:1)FOR循环变量LOOP;2)WHILE条件LOOP。,1、FOR-LOOP循环,书写格式如下标号:FOR循环变量IN离散范围LOOP顺序处理语句;ENDLOOP标号;,循环变量的值在每次循环中都将发生变化;离散范围则表示循环变量在循环过程中依次取值的范围。例如:sum:=0;-sum初始值为0ASUM:FORiIN1TO9LOOPsum=i+sum;ENDLOOPASUM;该例中i是循环变量,它可取1,2,.,9共9个值,也就是sum=i+sum的算式应循环计算9次。,LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYparity_checkISPORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC);ENDparity_check;ARCHITECTURErtlOFparity_checkISBEGINPROCESS(a)VARIABLEtmp:STD_LOGIC;BEGINtmp:=0;FORiIN0TO7LOOPtmp:=tmpXORa(i);ENDLOOP;y=tmp;ENDPROCESS;ENDrtl;,1)本例实际是8位奇偶校验电路2)i是一个循环变量,使用时无需先声明,也不能代入信号量和变量。3)进程内tmp是变量,tmp的值通过赋给信号y而带出进程。,FOR-LOOP循环举例,逐一对输入的8位数中每一位都进行异或运算,输入8位2进制代码,输出校验码,暂存奇偶校验位,注,2、WHILELOOP循环,书写格式如下:标号:WHILE条件LOOP顺序处理语句;ENDLOOP标号;如果条件为“真”,则进行循环;如果条件为“假”,则结束循环。,例:用WHILE语句来描述奇偶校验电路,.ARCHITECTUREbehaveOFparity_checkISBEGINPROCESS(a)VARIABLEtemp:STD_LOGIC;VARIABLEi:INTEGER;BEGINtemp:=0;i:=0;WHILE(i8)LOOPtemp:=tempXORa(i);i:=i+1;ENDLOOP;y=temp;ENDPROCESS;ENDbehave;,在WHILE-LOOP语句中的变量i要首先声明才能使用,这一点和FOR-LOOP语句中不一样。循环变量i需事先定义、赋初值,并指定其变化方式。一般使用FOR-LOOP语句比WHILE-LOOP语句更多。,3、NEXT语句,在LOOP语句中用NEXT语句来跳出本次循环,格式为:NEXT标号WHEN条件;NEXT语句执行时将停止本次循环,而转入下一次新的循环。“标号”为下次循环的起始位置,而条件为NEXT语句执行的条件。如果无“标号”也无条件,则只要执行到该语句就无条件跳出本次循环,从LOOP语句的起始位置进入下一次循环。NEXT语句实际上是用于LOOP语句的内部循环控制。,NEXT语句举例,PROCESS(a,b)CONSTANTmax_limit:INTEGER:=255;BEGINFORiIN0TOmax_limitLOOPIF(done(i)=TRUE)THENNEXT;ELSEdone(i):=TRUE;ENDIF;q(i)=a(i)ANDb(i);ENDLOOP;ENDPROCESS;,无“标号”也无条件,则只要执行到该语句就无条件跳出本次循环,4、EXIT语句,EXIT语句用于结束循环状态,从LOOP语句
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校洗脸池管理制度
- 学校美发室管理制度
- 学校隔离点管理制度
- 学生早到校管理制度
- 孵化园设备管理制度
- 安全用蒸汽管理制度
- 安明措施费管理制度
- 安置点安全管理制度
- 实训室发放管理制度
- 实验试剂库管理制度
- 2025年高压电工作业考试国家总局题库及答案(共280题)
- 2024年03月安徽省农业信贷融资担保有限公司2024年招考笔试历年参考题库附带答案详解
- DB12T 692-2016 天津市文书类电子文件元数据规范
- T-ACEF 148-2024 危险废物物联网智能监控设备技术要求
- 门店规章制度守则范本
- 工地交通安全
- 【MOOC】多媒体技术与应用-同济大学 中国大学慕课MOOC答案
- 高等数学基础-002-国开机考复习资料
- 2024年1月云南高中学业水平考试数学试卷真题(含答案详解)
- 大模型原理与技术-课件 chap10 多模态大模型
- 高绩效教练读书分享
评论
0/150
提交评论