@@ -178,7 +178,7 @@ module tt_um_waves (
178
178
);
179
179
180
180
// Wave Generator
181
- wire [7 :0 ] wave_gen_output;
181
+ // wire [7:0] wave_gen_output;
182
182
wave_generator wave_gen_inst (
183
183
.clk(clk),
184
184
.rst_n(rst_n),
@@ -194,25 +194,32 @@ white_noise_generator noise_gen_inst (
194
194
.clk(clk),
195
195
.rst_n(rst_n),
196
196
.noise_out(noise_out),
197
- .ena(white_noise_en) // Enable when white noise is selected
197
+ .ena(white_noise_en & ena ) // Enable when white noise is selected
198
198
);
199
199
200
200
201
201
// Select Waveform Output
202
202
// wire [7:0] wave_gen_output;
203
- assign wave_gen_output = (wave_select == 3'b000 ) ? tri_wave_out :
204
- (wave_select == 3'b001 ) ? saw_wave_out :
205
- (wave_select == 3'b010 ) ? sqr_wave_out :
206
- (wave_select == 3'b011 ) ? sine_wave_out :
207
- 8'd0 ;
203
+ reg [7 :0 ] wave_gen_output;
204
+ always @(* ) begin
205
+ case (wave_select)
206
+ 3'b000 : wave_gen_output = tri_wave_out;
207
+ 3'b001 : wave_gen_output = saw_wave_out;
208
+ 3'b010 : wave_gen_output = sqr_wave_out;
209
+ 3'b011 : wave_gen_output = sine_wave_out;
210
+ default : wave_gen_output = 8'd0 ;
211
+ endcase
212
+ end
208
213
209
- // Select Waveform (Using `noise_out` instead of manually generating noise)
214
+ // Select Waveform
210
215
wire [7 :0 ] selected_wave;
211
216
assign selected_wave = (white_noise_en) ? noise_out : wave_gen_output;
212
217
213
218
// Apply ADSR Envelope
214
- wire [7 :0 ] scaled_wave;
215
- assign scaled_wave = (selected_wave * adsr_amplitude) >> 8 ;
219
+ reg [7 :0 ] scaled_wave;
220
+ always @(* ) begin
221
+ scaled_wave = (selected_wave * adsr_amplitude) >> 8 ;
222
+ end
216
223
217
224
// I2S Output
218
225
wire i2s_sck, i2s_ws, i2s_sd;
@@ -236,7 +243,6 @@ white_noise_generator noise_gen_inst (
236
243
// Assign Outputs
237
244
assign uio_out = 8'b0 ;
238
245
assign uio_oe = 8'b0 ;
239
-
240
246
endmodule
241
247
242
248
0 commit comments