顺序语句和并行语句

顺序语句和并行语句

ID:8871204

大小:51.50 KB

页数:4页

时间:2018-04-10

顺序语句和并行语句_第1页
顺序语句和并行语句_第2页
顺序语句和并行语句_第3页
顺序语句和并行语句_第4页
资源描述:

《顺序语句和并行语句》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、顺序语句与并行语句中你应该知道的 2007-11-1322:18顺序语句是指仿真角度看,每一条语句的执行是按书写顺序进行的。顺序语句只能在进程、函数、过程内部使用。VHDL有一下几种基本顺序语句:变量赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句。常用的顺序语句有if_then_else,case_when,loop_for等。并行语句是硬件描述语言与编写软件程序的最大区别所在,所有并行语句在结构体中的执行都是同时进行,即它们的执行与语句书写的顺序无关。这种并行性是由硬件本身的并行性所决定的,即

2、一旦电路接通电源,他的各部分就会按照事先设计好的方案同时工作。VHDL有一下几种主要并行语句:进程语句、块语句、并行信号赋值语句、元件例化语句、生成语句、并行过程调用语句。大家要注意,把进程语句(process)当作并行语句,是因为进程与进程间的执行是并行的(一个architecture里的不同process是同时执行的)。但进程内部是顺序执行的,大家千万不要因为进程语句是并行语句就误认为是同时执行的。本人刚开始学习时也困惑过一阵,为什么有些有些顺序语句在实际使用时却表现出“并行特性“。这有两个程序和大家分享一下使大家

3、少走弯路。程序(1)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;----Uncommentthefollowinglibrarydeclarationifinstantiating----anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitytestisport(c

4、lk,reset:instd_logic);endtest;architectureBehavioraloftestissignala,b:integerrange0to7;beginprocess(reset,clk)beginifreset='1'thena<=1;b<=0;elsifrising_edge(clk)thenifa=1then--(a)b<=3;--(a)endif;--(a)ifb=3then--(b)a<=6;--(b)endif;--(b)endif;endprocess;endBehavio

5、ral;程序(2)libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;----Uncommentthefollowinglibrarydeclarationifinstantiating----anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitytestisport(cl

6、k,reset:instd_logic);endtest;architectureBehavioraloftestissignala,b:integerrange0to7;beginprocess(reset,clk)beginifreset='1'thena<=1;b<=0;elsifrising_edge(clk)thenifb=3then--(b)a<=6;--(b)endif;--(b)ifa=1then--(a)b<=3;--(a)endif;--(a)endif;endprocess;endBehavior

7、al;可以说两个程序几乎一样,只是将aif_then语句和bif_then语句整体调换位置颠倒。但前面提到if_then_else语句是顺序语句,执行会受语句顺序影响,即两个程序执行结果不一样。但仿真发现,进程1与进程2的结果是一模一样波形如下图。本人当时很困惑,后来看了一些书,查了一些相关资料,找到了原因也就是我上一篇博客中提到的:信号的赋值语句即是被执行,也不会是信号立即发生代入,下一条语句执行时,仍然使用原来的信号值。查阅一些资料,可知实践证明:一个进程中,如果没有变量的存在,可以将进程内的语句视为并行执行,即书

8、写顺序不影响结果。如进程中存在变量,则进程表现出顺序性,但信号的代入语句仍是在进程被挂起时同时执行的。大家可以多写些变量和信号混合的进程然后仿真加深理解。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。