当前位置: 首页 > news >正文

FPGA教程系列-Vivado中FIFO的简单仿真分析

FPGA教程系列-Vivado中FIFO的简单仿真分析

本着看十遍不如操作一遍的原则,对FIFO进行一个简单的仿真,加深一下印象。

生成一个IP核:(8位,16深度,其他默认)

image

编写top文件:

`timescale 1ns / 1ps
module fifo_top(input i_clk,input i_rst,input[7:0] i_din,input        i_wr_en,input       i_rd_en,output      o_full,output      o_empty,output[7:0] o_dout  
);
fifo_generator_0 fifo_generator_u (.clk      (i_clk),      // input wire clk.srst     (i_rst),    // input wire srst.din      (i_din),      // input wire [7 : 0] din.wr_en    (i_wr_en),  // input wire wr_en.rd_en    (i_rd_en),  // input wire rd_en.dout     (o_dout),    // output wire [7 : 0] dout.full     (o_full),    // output wire full.empty    (o_empty)  // output wire empty
);
endmodule    

编写testbench:

`timescale 1ns / 1psmodule tb_fifo_top;/* ---------------- 接口 ---------------- */
logic        clk;
logic        rst;
logic [7:0]  din;
logic        wr_en;
logic        rd_en;
logic        full;
logic        empty;
logic [7:0]  dout;/* ---------------- 时钟 ---------------- */
initial beginclk = 0;forever #10 clk = ~clk;
end/* ---------------- 激励 ---------------- */
initial beginrst   = 1;wr_en = 0;rd_en = 0;din   = '0;repeat(5) @(posedge clk);rst = 0;@(posedge clk);// 1. 写满 16 字节$display("\n[%.2f ns] Write 16 bytes", $time);for (int i = 0; i < 16; i++) begin@(posedge clk);wr_en = 1;din   = i;endwr_en = 0;@(posedge clk);$display("[%.2f ns] full = %b", $time, full);// 2. 读出 16 字节$display("\n[%.2f ns] Read 16 bytes", $time);for (int i = 0; i < 16; i++) begin@(posedge clk);rd_en = 1;endrd_en = 0;@(posedge clk);$display("[%.2f ns] empty = %b", $time, empty);// 3. 交替写读 3 次$display("\n[%.2f ns] Alternating write/read", $time);repeat(3) begin@(posedge clk);wr_en = 1; din = $random; rd_en = 0;@(posedge clk);wr_en = 0; rd_en = 1;endrd_en = 0;@(posedge clk);#200;$display("\n[%.2f ns] Done", $time);$finish;
end/* ---------------- 打印读出数据 ---------------- */
always @(posedge clk) beginif (rd_en & ~empty)$display("[%.2f ns] dout = %0d", $time, dout);
end/* ---------------- 例化 DUT ---------------- */
fifo_top dut (.i_clk   (clk),.i_rst   (rst),.i_din   (din),.i_wr_en (wr_en),.i_rd_en (rd_en),.o_full  (full),.o_empty (empty),.o_dout  (dout)
);
endmodule

仿真分析:

image

写入0-14数据,读出0-14.

image

分别写入36,129并读出。

有心力的可以试试异步的fifo等等。。

工程文件:https://download.csdn.net/download/fantasygwh2015/92276755

http://www.dtcms.com/a/603259.html

相关文章:

  • 网站开发需要什么工具公司介绍怎么写范本
  • 网站建设责任书广东省建设厅官方网站网址
  • WebView 远程调试全指南,跨端真机调试的完整解决方案
  • wordpress企业网站 教程wordpress站点标题
  • 网站建设的职责dedecms 金融类网站模板
  • STM32的电子钟功能实现
  • 安徽网站建设微信开发注册公司官网入口
  • 网页设计与网站开发教程做网站图片链接到天猫
  • 太阳光模拟器太空环境应用:光学载荷的杂散光性能测试
  • 公司创建一个网站需要多少钱外贸网络营销服务
  • 建设英文外贸网站网站开发的环境
  • 免费空间建站网站推荐网站建设管理维护责任书格式
  • 淘宝客一定要建立网站中国机械加工网怎么样
  • 基于Java的心理压力检测系统【附源码】
  • wordpress电影站主题百度网网页版登录
  • 在Scrapy中如何处理API分页及增量爬取
  • 金坛企业网站建设公司wordpress 保持空格
  • MATLAB实现DLT645协议
  • godaddy做网站百度快速收录方法
  • 三相三线断路器中性点漂移后电压换算
  • 西安网站seo厂家iis怎么设置网站
  • 天津网站建设电焊机wordpress 生成html代码
  • 江苏建安建设有限公司网站做网站如何购买服务器吗
  • 网站备案还要买幕布wordpress蚂蚁主题
  • OpenAI Agent RFT:如何利用强化学习微调,打造兼具效率与智能的超级AI工具体
  • 单页型网站下载四川天府健康二维码
  • java反序列化小记
  • 深圳html5网站推广价格网站建设台州
  • 自己做一个网站难么手机怎么创建网页链接
  • 微网站如何做推广方案wordpress 引流