実現したいこと
下記のプログラムは、一秒間隔で4ビットカウントを行う回路を表しています。
しかし、以下のエラー文の通り、テストベンチのパターン表示回路の接続の部分の
.scale(scale)
でエラーが出ています。
これはどういうことでしょうか。
発生している問題・エラーメッセージ
[VRFC 10-3180] cannot find port 'scale' on this module ["C:/Xilinx/Vivado/LED/4bit_count_68/4bit_count_68.srcs/sim_1/new/counter_test.v":39]
該当のソースコード
4bitカウンタ回路の記述
修正後
Verilog
1`timescale 1ns / 1ps 2 3module counter #(parameter S = 99999999)( 4 input wire CLK, RES, 5 output reg [3:0]LED); 6 7 reg [27:0] scale; 8 9 always @(posedge CLK or negedge RES) begin 10 if (RES == 1'b0) begin 11 scale <= 27'd0; 12 LED <= 4'b0; 13 end 14 else if (scale == S) begin //scaleが溜まったらscaleをリセット 15 scale <=27'd0; 16 if(LED == 4'hf) //LEDが溜まったらLEDをリセット 17 LED <= 4'b0; 18 else 19 LED <= LED + 4'b1; //LEDが溜まってなければLEDを加算 20 end 21 22 else 23 scale <= scale + 27'd1; 24 end 25endmodule 26
テストベンチ
Verilog
1`timescale 1ns / 1ps 2 3module counter_test; 4 5//クロック周期 6localparam STEP = 10; 7 8/*接続信号の宣言*/ 9reg CLK; 10reg RES; 11wire [3:0]LED; 12 13/*パターン表示回路を接続*/ 14counter #(.S(10))pattern( 15 .CLK(CLK), 16 .RES(RES), 17 .LED(LED) 18 ); 19 20wire [23:0] scale = pattern.scale; 21 22always begin 23 CLK = 0; #(STEP/2); 24 CLK = 1; #(STEP/2); 25end 26 27always @(posedge CLK) begin 28 if(RES == 0) 29 CLK = 0; 30end 31 32initial begin 33 RES = 0; 34 #(STEP*20) RES = 1; 35 36 #(STEP*100); 37 $stop; 38 end 39endmodule 40
シミュレーションの理想の波形
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/10 05:04
2022/06/10 05:44
2022/06/13 01:44
2022/06/13 01:48
2022/06/13 01:54 編集
2022/06/13 04:44
2022/06/13 07:49 編集
2022/06/14 07:45
2022/06/14 07:52 編集
2022/06/15 03:27
2022/06/15 05:07
2022/06/16 03:39
2022/06/16 04:40
2022/06/16 07:30 編集
2022/06/16 07:37 編集
2022/06/16 08:51
2022/06/16 08:53