author | daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 |
在使用移位符号用来当作除以号使用时,发现如下问题
其中 cnt_8K 为偶数和奇数时输出的数据不一样
reg [10:0] cnt_8K;
reg [10:0] ram1_addra;
always@(posedge clk_16M)
begin
if(ram_out_flag )begin if(cnt_8K[0] == 1'd0)
ram1_addra <= cnt_8K >> 1 ;else
ram1_addra <= cnt_8K >> 1 + 11'd128;//注意这里end
end
但是在实际赋值过程如下代码的输出如下,其中当奇数时会一直输出0
只需要修改添加括号后,输出就正常了
//ram1_addra <= cnt_8K >> 1 + 11'd128;
ram1_addra <= (cnt_8K >> 1) + 11'd128;