-1
私は1日ここで立ち往生しました。私はこのコードを実行するためにedaplaygroundを使用していますが、私は何が間違っているのか分かりません。私がendmodule
と書いた最後の行に構文エラーがありますので、助けてください。エンドモジュールのVerilog構文エラー
module lifo #(parameter n=4,w=4) (input insert ,clk,output isEmpety,isfull,error,inout [w-1:0]data);
logic h=$clog2(n);
reg [n-1:0]mem[w-1:0];
reg [h:0]sp;
reg [w-1:0]datar;
wire [w-1:0] #(0) data=datar;
[email protected]* begin
if(reset==1)
begin
assign datar={n{z}};
assign sp={h{1'b0}};
assign isfull=0;
assign isEmpety=0;
assign error=0;
end
if(insert==1)
begin
if(isEmpety==1)
begin
assign mem[sp]=data;
assign isEmpety=0;
if(error==1)
assign error=0;
end
else
if(isfull==1)
begin
assign mem[sp]=data;
assign error=1;
end
else
begin
assign sp=sp+1;
assign stack[sp]=data;
if(sp=={h{1}})
assign isfull=1;
end
end
if(insert==0)
begin
if(sp=={h{0}}&&(isEmpety!=1))
begin
assign datar=mem[sp];
assign isEmpety=1;
end
else
if(isEmpety==1)
begin
assign datar=mem[sp];
assign error=1;
end
else
begin
assign datar=mem[sp];
if(sp!={h{0}})
assign sp=sp-1;
if(error==1)
assign error=0;
if(isfull==1)
assign isfull=0;
end
end
endmodule
ありがとうございました。
こんにちは、こんにちは、オーバーフローを歓迎します。あなたのここでのやり方を知るために(また、あなたの最初のバッジを得るために)[welcome tour](https://stackoverflow.com/tour) [Minimal、Complete、Verifiableの例](https://stackoverflow.com/help/mcve)の作成方法と[よくある質問を表示する方法](https://stackoverflow.com/help/how-to)もチェックしてください。あなたがあなたのチャンスを増やし、フィードバックと有用な答えを得ることができます。 – DarkCygnus
コードを書式化すると、目に見えるようになり、 'end'が見付かりません。まだいくつかの他の問題があります。例えば、alwaysブロックの中で 'assign'を使うべきではなく、非同期フィードバックがあります。 – Greg