| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- module InputMux #(
- parameter AXI_DATA_WIDTH = 64,
- parameter SPI_NUM = 7,
- parameter FIFO_TX1_ADDR = 64'h0000000000001028,
- parameter FIFO_TX2_ADDR = 64'h0000000000002028,
- parameter FIFO_TX3_ADDR = 64'h0000000000003028,
- parameter FIFO_TX4_ADDR = 64'h0000000000004028,
- parameter FIFO_TX5_ADDR = 64'h0000000000005028,
- parameter FIFO_TX6_ADDR = 64'h0000000000006028,
- parameter FIFO_TX7_ADDR = 64'h0000000000007028
- )(
- input Clk_i,
- input RstN_i,
- input Val_i,
- input [AXI_DATA_WIDTH-1:0] Data_i,
- input [AXI_DATA_WIDTH-1:0] Addr_i,
- output reg ToRegMapVal_o,
- output reg [AXI_DATA_WIDTH-1:0] ToRegMapData_o,
- output reg [AXI_DATA_WIDTH-1:0] ToRegMapAddr_o,
- output reg [SPI_NUM-1:0] ToFifoVal_o,
- output reg [AXI_DATA_WIDTH-1:0] ToFifoData_o
- );
- //================================================================================
- // LOCALPARAMS
- //================================================================================
- //================================================================================
- // REG/WIRE
- //================================================================================
- reg [AXI_DATA_WIDTH-1 : 0] toFifoDataReg;
- //================================================================================
- // CODING
- //================================================================================
- always @(posedge Clk_i) begin
- if (!RstN_i) begin
- ToRegMapVal_o <= 1'b0;
- ToRegMapData_o <= {AXI_DATA_WIDTH{1'b0}};
- ToRegMapAddr_o <= {AXI_DATA_WIDTH{1'b0}};
- ToFifoVal_o <= {SPI_NUM{1'b0}};
- toFifoDataReg <= {AXI_DATA_WIDTH{1'b0}};
- end
- else begin
- if (Val_i) begin
- ToRegMapVal_o <= 1'b1;
- ToRegMapData_o <= Data_i;
- ToRegMapAddr_o <= Addr_i;
- ToFifoVal_o <= {SPI_NUM{1'b0}};
- toFifoDataReg <= {AXI_DATA_WIDTH{1'b0}};
- for (int i = 0; i < SPI_NUM; i = i + 1) begin
- if (Addr_i == FIFO_TX1_ADDR + i*1000) begin
- ToFifoVal_o[i] <= 1'b1;
- toFifoDataReg <= Data_i;
- end
- end
- end
- else begin
- ToRegMapVal_o <= 1'b0;
- ToRegMapData_o <= {AXI_DATA_WIDTH{1'b0}};
- ToRegMapAddr_o <= {AXI_DATA_WIDTH{1'b0}};
- ToFifoVal_o <= {SPI_NUM{1'b0}};
- toFifoDataReg <= {AXI_DATA_WIDTH{1'b0}};
- end
- end
- end
- always @(posedge Clk_i) begin
- ToFifoData_o <= toFifoDataReg;
- end
- endmodule
|