打印

基础问题:顺序执行还是并行执行

[复制链接]
3373|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
entepino|  楼主 | 2013-4-18 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
顺序执行还是并行执行?
PulseCNT: Process(reset,CLK200k)
Begin
    if RESET = '0'  then
      locaCntPulse   <= "0000000000000000";
      EnPulseOut <= '0';
      EnPulseOut <= '0';
   elsif (clk200k'EVENT AND CLK200k = '1') then        
      LocaCntPulse <= LocaCntPulse + "0000000000000001";
               If (LocaCntPulse>"0000000000000001"  and LocaCntPulse<"0000000000110001") then               
                    EnPulseIN  <= '1';   
                    EnPulseOut <= '0';
          elsif (LocaCntPulse="0000000000110001") then
                    EnPulseIN  <= '0';   
                    EnPulseOut <= '0';
          elsif (LocaCntPulse>"0000000000110001"  and LocaCntPulse<"1100000000110001")
                       EnPulseIN  <= '0';   
                       EnPulseOut <= '1';
           elsif (LocaCntPulse="1100000000110001") then
                      EnPulseIN  <= '0';   
                    EnPulseOut <= '0';
          end if;
end if;

end  process  PulseCNT;

请问,在第一次clk200k上升沿进入此process后,是对1进行判断还是对0进行判断?
即是这样运行吗:clk200k上升沿触发后,计数加1的同时,对LocaCntPulse进行判断,即对0进行判断,计数和判断结束后,推出process。下一次进入这个process后,LocaCntPulse才更新,此时LocaCntPulse才是1.
还是这种情况:clk200k上升沿触发后,顺序执行,对LocaCntPulse加1计数,对1进行判断,判断结束后,才推出process。第一种情况,EnPulseIN 变高前,有3个clock,即0,1,2;第二种情况,EnPulseIN 变高前,有2个clock,即,1,2;我个人觉得应该是第一种情况,但看过资料,说process内部,是顺序执行,应该是第二种情况,到底应该是哪种情况,请指点一二,谢谢!

相关帖子

沙发
lwq030736| | 2013-4-18 21:59 | 只看该作者
你看RTL图就知道顺序还是并行执行了

使用特权

评论回复
板凳
resxpl| | 2013-4-18 23:28 | 只看该作者
这个问题用RTL图的话, 有点像杀**用牛刀。
process内对signal赋值,都是非阻塞的,也就是说,所有的赋值都是同时进行,没有先后。
例如:
process(clk)
begin
if clk'event and clk=1 then
a<=a+1;
a<=a+1;
a<=a+1;
end if
最终结果是a+1而不是a+3
以最后一次的赋值为输出。前面的都会忽略。

回到lz的问题。
LocaCntPulse <= LocaCntPulse + "0000000000000001";
这个结果不会立即赋值给LocaCntPulse
因此后面if...else执行时LocaCntPulse并没有加1

使用特权

评论回复
地板
entepino|  楼主 | 2013-4-19 08:40 | 只看该作者
谢谢,欢迎大家评价

使用特权

评论回复
5
huangxz| | 2013-4-19 13:48 | 只看该作者

使用特权

评论回复
6
tagell| | 2013-4-19 17:22 | 只看该作者
学习中!!!!1

使用特权

评论回复
7
summerxue| | 2013-4-20 23:28 | 只看该作者
对于硬件描述语言,不要像软件编程一样,只是针对语句说事,要知道它是硬件“描述”语言,你设计的是硬件电路,而不是软件程序,只不过用语句表达而已。你搞清楚了你描述的是什么电路,你就明白了它的时序是什么样子的了。
所有的数字电路都是由“组合逻辑”和“时序逻辑”组成的,硬件电路都是并发的,没有什么“顺序执行”之说,所谓的“顺序”是由时钟节拍产生的。
组合逻辑的输出是随着输入的改变而即时改变的;若组合逻辑的输入是由时序逻辑产生,则只有当时钟有效沿到来的一定时间后,时序逻辑的输出才有效,其后的组合逻辑才跟着改变。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

211

主题

649

帖子

2

粉丝