(1)
assign c=(sel)?a:b;
(2)
always @(sel or a or b) begin
if(sel)
c = a;
else
c = b;
end
这两段代码,我用quartus综合出来的结果都是一个选择器,但是我私以为,这样两种风格的代码,我们都会偏向使用第一种,除了书写方便外,是否还有别的优势?如资源分配等?
发表于 2012-9-25 21:18 | 只看该作者
第一种好。 |
发表于 2012-10-1 09:46 | 只看该作者
编码规范严格的企业里,是规定要用第二种的, |
请教各位大虾,关于Verilog中三目运算符的用法
发布: 2010-7-12 10:43 | 作者: shxr来源: EETOP 赛灵思(Xilinx) 社区 |
就是这个 out=s?a:b;这个用法只能用在assign中吗?谢谢各位了
well_fish (2010-7-12 11:39:09)
always initial都可以
gdarboux (2010-7-12 17:17:28)
楼上正解
shxr (2010-7-13 09:21:40)
那能够用非阻塞赋值如“out<=s?a:b;”吗?
MOSFET (2010-7-13 16:58:17)
回楼上可以你这相当于 assign out_t=s?a:b; always@(...) out<=out_t;
xinyuliujian (2010-7-14 17:06:17)
谢谢!指点
neptune1983 (2010-7-14 20:24:15)
这条语句就相当于一个if---else语句
注意:if语句和case语句都只能用于always语句内部,如果要在always语句之外应用条件语句,可用三目运算符?:如下:
assign data = ( sel ) ? a : b ;