Skip to content

Commit cf4bc66

Browse files
committed
feat: integrate wave_out corrections
1 parent 77ea1b9 commit cf4bc66

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/tt_um_waves.v

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@ module tt_um_waves (
1616
wire [2:0] wave_select;
1717
wire white_noise_en;
1818

19+
// Waveform Output
1920
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;
2126

2227
// ADSR encoder signals from uio_in
2328
wire encoder_a_attack = uio_in[0];
@@ -200,12 +205,12 @@ end
200205
.freq_select(freq_select),
201206
.wave_select(wave_select),
202207
.white_noise_en(white_noise_en),
203-
.wave_out(selected_wave)
208+
.wave_out(wave_gen_output)
204209
);
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
209214

210215
// White Noise Generator
211216
reg [7:0] white_noise_out;
@@ -216,25 +221,23 @@ end
216221
white_noise_out <= white_noise_out + 1; // Simple pseudo-random noise
217222
end
218223

219-
reg [7:0] selected_wave;
220224

221225
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
232233

233234

234-
235-
assign scaled_wave = (selected_wave * adsr_amplitude) >> 8;
236-
235+
always @(*) begin
236+
scaled_wave = (selected_wave * adsr_amplitude) >> 8;
237+
end
237238

239+
240+
238241
// Declare wires for I2S outputs
239242
wire i2s_sck, i2s_ws, i2s_sd;
240243

0 commit comments

Comments
 (0)