求助下述代码的综合结果和资源消耗情况
时间:10-02
整理:3721RD
点击:
(1)
assign c=(sel)?a:b;
(2)
always @(sel or a or b)
begin
if(sel)
c = a;
else
c = b;
end
这两端代码,我用quartus综合出来的结果都是一个选择器,但是我私以为,这样两种风格的代码,我们都会偏向使用第一种,除了书写方便外,是否还有别的优势?如资源分配等?
assign c=(sel)?a:b;
(2)
always @(sel or a or b)
begin
if(sel)
c = a;
else
c = b;
end
这两端代码,我用quartus综合出来的结果都是一个选择器,但是我私以为,这样两种风格的代码,我们都会偏向使用第一种,除了书写方便外,是否还有别的优势?如资源分配等?
一切以最后综合出来的结果为准,都是选择器就没有区别
第一种好。
if else的逻辑是:只要条件不符合,就走else路。
试想如果上级电路出错,出现sel=1'bx的时候,那么代码(2)的c就会走else路=b。
而? :的运行结果跟实际电路更接近:连控制端sel都是不定值了,那c毫无疑问地应该是x,除非a=b。
总之,代码(1)在综合结果、资源利用等方面和(2)是完全一致的,但(1)的前仿结果跟后仿、跟实际电路更接近。
学习了!
学习了!
学习学习。谢谢小编
编码规范严格的企业里,是规定要用第二种的,
可靠性比第一种高,不容易写错
似乎只要综合出来的结果一样,对电路应该没什么区别吧
