DataFifoWrapper.v 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. module DataFifoWrapper
  2. #(
  3. parameter CmdRegWidth = 32,
  4. parameter AddrRegWidth= 12,
  5. parameter STAGES = 3,
  6. parameter FifoNum = 7
  7. )
  8. (
  9. input WrClk_i,
  10. input RdClk_i,
  11. input FifoRxRst_i,
  12. input FifoTxRst_i,
  13. input FifoTxRstWrPtr_i,
  14. input FifoRxRstRdPtr_i,
  15. input SmcAre_i,
  16. input SmcAwe_i,
  17. input [AddrRegWidth-1:0] SmcAddr_i,
  18. input [7:0] TxFifoWrdCnt_i,
  19. input [7:0] RxFifoWrdCnt_i,
  20. input ToFifoVal_i,
  21. input [CmdRegWidth-1:0] ToFifoData_i,
  22. input [CmdRegWidth-1:0] ToFifoRxData_i,
  23. input ToFifoRxWriteVal_i,
  24. input ToFifoTxReadVal_i,
  25. output ToSpiVal_o,
  26. output [CmdRegWidth-1:0] TxFifoCtrlReg_o,
  27. output [CmdRegWidth-1:0] RxFifoCtrlReg_o,
  28. output [CmdRegWidth-1:0] ToSpiData_o,
  29. output [CmdRegWidth-1:0] DataFromRxFifo_o
  30. );
  31. //================================================================================
  32. // REG/WIRE
  33. //================================================================================
  34. wire [CmdRegWidth-1:0] dataFromRxFifo;
  35. wire fullFlagRx;
  36. wire emptyFlagRx;
  37. wire fullFlagTx;
  38. wire emptyFlagTx;
  39. wire txFifoWrEn;
  40. wire txFifoRdEn;
  41. wire rxFifoWrEn;
  42. wire rxFifoRdEn;
  43. wire [7:0] rxFifoUpDnCnt;
  44. wire [7:0] txFifoUpDnCnt;
  45. //================================================================================
  46. // ASSIGNMENTS
  47. //================================================================================
  48. assign ToSpiVal_o = 1'b1;
  49. assign DataFromRxFifo_o = dataFromRxFifo;
  50. assign TxFifoCtrlReg_o = {16'h0, txFifoUpDnCnt,5'h0,emptyFlagTx,fullFlagTx, FifoTxRst_i};
  51. assign RxFifoCtrlReg_o = {16'h0, rxFifoUpDnCnt,5'h0,emptyFlagRx,fullFlagRx, FifoRxRst_i};
  52. //================================================================================
  53. // LOCALPARAMS
  54. //================================================================================
  55. //================================================================================
  56. // CODING
  57. //================================================================================
  58. FifoCtrl FifoCtrl_inst (
  59. .ToFifoTxWriteVal_i (ToFifoVal_i),
  60. .ToFifoTxReadVal_i (ToFifoTxReadVal_i),
  61. .ToFifoRxWriteVal_i (ToFifoRxWriteVal_i),
  62. .ToFifoRxReadVal_i (!SmcAre_i),
  63. .SmcAddr_i (SmcAddr_i),
  64. .TxFifoWrdCnt_i (TxFifoWrdCnt_i),
  65. .RxFifoWrdCnt_i (RxFifoWrdCnt_i),
  66. .FifoTxFull_i (fullFlagTx),
  67. .FifoTxRst_i (FifoTxRst_i),
  68. .FifoRxRst_i (FifoRxRst_i),
  69. .FifoTxRstWrPtr_i (FifoTxRstWrPtr_i),
  70. .FifoRxRstRdPtr_i (FifoRxRstRdPtr_i),
  71. .FifoTxEmpty_i (emptyFlagTx),
  72. .FifoRxFull_i (fullFlagRx),
  73. .FifoRxEmpty_i (emptyFlagRx),
  74. .FifoTxWrClock_i (WrClk_i),
  75. .FifoTxRdClock_i (RdClk_i),
  76. .FifoRxWrClock_i (RdClk_i),
  77. .FifoRxRdClock_i (WrClk_i),
  78. .RxFifoUpDnCnt_o (rxFifoUpDnCnt),
  79. .TxFifoUpDnCnt_o (txFifoUpDnCnt),
  80. .FifoTxWriteEn_o (txFifoWrEn),
  81. .FifoTxReadEn_o (txFifoRdEn),
  82. .FifoRxWriteEn_o (rxFifoWrEn),
  83. .FifoRxReadEn_o (rxFifoRdEn)
  84. );
  85. DataFifoTx DataFifoTx
  86. (
  87. .wr_clk (WrClk_i),
  88. .rd_clk (RdClk_i),
  89. .rst (FifoTxRst_i),
  90. .din (ToFifoData_i),
  91. .wr_en (txFifoWrEn),
  92. .rd_en (txFifoRdEn),
  93. .dout (ToSpiData_o),
  94. .full (fullFlagTx),
  95. .empty (emptyFlagTx)
  96. );
  97. DataFifoRx DataFifoRx
  98. (
  99. .wr_clk (RdClk_i),
  100. .rd_clk (WrClk_i),
  101. .rst (FifoRxRst_i),
  102. .din (ToFifoRxData_i),
  103. .wr_en (rxFifoWrEn),
  104. .rd_en (rxFifoRdEn),
  105. .dout (dataFromRxFifo),
  106. .full (fullFlagRx),
  107. .empty (emptyFlagRx)
  108. );
  109. endmodule