DataFifoWrapper.v 2.2 KB

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