main.vとsignal.vという2つのモジュールがあります。信号を外部モジュールに移動しようとしたときにエラーが発生する
main.vには、方形波に対応する値で16ビットreg txを更新するコードがいくつかあります。
reg [1:0] counter;
reg [15:0] tx;
always @(posedge clk) begin
counter = counter + 1;
if (counter[1] == 1) begin
tx[15:0] <= 16'b1010101010101010;
else
tx[15:0] <= 16'b0000000000000000;
end
これは問題なく動作します。結局のところ、この信号を別のファイルsignal.vに移動したいのです。なぜなら、txに渡す信号は着実に大きくなるからです。私はこれをやろうとするとエラーに遭遇しました。最初は、上記のコードをすべてファイルsignal.vに移動しようとしました。次に、図のように2つのファイルの間にワイヤーを使用しました。
module signal(clk, get_tx);
input clk;
output reg get_tx;
reg [1:0] counter;
always @(posedge clk) begin
counter = counter + 1;
if (counter[1] == 1) begin
get_tx[15:0] <= 16'b1010101010101010;
else
get_tx[15:0] <= 16'b0000000000000000;
end
はその後main.vで、私は出力をオシロスコープで見たものに基づいて
wire get_tx;
reg [15:0] tx;
signal my_signal(.clk(clk), .get_tx(get_tx));
always @(get_tx) begin
tx <= get_tx;
end
を追加しようとしました、このメソッドは動作していない、と私はなぜかどうか分かりませんこれは。最初のケースは正常に動作しているようですので、私が2番目のケースに移動すると失敗する理由はわかりません(信号はまったく違って見えます)。 私はどんなヘルプ/アドバイスもありがとう!
出力はVerilogのレジスタにすることができます。 – Laleh
あなたが正しいです、私は文を削除しました。 – Roman
それは動作します - ありがとう! –