|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
以下是未定义宏的右移代码:
reg [15:0] data;
always @(posedge clk or posedge reset)
begin
if(reset)
data<= 16'h8000;
else
data<= {1‘b0,data[15:1]};
end
定义了位宽的宏之后
`define DATAWIDTH 16reg [`DATAWIDTH-1 : 0] data;
always @(posedge clk or posedge reset)
begin
if(reset)
data <= {1'b1,`DATAWIDTH-1'b0};
else
data <= {1’b0,data [`DATAWIDTH-1 : 1] };
end
//data <= {1'b1,`DATAWIDTH-1'b0}; 编译器把它自动remove了,为什么?
//这样编译无语法错误,但结果却不对,改如何写这个表达式?
//这段代码引用DATAWIDTH宏的目的,就是使data的位宽可随意修改,每次reset的时候使其最高位为1,其余各位为0,改如何写? |
|