Add SPI interrupt to PLIC connection

This commit is contained in:
Moritz Schneider 2018-10-30 14:26:36 +01:00
parent c40eb0be15
commit dbe63f622e
5 changed files with 88 additions and 79 deletions

View file

@ -88,7 +88,7 @@
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_LSB_STUP">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_NUM_SS_BITS">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_NUM_TRANSFER_BITS">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SCK_RATIO">16</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SCK_RATIO">4</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SELECT_XPM">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SHARED_STARTUP">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_SPI_MEMORY">1</spirit:configurableElementValue>
@ -100,17 +100,17 @@
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_S_AXI4_ID_WIDTH">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_TYPE_OF_AXI4_INTERFACE">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_UC_FAMILY">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_STARTUP">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_STARTUP">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_USE_STARTUP_EXT">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="MODELPARAM_VALUE.C_XIP_MODE">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Async_Clk">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_DUAL_QUAD_MODE">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_FAMILY">kintex7</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_FIFO_DEPTH">16</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_FIFO_DEPTH">256</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_INSTANCE">axi_quad_spi_inst</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_NUM_SS_BITS">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_NUM_TRANSFER_BITS">8</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_SCK_RATIO">16</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_SCK_RATIO">4</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_SCK_RATIO1">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_SELECT_XPM">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_SHARED_STARTUP">0</spirit:configurableElementValue>
@ -122,8 +122,8 @@
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_S_AXI4_HIGHADDR">0x00000000</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_S_AXI4_ID_WIDTH">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_TYPE_OF_AXI4_INTERFACE">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_USE_STARTUP">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_USE_STARTUP_INT">1</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_USE_STARTUP">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_USE_STARTUP_INT">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.C_XIP_MODE">0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">axi_quad_spi_0</spirit:configurableElementValue>
<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FIFO_INCLUDED">1</spirit:configurableElementValue>
@ -156,6 +156,7 @@
<xilinx:componentInstanceExtensions>
<xilinx:configElementInfos>
<xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_FIFO_DEPTH" xilinx:valueSource="user"/>
<xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_SCK_RATIO" xilinx:valueSource="user"/>
<xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_SHARED_STARTUP" xilinx:valueSource="user"/>
<xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_S_AXI4_ID_WIDTH" xilinx:valueSource="user"/>
<xilinx:configElementInfo xilinx:referenceId="PARAM_VALUE.C_TYPE_OF_AXI4_INTERFACE" xilinx:valueSource="user"/>

View file

@ -44,3 +44,8 @@ set_property -dict {PACKAGE_PIN R28 IOSTANDARD LVCMOS33} [get_ports spi_clk_o]
set_property -dict {PACKAGE_PIN T30 IOSTANDARD LVCMOS33} [get_ports spi_ss]
set_property -dict {PACKAGE_PIN R26 IOSTANDARD LVCMOS33} [get_ports spi_miso]
set_property -dict {PACKAGE_PIN R29 IOSTANDARD LVCMOS33} [get_ports spi_mosi]
set_property -dict {PACKAGE_PIN U27 IOSTANDARD LVCMOS33} [get_ports spi_clk_o_2]
set_property -dict {PACKAGE_PIN U28 IOSTANDARD LVCMOS33} [get_ports spi_ss_2]
set_property -dict {PACKAGE_PIN T26 IOSTANDARD LVCMOS33} [get_ports spi_miso_2]
set_property -dict {PACKAGE_PIN T27 IOSTANDARD LVCMOS33} [get_ports spi_mosi_2]

View file

@ -13,21 +13,20 @@ module ariane_peripherals #(
parameter AxiAddrWidth = -1,
parameter AxiDataWidth = -1
) (
input logic clk_i , // Clock
input logic rst_ni , // Asynchronous reset active low
AXI_BUS.in plic ,
AXI_BUS.in uart ,
AXI_BUS.in spi ,
output logic [1:0] irq_o ,
input logic clk_i , // Clock
input logic rst_ni , // Asynchronous reset active low
AXI_BUS.in plic ,
AXI_BUS.in uart ,
AXI_BUS.in spi ,
output logic [1:0] irq_o ,
// UART
input logic rx_i ,
output logic tx_o ,
input logic rx_i ,
output logic tx_o ,
// SPI
output logic spi_clk_o ,
output logic spi_mosi ,
input logic spi_miso ,
output logic spi_ss ,
output logic spi_ip2intc_irtp
output logic spi_clk_o,
output logic spi_mosi ,
input logic spi_miso ,
output logic spi_ss
);
// ---------------
@ -469,12 +468,10 @@ module ariane_peripherals #(
.ss_i ('0 ),
.ss_o (spi_ss ),
.ss_t ('0 ),
.ip2intc_irpt (spi_ip2intc_irtp ),
.cfgclk (spi_clk_o ), // output wire cfgclk
.cfgmclk ( ), // output wire cfgmclk
.eos ( ), // output wire eos
.preq ( ) // output wire preq
.ip2intc_irpt (irq_sources[1] ),
.sck_i ('0 ),
.sck_o (spi_clk_o ),
.sck_t ('0 )
);

View file

@ -10,44 +10,44 @@
// Top-level for Genesys 2
module ariane_xilinx (
input logic cpu_resetn,
input logic sys_clk_p,
input logic sys_clk_n,
inout logic [31:0] ddr3_dq,
inout logic [3:0] ddr3_dqs_n,
inout logic [3:0] ddr3_dqs_p,
output logic [14:0] ddr3_addr,
output logic [2:0] ddr3_ba,
output logic ddr3_ras_n,
output logic ddr3_cas_n,
output logic ddr3_we_n,
output logic ddr3_reset_n,
output logic [0:0] ddr3_ck_p,
output logic [0:0] ddr3_ck_n,
output logic [0:0] ddr3_cke,
output logic [0:0] ddr3_cs_n,
output logic [3:0] ddr3_dm,
output logic [0:0] ddr3_odt,
input logic tck,
input logic tms,
input logic trst_n,
input logic tdi,
output logic tdo,
input logic rx,
output logic tx,
output logic [7:0] led,
input logic [7:0] sw,
output logic fan_pwm,
// SPI
output logic spi_mosi,
input logic spi_miso,
output logic spi_ss,
output logic spi_clk_o
//output logic spi_ip2intc_irtp
input logic cpu_resetn ,
input logic sys_clk_p ,
input logic sys_clk_n ,
inout logic [31:0] ddr3_dq ,
inout logic [ 3:0] ddr3_dqs_n ,
inout logic [ 3:0] ddr3_dqs_p ,
output logic [14:0] ddr3_addr ,
output logic [ 2:0] ddr3_ba ,
output logic ddr3_ras_n ,
output logic ddr3_cas_n ,
output logic ddr3_we_n ,
output logic ddr3_reset_n,
output logic [ 0:0] ddr3_ck_p ,
output logic [ 0:0] ddr3_ck_n ,
output logic [ 0:0] ddr3_cke ,
output logic [ 0:0] ddr3_cs_n ,
output logic [ 3:0] ddr3_dm ,
output logic [ 0:0] ddr3_odt ,
input logic tck ,
input logic tms ,
input logic trst_n ,
input logic tdi ,
output logic tdo ,
input logic rx ,
output logic tx ,
output logic [ 7:0] led ,
input logic [ 7:0] sw ,
output logic fan_pwm ,
// SPI
output logic spi_mosi ,
input logic spi_miso ,
output logic spi_ss ,
output logic spi_clk_o ,
output logic spi_mosi_2 ,
output logic spi_miso_2 ,
output logic spi_ss_2 ,
output logic spi_clk_o_2
//output logic spi_ip2intc_irtp
);
localparam NBSlave = 4; // debug, Instruction fetch, data bypass, data
@ -79,6 +79,12 @@ AXI_BUS #(
.AXI_USER_WIDTH ( AxiUserWidth )
) master[ariane_soc::NB_PERIPHERALS-1:0]();
// spi hack
assign spi_mosi_2 = spi_mosi;
assign spi_miso_2 = spi_miso;
assign spi_clk_o_2 = spi_clk_o;
assign spi_ss_2 = spi_ss;
// disable test-enable
logic test_en;
logic ndmreset;
@ -88,6 +94,7 @@ logic time_irq;
logic ipi;
logic clk;
logic spi_clk_i;
logic ddr_sync_reset;
logic ddr_clock_out;
@ -413,22 +420,21 @@ bootrom i_bootrom (
// Peripherals
// ---------------
ariane_peripherals #(
.AxiAddrWidth(AxiAddrWidth),
.AxiDataWidth(AxiDataWidth)
.AxiAddrWidth(AxiAddrWidth),
.AxiDataWidth(AxiDataWidth)
) i_ariane_peripherals (
.clk_i (clk ),
.rst_ni (ndmreset_n ),
.plic (master[ariane_soc::PLIC]),
.uart (master[ariane_soc::UART]),
.spi (master[ariane_soc::SPI] ),
.irq_o (irq ),
.rx_i (rx ),
.tx_o (tx ),
.spi_clk_o (spi_clk_o ),
.spi_mosi (spi_mosi ),
.spi_miso (spi_miso ),
.spi_ss (spi_ss ),
.spi_ip2intc_irtp( )
.clk_i (clk ),
.rst_ni (ndmreset_n ),
.plic (master[ariane_soc::PLIC]),
.uart (master[ariane_soc::UART]),
.spi (master[ariane_soc::SPI] ),
.irq_o (irq ),
.rx_i (rx ),
.tx_o (tx ),
.spi_clk_o(spi_clk_o ),
.spi_mosi (spi_mosi ),
.spi_miso (spi_miso ),
.spi_ss (spi_ss )
);
// ---------------------

View file

@ -14,7 +14,7 @@ package ariane_soc;
localparam NB_PERIPHERALS = 7;
localparam NumTargets = 2;
localparam NumSources = 1;
localparam NumSources = 2;
typedef enum int unsigned {
DRAM = 0,