首页/文章/ 详情

FPGA入门7——FIFO

1年前浏览133

FIFO(First Input First Output),即先进先出队列。在超市购物之后会提着我们满满的购物车来到收银台排在结账队伍的最后,眼睁睁地看着前面的客户一个个离开。这就是一种先进先出机制,先排队的客户先行结账离开。

不同速率时钟域的转换当由慢时钟域到快时钟域,肯定需要一个buffer做缓冲,这样才能完成时钟域的转换。一般这种情况都选择FIFO来做缓冲当读写FIFO的时钟不同那么称为异步FIFO。

FIFO就是一个“环形存储器”读操作会把读指针指向下一个读数据,写操作会把写指针指向下一个写数据地址。当读指针追上写指针时称作读空,当写地址追上读地址时称为写满。

    module ex_fifo(  input wire w_clk,  input wire r_clk,  input wire rst_n,  input wire w_en,  input wire [7:0] w_data,  output wire w_full,  output wire r_empty,  input wire r_en,  output wire [7:0] r_data);wire [8:0] r_gaddr;wire [8:0] w_addr;wire [8:0] w_gaddr;wire [8:0] r_addr;//例化模块连接w_ctrl w_ctrl_inst(  input  .w_clk     (w_clk),  input   .rst_n     (rst_n),  input   .w_en     (w_en),//写使能  input   .r_gaddr   (r_gaddr),//读时钟域过来的格雷码读地址指针  output  .w_full   (w_full),  output   .w_addr   (w_addr),//256深度FIFO写二进制地址  output   .w_gaddr   (w_gaddr)//写FIFO地址格雷码编码);fifomem fifomem_inst(  .w_clk    (w_clk),  .r_clk    (r_clk),  .w_en    (w_en),//来自FIFO写控制模块  .w_data    (w_data),//来自外部数据源  .w_addr   (w_addr),  .r_empty  (r_empty),  .r_addr   (r_addr),//来自FIFO的写控制模块  .r_data    (r_data)  //读数据是从内部RAM中读取);r_ctrl r_ctrl_inst(  .r_clk     (r_clk),  .rst_n     (rst_n),  .r_en     (r_en),//读使能  .w_gaddr   (w_gaddr),//写时钟域过来的格雷码读地址指针  .r_empty   (r_empty),  .r_addr   (r_addr),//256深度FIFO读二进制地址  .r_gaddr   (r_gaddr)//读FIFO地址格雷码编码);endmodule

    主要是读写控制的编写和FIFO寄存器的模块编写。

    来源:集成电路小刚
    控制
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2023-06-27
    最近编辑:1年前
    集成电路小刚
    硕士 立志成为集成电路领域专家
    获赞 3粉丝 34文章 69课程 0
    点赞
    收藏
    未登录
    还没有评论
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈