|
@@ -13,124 +13,123 @@ module max80
|
|
|
parameter logic [7:0] fpga_ver)
|
|
|
(
|
|
|
// Clock oscillator
|
|
|
- input master_clk, // 336 MHz from PLL2
|
|
|
- input slow_clk, // ~12 MHz clock from PLL2
|
|
|
- input master_pll_locked, // PLL2 is locked, master_clk is good
|
|
|
- output reset_plls, // Reset all PLLs including PLL2
|
|
|
+ input master_clk, // 336 MHz from PLL2
|
|
|
+ input slow_clk, // ~12 MHz clock from PLL2
|
|
|
+ input master_pll_locked, // PLL2 is locked, master_clk is good
|
|
|
+ output reset_plls, // Reset all PLLs including PLL2
|
|
|
|
|
|
- input board_id, // This better match the firmware
|
|
|
+ input board_id, // This better match the firmware
|
|
|
|
|
|
// ABC-bus
|
|
|
- inout abc_clk, // ABC-bus 3 MHz clock
|
|
|
+ inout abc_clk, // ABC-bus 3 MHz clock
|
|
|
inout [15:0] abc_a, // ABC address bus
|
|
|
inout [7:0] abc_d, // ABC data bus
|
|
|
- output abc_d_oe, // Data bus output enable
|
|
|
- inout abc_rst_n, // ABC bus reset strobe
|
|
|
- inout abc_cs_n, // ABC card select strobe
|
|
|
+ output abc_d_oe, // Data bus output enable
|
|
|
+ inout abc_rst_n, // ABC bus reset strobe
|
|
|
+ inout abc_cs_n, // ABC card select strobe
|
|
|
inout [4:0] abc_out_n, // OUT, C1-C4 strobe
|
|
|
inout [1:0] abc_inp_n, // INP, STATUS strobe
|
|
|
- inout abc_xmemfl_n, // Memory read strobe
|
|
|
- inout abc_xmemw800_n, // Memory write strobe (ABC800)
|
|
|
- inout abc_xmemw80_n, // Memory write strobe (ABC80)
|
|
|
- inout abc_xinpstb_n, // I/O read strobe (ABC800)
|
|
|
- inout abc_xoutpstb_n, // I/O write strobe (ABC80)
|
|
|
+ inout abc_xmemfl_n, // Memory read strobe
|
|
|
+ inout abc_xmemw800_n, // Memory write strobe (ABC800)
|
|
|
+ inout abc_xmemw80_n, // Memory write strobe (ABC80)
|
|
|
+ inout abc_xinpstb_n, // I/O read strobe (ABC800)
|
|
|
+ inout abc_xoutpstb_n, // I/O write strobe (ABC80)
|
|
|
// The following are inverted versus the bus IF
|
|
|
// the corresponding MOSFETs are installed
|
|
|
- inout abc_rdy_x, // RDY = WAIT#
|
|
|
- inout abc_resin_x, // System reset request
|
|
|
- inout abc_int80_x, // System INT request (ABC80)
|
|
|
- inout abc_int800_x, // System INT request (ABC800)
|
|
|
- inout abc_nmi_x, // System NMI request (ABC800)
|
|
|
- inout abc_xm_x, // System memory override (ABC800)
|
|
|
+ inout abc_rdy_x, // RDY = WAIT#
|
|
|
+ inout abc_resin_x, // System reset request
|
|
|
+ inout abc_int80_x, // System INT request (ABC80)
|
|
|
+ inout abc_int800_x, // System INT request (ABC800)
|
|
|
+ inout abc_nmi_x, // System NMI request (ABC800)
|
|
|
+ inout abc_xm_x, // System memory override (ABC800)
|
|
|
// Host/device control
|
|
|
- output abc_host, // 1 = host, 0 = target
|
|
|
+ output abc_host, // 1 = host, 0 = target
|
|
|
|
|
|
// ABC-bus extension header
|
|
|
// (Note: cannot use an array here because HC and HH are
|
|
|
// input only.)
|
|
|
- inout exth_ha,
|
|
|
- inout exth_hb,
|
|
|
- input exth_hc,
|
|
|
- inout exth_hd,
|
|
|
- inout exth_he,
|
|
|
- inout exth_hf,
|
|
|
- inout exth_hg,
|
|
|
- input exth_hh,
|
|
|
+ inout exth_ha,
|
|
|
+ inout exth_hb,
|
|
|
+ input exth_hc,
|
|
|
+ inout exth_hd,
|
|
|
+ inout exth_he,
|
|
|
+ inout exth_hf,
|
|
|
+ inout exth_hg,
|
|
|
+ input exth_hh,
|
|
|
|
|
|
// SDRAM bus
|
|
|
- output sr_clk,
|
|
|
+ output sr_clk,
|
|
|
output [1:0] sr_ba, // Bank address
|
|
|
output [12:0] sr_a, // Address within bank
|
|
|
inout [15:0] sr_dq, // Also known as D or IO
|
|
|
output [1:0] sr_dqm, // DQML and DQMH
|
|
|
- output sr_cs_n,
|
|
|
- output sr_we_n,
|
|
|
- output sr_cas_n,
|
|
|
- output sr_ras_n,
|
|
|
+ output sr_cs_n,
|
|
|
+ output sr_we_n,
|
|
|
+ output sr_cas_n,
|
|
|
+ output sr_ras_n,
|
|
|
|
|
|
// SD card
|
|
|
- input sd_cd_n,
|
|
|
- output sd_cs_n,
|
|
|
- output sd_clk,
|
|
|
- output sd_di,
|
|
|
- input sd_do,
|
|
|
+ input sd_cd_n,
|
|
|
+ output sd_cs_n,
|
|
|
+ output sd_clk,
|
|
|
+ output sd_di,
|
|
|
+ input sd_do,
|
|
|
|
|
|
// Serial console (naming is FPGA as DCE)
|
|
|
- input tty_txd,
|
|
|
- output tty_rxd,
|
|
|
- input tty_rts,
|
|
|
- output tty_cts,
|
|
|
- input tty_dtr,
|
|
|
+ input tty_txd,
|
|
|
+ output tty_rxd,
|
|
|
+ input tty_rts,
|
|
|
+ output tty_cts,
|
|
|
+ input tty_dtr,
|
|
|
|
|
|
// SPI flash memory (also configuration)
|
|
|
- output flash_cs_n,
|
|
|
- output flash_sck,
|
|
|
+ output flash_cs_n,
|
|
|
+ output flash_sck,
|
|
|
inout [1:0] flash_io,
|
|
|
|
|
|
// SPI bus (connected to ESP32 so can be bidirectional)
|
|
|
- inout spi_clk,
|
|
|
- inout spi_miso,
|
|
|
- inout spi_mosi,
|
|
|
- inout spi_cs_esp_n, // ESP32 IO10
|
|
|
- inout spi_cs_flash_n, // ESP32 IO01
|
|
|
+ inout spi_clk, // ESP32 IO12
|
|
|
+ inout [1:0] spi_io, // ESP32 IO13,IO11
|
|
|
+ inout spi_cs_esp_n, // ESP32 IO10
|
|
|
+ inout spi_cs_flash_n, // ESP32 IO01
|
|
|
|
|
|
// Other ESP32 connections
|
|
|
- inout esp_io0, // ESP32 IO00
|
|
|
- inout esp_int, // ESP32 IO09
|
|
|
+ inout esp_io0, // ESP32 IO00
|
|
|
+ inout esp_int, // ESP32 IO09
|
|
|
|
|
|
// I2C bus (RTC and external)
|
|
|
- inout i2c_scl,
|
|
|
- inout i2c_sda,
|
|
|
- input rtc_32khz,
|
|
|
- input rtc_int_n,
|
|
|
+ inout i2c_scl,
|
|
|
+ inout i2c_sda,
|
|
|
+ input rtc_32khz,
|
|
|
+ input rtc_int_n,
|
|
|
|
|
|
// LEDs
|
|
|
output [2:0] led,
|
|
|
|
|
|
// USB
|
|
|
- inout usb_dp,
|
|
|
- inout usb_dn,
|
|
|
- output usb_pu,
|
|
|
- input usb_rx,
|
|
|
- input usb_rx_ok,
|
|
|
+ inout usb_dp,
|
|
|
+ inout usb_dn,
|
|
|
+ output usb_pu,
|
|
|
+ input usb_rx,
|
|
|
+ input usb_rx_ok,
|
|
|
|
|
|
// HDMI
|
|
|
output [2:0] hdmi_d,
|
|
|
- output hdmi_clk,
|
|
|
- inout hdmi_scl,
|
|
|
- inout hdmi_sda,
|
|
|
- inout hdmi_hpd,
|
|
|
+ output hdmi_clk,
|
|
|
+ inout hdmi_scl,
|
|
|
+ inout hdmi_sda,
|
|
|
+ inout hdmi_hpd,
|
|
|
|
|
|
// Unconnected pins with pullups, used for randomness
|
|
|
inout [2:0] rngio,
|
|
|
|
|
|
// Various clocks available to the top level as well as internally
|
|
|
- output sdram_clk, // 168 MHz SDRAM clock
|
|
|
- output sys_clk, // 84 MHz System clock
|
|
|
- output flash_clk, // 134 MHz Serial flash ROM clock
|
|
|
- output usb_clk, // 48 MHz USB clock
|
|
|
- output vid_clk, // 56 MHz Video pixel clock
|
|
|
- output vid_hdmiclk // 280 MHz HDMI serializer clock = vid_clk x 5
|
|
|
+ output sdram_clk, // 168 MHz SDRAM clock
|
|
|
+ output sys_clk, // 84 MHz System clock
|
|
|
+ output flash_clk, // 134 MHz Serial flash ROM clock
|
|
|
+ output usb_clk, // 48 MHz USB clock
|
|
|
+ output vid_clk, // 56 MHz Video pixel clock
|
|
|
+ output vid_hdmiclk // 280 MHz HDMI serializer clock = vid_clk x 5
|
|
|
);
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
@@ -321,7 +320,7 @@ module max80
|
|
|
//
|
|
|
// SDRAM
|
|
|
//
|
|
|
- localparam dram_port_count = 3;
|
|
|
+ localparam dram_port_count = 4;
|
|
|
dram_bus sr_bus[1:dram_port_count] ( );
|
|
|
|
|
|
// ABC interface
|
|
@@ -367,7 +366,7 @@ module max80
|
|
|
|
|
|
dram_port #(32)
|
|
|
cpu_dram_port (
|
|
|
- .bus ( sr_bus[3] ),
|
|
|
+ .bus ( sr_bus[4] ),
|
|
|
.prio ( 2'd1 ),
|
|
|
.addr ( cpu_mem_addr[24:0] ),
|
|
|
.rd ( sdram_mem_rdata ),
|
|
@@ -862,28 +861,23 @@ module max80
|
|
|
assign spi_cs_flash_n = 1'bz;
|
|
|
|
|
|
esp esp (
|
|
|
- .rst_n ( rst_n ),
|
|
|
- .clk ( sys_clk ),
|
|
|
-
|
|
|
- .cpu_valid ( iodev_valid_esp ),
|
|
|
- .cpu_addr ( cpu_mem_addr[6:2] ),
|
|
|
- .cpu_wstrb ( cpu_mem_wstrb ),
|
|
|
- .cpu_wdata ( cpu_mem_wdata ),
|
|
|
- .cpu_rdata ( iodev_rdata_esp ),
|
|
|
- .irq ( iodev_irq_esp ),
|
|
|
-
|
|
|
- .tty_rx ( ),
|
|
|
- .tty_tx ( ),
|
|
|
-
|
|
|
- .esp_en ( ),
|
|
|
- .esp_int ( esp_int ),
|
|
|
- .esp_io0 ( esp_io0 ),
|
|
|
-
|
|
|
- .spi_clk ( spi_clk ),
|
|
|
- .spi_miso ( spi_miso ),
|
|
|
- .spi_mosi ( spi_mosi ),
|
|
|
- .spi_cs_esp_n ( spi_cs_esp_n ),
|
|
|
- .spi_cs_flash_n ( spi_cs_flash_n )
|
|
|
+ .rst_n ( rst_n ),
|
|
|
+ .sys_clk ( sys_clk ),
|
|
|
+ .sdram_clk ( sdram_clk ),
|
|
|
+
|
|
|
+ .cpu_valid ( iodev_valid_esp ),
|
|
|
+ .cpu_addr ( cpu_mem_addr[6:2] ),
|
|
|
+ .cpu_wstrb ( cpu_mem_wstrb ),
|
|
|
+ .cpu_wdata ( cpu_mem_wdata ),
|
|
|
+ .cpu_rdata ( iodev_rdata_esp ),
|
|
|
+ .irq ( iodev_irq_esp ),
|
|
|
+
|
|
|
+ .esp_int ( esp_int ),
|
|
|
+ .spi_clk ( spi_clk ),
|
|
|
+ .spi_io ( spi_io ),
|
|
|
+ .spi_cs_n ( spi_cs_esp_n ),
|
|
|
+
|
|
|
+ .dram ( sr_bus[2].dstr )
|
|
|
);
|
|
|
|
|
|
//
|
|
@@ -915,7 +909,7 @@ module max80
|
|
|
.sys_clk ( sys_clk ),
|
|
|
.reset_cmd ( vjtag_reset_cmd ),
|
|
|
|
|
|
- .sdram ( sr_bus[2].dstr ),
|
|
|
+ .sdram ( sr_bus[3].dstr ),
|
|
|
|
|
|
.cpu_valid ( iodev_valid_vjtag ),
|
|
|
.cpu_addr ( cpu_mem_addr[6:2] ),
|