Its working! Demo commit
ci/woodpecker/push/test-workflow Pipeline was successful

We have something at least, audio is working and sounding dang good
This commit is contained in:
2025-06-06 01:06:20 -07:00
parent 7980424dc8
commit 35cb264b26
8 changed files with 384152 additions and 7 deletions
+1 -1
View File
@@ -18,7 +18,7 @@ module pwm(
);
// This can't be 16 or we are slowing the audio rate down by a factor of
// 2^5=32
parameter DEPTH=8;
parameter DEPTH=11;
logic [DEPTH-1:0] pulse_counter;
logic [15:0] sample_buffer;
+5 -2
View File
@@ -1,6 +1,6 @@
module modular_clock_gen(
input clk, reset,
output oclk
output logic oclk
);
parameter DIVISOR;
@@ -8,7 +8,8 @@ logic [$clog2(DIVISOR)-1:0] counter;
// clock will be high for about half of the cycle, depending on integer
// rounding
assign oclk = counter < (DIVISOR/2);
// OOPS this makes it combinational
//assign oclk = counter < (DIVISOR/2);
always_ff @(posedge clk) begin
if (reset)
@@ -17,6 +18,8 @@ always_ff @(posedge clk) begin
counter <= DIVISOR-1;
else
counter <= counter - 1;
oclk <= counter < (DIVISOR/2);
end
endmodule
+1 -1
View File
@@ -102,7 +102,7 @@ audio_buffer audioBuffer(
audio_interface.receiver
);
rom_sd romSdPlayer(clk_1mhz,reset,sd_ready,audio_interface.driver);
rom_sd #("even_flow_16.mem") romSdPlayer(clk_1mhz,reset,sd_ready,audio_interface.driver);
endmodule
+3 -3
View File
@@ -21,7 +21,7 @@ typedef enum logic [3:0]{
state_t current, next;
// First we write 2048B into the memory buffer, then signal to play it and
// wait for half signal to avoid overwriting memory
logic [16:0] rom_addr;
logic [18:0] rom_addr;
logic [7:0] rom_data;
logic rom_enable;
logic buffer_half;
@@ -33,7 +33,7 @@ logic buffer_half;
// The ROM has 17 address bits and 8 data bits to store 128KiB, more than
// enough for one second of 48khz audio
xpm_memory_sprom #(
.ADDR_WIDTH_A(17), // DECIMAL
.ADDR_WIDTH_A(19), // DECIMAL
.AUTO_SLEEP_TIME(0), // DECIMAL
.CASCADE_HEIGHT(0), // DECIMAL
.ECC_BIT_RANGE("7:0"), // String
@@ -44,7 +44,7 @@ xpm_memory_sprom #(
.MEMORY_INIT_PARAM(""), // String
.MEMORY_OPTIMIZATION("true"), // String
.MEMORY_PRIMITIVE("auto"), // String
.MEMORY_SIZE(131072*8), // DECIMAL
.MEMORY_SIZE((1<<19)*8), // DECIMAL
.MESSAGE_CONTROL(0), // DECIMAL
.RAM_DECOMP("auto"), // String
.READ_DATA_WIDTH_A(8), // DECIMAL