verilog学习笔记1
拼接符的用法
拼接运算符{ }
字面上就很好理解,用于将多个信号拼接起来,形成一个新的信号;
我这里只说使用结果,不多做解释;
reg [7:0] Value;
…
assign Value <= {0, Value[7:1]};
上面这个逻辑,可以实现 寄存器Value右移1位,最高位由 “0”代替;
假设Value的值为 1111_1111;
第一次运算
Value <= {0, Value [7:1]};
Value 右移一位,然后0与右移后的Value拼接, 得到的值: 0111_1111
第二次运算
Value <= {0, Value [7:1]};
Value 右移一位,然后0与右移后的Value拼接, 得到的值: 0011_1111;
第三次运算
Value <= {0, Value [7:1]};
Value 右移一位,然后0与右移后的Value拼接, 得到的值: 0001_1111;
二.
当用{}对有符号数的符号位进行扩展的时候,发现老是报错 比如{ 4{second[63]},second[7:0]}
百度后发现原来是要写成这样{{ 4{second[63]}},second[7:0