理解信号与变量、并行语句与顺序语句

理解信号与变量、并行语句与顺序语句

ID:15873847

大小:47.50 KB

页数:9页

时间:2018-08-06

理解信号与变量、并行语句与顺序语句_第1页
理解信号与变量、并行语句与顺序语句_第2页
理解信号与变量、并行语句与顺序语句_第3页
理解信号与变量、并行语句与顺序语句_第4页
理解信号与变量、并行语句与顺序语句_第5页
资源描述:

《理解信号与变量、并行语句与顺序语句》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VHDL:理解信号与变量、并行语句与顺序语句初学VHDL,对一些问题总是感到困惑。比如,同样的赋值语句,在什么场合是并行的,什么时候又是顺序的?信号与变量有什么区别,为什么在PROCESS里,对信号赋值的结果要等到进程挂起才起作用,而变量赋值却立刻起作用?其实,从语句产生的电路这个角度,可以更深刻地理解这些问题,下面是我自己摸索的一些理解方法,有不妥之处请大虾们指正!1、赋值语句。  同样a<=b的赋值语句,会形成什么电路,起关键作用的是敏感信号。  a)如果a<=b是在进程之外,那么隐含的敏感信号就是b,那么,这个赋

2、值语句就形成一条连线。  b)如果是在一个同步进程中,如if(rising_edge(CLK))thena<=b,这时候,就会形成一个触发器,因为敏感信号是时钟边沿。  c)如果敏感信号是一个电平信号,那么会形成一个锁存器。如一个不完整的if条件:if(cond='1')thena<=b;2、并行语句和顺序语句。  从形成的电路的角度,并行语句最终会有两种形式:  a)并联或不相联的逻辑门或组合电路。因为是并联或不相联的,当然是同时执行,这个好理解。  b)由同一个时钟边沿驱动的D触发器,不论D触发器之间是并联、串联或

3、者不相连的。为什么呢?因为触发器是在同一个时钟边沿同时翻转的,也就是同时执行,所以本质上就是并行。  顺序语句只有一种情况,就是形成串联的逻辑门或组合电路。3、信号与变量有什么不同?为什么信号赋值要等到进程挂起生效,变量赋值却立刻生效?  其实,了解了上一点并行语句和顺序语句所生成的电路,这个问题就好理解了。因为在同步进程里的并行语句,大多是形成b的情况,就是多个由同一时钟驱动的触发器。由于从触发器的输入到翻转、输出需要一定的延时,这个延时基本就是进程执行完毕的时间,所以,触发器翻转后的输出在同一个时钟边沿中是看不到的

4、,因为它还没翻转过来呢。这就是信号赋值要等到进程挂起才生效的原因。  那为什么变量赋值却能立刻生效呢?这是因为,变量其实是为了帮助在同步进程中生成一些逻辑门或组合电路用的。看一看代码:var1:=noti1;var2:=var1andi2;sig<=var2;生成的RTL,就会看到,两个变量赋值语句其实生成了一个非门、一个与门。而且,输入信号i1和i2到var2这段是个组合电路,是不受时钟边沿控制的,而到信号赋值语句sig<=var2,才形成一个D触发器。所以,这两个变量赋值语句生成了一个串联的非门和与门,那当然var

5、2取到的是var1赋值后的值了。  最后顺便提一下为什么变量必须只能在进程内可见,我猜可能是为了防止在同步进程中输出异步信号,造成混乱吧。因为如果变量是外部可见的,如上面的var2,那么var2的值就可以异步输出到进程外了。所以限制变量只能进程内可见后,要输出变量的值就只能赋值给一个信号,在同步进程中,就是加了一个触发器了。VHDL的并行语句用来描述一组并发行为,它是并发执行的,与程序的书写顺序无关。进程语句begin进程语句包含在结构体中,一个结构体可以有多个进程语句,多个进程语句间是并行的,并可访问结构体或实体中定

6、义的信号。因此进程语句称为并行描述语句。进行语句结构内部所有语句都是顺序执行的进程语句的启动是由process后敏感信号表中所标明的敏感信号触发来的。各进程间的通信是由信号来传递的语法如下:标记:process(敏感信号表)                         变量说明语句;begin                          一组顺序语句;endprocess标记;标记:为进程标号敏感信号表:是进程用来读取所有敏感信号(包括端口)的列表。变量说明:主要包括变量的数据类型说明、子程序说明等从begi

7、n到endprocess之间是一组顺序执行语句。敏感信号表所谓敏感信号表:就是用来存放敏感信号的列表。在进程语句中,敏感信号指那些发生改变后能引起进程语句执行的信号。敏感信号表中可以使用一个或多个信号,当其中一个或多个信号值改变时,就在进程内部引起语句执行。敏感信号表也可忽略,但程序中必须有其他形式的敏感信号激励。例如wait、waitfor、waituntil和waiton。进程语句的启动在VHDL语言中,进程有两种工作状态:等待和执行。当敏感信号表中的信号没有变化时,进程处于等待状态;当敏感信号表中的信号有变化时,

8、进程处于执行状态进程语句的同步同一个结构体中不仅可以有多个进程存在,同一个结构体中的多个进程还可以同步。VHDL中通常采用时钟信号来同步进程,具体方法是:结构体中的几个进程共用同一个时钟信号来进行激励。并发信号赋值语句信号赋值语句在进程内部出现时,它是一种顺序描述语句。信号赋值语句在结构体的进程之外出现时,它将以一种并发语句的形式

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

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

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