DataFifoWrapper.v 2.3 KB

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