質問編集履歴

3

プログラムの変更

2022/06/16 07:26

投稿

iface
iface

スコア42

test CHANGED
File without changes
test CHANGED
@@ -18,19 +18,22 @@
18
18
 
19
19
  ### 該当のソースコード
20
20
  **4bitカウンタ回路の記述**
21
+ **修正後**
21
22
  ```Verilog
22
23
  `timescale 1ns / 1ps
23
24
 
24
- module counter (
25
+ module counter #(parameter S = 99999999)(
25
26
  input wire CLK, RES,
26
27
  output reg [3:0]LED);
27
28
 
28
- reg [26:0] scale;
29
+ reg [27:0] scale;
29
30
 
30
31
  always @(posedge CLK or negedge RES) begin
31
- if (RES == 1'b0)
32
+ if (RES == 1'b0) begin
32
33
  scale <= 27'd0;
34
+ LED <= 4'b0;
35
+ end
33
- else if (scale == 27'd99999999) begin //scaleが溜まったらscaleをリセット
36
+ else if (scale == S) begin //scaleが溜まったらscaleをリセット
34
37
  scale <=27'd0;
35
38
  if(LED == 4'hf) //LEDが溜まったらLEDをリセット
36
39
  LED <= 4'b0;
@@ -39,9 +42,10 @@
39
42
  end
40
43
 
41
44
  else
42
- scale <= scale + 24'd1;
45
+ scale <= scale + 27'd1;
43
46
  end
44
47
  endmodule
48
+
45
49
  ```
46
50
 
47
51
  **テストベンチ**
@@ -56,16 +60,16 @@
56
60
  /*接続信号の宣言*/
57
61
  reg CLK;
58
62
  reg RES;
59
- wire [23:0] scale;
60
63
  wire [3:0]LED;
61
64
 
62
65
  /*パターン表示回路を接続*/
63
- counter pattern(
66
+ counter #(.S(10))pattern(
64
67
  .CLK(CLK),
65
68
  .RES(RES),
66
- .scale(scale), //←ここでエラーが出ている
67
69
  .LED(LED)
68
70
  );
71
+
72
+ wire [23:0] scale = pattern.scale;
69
73
 
70
74
  always begin
71
75
  CLK = 0; #(STEP/2);
@@ -86,7 +90,6 @@
86
90
  end
87
91
  endmodule
88
92
 
89
-
90
93
  ```
91
94
 
92
95
  ### シミュレーションの理想の波形
@@ -95,6 +98,9 @@
95
98
  ### 試したこと
96
99
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-06-10/cd208fa7-d877-4810-90ae-2afdea55efba.png)
97
100
 
101
+
102
+ **after**
103
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-06-16/3bc450b7-bfd5-4d3e-bfca-1b097eaae137.png)
98
104
  ### 補足情報(FW/ツールのバージョンなど)
99
105
 
100
106
  ここにより詳細な情報を記載してください。

2

プログラム変更

2022/06/14 07:44

投稿

iface
iface

スコア42

test CHANGED
File without changes
test CHANGED
@@ -72,6 +72,11 @@
72
72
  CLK = 1; #(STEP/2);
73
73
  end
74
74
 
75
+ always @(posedge CLK) begin
76
+ if(RES == 0)
77
+ CLK = 0;
78
+ end
79
+
75
80
  initial begin
76
81
  RES = 0;
77
82
  #(STEP*20) RES = 1;
@@ -80,6 +85,7 @@
80
85
  $stop;
81
86
  end
82
87
  endmodule
88
+
83
89
 
84
90
  ```
85
91
 

1

画像を追加

2022/06/10 04:58

投稿

iface
iface

スコア42

test CHANGED
File without changes
test CHANGED
@@ -51,7 +51,7 @@
51
51
  module counter_test;
52
52
 
53
53
  //クロック周期
54
- localparam STEP = 8;
54
+ localparam STEP = 10;
55
55
 
56
56
  /*接続信号の宣言*/
57
57
  reg CLK;
@@ -86,6 +86,9 @@
86
86
  ### シミュレーションの理想の波形
87
87
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-06-09/69723b04-a833-4144-a873-e16af3c478a3.jpeg)
88
88
 
89
+ ### 試したこと
90
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-06-10/cd208fa7-d877-4810-90ae-2afdea55efba.png)
91
+
89
92
  ### 補足情報(FW/ツールのバージョンなど)
90
93
 
91
94
  ここにより詳細な情報を記載してください。