我无法理解以下Verilog代码
我无法理解此代码结尾的两行
input [15:0] offset ;
output [31:0] pc;
output [31:0] pc_plus_4;
reg [31:0] pc;
wire [31:0] pcinc ;
assign pcinc = pc +4 ;
assign pc_plus_4 = {pc[31],pcinc};
assign branch_aadr = {0,pcinc + {{13{offset[15]}},offset[15:0],2\'b00}};
没有找到相关结果
已邀请:
2 个回复
乐遣杀屎
,则它们是串联运算符。您可以在IEEE Std for Verilog中阅读有关它们的信息(例如1800-2009,第11.4.12节)。
这会将
的MSB与
的所有位连接在一起,以组合
信号。但是,在这种情况下,由于
和
都是32位宽,因此
被忽略。一个好的整理工具会通知您RHS为33位,LHS为32位,并且最高有效位将丢失。该行可以更简单地编码为:
最后一行是我正在使用的一个模拟器的编译错误。您没有明确声明
信号的宽度,并且and11ѭ常数的宽度未指定。
踩什不
这将位ѭ13replicate复制了13次。看来作者正在对ѭ14进行符号扩展,然后将其添加到
。更好的方法可能是声明“ 14”为已签名。