@@ -85,6 +85,12 @@ logic signed [W-1:0] debug_adc1;
8585logic signed [W - 1 : 0 ] debug_adc2;
8686logic signed [W - 1 : 0 ] debug_adc3;
8787
88+ // Internal signals for I2S interface (after IO regs).
89+ logic pmod_lrck_int;
90+ logic pmod_bick_int;
91+ logic pmod_sdin1_int;
92+ logic pmod_sdout1_int;
93+
8894// PLL bringup and reset state management / debouncing.
8995sysmgr sysmgr_instance (
9096`ifndef INTERNAL_CLOCK
@@ -147,13 +153,29 @@ TRELLIS_IO #(.DIR("BIDIR")) i2c_tristate_sda (
147153 .B (PMOD_I2C_SDA ),
148154 .O (i2c_sda_i)
149155);
156+ // ECP5 IO regs for I2S signals.
157+ OFS1P3DX ofs_bick (.D (pmod_bick_int), .SP (1'b1 ), .SCLK (clk_256fs), .CD (1'b0 ), .Q (PMOD_BICK ));
158+ OFS1P3DX ofs_lrck (.D (pmod_lrck_int), .SP (1'b1 ), .SCLK (clk_256fs), .CD (1'b0 ), .Q (PMOD_LRCK ));
159+ OFS1P3DX ofs_sdin1 (.D (pmod_sdin1_int), .SP (1'b1 ), .SCLK (clk_256fs), .CD (1'b0 ), .Q (PMOD_SDIN1 ));
160+ IFS1P3DX ifs_sdout1 (.D (PMOD_SDOUT1 ), .SP (1'b1 ), .SCLK (clk_256fs), .CD (1'b0 ), .Q (pmod_sdout1_int));
150161`endif
151162`else
152163// For iCE40 this is not necessary.
153164assign PMOD_I2C_SCL = i2c_scl_oe ? 1'b0 : 1'bz ;
154165assign PMOD_I2C_SDA = i2c_sda_oe ? 1'b0 : 1'bz ;
155166assign i2c_scl_i = PMOD_I2C_SCL ;
156167assign i2c_sda_i = PMOD_I2C_SDA ;
168+ `ifndef VERILATOR_LINT_ONLY
169+ // ICE40 IO regs for I2S signals.
170+ SB_IO # (.PIN_TYPE (6'b110101 )) sb_io_bick (
171+ .PACKAGE_PIN (PMOD_BICK ), .OUTPUT_CLK (clk_256fs), .D_OUT_0 (pmod_bick_int), .OUTPUT_ENABLE (1'b1 ));
172+ SB_IO # (.PIN_TYPE (6'b110101 )) sb_io_lrck (
173+ .PACKAGE_PIN (PMOD_LRCK ), .OUTPUT_CLK (clk_256fs), .D_OUT_0 (pmod_lrck_int), .OUTPUT_ENABLE (1'b1 ));
174+ SB_IO # (.PIN_TYPE (6'b110101 )) sb_io_sdin1 (
175+ .PACKAGE_PIN (PMOD_SDIN1 ), .OUTPUT_CLK (clk_256fs), .D_OUT_0 (pmod_sdin1_int), .OUTPUT_ENABLE (1'b1 ));
176+ SB_IO # (.PIN_TYPE (6'b000000 )) sb_io_sdout1 (
177+ .PACKAGE_PIN (PMOD_SDOUT1 ), .INPUT_CLK (clk_256fs), .D_IN_0 (pmod_sdout1_int));
178+ `endif
157179`endif
158180
159181eurorack_pmod # (
@@ -169,10 +191,10 @@ eurorack_pmod #(
169191 .i2c_sda_i (i2c_sda_i),
170192 .pdn (PMOD_PDN ),
171193 .mclk (PMOD_MCLK ),
172- .sdin1 (PMOD_SDIN1 ),
173- .sdout1 (PMOD_SDOUT1 ),
174- .lrck (PMOD_LRCK ),
175- .bick (PMOD_BICK ),
194+ .sdin1 (pmod_sdin1_int ),
195+ .sdout1 (pmod_sdout1_int ),
196+ .lrck (pmod_lrck_int ),
197+ .bick (pmod_bick_int ),
176198
177199 .cal_in0 (in0),
178200 .cal_in1 (in1),
0 commit comments