FifoController.v 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. `timescale 1ns / 1ps
  2. module FifoController
  3. (
  4. input Clk_i,
  5. input ClkPpiOut_i,
  6. input Rst_i,
  7. input PpiBusy_i,
  8. input MeasDataVal_i,
  9. input FullFlag_i,
  10. input EmptyFlag_i,
  11. output MeasDataVal_o,
  12. output reg WrEn_o,
  13. output RdEn_o
  14. );
  15. //================================================================================
  16. // REG/WIRE
  17. //================================================================================
  18. reg rdEn;
  19. //================================================================================
  20. // ASSIGNMENTS
  21. //================================================================================
  22. assign MeasDataVal_o = rdEn&(!PpiBusy_i);
  23. assign RdEn_o = rdEn&(!PpiBusy_i);
  24. //================================================================================
  25. // CODING
  26. //================================================================================
  27. always @(posedge Clk_i) begin
  28. if (!Rst_i) begin
  29. if (MeasDataVal_i) begin
  30. if (!FullFlag_i) begin
  31. WrEn_o <= 1'b1;
  32. end else begin
  33. WrEn_o <= 1'b0;
  34. end
  35. end else begin
  36. WrEn_o <= 1'b0;
  37. end
  38. end else begin
  39. WrEn_o <= 1'b0;
  40. end
  41. end
  42. always @(posedge Clk_i) begin
  43. if (!Rst_i) begin
  44. if (!PpiBusy_i) begin
  45. if (!EmptyFlag_i) begin
  46. rdEn <= 1'b1;
  47. end else begin
  48. rdEn <= 1'b0;
  49. end
  50. end else begin
  51. rdEn <= 1'b0;
  52. end
  53. end else begin
  54. rdEn <= 1'b0;
  55. end
  56. end
  57. endmodule