SpiSettings.sv 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. module SpiSettings
  2. #(
  3. parameter AXI_DATA_WIDTH = 64,
  4. parameter SPI_NUM = 7
  5. )(
  6. input [AXI_DATA_WIDTH - 1 : 0 ] SpiCtrlReg_i [SPI_NUM - 1 : 0] ,
  7. input [AXI_DATA_WIDTH - 1 : 0 ] SpiCsDelayReg_i [SPI_NUM - 1 : 0] ,
  8. input [AXI_DATA_WIDTH - 1 : 0 ] SpiClkReg_i [SPI_NUM - 1 : 0] ,
  9. input [AXI_DATA_WIDTH - 1 : 0 ] SpiCsCtrlReg_i [SPI_NUM - 1 : 0] ,
  10. input [AXI_DATA_WIDTH - 1 : 0 ] SpiTxRxFifoCtrlReg_i [SPI_NUM - 1 : 0] ,
  11. input [AXI_DATA_WIDTH - 1 : 0 ] SpiTxRxEnReg_i,
  12. output [1:0] WidthSel_o [SPI_NUM - 1 : 0] ,
  13. output [SPI_NUM - 1 : 0] SpiEn_o,
  14. output [SPI_NUM - 1 : 0] SpiMode_o,
  15. output [SPI_NUM - 1 : 0] ClockPol_o,
  16. output [SPI_NUM - 1 : 0] ClockPhase_o,
  17. output [SPI_NUM - 1 : 0] EndianSel_o,
  18. output [SPI_NUM - 1 : 0] SelSt_o,
  19. output [SPI_NUM - 1 : 0] Assel,
  20. output [5:0] StopDelay_o [SPI_NUM - 1 : 0] ,
  21. output [SPI_NUM - 1 : 0 ] Lead_o,
  22. output [SPI_NUM - 1 : 0 ] Lag_o,
  23. output [7:0] BaudRate_o [SPI_NUM - 1 : 0] ,
  24. output [SPI_NUM - 1 : 0 ] SpiRst_o,
  25. output [SPI_NUM - 1 : 0] FifoRxRst_o,
  26. output [SPI_NUM - 1 : 0] FifoTxRst_o,
  27. output [SPI_NUM - 1 : 0 ] ChipSelFpga_o,
  28. output [SPI_NUM - 1 : 0 ] ChipSelFlash_o,
  29. output [SPI_NUM - 1 : 0 ] SpiDir_o,
  30. output [SPI_NUM - 1 : 0] TxEn_o
  31. );
  32. //================================================================================
  33. // ASSIGNMENTS
  34. //================================================================================
  35. genvar i;
  36. generate
  37. for( i=0; i<SPI_NUM; i=i+1) begin: SPI_SETTINGS
  38. assign SpiEn_o[i] = SpiCtrlReg_i[i][0];
  39. assign ClockPhase_o[i] = SpiCtrlReg_i[i][1];
  40. assign ClockPol_o[i] = SpiCtrlReg_i[i][2];
  41. assign Assel[i] = SpiCtrlReg_i[i][3];
  42. assign SelSt_o[i] = SpiCtrlReg_i[i][4];
  43. assign WidthSel_o[i] = SpiCtrlReg_i[i][6:5];
  44. assign SpiMode_o[i] = SpiCtrlReg_i[i][7];
  45. assign EndianSel_o[i] = SpiCtrlReg_i[i][8];
  46. assign Lag_o[i] = SpiCsDelayReg_i[i][0];
  47. assign Lead_o[i] = SpiClkReg_i[i][1];
  48. assign StopDelay_o[i] = SpiCsDelayReg_i[i][7:2];
  49. assign BaudRate_o[i] = SpiClkReg_i[i][7:0];
  50. assign FifoRxRst_o[i] = SpiTxRxFifoCtrlReg_i[i][0];
  51. assign FifoTxRst_o[i] = SpiTxRxFifoCtrlReg_i[i][32];
  52. assign ChipSelFpga_o[i] = SpiCsCtrlReg_i[i][0];
  53. assign ChipSelFlash_o[i] = SpiCsCtrlReg_i[i][1];
  54. assign SpiDir_o[i] = (SpiMode_o[i]) ? 1'b1 : 1'b0;
  55. assign TxEn_o[i] = SpiTxRxEnReg_i[i];
  56. end
  57. endgenerate
  58. endmodule