| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953 |
- //////////////////////////////////////////////////////////////////////////////////
- // Company: TAIR
- // Engineer:
- //
- // Create Date: 10/30/2023 11:24:31 AM
- // Design Name:
- // Module Name: RegMap
- // Project Name: S5443_V3_FPGA3
- // Target Devices: BOARD: BY5443v3. FPGA: xc7s25csga225-2
- // Tool Versions:
- // Description: This module contains settings for Spi modules.Registers can
- // be read by an external host setting a SmcAre low and address to adress bus.
- //
- // Dependencies:
- //
- // Revision:
- // Revision 1.0 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module RegMap #(
- parameter CMD_REG_WIDTH = 32,
- parameter ADDR_REG_WIDTH = 12
- )
- (
- input Clk_i,
- input Rst_i,
- input [1:0] SmcBe_i,
- input [CMD_REG_WIDTH/2-1:0] Data_i,
- input [ADDR_REG_WIDTH-1:0] Addr_i,
- input Val_i,
- input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg0_i,
- input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg0_i,
- input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg1_i,
- input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg1_i,
- input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg2_i,
- input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg2_i,
- input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg3_i,
- input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg3_i,
- input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg4_i,
- input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg4_i,
- input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg5_i,
- input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg5_i,
- input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg6_i,
- input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg6_i,
- input [6:0] LdReg_i,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0CtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0ClkReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0CsDelayReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0CsCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0TxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0RxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0TxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi0RxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1CtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1ClkReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1CsDelayReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1CsCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1TxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1RxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1TxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi1RxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2CtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2ClkReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2CsDelayReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2CsCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2TxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2RxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2TxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi2RxFifoReg_o,
-
- output reg [CMD_REG_WIDTH/2-1:0] Spi3CtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi3ClkReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi3CsDelayReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi3CsCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi3TxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi3RxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi3TxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi3RxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4CtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4ClkReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4CsDelayReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4CsCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4TxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4RxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4TxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi4RxFifoReg_o,
-
- output reg [CMD_REG_WIDTH/2-1:0] Spi5CtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi5ClkReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi5CsDelayReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi5CsCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi5TxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi5RxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi5TxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi5RxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6CtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6ClkReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6CsDelayReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6CsCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6TxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6RxFifoCtrlReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6TxFifoReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] Spi6RxFifoReg_o,
- output [CMD_REG_WIDTH/2-1:0] SpiTxRxEnReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] SpiTxRxEnSetReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] SpiTxRxEnClrReg_o,
- output [CMD_REG_WIDTH-1:0] GPIOAReg_o,
- output reg [CMD_REG_WIDTH/2-1:0] LdMaskReg_o,
- output [CMD_REG_WIDTH/2-1:0] AnsDataReg_o,
-
- output Led_o
- );
- //================================================================================
- // REG/WIRE
- //================================================================================
- (* dont_touch = "yes" *)reg [CMD_REG_WIDTH/2-1:0] spiTxRxEnReg;
- reg [CMD_REG_WIDTH/2-1:0] GPIOAReg;
- reg [CMD_REG_WIDTH/2-1:0] GPIOARegS;
-
- (* dont_touch = "yes" *)reg [CMD_REG_WIDTH/2-1:0] ansReg;
- (* dont_touch = "yes" *)reg [CMD_REG_WIDTH/2-1:0] ledReg;
-
- reg [1:0] beReg;
- //================================================================================
- // ASSIGNMENTS
- //================================================================================
- assign SpiTxRxEnReg_o = spiTxRxEnReg;
- assign GPIOAReg_o = {GPIOARegS, GPIOAReg};
-
- assign AnsDataReg_o = ansReg;
- assign Led_o = ledReg[0];
- //================================================================================
- // LOCALPARAMS
- //================================================================================
- localparam SPI_0_CTRL_ADDR = 12'h00;
- localparam SPI_0_CLK_ADDR = 12'h04;
- localparam SPI_0_CS_DELAY_ADDR = 12'h08;
- localparam SPI_0_CS_CTRL_ADDR = 12'h0c;
- localparam SPI_0_TX_FIFO_CTRL_ADDR_LSB = 12'h10;
- localparam SPI_0_TX_FIFO_CTRL_ADDR_MSB = 12'h12;
- localparam SPI_0_RX_FIFO_CTRL_ADDR_LSB = 12'h14;
- localparam SPI_0_RX_FIFO_CTRL_ADDR_MSB = 12'h16;
- localparam SPI_0_TX_FIFO = 12'h18;
- localparam SPI_0_RX_FIFO = 12'h1c;
-
- localparam SPI_1_CTRL_ADDR = 12'h50;
- localparam SPI_1_CLK_ADDR = 12'h54;
- localparam SPI_1_CS_DELAY_ADDR = 12'h58;
- localparam SPI_1_CS_CTRL_ADDR = 12'h5c;
- localparam SPI_1_TX_FIFO_CTRL_ADDR_LSB = 12'h60;
- localparam SPI_1_TX_FIFO_CTRL_ADDR_MSB = 12'h62;
- localparam SPI_1_RX_FIFO_CTRL_ADDR_LSB = 12'h64;
- localparam SPI_1_RX_FIFO_CTRL_ADDR_MSB = 12'h66;
- localparam SPI_1_TX_FIFO = 12'h68;
- localparam SPI_1_RX_FIFO = 12'h6c;
-
- localparam SPI_2_CTRL_ADDR = 12'hF0;
- localparam SPI_2_CLK_ADDR = 12'hF4;
- localparam SPI_2_CS_DELAY_ADDR = 12'hF8;
- localparam SPI_2_CS_CTRL_ADDR = 12'hFc;
- localparam SPI_2_TX_FIFO_CTRL_ADDR_LSB = 12'h100;
- localparam SPI_2_TX_FIFO_CTRL_ADDR_MSB = 12'h102;
- localparam SPI_2_RX_FIFO_CTRL_ADDR_LSB = 12'h104;
- localparam SPI_2_RX_FIFO_CTRL_ADDR_MSB = 12'h106;
- localparam SPI_2_TX_FIFO = 12'h108;
- localparam SPI_2_RX_FIFO = 12'h10c;
-
- localparam SPI_3_CTRL_ADDR = 12'h140;
- localparam SPI_3_CLK_ADDR = 12'h144;
- localparam SPI_3_CS_DELAY_ADDR = 12'h148;
- localparam SPI_3_CS_CTRL_ADDR = 12'h14c;
- localparam SPI_3_TX_FIFO_CTRL_ADDR_LSB = 12'h150;
- localparam SPI_3_TX_FIFO_CTRL_ADDR_MSB = 12'h152;
- localparam SPI_3_RX_FIFO_CTRL_ADDR_LSB = 12'h154;
- localparam SPI_3_RX_FIFO_CTRL_ADDR_MSB = 12'h156;
- localparam SPI_3_TX_FIFO = 12'h158;
- localparam SPI_3_RX_FIFO = 12'h15c;
-
- localparam SPI_4_CTRL_ADDR = 12'h190;
- localparam SPI_4_CLK_ADDR = 12'h194;
- localparam SPI_4_CS_DELAY_ADDR = 12'h198;
- localparam SPI_4_CS_CTRL_ADDR = 12'h19c;
- localparam SPI_4_TX_FIFO_CTRL_ADDR_LSB = 12'h1a0;
- localparam SPI_4_TX_FIFO_CTRL_ADDR_MSB = 12'h1a2;
- localparam SPI_4_RX_FIFO_CTRL_ADDR_LSB = 12'h1a4;
- localparam SPI_4_RX_FIFO_CTRL_ADDR_MSB = 12'h1a6;
- localparam SPI_4_TX_FIFO = 12'h1a8;
- localparam SPI_4_RX_FIFO = 12'h1ac;
-
- localparam SPI_5_CTRL_ADDR = 12'h1e0;
- localparam SPI_5_CLK_ADDR = 12'h1e4;
- localparam SPI_5_CS_DELAY_ADDR = 12'h1e8;
- localparam SPI_5_CS_CTRL_ADDR = 12'h1ec;
- localparam SPI_5_TX_FIFO_CTRL_ADDR_LSB = 12'h1f0;
- localparam SPI_5_TX_FIFO_CTRL_ADDR_MSB = 12'h1f2;
- localparam SPI_5_RX_FIFO_CTRL_ADDR_LSB = 12'h1f4;
- localparam SPI_5_RX_FIFO_CTRL_ADDR_MSB = 12'h1f6;
- localparam SPI_5_TX_FIFO = 12'h1f8;
- localparam SPI_5_RX_FIFO = 12'h1fc;
-
- localparam SPI_6_CTRL_ADDR = 12'h230;
- localparam SPI_6_CLK_ADDR = 12'h234;
- localparam SPI_6_CS_DELAY_ADDR = 12'h238;
- localparam SPI_6_CS_CTRL_ADDR = 12'h23c;
- localparam SPI_6_TX_FIFO_CTRL_ADDR_LSB = 12'h240;
- localparam SPI_6_TX_FIFO_CTRL_ADDR_MSB = 12'h242;
- localparam SPI_6_RX_FIFO_CTRL_ADDR_LSB = 12'h244;
- localparam SPI_6_RX_FIFO_CTRL_ADDR_MSB = 12'h246;
- localparam SPI_6_TX_FIFO = 12'h248;
- localparam SPI_6_RX_FIFO = 12'h24c;
-
- localparam SPI_TX_RX_EN = 12'hF00;
- /* Set register */
- localparam SPI_TX_RX_EN_SET = 12'hF04;
- /* Clear register */
- localparam SPI_TX_RX_EN_CLR = 12'hF08;
- localparam GPIO_CTRL_ADDR = 12'hFF0;
- localparam GPIO_CTRL_ADDR_S = 12'hFF2;
- /* LD Mask and LD Register */
- localparam LD_REG_ADDR = 12'hFF4;
- localparam LD_MASK_ADDR = 12'hFF8;
-
- //================================================================================
- // CODING
- //================================================================================
- always @(posedge Clk_i) begin
- if (!Rst_i) begin
- beReg <= 2'b0;
- end else begin
- beReg <= SmcBe_i;
- end
- end
-
- always @(posedge Clk_i) begin
- if (Rst_i) begin
- Spi0ClkReg_o <= 0;
- Spi0CtrlReg_o <= 0;
- Spi0CsDelayReg_o <= 0;
- Spi0CsCtrlReg_o <= 0;
- Spi0TxFifoCtrlReg_o <= 0;
- Spi0RxFifoCtrlReg_o <= 0;
- Spi1ClkReg_o <= 0;
- Spi1CtrlReg_o <= 0;
- Spi1CsDelayReg_o <= 0;
- Spi1CsCtrlReg_o <= 0;
- Spi1TxFifoCtrlReg_o <= 0;
- Spi1RxFifoCtrlReg_o <= 0;
- Spi2ClkReg_o <= 0;
- Spi2CtrlReg_o <= 0;
- Spi2CsDelayReg_o <= 0;
- Spi2CsCtrlReg_o <= 0;
- Spi2TxFifoCtrlReg_o <= 0;
- Spi2RxFifoCtrlReg_o <= 0;
- Spi3ClkReg_o <= 0;
- Spi3CtrlReg_o <= 0;
- Spi3CsDelayReg_o <= 0;
- Spi3CsCtrlReg_o <= 0;
- Spi3TxFifoCtrlReg_o <= 0;
- Spi3RxFifoCtrlReg_o <= 0;
- Spi4ClkReg_o <= 0;
- Spi4CtrlReg_o <= 0;
- Spi4CsDelayReg_o <= 0;
- Spi4CsCtrlReg_o <= 0;
- Spi4TxFifoCtrlReg_o <= 0;
- Spi4RxFifoCtrlReg_o <= 0;
- Spi5ClkReg_o <= 0;
- Spi5CtrlReg_o <= 0;
- Spi5CsDelayReg_o <= 0;
- Spi5CsCtrlReg_o <= 0;
- Spi5TxFifoCtrlReg_o <= 0;
- Spi5RxFifoCtrlReg_o <= 0;
- Spi6ClkReg_o <= 0;
- Spi6CtrlReg_o <= 0;
- Spi6CsDelayReg_o <= 0;
- Spi6CsCtrlReg_o <= 0;
- Spi6TxFifoCtrlReg_o <= 0;
- Spi6RxFifoCtrlReg_o <= 0;
- spiTxRxEnReg <= 0;
- SpiTxRxEnSetReg_o <= 0;
- SpiTxRxEnClrReg_o <= 0;
- LdMaskReg_o <= 0;
- GPIOAReg <= 0;
- GPIOARegS <= 0;
- ledReg <= 0;
- end
- else begin
- if (Val_i) begin
- case (beReg)
- 0 : begin
- case (Addr_i)
- SPI_0_CTRL_ADDR : begin
- Spi0CtrlReg_o <= Data_i;
- end
- SPI_0_CLK_ADDR : begin
- Spi0ClkReg_o <= Data_i;
- end
- SPI_0_CS_DELAY_ADDR : begin
- Spi0CsDelayReg_o <= Data_i;
- end
- SPI_0_CS_CTRL_ADDR : begin
- Spi0CsCtrlReg_o <= Data_i;
- end
- SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi0TxFifoCtrlReg_o <= Data_i;
- end
- SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi0RxFifoCtrlReg_o <= Data_i;
- end
- SPI_1_CTRL_ADDR : begin
- Spi1CtrlReg_o <= Data_i;
- end
- SPI_1_CLK_ADDR : begin
- Spi1ClkReg_o <= Data_i;
- end
- SPI_1_CS_DELAY_ADDR : begin
- Spi1CsDelayReg_o <= Data_i;
- end
- SPI_1_CS_CTRL_ADDR : begin
- Spi1CsCtrlReg_o <= Data_i;
- end
- SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi1TxFifoCtrlReg_o <= Data_i;
- end
- SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi1RxFifoCtrlReg_o <= Data_i;
- end
- SPI_2_CTRL_ADDR : begin
- Spi2CtrlReg_o <= Data_i;
- end
- SPI_2_CLK_ADDR : begin
- Spi2ClkReg_o <= Data_i;
- end
- SPI_2_CS_DELAY_ADDR : begin
- Spi2CsDelayReg_o <= Data_i;
- end
- SPI_2_CS_CTRL_ADDR : begin
- Spi2CsCtrlReg_o <= Data_i;
- end
- SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi2TxFifoCtrlReg_o <= Data_i;
- end
- SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi2RxFifoCtrlReg_o <= Data_i;
- end
- SPI_3_CTRL_ADDR : begin
- Spi3CtrlReg_o <= Data_i;
- end
- SPI_3_CLK_ADDR : begin
- Spi3ClkReg_o <= Data_i;
- end
- SPI_3_CS_DELAY_ADDR : begin
- Spi3CsDelayReg_o <= Data_i;
- end
- SPI_3_CS_CTRL_ADDR : begin
- Spi3CsCtrlReg_o <= Data_i;
- end
- SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi3TxFifoCtrlReg_o <= Data_i;
- end
- SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi3RxFifoCtrlReg_o <= Data_i;
- end
- SPI_4_CTRL_ADDR : begin
- Spi4CtrlReg_o <= Data_i;
- end
- SPI_4_CLK_ADDR : begin
- Spi4ClkReg_o <= Data_i;
- end
- SPI_4_CS_DELAY_ADDR : begin
- Spi4CsDelayReg_o <= Data_i;
- end
- SPI_4_CS_CTRL_ADDR : begin
- Spi4CsCtrlReg_o <= Data_i;
- end
- SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi4TxFifoCtrlReg_o <= Data_i;
- end
- SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi4RxFifoCtrlReg_o <= Data_i;
- end
- SPI_5_CTRL_ADDR : begin
- Spi5CtrlReg_o <= Data_i;
- end
- SPI_5_CLK_ADDR : begin
- Spi5ClkReg_o <= Data_i;
- end
- SPI_5_CS_DELAY_ADDR : begin
- Spi5CsDelayReg_o <= Data_i;
- end
- SPI_5_CS_CTRL_ADDR : begin
- Spi5CsCtrlReg_o <= Data_i;
- end
- SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi5TxFifoCtrlReg_o <= Data_i;
- end
- SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi5RxFifoCtrlReg_o <= Data_i;
- end
- SPI_6_CTRL_ADDR : begin
- Spi6CtrlReg_o <= Data_i;
- end
- SPI_6_CLK_ADDR : begin
- Spi6ClkReg_o <= Data_i;
- end
- SPI_6_CS_DELAY_ADDR : begin
- Spi6CsDelayReg_o <= Data_i;
- end
- SPI_6_CS_CTRL_ADDR : begin
- Spi6CsCtrlReg_o <= Data_i;
- end
- SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi6TxFifoCtrlReg_o <= Data_i;
- end
- SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi6RxFifoCtrlReg_o <= Data_i;
- end
- SPI_TX_RX_EN : begin
- spiTxRxEnReg <= Data_i;
- end
- SPI_TX_RX_EN_SET : begin
- spiTxRxEnReg <= spiTxRxEnReg | Data_i;
- end
- SPI_TX_RX_EN_CLR : begin
- spiTxRxEnReg <= (spiTxRxEnReg) & (~Data_i);
- end
- LD_MASK_ADDR : begin
- LdMaskReg_o <= Data_i;
- end
- GPIO_CTRL_ADDR : begin
- GPIOAReg <= Data_i;
- end
- GPIO_CTRL_ADDR_S : begin
- GPIOARegS <= Data_i;
- end
- endcase
- end
- 1 : begin
- case (Addr_i)
- SPI_0_CTRL_ADDR : begin
- Spi0CtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_0_CLK_ADDR : begin
- Spi0ClkReg_o[15:8] <= Data_i[15:8];
- end
- SPI_0_CS_DELAY_ADDR : begin
- Spi0CsDelayReg_o[15:8] <= Data_i[15:8];
- end
- SPI_0_CS_CTRL_ADDR : begin
- Spi0CsCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi0TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi0RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_1_CTRL_ADDR : begin
- Spi1CtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_1_CLK_ADDR : begin
- Spi1ClkReg_o[15:8] <= Data_i[15:8];
- end
- SPI_1_CS_DELAY_ADDR : begin
- Spi1CsDelayReg_o[15:8] <= Data_i[15:8];
- end
- SPI_1_CS_CTRL_ADDR : begin
- Spi1CsCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi1TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi1RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_2_CTRL_ADDR : begin
- Spi2CtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_2_CLK_ADDR : begin
- Spi2ClkReg_o[15:8] <= Data_i[15:8];
- end
- SPI_2_CS_DELAY_ADDR : begin
- Spi2CsDelayReg_o[15:8] <= Data_i[15:8];
- end
- SPI_2_CS_CTRL_ADDR : begin
- Spi2CsCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi2TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi2RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_3_CTRL_ADDR : begin
- Spi3CtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_3_CLK_ADDR : begin
- Spi3ClkReg_o[15:8] <= Data_i[15:8];
- end
- SPI_3_CS_DELAY_ADDR : begin
- Spi3CsDelayReg_o[15:8] <= Data_i[15:8];
- end
- SPI_3_CS_CTRL_ADDR : begin
- Spi3CsCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi3TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi3RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_4_CTRL_ADDR : begin
- Spi4CtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_4_CLK_ADDR : begin
- Spi4ClkReg_o[15:8] <= Data_i[15:8];
- end
- SPI_4_CS_DELAY_ADDR : begin
- Spi4CsDelayReg_o[15:8] <= Data_i[15:8];
- end
- SPI_4_CS_CTRL_ADDR : begin
- Spi4CsCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi4TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi4RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_5_CTRL_ADDR : begin
- Spi5CtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_5_CLK_ADDR : begin
- Spi5ClkReg_o[15:8] <= Data_i[15:8];
- end
- SPI_5_CS_DELAY_ADDR : begin
- Spi5CsDelayReg_o[15:8] <= Data_i[15:8];
- end
- SPI_5_CS_CTRL_ADDR : begin
- Spi5CsCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi5TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi5RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_6_CTRL_ADDR : begin
- Spi6CtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_6_CLK_ADDR : begin
- Spi6ClkReg_o[15:8] <= Data_i[15:8];
- end
- SPI_6_CS_DELAY_ADDR : begin
- Spi6CsDelayReg_o[15:8] <= Data_i[15:8];
- end
- SPI_6_CS_CTRL_ADDR : begin
- Spi6CsCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi6TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi6RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
- end
- SPI_TX_RX_EN : begin
- spiTxRxEnReg[15:8] <= Data_i[15:8];
- end
- SPI_TX_RX_EN_SET : begin
- spiTxRxEnReg[15:8] <= spiTxRxEnReg[15:8] | Data_i[15:8];
- end
- SPI_TX_RX_EN_CLR : begin
- spiTxRxEnReg[15:8] <= (spiTxRxEnReg[15:8]) & (~Data_i[15:8]);
- end
- GPIO_CTRL_ADDR : begin
- GPIOAReg[15:8] <= Data_i[15:8];
- end
- LD_MASK_ADDR : begin
- LdMaskReg_o[15:8] <= Data_i[15:8];
- end
- GPIO_CTRL_ADDR_S : begin
- GPIOARegS[15:8] <= Data_i[15:8];
- end
- endcase
- end
- 2 : begin
- case (Addr_i)
- SPI_0_CTRL_ADDR : begin
- Spi0CtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_0_CLK_ADDR : begin
- Spi0ClkReg_o[7:0] <= Data_i[7:0];
- end
- SPI_0_CS_DELAY_ADDR : begin
- Spi0CsDelayReg_o[7:0] <= Data_i[7:0];
- end
- SPI_0_CS_CTRL_ADDR : begin
- Spi0CsCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi0TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi0RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_1_CTRL_ADDR : begin
- Spi1CtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_1_CLK_ADDR : begin
- Spi1ClkReg_o[7:0] <= Data_i[7:0];
- end
- SPI_1_CS_DELAY_ADDR : begin
- Spi1CsDelayReg_o[7:0] <= Data_i[7:0];
- end
- SPI_1_CS_CTRL_ADDR : begin
- Spi1CsCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi1TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi1RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_2_CTRL_ADDR : begin
- Spi2CtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_2_CLK_ADDR : begin
- Spi2ClkReg_o[7:0] <= Data_i[7:0];
- end
- SPI_2_CS_DELAY_ADDR : begin
- Spi2CsDelayReg_o[7:0] <= Data_i[7:0];
- end
- SPI_2_CS_CTRL_ADDR : begin
- Spi2CsCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi2TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi2RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_3_CTRL_ADDR : begin
- Spi3CtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_3_CLK_ADDR : begin
- Spi3ClkReg_o[7:0] <= Data_i[7:0];
- end
- SPI_3_CS_DELAY_ADDR : begin
- Spi3CsDelayReg_o[7:0] <= Data_i[7:0];
- end
- SPI_3_CS_CTRL_ADDR : begin
- Spi3CsCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi3TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi3RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_4_CTRL_ADDR : begin
- Spi4CtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_4_CLK_ADDR : begin
- Spi4ClkReg_o[7:0] <= Data_i[7:0];
- end
- SPI_4_CS_DELAY_ADDR : begin
- Spi4CsDelayReg_o[7:0] <= Data_i[7:0];
- end
- SPI_4_CS_CTRL_ADDR : begin
- Spi4CsCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi4TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi4RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_5_CTRL_ADDR : begin
- Spi5CtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_5_CLK_ADDR : begin
- Spi5ClkReg_o[7:0] <= Data_i[7:0];
- end
- SPI_5_CS_DELAY_ADDR : begin
- Spi5CsDelayReg_o[7:0] <= Data_i[7:0];
- end
- SPI_5_CS_CTRL_ADDR : begin
- Spi5CsCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi5TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi5RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_6_CTRL_ADDR : begin
- Spi6CtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_6_CLK_ADDR : begin
- Spi6ClkReg_o[7:0] <= Data_i[7:0];
- end
- SPI_6_CS_DELAY_ADDR : begin
- Spi6CsDelayReg_o[7:0] <= Data_i[7:0];
- end
- SPI_6_CS_CTRL_ADDR : begin
- Spi6CsCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
- Spi6TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
- Spi6RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
- end
- SPI_TX_RX_EN : begin
- spiTxRxEnReg[7:0] <= Data_i[7:0];
- end
- SPI_TX_RX_EN_SET : begin
- spiTxRxEnReg[7:0] <= spiTxRxEnReg[7:0] | Data_i[7:0];
- end
- SPI_TX_RX_EN_CLR : begin
- spiTxRxEnReg[7:0] <= (spiTxRxEnReg[7:0]) & (~Data_i[7:0]);
- end
- GPIO_CTRL_ADDR : begin
- GPIOAReg[7:0] <= Data_i[7:0];
- end
- LD_MASK_ADDR : begin
- LdMaskReg_o[7:0] <= Data_i[7:0];
- end
- GPIO_CTRL_ADDR_S : begin
- GPIOARegS[7:0] <= Data_i[7:0];
- end
- endcase
- end
- endcase
- end
- end
- end
-
- always @(*) begin
- if (Rst_i) begin
- ansReg = 0;
- end else begin
- case (Addr_i)
- SPI_0_CTRL_ADDR : begin
- ansReg = Spi0CtrlReg_o;
- end
- SPI_0_CLK_ADDR : begin
- ansReg = Spi0ClkReg_o;
- end
- SPI_0_CS_DELAY_ADDR : begin
- ansReg = Spi0CsDelayReg_o;
- end
- SPI_0_CS_CTRL_ADDR : begin
- ansReg = Spi0CsCtrlReg_o;
- end
- SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = TxFifoCtrlReg0_i[15:0];
- end
- SPI_0_TX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = TxFifoCtrlReg0_i[31:16];
- end
- SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = RxFifoCtrlReg0_i[15:0];
- end
- SPI_0_RX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = RxFifoCtrlReg0_i[31:16];
- end
- SPI_1_CTRL_ADDR : begin
- ansReg = Spi1CtrlReg_o;
- end
- SPI_1_CLK_ADDR : begin
- ansReg = Spi1ClkReg_o;
- end
- SPI_1_CS_DELAY_ADDR : begin
- ansReg = Spi1CsDelayReg_o;
- end
- SPI_1_CS_CTRL_ADDR : begin
- ansReg = Spi1CsCtrlReg_o;
- end
- SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = TxFifoCtrlReg1_i[15:0];
- end
- SPI_1_TX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = TxFifoCtrlReg1_i[31:16];
- end
- SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = RxFifoCtrlReg1_i[15:0];
- end
- SPI_1_RX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = RxFifoCtrlReg1_i[31:16];
- end
- SPI_2_CTRL_ADDR : begin
- ansReg = Spi2CtrlReg_o;
- end
- SPI_2_CLK_ADDR : begin
- ansReg = Spi2ClkReg_o;
- end
- SPI_2_CS_DELAY_ADDR : begin
- ansReg = Spi2CsDelayReg_o;
- end
- SPI_2_CS_CTRL_ADDR : begin
- ansReg = Spi2CsCtrlReg_o;
- end
- SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = TxFifoCtrlReg2_i[15:0];
- end
- SPI_2_TX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = TxFifoCtrlReg2_i[31:16];
- end
- SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = RxFifoCtrlReg2_i[15:0];
- end
- SPI_2_RX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = RxFifoCtrlReg2_i[31:16];
- end
- SPI_3_CTRL_ADDR : begin
- ansReg = Spi3CtrlReg_o;
- end
- SPI_3_CLK_ADDR : begin
- ansReg = Spi3ClkReg_o;
- end
- SPI_3_CS_DELAY_ADDR : begin
- ansReg = Spi3CsDelayReg_o;
- end
- SPI_3_CS_CTRL_ADDR : begin
- ansReg = Spi3CsCtrlReg_o;
- end
- SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = TxFifoCtrlReg3_i[15:0];
- end
- SPI_3_TX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = TxFifoCtrlReg3_i[31:16];
- end
- SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = RxFifoCtrlReg3_i[15:0];
- end
- SPI_3_RX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = RxFifoCtrlReg3_i[31:16];
- end
- SPI_4_CTRL_ADDR : begin
- ansReg = Spi4CtrlReg_o;
- end
- SPI_4_CLK_ADDR : begin
- ansReg = Spi4ClkReg_o;
- end
- SPI_4_CS_DELAY_ADDR : begin
- ansReg = Spi4CsDelayReg_o;
- end
- SPI_4_CS_CTRL_ADDR : begin
- ansReg = Spi4CsCtrlReg_o;
- end
- SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = TxFifoCtrlReg4_i[15:0];
- end
- SPI_4_TX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = TxFifoCtrlReg4_i[31:16];
- end
- SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = RxFifoCtrlReg4_i[15:0];
- end
- SPI_4_RX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = RxFifoCtrlReg4_i[31:16];
- end
- SPI_5_CTRL_ADDR : begin
- ansReg = Spi5CtrlReg_o;
- end
- SPI_5_CLK_ADDR : begin
- ansReg = Spi5ClkReg_o;
- end
- SPI_5_CS_DELAY_ADDR : begin
- ansReg = Spi5CsDelayReg_o;
- end
- SPI_5_CS_CTRL_ADDR : begin
- ansReg = Spi5CsCtrlReg_o;
- end
- SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = TxFifoCtrlReg5_i[15:0];
- end
- SPI_5_TX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = TxFifoCtrlReg5_i[31:16];
- end
- SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = RxFifoCtrlReg5_i[15:0];
- end
- SPI_5_RX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = RxFifoCtrlReg5_i[31:16];
- end
- SPI_6_CTRL_ADDR : begin
- ansReg = Spi6CtrlReg_o;
- end
- SPI_6_CLK_ADDR : begin
- ansReg = Spi6ClkReg_o;
- end
- SPI_6_CS_DELAY_ADDR : begin
- ansReg = Spi6CsDelayReg_o;
- end
- SPI_6_CS_CTRL_ADDR : begin
- ansReg = Spi6CsCtrlReg_o;
- end
- SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = TxFifoCtrlReg6_i[15:0];
- end
- SPI_6_TX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = TxFifoCtrlReg6_i[31:16];
- end
- SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
- ansReg = RxFifoCtrlReg6_i[15:0];
- end
- SPI_6_RX_FIFO_CTRL_ADDR_MSB : begin
- ansReg = RxFifoCtrlReg6_i[31:16];
- end
- SPI_TX_RX_EN : begin
- ansReg = spiTxRxEnReg;
- end
- SPI_TX_RX_EN_SET : begin
- ansReg = SpiTxRxEnSetReg_o;
- end
- SPI_TX_RX_EN_CLR : begin
- ansReg = SpiTxRxEnClrReg_o;
- end
- LD_MASK_ADDR : begin
- ansReg = LdMaskReg_o;
- end
- GPIO_CTRL_ADDR : begin
- ansReg = GPIOAReg;
- end
- LD_REG_ADDR : begin
- ansReg = {9'd0,LdReg_i};
- end
- default : begin
- ansReg = 0;
- end
- endcase
- end
- end
- endmodule
|