Its working! Demo commit
All checks were successful
ci/woodpecker/push/test-workflow Pipeline was successful
All checks were successful
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:
parent
7980424dc8
commit
35cb264b26
@ -216,3 +216,139 @@ set_property -dict {PACKAGE_PIN D12 IOSTANDARD LVCMOS33} [get_ports AUD_SD]
|
||||
#set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { QSPI_DQ[3] }]; #IO_L2N_T0_D03_14 Sch=qspi_dq[3]
|
||||
#set_property -dict { PACKAGE_PIN L13 IOSTANDARD LVCMOS33 } [get_ports { QSPI_CSN }]; #IO_L6P_T0_FCS_B_14 Sch=qspi_csn
|
||||
|
||||
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[4]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[0]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[1]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[2]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[3]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[5]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[6]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/pulse_counter_reg[7]}]
|
||||
set_property MARK_DEBUG true [get_nets audioOutput/AUD_PWM_TRI]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[3]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[4]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[5]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[0]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[2]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[6]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[7]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioOutput/D[1]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[5]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[6]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[7]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[0]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[1]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[2]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[3]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/rom_data[4]}]
|
||||
set_property MARK_DEBUG true [get_nets romSdPlayer/rom_addr]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[5]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[0]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[1]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[2]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[3]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[4]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[6]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[7]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[8]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[9]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/audio_interface\\.addra[10]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[17]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[5]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[1]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[2]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[12]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[14]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[13]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[15]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[3]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[4]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[6]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[7]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[18]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[16]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[8]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[9]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[10]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/in7[11]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[10]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[0]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[1]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[2]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[3]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[5]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[6]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[13]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[7]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[8]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[9]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[14]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[11]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[12]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[15]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[4]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[16]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[17]}]
|
||||
set_property MARK_DEBUG true [get_nets {romSdPlayer/xpm_memory_sprom_inst/addra[18]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[0]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[4]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[3]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[8]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[1]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[2]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[9]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[5]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[6]}]
|
||||
set_property MARK_DEBUG true [get_nets {audioBuffer/buffer/addrb[7]}]
|
||||
set_property MARK_DEBUG true [get_nets audioClock_n_0]
|
||||
create_debug_core u_ila_0 ila
|
||||
set_property ALL_PROBE_SAME_MU true [get_debug_cores u_ila_0]
|
||||
set_property ALL_PROBE_SAME_MU_CNT 1 [get_debug_cores u_ila_0]
|
||||
set_property C_ADV_TRIGGER false [get_debug_cores u_ila_0]
|
||||
set_property C_DATA_DEPTH 16384 [get_debug_cores u_ila_0]
|
||||
set_property C_EN_STRG_QUAL false [get_debug_cores u_ila_0]
|
||||
set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores u_ila_0]
|
||||
set_property C_TRIGIN_EN false [get_debug_cores u_ila_0]
|
||||
set_property C_TRIGOUT_EN false [get_debug_cores u_ila_0]
|
||||
set_property port_width 1 [get_debug_ports u_ila_0/clk]
|
||||
connect_debug_port u_ila_0/clk [get_nets [list CLK100MHZ_IBUF_BUFG]]
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe0]
|
||||
set_property port_width 8 [get_debug_ports u_ila_0/probe0]
|
||||
connect_debug_port u_ila_0/probe0 [get_nets [list {audioOutput/D[0]} {audioOutput/D[1]} {audioOutput/D[2]} {audioOutput/D[3]} {audioOutput/D[4]} {audioOutput/D[5]} {audioOutput/D[6]} {audioOutput/D[7]}]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe1]
|
||||
set_property port_width 18 [get_debug_ports u_ila_0/probe1]
|
||||
connect_debug_port u_ila_0/probe1 [get_nets [list {romSdPlayer/in7[1]} {romSdPlayer/in7[2]} {romSdPlayer/in7[3]} {romSdPlayer/in7[4]} {romSdPlayer/in7[5]} {romSdPlayer/in7[6]} {romSdPlayer/in7[7]} {romSdPlayer/in7[8]} {romSdPlayer/in7[9]} {romSdPlayer/in7[10]} {romSdPlayer/in7[11]} {romSdPlayer/in7[12]} {romSdPlayer/in7[13]} {romSdPlayer/in7[14]} {romSdPlayer/in7[15]} {romSdPlayer/in7[16]} {romSdPlayer/in7[17]} {romSdPlayer/in7[18]}]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe2]
|
||||
set_property port_width 8 [get_debug_ports u_ila_0/probe2]
|
||||
connect_debug_port u_ila_0/probe2 [get_nets [list {romSdPlayer/rom_data[0]} {romSdPlayer/rom_data[1]} {romSdPlayer/rom_data[2]} {romSdPlayer/rom_data[3]} {romSdPlayer/rom_data[4]} {romSdPlayer/rom_data[5]} {romSdPlayer/rom_data[6]} {romSdPlayer/rom_data[7]}]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe3]
|
||||
set_property port_width 11 [get_debug_ports u_ila_0/probe3]
|
||||
connect_debug_port u_ila_0/probe3 [get_nets [list {romSdPlayer/audio_interface\\.addra[0]} {romSdPlayer/audio_interface\\.addra[1]} {romSdPlayer/audio_interface\\.addra[2]} {romSdPlayer/audio_interface\\.addra[3]} {romSdPlayer/audio_interface\\.addra[4]} {romSdPlayer/audio_interface\\.addra[5]} {romSdPlayer/audio_interface\\.addra[6]} {romSdPlayer/audio_interface\\.addra[7]} {romSdPlayer/audio_interface\\.addra[8]} {romSdPlayer/audio_interface\\.addra[9]} {romSdPlayer/audio_interface\\.addra[10]}]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe4]
|
||||
set_property port_width 8 [get_debug_ports u_ila_0/probe4]
|
||||
connect_debug_port u_ila_0/probe4 [get_nets [list {audioOutput/pulse_counter_reg[0]} {audioOutput/pulse_counter_reg[1]} {audioOutput/pulse_counter_reg[2]} {audioOutput/pulse_counter_reg[3]} {audioOutput/pulse_counter_reg[4]} {audioOutput/pulse_counter_reg[5]} {audioOutput/pulse_counter_reg[6]} {audioOutput/pulse_counter_reg[7]}]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe5]
|
||||
set_property port_width 19 [get_debug_ports u_ila_0/probe5]
|
||||
connect_debug_port u_ila_0/probe5 [get_nets [list {romSdPlayer/xpm_memory_sprom_inst/addra[0]} {romSdPlayer/xpm_memory_sprom_inst/addra[1]} {romSdPlayer/xpm_memory_sprom_inst/addra[2]} {romSdPlayer/xpm_memory_sprom_inst/addra[3]} {romSdPlayer/xpm_memory_sprom_inst/addra[4]} {romSdPlayer/xpm_memory_sprom_inst/addra[5]} {romSdPlayer/xpm_memory_sprom_inst/addra[6]} {romSdPlayer/xpm_memory_sprom_inst/addra[7]} {romSdPlayer/xpm_memory_sprom_inst/addra[8]} {romSdPlayer/xpm_memory_sprom_inst/addra[9]} {romSdPlayer/xpm_memory_sprom_inst/addra[10]} {romSdPlayer/xpm_memory_sprom_inst/addra[11]} {romSdPlayer/xpm_memory_sprom_inst/addra[12]} {romSdPlayer/xpm_memory_sprom_inst/addra[13]} {romSdPlayer/xpm_memory_sprom_inst/addra[14]} {romSdPlayer/xpm_memory_sprom_inst/addra[15]} {romSdPlayer/xpm_memory_sprom_inst/addra[16]} {romSdPlayer/xpm_memory_sprom_inst/addra[17]} {romSdPlayer/xpm_memory_sprom_inst/addra[18]}]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe6]
|
||||
set_property port_width 10 [get_debug_ports u_ila_0/probe6]
|
||||
connect_debug_port u_ila_0/probe6 [get_nets [list {audioBuffer/buffer/addrb[0]} {audioBuffer/buffer/addrb[1]} {audioBuffer/buffer/addrb[2]} {audioBuffer/buffer/addrb[3]} {audioBuffer/buffer/addrb[4]} {audioBuffer/buffer/addrb[5]} {audioBuffer/buffer/addrb[6]} {audioBuffer/buffer/addrb[7]} {audioBuffer/buffer/addrb[8]} {audioBuffer/buffer/addrb[9]}]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe7]
|
||||
set_property port_width 1 [get_debug_ports u_ila_0/probe7]
|
||||
connect_debug_port u_ila_0/probe7 [get_nets [list audioOutput/AUD_PWM_TRI]]
|
||||
create_debug_port u_ila_0 probe
|
||||
set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe8]
|
||||
set_property port_width 1 [get_debug_ports u_ila_0/probe8]
|
||||
connect_debug_port u_ila_0/probe8 [get_nets [list romSdPlayer/rom_addr]]
|
||||
set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub]
|
||||
set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]
|
||||
set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]
|
||||
connect_debug_port dbg_hub/clk [get_nets CLK100MHZ_IBUF_BUFG]
|
||||
|
||||
6
SDVD.xpr
6
SDVD.xpr
@ -196,6 +196,12 @@
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<File Path="$PPRDIR/roms/even_flow_16.mem">
|
||||
<FileInfo>
|
||||
<Attr Name="UsedIn" Val="synthesis"/>
|
||||
<Attr Name="UsedIn" Val="simulation"/>
|
||||
</FileInfo>
|
||||
</File>
|
||||
<Config>
|
||||
<Option Name="DesignMode" Val="RTL"/>
|
||||
<Option Name="TopModule" Val="nexys_a7_top"/>
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
384000
roms/even_flow_16.mem
Normal file
384000
roms/even_flow_16.mem
Normal file
File diff suppressed because it is too large
Load Diff
BIN
roms/even_flow_16.raw
Normal file
BIN
roms/even_flow_16.raw
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user