当前位置:   article > 正文

FPGA——对比XILINX两种FIFO IP核区别及仿真波形(上篇)_fwft fifo

fwft fifo

未经本人允许,禁止任何形式转载!!!        

        FIFO在FPGA工程中常被用做数据缓存和跨时钟域处理,和RAM相比,FIFO没有地址线(数据先入先出)操作简单,因此在FPGA工程中被广泛使用。XINLINX公司提供了两种FIFO IP核,一种是standard fifo模式,另外一种是First Word Fall Through fifo模式。这两种模式的fifo具体有什么区别呢?话不多说,上干货!!!

        下面对两种FIFO编写测试代码(部分代码见附件一)及仿真代码(见附件二),通过仿真波形对比两种fifo区别。测试代码对两种FIFO一次性写入128字节数据之后控制FIFO读出。由图1-1所示的波形图来看,standard模式的fifo在读使能拉高之后,第一个数据会在下一个时钟读出,而First Word Fall Through 模式的fifo在读使能拉高后,第一个数据会立刻被读出。那么最后一个数据在输出端口又有什么区别呢?点赞加关注会加更哦!

图1-1

未经本人允许,禁止任何形式转载!!! 

附件一

  1. module xilinx_fifo_test(
  2. input sys_clk,
  3. input i_rst
  4. );
  5. parameter rd_wr_num = 'd128;
  6. reg [7:0] din_standard;
  7. reg wr_en_standard;
  8. reg rd_en_standard;
  9. wire [7:0] dout_standard;
  10. wire full_standard;
  11. wire almost_full_standard;
  12. wire empty_standard;
  13. wire almost_empty_standard;
  14. wire [8:0] rd_data_count_standard;
  15. wire [8:0] wr_data_count_standard;
  16. wire wr_rst_busy_standard;
  17. wire rd_rst_busy_standard;
  18. reg [7:0] din_fwft;
  19. reg wr_en_fwft;
  20. reg rd_en_fwft;
  21. wire [7:0] dout_fwft;
  22. wire full_fwft;
  23. wire almost_full_fwft;
  24. wire empty_fwft;
  25. wire almost_empty_fwft;
  26. wire [8:0] rd_data_count_fwft;
  27. wire [8:0] wr_data_count_fwft;
  28. wire wr_rst_busy_fwft;
  29. wire rd_rst_busy_fwft;
  30. wire fifo_work_flag;
  31. fifo_standard u1_fifo_standard (
  32. .rst(i_rst), // input wire rst
  33. .wr_clk(sys_clk), // input wire wr_clk
  34. .rd_clk(sys_clk), // input wire rd_clk
  35. .din(din_standard), // input wire [7 : 0] din
  36. .wr_en(wr_en_standard), // input wire wr_en
  37. .rd_en(rd_en_standard), // input wire rd_en
  38. .dout(dout_standard), // output wire [7 : 0] dout
  39. .full(full_standard), // output wire full
  40. .almost_full(almost_full_standard), // output wire almost_full
  41. .empty(empty_standard), // output wire empty
  42. .almost_empty(almost_empty_standard), // output wire almost_empty
  43. .rd_data_count(rd_data_count_standard), // output wire [8 : 0] rd_data_count
  44. .wr_data_count(wr_data_count_standard), // output wire [8 : 0] wr_data_count
  45. .wr_rst_busy(wr_rst_busy_standard), // output wire wr_rst_busy
  46. .rd_rst_busy(rd_rst_busy_standard) // output wire rd_rst_busy
  47. );
  48. fifo_fwft u2_fifo_fwft (
  49. .rst(i_rst), // input wire rst
  50. .wr_clk(sys_clk), // input wire wr_clk
  51. .rd_clk(sys_clk), // input wire rd_clk
  52. .din(din_fwft), // input wire [7 : 0] din
  53. .wr_en(wr_en_fwft), // input wire wr_en
  54. .rd_en(rd_en_fwft), // input wire rd_en
  55. .dout(dout_fwft), // output wire [7 : 0] dout
  56. .full(full_fwft), // output wire full
  57. .almost_full(almost_full_fwft), // output wire almost_full
  58. .empty(empty_fwft), // output wire empty
  59. .almost_empty(almost_empty_fwft), // output wire almost_empty
  60. .rd_data_count(rd_data_count_fwft), // output wire [8 : 0] rd_data_count
  61. .wr_data_count(wr_data_count_fwft), // output wire [8 : 0] wr_data_count
  62. .wr_rst_busy(wr_rst_busy_fwft), // output wire wr_rst_busy
  63. .rd_rst_busy(rd_rst_busy_fwft) // output wire rd_rst_busy
  64. );
  65. assign fifo_work_flag = (!wr_rst_busy_standard) && (!rd_rst_busy_standard) && (!wr_rst_busy_fwft) && (!rd_rst_busy_fwft);
  66. always @(posedge sys_clk)begin
  67. if(i_rst)begin
  68. din_standard <= 'd0;
  69. wr_en_standard <= 'd0;
  70. din_fwft <= 'd0;
  71. wr_en_fwft <= 'd0;
  72. end
  73. else if(fifo_work_flag)begin

附件二

  1. `timescale 1ns / 1ps
  2. module xilinx_fifo_test_tb;
  3. parameter sys_clk_val = 'd10;
  4. reg sys_clk;
  5. reg i_rst;
  6. xilinx_fifo_test u_xilinx_fifo_test(
  7. .sys_clk(sys_clk),
  8. .i_rst(i_rst)
  9. );
  10. initial begin
  11. sys_clk = 'd0;
  12. i_rst = 'd1;
  13. #('d1000*sys_clk_val) i_rst = 'd0;
  14. end
  15. always #(sys_clk_val/'d2) sys_clk = ~sys_clk;
  16. endmodule

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/630061
推荐阅读
相关标签
  

闽ICP备14008679号