DataFifoWrapper.v 2.4 KB

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