微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 还是一道ASIC笔试题,问verilog代码综合后的电路有何不同,仍求大神

还是一道ASIC笔试题,问verilog代码综合后的电路有何不同,仍求大神

时间:10-02 整理:3721RD 点击:

题目是这样的
请说明下面语句综合后电路的区别

(1)

#5 a=b;

a= #5 b;

(2)

c=foo?a:b;

if(foo) c=a;

else c=b;


(1)题我答得是这样的,这两句话要实现的功能均是把b传递给a,只不过第一种写法的结果是需要在前一句代码执行完后延时5个timescale,a立即和b一致;而第二种写法使得a总是延后与b 5个timescale


(2)题我就不太清楚怎么回答了,虽然说if else 必须放在always结构里面,但是always综合出来的也可以是纯组合逻辑而不产生DFF,那样和问号选择语句功能不就一样了吗?


自己学得不扎实,求前辈指导!

说的是综合后的电路:
1)综合后应该是一样的,延迟只作用于仿真,对综合无效;
2)这个不清楚,感觉都会综合出来mux;



    可能是题目我记错了,题目问的的确是“有什么不同”,我也考虑综合后电路是一样,那样就没办法回答



   Gary啊,#5的语句,能综合吗,还是说综合后没有延时?我一直以为只能做测试用

延迟语句不能综合,综合时候会自动忽略;这样写主要是为了仿真的时候调整时序;
而真正的时序调整会在STA阶段实现;

以我的理解,这两个写法综合出来都是一样的
小编可以综合一下试试
1.综合工具忽略延时信息,忽略后二者代码一致,综合出来的一致
2.通常if……else……语句综合出来有优先级判断的电路,但这里只是1次判断,所以综合出来就是mux。而另一个三目运算符本来就是综合出mux。
so。我的答案如上



    这么潇洒,
   so……

仿真表现不一样,综合后是一样的。上面的foo为不定态时c为不定态,下面的foo为不定态时c为b。



   这也算潇洒?



    if else 有优先级吗?不是说优先级只能通过多个if语句才能实现吗?

第二题,貌似?:是综合出trisbuf,if else是mux的。



    else if优先级?



    Tim好厉害,以后还请多多指教啊



    我记得以前有本书上讲,多个if语句可以实现优先级,单个if……else if……else  这样的 应该是没有优先级的,和case 语句一样。是不是和综合器有关?



    Tim,有没有数字系统方面很好的书能推荐给我?

别的地方看到的答案
Q: What is the difference between:  
c = foo ? a : b;  
and  
if (foo) c = a;
else c = b;  
A: The ? merges answers if the condition is "x", so for instance if foo = 1'bx, a =
you'd get c = 'bx. On the other hand, if treats Xs or Zs as FALSE, so you'd always get c = b.



   这么说,在电路设计使用if语句时候,最好是使用强等于===

[img][/img]谁能解释下,代码为always @(a) fork b =#5a;
#5 c=a;
join

b好像不是先取a的值然后延时5个时间单位之后赋给b啊?

fork join请问什么情况下会用?还从来没用过



    并行的。begin..end是串行的。我也觉得那个三目运算是三态门,是总线上用的吧。猜测。



    这个语法我还是知道的,但是从来没见用过,问的问题是啥时候会用这种东西

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

网站地图

Top