DataFifoWrapper.v 3.3 KB

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