@@ -16,8 +16,13 @@ module tt_um_waves (
16
16
wire [2 :0 ] wave_select;
17
17
wire white_noise_en;
18
18
19
+ // Waveform Output
19
20
wire [7 :0 ] wave_out;
20
- assign wave_out = selected_wave;
21
+ reg [7 :0 ] selected_wave;
22
+ assign wave_out = selected_wave;
23
+
24
+ assign wave_out = selected_wave; // Ensure wave_out is driven
25
+ wire [7 :0 ] scaled_wave;
21
26
22
27
// ADSR encoder signals from uio_in
23
28
wire encoder_a_attack = uio_in[0 ];
@@ -200,12 +205,12 @@ end
200
205
.freq_select(freq_select),
201
206
.wave_select(wave_select),
202
207
.white_noise_en(white_noise_en),
203
- .wave_out(selected_wave )
208
+ .wave_out(wave_gen_output )
204
209
);
205
-
206
- // Waveform Output
207
- assign wave_out = selected_wave; // Ensure wave_out is driven
208
- wire [ 7 : 0 ] scaled_wave;
210
+
211
+ always @( * ) begin
212
+ selected_wave = (white_noise_en) ? 8'hFF : wave_gen_output;
213
+ end
209
214
210
215
// White Noise Generator
211
216
reg [7 :0 ] white_noise_out;
@@ -216,25 +221,23 @@ end
216
221
white_noise_out <= white_noise_out + 1 ; // Simple pseudo-random noise
217
222
end
218
223
219
- reg [7 :0 ] selected_wave;
220
224
221
225
always @(* ) begin
222
-
223
- case ({white_noise_en, wave_select})
224
- 4'b1000 : selected_wave = 8'hFF ; // White noise
225
- 4'b0001 : selected_wave = tri_wave_out; // Triangle wave
226
- 4'b0010 : selected_wave = saw_wave_out; // Sawtooth wave
227
- 4'b0011 : selected_wave = sqr_wave_out; // Square wave
228
- 4'b0100 : selected_wave = sine_wave_out; // Sine wave
229
- default : selected_wave = 8'd0 ;
230
- endcase
231
- end
226
+ selected_wave = (white_noise_en) ? 8'hFF :
227
+ (wave_select == 3'b001 ) ? tri_wave_out :
228
+ (wave_select == 3'b010 ) ? saw_wave_out :
229
+ (wave_select == 3'b011 ) ? sqr_wave_out :
230
+ (wave_select == 3'b100 ) ? sine_wave_out :
231
+ 8'd0 ;
232
+ end
232
233
233
234
234
-
235
- assign scaled_wave = (selected_wave * adsr_amplitude) >> 8 ;
236
-
235
+ always @( * ) begin
236
+ scaled_wave = (selected_wave * adsr_amplitude) >> 8 ;
237
+ end
237
238
239
+
240
+
238
241
// Declare wires for I2S outputs
239
242
wire i2s_sck, i2s_ws, i2s_sd;
240
243
0 commit comments