微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 语序问题

语序问题

时间:10-02 整理:3721RD 点击:
比如这个时序
always@(posedge clk or negedge nrst)begin
  if(~nrst)  BCD<=0;
  else BCD<=BCD+1;
  if (BCD==9) BCD<=0;
end

请问这里的
if (BCD==9) 中的BCD是BCD<=BCD+1语句中的左边的BCD还是右边的BCD?
急!

有这么写的吗,这样容易让脑海中生成的RTL电路产生歧义。
always@(posedge clk or negedge nrst)begin
  if(~nrst)  
         BCD<=0;
  else if (BCD==9)
         BCD<=0;
  else
        BCD<=BCD+1;
end
这样写,不是一目了然?


谢谢!那你知道if里面的判断语句,在事件队列中是放在哪步执行的,在阻塞赋值还是非阻塞赋值之后?


说实话,软件上的解释我还真不清楚,但这在硬件RTL设计上显然是不合理的。

这不是哪步执行的问题,你写的这个RTL是硬件描述语言,综合的结果是映射为电路结构,结果就是异步置位计数器。



   好的,这就是写可以综合电路的语句

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top