DataFifoWrapper.v 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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 ToFifoVal_i,
  16. input [CmdRegWidth-1:0] ToFifoData_i,
  17. input [CmdRegWidth-1:0] ToFifoRxData_i,
  18. input ToFifoRxWriteVal_i,
  19. input ToFifoTxReadVal_i,
  20. output ToSpiVal_o,
  21. output [CmdRegWidth-1:0] ToSpiData_o,
  22. output [CmdRegWidth-1:0] DataFromRxFifo_o
  23. );
  24. //================================================================================
  25. // REG/WIRE
  26. //================================================================================
  27. wire [CmdRegWidth-1:0] dataFromRxFifo;
  28. wire fullFlagRx;
  29. wire emptyFlagRx;
  30. wire fullFlagTx;
  31. wire emptyFlagTx;
  32. wire txFifoWrEn;
  33. wire txFifoRdEn;
  34. wire rxFifoWrEn;
  35. wire rxFifoRdEn;
  36. //================================================================================
  37. // ASSIGNMENTS
  38. //================================================================================
  39. assign ToSpiVal_o = 1'b1;
  40. assign DataFromRxFifo_o = dataFromRxFifo;
  41. //================================================================================
  42. // LOCALPARAMS
  43. //================================================================================
  44. //================================================================================
  45. // CODING
  46. //================================================================================
  47. FifoCtrl FifoCtrl_inst (
  48. .ToFifoTxWriteVal_i (ToFifoVal_i),
  49. .ToFifoTxReadVal_i (ToFifoTxReadVal_i),
  50. .ToFifoRxWriteVal_i (ToFifoRxWriteVal_i),
  51. .ToFifoRxReadVal_i (!SmcAre_i),
  52. .SmcAddr_i (SmcAddr_i),
  53. .FifoTxFull_i (fullFlagTx),
  54. .FifoTxEmpty_i (emptyFlagTx),
  55. .FifoRxFull_i (fullFlagRx),
  56. .FifoRxEmpty_i (emptyFlagRx),
  57. .FifoTxWrClock_i (WrClk_i),
  58. .FifoTxRdClock_i (RdClk_i),
  59. .FifoRxWrClock_i (RdClk_i),
  60. .FifoRxRdClock_i (WrClk_i),
  61. .FifoTxWriteEn_o (txFifoWrEn),
  62. .FifoTxReadEn_o (txFifoRdEn),
  63. .FifoRxWriteEn_o (rxFifoWrEn),
  64. .FifoRxReadEn_o (rxFifoRdEn)
  65. );
  66. DataFifoTx DataFifoTx
  67. (
  68. .wr_clk (WrClk_i),
  69. .rd_clk (RdClk_i),
  70. .rst (FifoTxRst_i),
  71. .din (ToFifoData_i),
  72. .wr_en (txFifoWrEn),
  73. .rd_en (txFifoRdEn),
  74. .dout (ToSpiData_o),
  75. .full (fullFlagTx),
  76. .empty (emptyFlagTx)
  77. );
  78. DataFifoRx DataFifoRx
  79. (
  80. .wr_clk (RdClk_i),
  81. .rd_clk (WrClk_i),
  82. .rst (FifoRxRst_i),
  83. .din (ToFifoRxData_i),
  84. .wr_en (rxFifoWrEn),
  85. .rd_en (rxFifoRdEn),
  86. .dout (dataFromRxFifo),
  87. .full (fullFlagRx),
  88. .empty (emptyFlagRx)
  89. );
  90. endmodule