DataFifoWrapper.v 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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 RxFifoCtrlReg_o = {16'h0, rxFifoUpDnCnt,5'h0,emptyFlagRx,fullFlagRx, FifoRxRst_i};
  49. //================================================================================
  50. // LOCALPARAMS
  51. //================================================================================
  52. //================================================================================
  53. // CODING
  54. //================================================================================
  55. FifoCtrl FifoCtrl_inst (
  56. .ToFifoTxWriteVal_i (ToFifoVal_i),
  57. .ToFifoTxReadVal_i (ToFifoTxReadVal_i),
  58. .ToFifoRxWriteVal_i (ToFifoRxWriteVal_i),
  59. .ToFifoRxReadVal_i (!SmcAre_i),
  60. .SmcAddr_i (SmcAddr_i),
  61. .TxFifoWrdCnt_i (TxFifoWrdCnt_i),
  62. .RxFifoWrdCnt_i (RxFifoWrdCnt_i),
  63. .FifoTxFull_i (fullFlagTx),
  64. .FifoTxRst_i (FifoTxRst_i),
  65. .FifoRxRst_i (FifoRxRst_i),
  66. .FifoTxEmpty_i (emptyFlagTx),
  67. .FifoRxFull_i (fullFlagRx),
  68. .FifoRxEmpty_i (emptyFlagRx),
  69. .FifoTxWrClock_i (WrClk_i),
  70. .FifoTxRdClock_i (RdClk_i),
  71. .FifoRxWrClock_i (RdClk_i),
  72. .FifoRxRdClock_i (WrClk_i),
  73. .RxFifoUpDnCnt_o (rxFifoUpDnCnt),
  74. .TxFifoUpDnCnt_o (txFifoUpDnCnt),
  75. .FifoTxWriteEn_o (txFifoWrEn),
  76. .FifoTxReadEn_o (txFifoRdEn),
  77. .FifoRxWriteEn_o (rxFifoWrEn),
  78. .FifoRxReadEn_o (rxFifoRdEn)
  79. );
  80. DataFifoTx DataFifoTx
  81. (
  82. .wr_clk (WrClk_i),
  83. .rd_clk (RdClk_i),
  84. .rst (FifoTxRst_i),
  85. .din (ToFifoData_i),
  86. .wr_en (txFifoWrEn),
  87. .rd_en (txFifoRdEn),
  88. .dout (ToSpiData_o),
  89. .full (fullFlagTx),
  90. .empty (emptyFlagTx)
  91. );
  92. DataFifoRx DataFifoRx
  93. (
  94. .wr_clk (RdClk_i),
  95. .rd_clk (WrClk_i),
  96. .rst (FifoRxRst_i),
  97. .din (ToFifoRxData_i),
  98. .wr_en (rxFifoWrEn),
  99. .rd_en (rxFifoRdEn),
  100. .dout (dataFromRxFifo),
  101. .full (fullFlagRx),
  102. .empty (emptyFlagRx)
  103. );
  104. endmodule