VHDL进程

PROCESS 语句结构包含了一个代表着设计实体中部分逻辑行为的独立的顺序语句描述的进程

 

进程内部是顺序执行的,进程之间是并行运行的;VHDL中的所有并行语句都可以理解为特殊的进程,只是不以 Process结构出现,其输入信号和判断信号就是隐含的敏感表

 

需要注意的是在VHDL 中所谓顺序仅仅是指语句按序执行上的顺序性但这并不意味着PROCESS 语句结构所对应的硬件逻辑行为也具有相同的顺序性

 

一个结构体中可以含有多个PROCESS 结构每一PROCESS 结构对于其敏感信号参数表中定义的任一敏感参量的变化每个进程可以在任何时刻被激活或者称为启动而在一结构体中所有被激活的进程都是并行运行的这就是为什么PROCESS 结构本身是并行语句的道理

 

进程内部是顺序执行的,进程之间是并行运行的;VHDL中的所有并行语句都可以理解为特殊的进程,只是不以 Process结构出现,其输入信号和判断信号就是隐含的敏感表

 

进程有组合进程时序进程两种类型,组合进程只产生组合电路,时序进程产生时序和相配合的组合电路

时序进程中必须包含一个时钟敏感信号

组合进程中全部采用变量(而不是信号)

 

1. PROCESS 语句格式
PROCESS 语句的表达格式如下
[进程标号] PROCESS [ ( 敏感信号参数表 ) ] [IS]
[进程说明部分]
BEGIN
顺序描述语句
END PROCESS [进程标号]

 

例子:关于process(clk) begin

                               if clk'event and clk='1' then

                                  a<=d;         --d,q为port,a,b为signal     

                                  b<=a;

                                  q<=b;

                              end if ;

                      end   process;中的一些问题!

首先,此进程描述的是当clk上升沿发生时,将信号由port d输入到a到b,再由port q输出。

下面要说的是这个进程执行时的几个问题。

首先,此进程执行的时候,a的赋值,b的赋值,q的赋值是并行执行的,也就是说a,b,q的赋值是同时的。但这是在进程中,也就是说应该先将a赋值,再将a的值赋给b,最后把b的值由q输出,这样一个顺序执行,为什么会是并行执行的呢?为什么赋值结束后q输出的值并不是d输入的值呢,而是上一时钟b的值?

这是因为,对于某一个时钟周期的信号,确实是按从a到b到q的顺序传输的。而对于同一个时钟,各个节点上的信号都不是当前其上一个节点上的信号,原因很简单,就是因为要有一个固定延时赋值才完成。也就是说q输出的值是b上一时钟的值,而b被更新的值是上一时钟a的值... ...而当前这个时刻,每一个一个节点的值都是被赋给的新值,也就是说,在这个固定延时时间里,各个节点被赋值是同时发生的。

这个进程中的信号的顺序赋值,很完美的体现了硬件行为,即整体描述了一个信号是如何在节点之间传递的,又描述出每个时钟的信号都是如何在节点之间动作的,这就是HDL的魅力吧!~呵呵

上面这个例子充分说明了process中的过程是并行进行的!!!

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值