DataFifoWrapper.v 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. //================================================================================
  40. // LOCALPARAMS
  41. //================================================================================
  42. //================================================================================
  43. // CODING
  44. //================================================================================
  45. FifoCtrl FifoCtrl_inst (
  46. .ToFifoTxWriteVal_i (!SmcAwe_i && ToFifoVal_i),
  47. .ToFifoTxReadVal_i (ToFifoTxReadVal_i),
  48. .ToFifoRxWriteVal_i (ToFifoRxWriteVal_i),
  49. .ToFifoRxReadVal_i (!SmcAre_i),
  50. .FifoTxFull_i (fullFlagTx),
  51. .FifoTxEmpty_i (emptyFlagTx),
  52. .FifoRxFull_i (fullFlagRx),
  53. .FifoRxEmpty_i (emptyFlagRx),
  54. .FifoTxWriteEn_o (txFifoWrEn),
  55. .FifoTxReadEn_o (txFifoRdEn),
  56. .FifoRxWriteEn_o (rxFifoWrEn),
  57. .FifoRxReadEn_o (rxFifoRdEn)
  58. );
  59. DataFifo DataFifoTx
  60. (
  61. .wr_clk (WrClk_i),
  62. .rd_clk (RdClk_i),
  63. .din (ToFifoData_i),
  64. .wr_en (txFifoWrEn),
  65. .rd_en (txFifoRdEn),
  66. .dout (ToSpiData_o),
  67. .full (fullFlagTx),
  68. .empty (emptyFlagTx)
  69. );
  70. DataFifo DataFifoRx
  71. (
  72. .wr_clk (RdClk_i),
  73. .rd_clk (WrClk_i),
  74. .din (ToFifoRxData_i),
  75. .wr_en (rxFifoWrEn),
  76. .rd_en (rxFifoRdEn),
  77. .dout (dataFromRxFifo),
  78. .full (fullFlagRx),
  79. .empty (emptyFlagRx)
  80. );
  81. endmodule