引荐博文:
xilinx FIFO的使用及各信号的讨论
Xilinx ISE FIFO读写操作仿真学习
这两篇博文都很好,一共介绍了两种比较全面的fifo数据接口测量方案。
下面进行博主自己的fifo_ip测试。
后来复习时新写的,互为参考吧各有侧重ISE_FIFO_IP核接口测试(二)

接口代码

这里是生成的ip核的代码接口

fifo_ip fifotest (.rst           (rst), // input rst.wr_clk          (wr_clk), // input wr_clk.rd_clk            (rd_clk), // input rd_clk.din           (din), // input [7 : 0] din.wr_en           (wr_en), // input wr_en.rd_en           (rd_en), // input rd_en.dout            (dout), // output [7 : 0] dout.full         (full), // output full.almost_full  (almost_full), // output almost_full.wr_ack         (wr_ack), // output wr_ack.overflow     (overflow), // output overflow.empty            (empty), // output empty.almost_empty   (almost_empty), // output almost_empty.valid            (valid), // output valid.underflow      (underflow), // output underflow.rd_data_count  (rd_data_count), // output [7 : 0] rd_data_count.wr_data_count  (wr_data_count), // output [7 : 0] wr_data_count.prog_full      (prog_full), // output prog_full.prog_empty     (prog_empty) // output prog_empty
);

接口测试

测试代码

module ip_test_fifo(input clk,input rst_n);
wire            rst             ;
wire    [7 : 0] din             ;
// wire             wr_en           ;
wire            rd_en           ;
wire  [7 : 0]   dout            ;
wire            full            ;
wire            almost_full     ;
wire            wr_ack          ;
wire            overflow        ;
wire            empty           ;
wire            almost_empty    ;
wire            valid           ;
wire            underflow       ;
wire  [7 : 0]   rd_data_count   ;
wire  [7 : 0]   wr_data_count   ;
wire            prog_full       ;
wire            prog_empty      ;
reg [8:0] din_cnt;
always @ (posedge clk or negedge rst_n)
beginif(!rst_n)din_cnt <= 'd0;else if(din_cnt == 'd511)din_cnt <= 'd0;else din_cnt <= din_cnt + 1'b1;
end
assign wr_en = ((din_cnt >= 9'd10) && (din_cnt <= 9'd100));
assign rd_en = ((din_cnt >= 9'd110) && (din_cnt <= 9'd200));
assign din = (wr_en) ? din_cnt : 'd0; assign rst    = ~rst_n ;fifo_ip fifotest (.rst         (rst), // input rst.wr_clk          (clk), // input wr_clk.rd_clk           (clk), // input rd_clk.din          (din), // input [7 : 0] din.wr_en           (wr_en), // input wr_en.rd_en           (rd_en), // input rd_en.dout            (dout), // output [7 : 0] dout.full         (full), // output full.almost_full  (almost_full), // output almost_full.wr_ack         (wr_ack), // output wr_ack.overflow     (overflow), // output overflow.empty            (empty), // output empty.almost_empty   (almost_empty), // output almost_empty.valid            (valid), // output valid.underflow      (underflow), // output underflow.rd_data_count  (rd_data_count), // output [7 : 0] rd_data_count.wr_data_count  (wr_data_count), // output [7 : 0] wr_data_count.prog_full      (prog_full), // output prog_full.prog_empty     (prog_empty) // output prog_empty
);endmodule

测试结果

可以看出
1,wr_ack 是用来标记上一个时钟是否成功写入数据的。
2,wr_data_count是在wr_ack拉高之后开始计数,计数为成功写入加一,进行减一是在数据读数的时候,但有时钟延时
3,rd_data_count是计数可以读数的数据个数,同样会优势种
4,数据的写入实在wr_en拉高的同时写入的,没有时钟延时
5,re_en使能信号来临时数据不会立刻出来,会延时一个时钟周期
6,valid信号是标志读有效的,当有数据出时,valid信号拉高
7,空满信号
7,A,空信号:(图三)可以看出,信号是与写数据计数有关
7,B,满信号:这里没有写满,写一个测试案例进行测试
8,其他信号可以不用去处理(需要进行测试的时候补充)或者见测试二

图一

图二

图三

测试代码

always @ (posedge clk or negedge rst_n)
beginif(!rst_n)din_cnt <= 'd0;else if(din_cnt == 'd511)din_cnt <= 'd0;else din_cnt <= din_cnt + 1'b1;
end
assign wr_en = ((din_cnt >= 9'd0) && (din_cnt <= 9'd260));
assign rd_en = ((din_cnt >= 9'd261) && (din_cnt <= 'd511));
// assign din = (wr_en) ? din_cnt : 'd0;
// din = 0;reg    [7 : 0]  din = 'd0;
assign rst    = ~rst_n ;
always @ (posedge clk)
begindin = ~din;
end

测试结果

9,rst信号:这里的复位信号是高电平有效,这也就是为什么有

assign rst    = ~rst_n ;

这样一段代码的原因了。
10,读使能信号的有效必须在复位结束后的一两个时钟周期在给,否则写入数据是不能写入的。两种检验方式,第一,通过后面读出的数据,第二,根据wr_ack信号
11,满信号拉高的时候,就已经不能写入数据了(图五,根据wr_ack可知)
12,溢出信号:在数据满信号拉高,数据继续写入,溢出信号拉高

图四

图五

ISE_FIFO_IP核接口测试(一)相关推荐

  1. ISE_FIFO_IP核接口测试(二)

    本文用于测试FIFO(First-in-First-out)IP,将从界面生成,常用接口的介绍,简单的测试文件及仿真截图分析这几个方面介绍ISE工具中FIFOIP核的使用及相关时序 与笔者之前的ISE ...

  2. 软件测试丨工具在接口测试中发挥什么样的作用?

    搜索:TestingStudio 霍格沃兹的干货都很硬核 接口测试究竟是什么?为什么要用接口测试?它有哪些工具呢?这一连串的问题敲击着我们,请带着这些问题,在本文中寻找答案,我将为您打开接口测试的大门 ...

  3. UT-Exynos4412 三星ARM四核旗舰开发平台android4.0体验-10HDMI功能调试支持

    经过2012年的等待,四核的开发平台终于跟广大嵌入从业人员见面了,下面让我们来看下UT-Exynos 4412 开发板的详细参数吧,共广大嵌入式开发人员参考. 一.UT-Exynos 4412开发板高 ...

  4. 春眠不觉晓,读书醒醒脑|世界读书日送送送10本硬核书

    曾经有人说 从一座城市图书馆的数量 可以看出城市文化底蕴的深浅 而阅读指数关乎国民素质的提升 因此无论是阅读纸质书还是电子书 在提高国民阅读上都有着很大的意义 在生活节奏快速的今天 不少技术派为生活奔 ...

  5. A40I工控主板(SBC-X40I)CAN接口测试

    SBC-X40I产品特性 采用Allwinner公司Cortex-A7四核A40i处理器,运行最高速度为1.2GHZ: 支持Mali-400MP2 GPU,支持OpenGL ES 2.0 / Open ...

  6. A40I工控主板(SBC-X40I)网络接口测试

    SBC-X40I产品特性 采用Allwinner公司Cortex-A7四核A40i处理器,运行最高速度为1.2GHZ: 支持Mali-400MP2 GPU,支持OpenGL ES 2.0 / Open ...

  7. UT-Exynos4412开发板三星ARM四核旗舰开发平台android4.0体验-12音频输入输出功能调试

    经过2012年的等待,四核的开发平台终于跟广大嵌入从业人员见面了,下面让我们来看下UT-Exynos 4412 开发板的详细参数吧,共广大嵌入式开发人员参考. 一.UT-Exynos 4412开发板高 ...

  8. jmeter接口测试及详细步骤

    一.Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试. Jmeter具备高移植性,可以实现跨平台运行. Jmeter可以实现分 ...

  9. H1--HDMI接口测试应用2022-07-15

    HDMI接口应用 1.简介 HDMI接口的全称是高清多媒体接口(High Definition Multimedia Interface),最初在2004年出现,能够同时传输视频与音频信号,而且质量很 ...

最新文章

  1. SAP PM 初级系列26 - 设备功能位置的Document
  2. 深拷贝与浅拷贝、空类与空数组
  3. ubuntu下配置eclipse3.3
  4. Pidgin Portable 使用点滴
  5. 单片机利用蜂鸣器如何输出音乐
  6. print输出字体特效
  7. php mysql 连接不上_php连接不上MySQL问题解决办法_PHP教程
  8. Flexslider图片轮播、文字图片相结合滑动切换效果
  9. 为Windows Phone SDK 模拟器安装应用
  10. cass转换jpg_【转】南方CASS作原有地形图数字化--对扫描栅格图像进行校正及矢量化...
  11. charset参数 sqluldr2_SQLULDR2
  12. Hamcrest匹配器框架
  13. 二叉树叶子结点个数——C++
  14. 在多媒体计算机系统中图像的颜色是,图像量化位数越大,记录图像中每个像素点的颜色种类就越多。() - 试题答案网问答...
  15. python在视频上方加字_使用moviepy给视频加字遇到的坑
  16. 二、芦哲峰《桃花粉,梨花白》
  17. MySQL - MySQL 8.0(二)基本操作:对象
  18. 绿色版软件 tomcat+eclipse的使用
  19. springMVC的大体结构及工作流程
  20. 一个项目的流程和前期的准备工作

热门文章

  1. Java 图片处理解决方案:ImageMagick 快速入门教程
  2. Python读取文件时出现UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position xx: 解决方案
  3. react-native-echarts 解决数据刷新闪烁,不能动态连续绘制问题(转载)
  4. 如何删除选择框的所有选项,然后添加一个选项并使用jQuery选择它?
  5. 对网站实施“记住我”的最佳方法是什么? [关闭]
  6. 如何通过索引从列表中删除元素?
  7. win11鼠标指针如何设置 Windows11鼠标指针的设置方法
  8. geek软件是干什么的_详解强力卸载软件Geek Uninstaller使用教程
  9. php mixed约束,Mixed Content: 混合被动/显示内容和混合活动内容
  10. ifpc币_劳力士手表价格表一览表