| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- module SmcDataMux
- #(
- parameter CmdRegWidth = 32,
- parameter AddrRegWidth= 12,
-
- parameter FifoNum = 7,
-
- parameter Fifo0WriteAddrL = 12'h0+12'h24,
- parameter Fifo0WriteAddrS = 12'h0+12'h26,
- parameter Fifo1WriteAddrL = 12'h50+12'h24,
- parameter Fifo1WriteAddrS = 12'h50+12'h26,
- parameter Fifo2WriteAddrL = 12'hF0+12'h24,
- parameter Fifo2WriteAddrS = 12'hF0+12'h26,
- parameter Fifo3WriteAddrL = 12'h140+12'h24,
- parameter Fifo3WriteAddrS = 12'h140+12'h26,
- parameter Fifo4WriteAddrL = 12'h190+12'h24,
- parameter Fifo4WriteAddrS = 12'h190+12'h26,
- parameter Fifo5WriteAddrL = 12'h1e0+12'h24,
- parameter Fifo5WriteAddrS = 12'h1e0+12'h26,
- parameter Fifo6WriteAddrL = 12'h230+12'h24,
- parameter Fifo6WriteAddrS = 12'h230+12'h26
- )
- (
- input Clk_i,
- input Rst_i,
- input SmcVal_i,
- input [CmdRegWidth/2-1:0] SmcData_i,
- input [AddrRegWidth-1:0] SmcAddr_i,
- output reg ToRegMapVal_o,
- output reg [CmdRegWidth-1:0] ToRegMapData_o,
- output reg [AddrRegWidth-1:0] ToRegMapAddr_o,
-
- output reg [FifoNum-1:0] ToFifoVal_o,
- output reg [CmdRegWidth*FifoNum-1:0] ToFifoData_o
-
- );
- //================================================================================
- // REG/WIRE
- //================================================================================
- //================================================================================
- // ASSIGNMENTS
- //================================================================================
- //================================================================================
- // LOCALPARAMS
- //================================================================================
- //================================================================================
- // CODING
- //================================================================================
- always @(posedge Clk_i or posedge Rst_i) begin
- if (Rst_i) begin
- ToRegMapVal_o <= 1'b0;
- ToRegMapData_o <= 32'h0;
- ToRegMapAddr_o <= 12'h0;
-
- ToFifoVal_o <= 7'h0;
- ToFifoData_o <= 32'h0;
- end else begin
- if (SmcAddr_i == Fifo0WriteAddrL||SmcAddr_i==Fifo1WriteAddrL||SmcAddr_i==Fifo2WriteAddrL||SmcAddr_i==Fifo3WriteAddrL||SmcAddr_i==Fifo4WriteAddrL||SmcAddr_i==Fifo5WriteAddrL||SmcAddr_i==Fifo6WriteAddrL||SmcAddr_i == Fifo0WriteAddrS||SmcAddr_i==Fifo1WriteAddrS||SmcAddr_i==Fifo2WriteAddrS||SmcAddr_i==Fifo3WriteAddrS||SmcAddr_i==Fifo4WriteAddrS||SmcAddr_i==Fifo5WriteAddrS||SmcAddr_i==Fifo6WriteAddrS) begin
- case(SmcAddr_i)
- Fifo0WriteAddrL: begin
- ToFifoVal_o[0] <= SmcVal_i;
- ToFifoData_o[32*0+:32] <= SmcData_i;
- end
- Fifo1WriteAddrL: begin
- ToFifoVal_o[1] <= SmcVal_i;
- ToFifoData_o[32*1-1+:32] <= SmcData_i;
- end
- Fifo2WriteAddrL: begin
- ToFifoVal_o[2] <= SmcVal_i;
- ToFifoData_o[32*2-1+:32] <= SmcData_i;
- end
- Fifo3WriteAddrL: begin
- ToFifoVal_o[3] <= SmcVal_i;
- ToFifoData_o[32*3-1+:32] <= SmcData_i;
- end
- Fifo4WriteAddrL: begin
- ToFifoVal_o[4] <= SmcVal_i;
- ToFifoData_o[32*4-1+:32] <= SmcData_i;
- end
- Fifo5WriteAddrL: begin
- ToFifoVal_o[5] <= SmcVal_i;
- ToFifoData_o[32*5-1+:32] <= SmcData_i;
- end
- Fifo6WriteAddrL: begin
- ToFifoVal_o[6] <= SmcVal_i;
- ToFifoData_o[32*6-1+:32] <= SmcData_i;
- end
- endcase
- end else begin
- ToRegMapVal_o <= SmcVal_i;
- ToRegMapData_o <= SmcData_i;
- ToRegMapAddr_o <= SmcAddr_i;
- end
- end
- end
- endmodule
|