




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
许钢
2024/1/4在系统可编程技术应用设计1第5讲VHDL顺序语句顺序描述语句只能出现在进程(Process)或子程序中,它定义进程或子程序所执行的算法。顺序描述语句按这些语句在进程或子程序中出现的顺序执行,这一点与高级语言类似。
VHDL中常用的顺序描述语句包括:信号和变量赋值、Wait、If、Case、Loop、Next、Exit、断言语句、过程调用语句、空语句等。许钢
2024/1/4在系统可编程技术应用设计2第5讲VHDL顺序语句所有的顺序描述语句都只能在进程(process)中使用,进程内是顺序执行,进程与进程之间是并发的,有点类似于计算机操作系统中“进程”的概念。5.1进程(Process)
Process语句的格式:
[进程名]:Process(敏感信号列表)
Begin
顺序描述语句;
EndProcess;
Process语句从Process开始,到End
Process结束,进程名可以省略。功能相对独立的模块可以用一个进程来描述。许钢
2024/1/4在系统可编程技术应用设计3第5讲VHDL顺序语句Process语句的格式:例1:
Entitymux2Is
Port
(a,b:Instd_logic;
s:Instd_logic;
f:Outstd_logic);
Endmux2;
ArchitecturebehaviorOfmux2Is
Begin
mux2:Process(a,b,s)
Begin
If(s=‘0’)Thenf<=a;
Elsef<=b;
EndIf;
EndProcess;
Endbehavior;5.1进程(Process)许钢
2024/1/4在系统可编程技术应用设计4第5讲VHDL顺序语句Process的启动和敏感信号列表:进程在仿真运行中,总是处于两个状态之一:执行或挂起。初始启动时,进程处于执行状态,进程中的顺序语句从前向后逐句执行一遍,即从Process执行到EndProcess之前。当最后一条语句执行完后,返回到进程开始的Process语句,进程处于挂起状态。此时,只要该进程的敏感信号列表中任何一个信号发生变化(即信号的值发生变化,如从“1”变到“0”或从“0”变到“1”),进程又再次处于执行状态。然后,再挂起,再执行,一直循环下去,直到仿真结束。从硬件方面来看,一个Process相当于一个电路模块,它的敏感信号列表指明了所有能引起该电路模块状态发生改变的信号。例1中mux2进程的敏感信号列表是(a,b,s),三个信号中的任何一个发生变化,都引起进程重新执行。从硬件特性来看,二选一电路的a,b,s输入的变化都可能引起输出发生变化。5.1进程(Process)许钢
2024/1/4在系统可编程技术应用设计5第5讲VHDL顺序语句Process的启动和敏感信号列表:敏感信号列表对于进程至关重要,它是进程描述的一个重要组成部分。一般来说,如果描述的是组合电路模块,那么敏感信号列表必须包括所有的输入信号;否则,在综合时会出错,在仿真时将导致一个错误的结果。如果描述的是时序电路模块,那么敏感信号列表只需要包括时钟信号和异步清零/置位信号。因为,触发器的输出只在时钟上升/下降沿才会改变。在一个结构体里可以有多个Process语句,这些Process之间可以通过一些信号相互联系。在一个Process的执行中,某个信号的值发生改变,它会导致另一个(或几个)进程的重新执行,如此构成所有进程的反复执行。5.1进程(Process)许钢
2024/1/4在系统可编程技术应用设计6第5讲VHDL顺序语句1.信号和变量的赋值:信号的赋值语句格式:目标信号名<=表达式;例2:
c<=‘1’;
q<=“010010”;
q(1)<=‘1’;
q(3downto1)<=“001”;
a<=b;
s<=axorb;
x<=y+z;需要特别注意的是:VHDL是强类型语言,左边的信号量和右边的表达式的类型和位长度都必须一致,否则将出错。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计7第5讲VHDL顺序语句1.信号和变量的赋值:变量的赋值语句格式:目标变量名:=表达式;例3:
v:=‘1’;
s:=“010010”;
变量赋值的符号与信号赋值的符号不同,表达式与信号赋值的表达式写法是完全一样的。变量与信号有明显的区别:变量只在定义它的进程和子程序内有效,无法传递到进程之外;而信号在定义它的结构体内有效。赋给变量的值立即成为当前值;而赋给信号的值必须在进程结束后才能成为当前值。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计8第5讲VHDL顺序语句2.转向控制语句:条件控制语句——If语句:
IF语句的基本格式:
If条件ThenIf条件Then顺序描述语句; 顺序描述语句;
ElseEndIf;顺序描述语句;
EndIf;5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计9第5讲VHDL顺序语句2.转向控制语句:条件控制语句——If语句:例4:EntitydffIs
Port(d:Instd_logic;clk:Instd_logic;
q:Outstd_logic);Enddff;ArchitecturebehaviorOfdffIs
Begin
Process(clk)
Begin
If(clk'eventandclk=’l’)Then
q<=d;
EndIf;
EndProcess;Endbehavior;5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计10第5讲VHDL顺序语句2.转向控制语句:条件控制语句——If语句:
IF语句的基本格式:
If条件1Then顺序描述语句;
Elsif条件2Then顺序描述语句;
Elsif条件3Then
...
Else顺序描述语句;
EndIf; 5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计11第5讲VHDL顺序语句2.转向控制语句:条件控制语句——Case语句:
Case语句的基本格式:
Case表达式Is
When条件表达式1=>顺序描述语句;
When条件表达式2=>顺序描述语句;
...
When条件表达式n=>顺序描述语句;
EndCase;
Case语句的各个条件表达式之间没有优先级,所以,给定的条件表达式不能有重叠,否则将无法确定执行哪一个分支。而且,如果没有列举出Case和Is之间的表达式的全部取值,则Whenothers=>必不可少。
5.2进程(Process)中的顺序语句条件表达式可以是以下格式:When值=>When值1|值2|...|值n=>When值ito值j=>Whenothers=>它们分别表示条件表达式的值是某个确定的值、多个值中的一个、一个取值范围中的一个和其他所有的默认值。许钢
2024/1/4在系统可编程技术应用设计12第5讲VHDL顺序语句2.转向控制语句:
Case语句和If语句的区别:在大多数情况下,能用Case语句描述的逻辑电路,同样也可以用多条件If语句来描述。但有时能用If语句描述的逻辑电路,却不能用Case语句描述。通常在Case语句中,条件表达式(When语句)可以颠倒次序,不致于发生错误。但对于多条件的If语句,却不能颠倒条件的次序。因为在Case语句中,条件表达式是没有优先级的,而多条件的If语句的条件是有优先级的。在If语句中,最前面的条件其优先级最高,越往后优先级越低,也就是说,先处理最起始的条件;如果不满足,再处理下一个条件。而在Case语句中,所有值的判定是并行处理的。例如,优先级编码器可以用If语句来描述,但不可以用Case语句描述。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计13第5讲VHDL顺序语句2.转向控制语句:例5(8位优先编码器):EntitypriorityIsport(I:inbit_vector(7downto0);A:outbit_vector(2downto0);--encodedoutputGS:outbit);--groupsignaloutputEndpriority;Architecturev1OfpriorityIsBegin
process(I)beginGS<='1';--setdefaultoutputsA<="000";
IfI(7)='1'thenA<="111";ElsifI(6)='1'thenA<="110";ElsifI(5)='1'thenA<="101";ElsifI(4)='1'thenA<="100";ElsifI(3)='1'thenA<="011";ElsifI(2)='1'thenA<="010";ElsifI(1)='1'thenA<="001";ElsifI(0)='1'thenA<="000";ElseGS<='0';Endif;Endprocess;Endv1;5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计14第5讲VHDL顺序语句2.转向控制语句:循环控制语句——For循环:
For循环语句的基本格式:
[标号:]For循环变量in循环次数范围Loop顺序描述语句;
End
Loop
[标号];这里,标号是可以省略的;循环变量是整数型变量,它不需要在结构体或进程中定义,在循环体(由顺序描述语句构成)中不能通过信号或变量给循环变量赋值。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计15第5讲VHDL顺序语句2.转向控制语句:例6
For循环(奇偶校验电路):Entityparity_checkerIs
Port(data:Instd_logic_vector(7downtoO);
p:Outstd_logic);Endparity_checker;ArcLitecturebehaviorOfparity_checkerIs
Begin
Process(data)
Variabletmp:std_logic;
Begin
tmp:=‘0’;
Foriin7downto0Loop
tmp:=tmpxordata(O);
EndLoop;
p<=tmp;
EndProcess;Endbehavior;5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计16第5讲VHDL顺序语句2.转向控制语句:循环控制语句——While循环:
While循环语句的基本格式:
[标号:]While条件Loop顺序描述语句;
End
Loop
[标号];这里,当条件为“真”时,执行循环体中的语句;如果条件为“假”时,则结束循环。在循环体内,必须包含条件式中判别变量的赋值语句,否则会形成死循环。实际上,固定次数的循环一般用For循环,不定次数的循环用While循环比较方便。但在进行需要综合的电路描述时,不定次数的循环较难控制,所以,一般不用While循环。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计17第5讲VHDL顺序语句2.转向控制语句:
Next语句:
Next语句的基本格式:
Next[标号]
[When条件];
Next语句用于从循环体跳出本次循环。执行到该语句时,如果条件为“真”时,将结束本次循环,跳到“标号”规定的语句,开始下次循环。如果标号省略,则表示跳到本层循环的起始位置,开始下一次循环。如果标号不省略,则可以跳到多层嵌套循环的指定外层循环起始处。如果“When条件”省略,则执行到Next语句时无条件结束本次循环。如果“When条件”不省略,则条件为True时,结束本次循环。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计18第5讲VHDL顺序语句2.转向控制语句:
Exit语句:
Exit语句的基本格式:
Exit[标号]
[When条件];
Exit语句用于结束循环。执行到该语句时,如果条件为“真”时,将结束循环,跳到“标号”规定的语句。如果标号省略,则表示跳到EndLoop语句的后继位置,开始向后执行。如果标号不省略,则可以跳到多层嵌套循环的指定外层循环起始处。如果“When条件”省略,则执行到Next语句时无条件结束循环。如果“When条件”不省略,则条件为True时,结束循环。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计19第5讲VHDL顺序语句2.转向控制语句:
Next语句和Exit语句的区别:
Next只结束本次循环,开始下一次循环;而Exit语句结束整个循环,跳出循环体外。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计20第5讲VHDL顺序语句3.
Wait等待语句(进程挂起语句):进程的状态还可以通过Wait语句来控制,当进程执行到Wait语句时,将被挂起,并设置好再次执行的条件。可以是无限等待(Wait)或有限等待。有限等待的条件可以是:等待一段时间(WaitFor)、等待某些信号发生变化(Waiton)、等待某个条件满足(WaitUntil),这几个条件还可以组合成一个复合条件。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计21第5讲VHDL顺序语句3.
Wait等待语句(进程挂起语句):
Waiton语句格式:
Waiton信号列表;信号列表可以包括一个或多个信号,信号列表中的任何一个信号的值发生变化,进程将结束挂起状态,进入执行状态,执行Waiton语句后面的语句。如:
Waitona,b,s;它等待信号a、b、s中的任何一个发生变化。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计22第5讲VHDL顺序语句3.
Wait等待语句(进程挂起语句):例7:Entitymux2Is
Port(a,b:Instd_logic;
s:Instd_logic;
f:Outstd_logic);Endmux2;ArchitecturebehaviorOfmux2IsBegin
mux2:Process(a,b,s)
Begin
If(s=‘0’)Thenf<=a;
Elsef<=b;
EndIf;
EndProcess;Endbehavior;5.2进程(Process)中的顺序语句mux2:Process()Begin
If(s=‘0’)Thenf<=a;
Elsef<=b;
EndIf;
Waitona,b,s;EndProcess;许钢
2024/1/4在系统可编程技术应用设计23第5讲VHDL顺序语句3.
Wait等待语句(进程挂起语句):
WaitUntil语句格式:
WaitUntil布尔表达式;当布尔表达式为“真”时,进程将结束挂起状态,进入执行状态,执行WaitUntil语句的后继语句。如:
WaitUntila=’1’;此时,当信号量a的值不是’1’时,进程执行到该语句将被挂起,当a的值为’1’时进程再次被启动,继续执行Wait语句的后继语句。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计24第5讲VHDL顺序语句3.
Wait等待语句(进程挂起语句):
WaitFor语句格式:
WaitFor时间表达式;如:
WaitFor30ns;
WaitFor语句只能仿真时使用,不能被综合。5.2进程(Process)中的顺序语句许钢
2024/1/4在系统可编程技术应用设计25第5讲VHDL顺序语句3.
Wait等待语句(进程挂起语句):
复合Wait语句:例如:
Waitonclkuntilclk=‘1’;该语句等待到clk信号的值发生变化,而且clk的值为‘1’(即clk从‘0’变到‘1’时),进程将结束挂起状态,进入执行状态,执行该语句的后继语句。编程时注意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年行为经济学导论考试卷及答案
- SOF-436-生命科学试剂-MCE
- RMC-5127-生命科学试剂-MCE
- 2025年生态文明与可持续发展政策分析考试试卷及答案
- 2025年人工智能行业人才招聘考试试题及答案
- 2025年基础数学能力测试试卷及答案
- 2025年酒店管理师资格考试试卷及答案
- 2025年法考笔试模拟试题及答案
- 艺术鉴赏进阶:绘画技巧与风格欣赏课教案
- 生活改变了我1500字(14篇)
- Module 3 Unit 1 Do you like bananas(说课稿)-2024-2025学年外研版(一起)英语二年级上册
- 外卖代理授权合同范例
- 白酒寄售合同协议书范文模板
- 历代中医名人
- 垃圾渗滤液处理站运维及渗滤液处理投标方案(技术方案)
- 国家开放大学本科《商务英语4》一平台机考真题及答案(第二套)
- JG-T 568-2019 高性能混凝土用骨料
- 变电站一键顺控改造技术规范(试行)
- 光储充一体化充电站设计方案
- JTT 854-2013 公路桥梁球型支座规格系列
- 《公路桥涵施工技术规范》JTGT3650-2020
评论
0/150
提交评论