FifoCtrl.v 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. module FifoCtrl (
  2. input ToFifoTxWriteVal_i,
  3. input ToFifoTxReadVal_i,
  4. input ToFifoRxWriteVal_i,
  5. input ToFifoRxReadVal_i,
  6. input FifoTxFull_i,
  7. input FifoTxEmpty_i,
  8. input FifoRxFull_i,
  9. input FifoRxEmpty_i,
  10. input FifoTxWrClock_i,
  11. input FifoTxRdClock_i,
  12. input FifoRxWrClock_i,
  13. input FifoRxRdClock_i,
  14. output FifoTxWriteEn_o,
  15. output FifoTxReadEn_o,
  16. output FifoRxWriteEn_o,
  17. output FifoRxReadEn_o
  18. );
  19. reg FifoTxWriteEn;
  20. reg FifoTxReadEn;
  21. reg FifoRxWriteEn;
  22. reg FifoRxReadEn;
  23. // //================================================================================
  24. // // ASSIGNMENTS
  25. assign FifoTxWriteEn_o = FifoTxWriteEn;
  26. assign FifoTxReadEn_o = FifoTxReadEn;
  27. assign FifoRxWriteEn_o = FifoRxWriteEn;
  28. assign FifoRxReadEn_o = FifoRxReadEn;
  29. // //================================================================================
  30. always @(posedge FifoTxWrClock_i) begin
  31. if (ToFifoTxWriteVal_i && !FifoTxFull_i) begin
  32. FifoTxWriteEn <= 1'b1;
  33. end
  34. else begin
  35. FifoTxWriteEn <= 1'b0;
  36. end
  37. end
  38. always @(posedge FifoTxRdClock_i ) begin
  39. if (ToFifoTxReadVal_i && !FifoTxEmpty_i) begin
  40. FifoTxReadEn <= 1'b1;
  41. end
  42. else begin
  43. FifoTxReadEn <= 1'b0;
  44. end
  45. end
  46. always @(posedge FifoRxWrClock_i) begin
  47. if (ToFifoRxWriteVal_i && !FifoRxFull_i) begin
  48. FifoRxWriteEn <= 1'b1;
  49. end
  50. else begin
  51. FifoRxWriteEn <= 1'b0;
  52. end
  53. end
  54. always @(posedge FifoRxRdClock_i) begin
  55. if (ToFifoRxReadVal_i && !FifoRxEmpty_i) begin
  56. FifoRxReadEn <= 1'b1;
  57. end
  58. else begin
  59. FifoRxReadEn <= 1'b0;
  60. end
  61. end
  62. // //================================================================================
  63. endmodule