コードは次のとおりです。 コードの目的は、レジスタの 1 つから先行ゼロの数を計算することです。レジスタ仮数から先行ゼロを一度だけ計算したいだけです。これには常にブロックを使用する必要があります。ここで、最初に a を 1'b1 として割り当て、後で 1'b0 に変更して、ブロックが 1 回実行されるようにしました。コードをシミュレートしようとすると。always ブロックは実行されません。ただし、後で a を 0'b1 として割り当てた場合 (意味がありません)。コードはシミュレータで適切にシミュレートされます。しかし、FPGA キットでコードを合成すると、誤った結果が得られます。私を助けてください
integer count,index;
wire a;
assign a=1'b1;
always@(a)
begin
for(count=0;count<7;count=count+1) begin
index=4*count;
if((significand[index ]==1'b0) && (significand[index+1]==1'b0) &&
(significand[index+2]==1'b0) && (significand[index+3]==1'b0))
lzero=lzero+1;
end
end
assign a=1'b0;
// If I use assign a=0'b1, it simulates properly,
// but 0'b1 doesn't make any sense, also If I keep 0'b1,
// I dont get proper result in actual synthesis onto the board.
実際、質問をする私の意図は、「常に」ブロックをどのように使用できるようにするかということでした。このブロックを 1 回だけ実行したかったので、「posedge clk」または「negedge clock」を always で設定する必要はありません。それで、私は何をすべきですか?? 私のプロジェクトは私を要求するので助けてくださいforループif elseループの多用