Anlu FPGA 割り当てエラー - シフト処理、括弧の追加

シフト記号を除算記号として使用する場合、以下の問題が見つかりました

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;

おすすめ

転載: blog.csdn.net/qq_40715266/article/details/132174362