InputMux.sv 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. module InputMux #(
  2. parameter AXI_DATA_WIDTH = 64,
  3. parameter SPI_NUM = 3,
  4. parameter FIFO_TX1_ADDR = 64'h0000000000001028,
  5. parameter FIFO_TX2_ADDR = 64'h0000000000002028,
  6. parameter FIFO_TX3_ADDR = 64'h0000000000003028,
  7. parameter FIFO_TX4_ADDR = 64'h0000000000004028,
  8. parameter FIFO_TX5_ADDR = 64'h0000000000005028,
  9. parameter FIFO_TX6_ADDR = 64'h0000000000006028,
  10. parameter FIFO_TX7_ADDR = 64'h0000000000007028
  11. )(
  12. input Clk_i,
  13. input RstN_i,
  14. input Val_i,
  15. input [AXI_DATA_WIDTH-1:0] Data_i,
  16. input [AXI_DATA_WIDTH-1:0] Addr_i,
  17. output reg [AXI_DATA_WIDTH-1:0] ToRegMapAddr_o,
  18. output reg [SPI_NUM:0] Val_o,
  19. output reg [AXI_DATA_WIDTH-1:0] Data_o
  20. );
  21. //================================================================================
  22. // LOCALPARAMS
  23. //================================================================================
  24. //================================================================================
  25. // REG/WIRE
  26. //================================================================================
  27. //================================================================================
  28. // CODING
  29. //================================================================================
  30. always @(posedge Clk_i) begin
  31. if (!RstN_i) begin
  32. Data_o <= {AXI_DATA_WIDTH{1'b0}};
  33. Val_o <= {AXI_DATA_WIDTH{1'b0}};
  34. end
  35. else begin
  36. if (Val_i) begin
  37. Data_o <= Data_i;
  38. ToRegMapAddr_o <= Addr_i;
  39. case(Addr_i)
  40. FIFO_TX1_ADDR: begin
  41. Val_o[0] <= Val_i;
  42. end
  43. FIFO_TX2_ADDR: begin
  44. Val_o[1] <= Val_i;
  45. end
  46. FIFO_TX3_ADDR: begin
  47. Val_o[2] <= Val_i;
  48. end
  49. FIFO_TX4_ADDR: begin
  50. Val_o[3] <= Val_i;
  51. end
  52. FIFO_TX5_ADDR: begin
  53. Val_o[4] <= Val_i;
  54. end
  55. FIFO_TX6_ADDR: begin
  56. Val_o[5] <= Val_i;
  57. end
  58. FIFO_TX7_ADDR: begin
  59. Val_o[6] <= Val_i;
  60. end
  61. default: begin
  62. Val_o[SPI_NUM] <= Val_i;
  63. end
  64. endcase
  65. end
  66. else begin
  67. Val_o <= {SPI_NUM{1'b0}};
  68. end
  69. end
  70. end
  71. endmodule