verilog 中assign MO = (|a[5:1])?b:c;//a=0,1时MO对齐;其中(|a[5:1])是什么意思啊
更新时间:2021-10-20 11:07:12 • 作者:JESSE •阅读 2648
- verilog里assign a={5{b}};是什么意思?
- 请教verilog的语句解析。assign a= (b=1)?(c && d) ? 1'b1:1'b0:1'b0;
- verilog中assign a= |b与assign a=b 的区别(就多了一个位或符)
- verilog连续赋值语句assign a=b==8;什么意思
verilog里assign a={5{b}};是什么意思?
你这句代码是不完整的,应该是类似于:
assign a = {5{1'b1}};
它等价于:
assign a=5'b1_1111;
其中,“5{}”表示5次重复相同内容,而外层大括号表示里面的内容进行拼接。
请教verilog的语句解析。assign a= (b=1)?(c && d) ? 1'b1:1'b0:1'b0;
写的代码风格不好,致使别人很难理解,如果加上括号就好理解了.
assign a= (b=1)? ((c && d) ? 1'b1:1'b0) :1'b0; 我在后面加上括号
先判断b的值,不过我认为verilog中的等于应该是==而不是=吧,也可以直接写(b),
1.如果b等于0,则a的值就是0,不管你的cd是多少。
2.如果b=1,则进入我加的括号里面的那个问号判断,这时候再判断c&&d的值,如果是1,a=1,如果是0,a=0
所以我们可以给出真值表 tab
b 0 1 1 1 1
c x 1 0 0 1
d x 1 0 1 0
a 0 1 0 0 0
verilog中assign a= |b与assign a=b 的区别(就多了一个位或符)
a= |b举例说明:
wire a;
wire [3:0] b;
assign a= |b;相当于a=b[3] || b[2] || b[1] || b[0];
a= b举例说明:
wire [3:0] a;
wire [3:0] b;
assign a= b;相当于a[3:0]=b[3:0];
verilog连续赋值语句assign a=b==8;什么意思
楼上正解,需要补充的是,这种写法的可读性很差,作为工程师来讲,不应该有这种写法。verilog不是用来玩这些小把戏用的,但它可能出现在学校里的考试当中,用来考察学生对verilog语法的理解程度,仅此而已。