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

先简单介绍下FIFO,这里FIFO不同于双口RAM,对于FIFO是没有地址的,如其名字一样,先进先出。先进去的数据先出来,而这里可以配置进去的时钟与出去的时钟,但是需要注意的问题是不能写满与读空。

这里理解成一个单行道,数据一个接着一个,我们只需要控制好写数据与读数据的量。但是这个单行道可以容纳的总车数是有限制的,因此需要控制不能满的时候写,会产生溢出,空的时候读,会读到错的数据。下面具体介绍。

IP测试之——FIFO

  • 1,界面生成
    • 1.1 新建命名
    • 1.2 选择需要生成的IP
    • 1.3 选择生成
  • 2,IP配置
    • 2.1 接口类型选择
    • 2.2 时钟端口选择
    • 2.3 选择读写数据位宽
    • 2.4 读写相应位选择
    • 2.5 配置复位
    • 2.6 写入读出计数
    • 2.7 配置结束
  • 3,测试接口时序
    • 3.1 测试正常读写
    • 3.2 测试空满信号

1,界面生成

1.1 新建命名

1.2 选择需要生成的IP

1.3 选择生成

2,IP配置

2.1 接口类型选择


这里默认选择native就可以(也可以查看数据手册有更加详细的内容)

2.2 时钟端口选择


这里主要选择的是两个端口的时钟频率是否独立以及使用的资源是分布式RAM还是块RAM。块RAM 和 分布式RAM的区别详细点击链接,这里简单总结结论:对于少量的数据存储以及需要速度较高的使用分布式RAM,其使用FPGA内部的LUT实现的,而对于块RAM是FPGA上专门的资源用于数据存储,其位置固定,因此在布局布线上需要较多的时间以及较慢的读取速度。
这里我们选择块RAM,其实对于一般学习了解的需求,这两者都可以。

2.3 选择读写数据位宽


选择读写数据位宽,这里选择的是读写均为8bit,FIFO的深度为256。

2.4 读写相应位选择


这里选择的是否加近似满,近似空的信号,以及一些握手信号,分别为写入成功响应信号,FIFO满时写入无效信号(写错误)以及读有效,读空错误。这里笔者配置如上图。

2.5 配置复位


本页配置的是读写同步复位还是不同步,这里同步复位即可,然后选择在复位时,信号的状态,笔者这里选择为低电平。

2.6 写入读出计数


对写入的数据进行统计,这里不需要进行计算。

2.7 配置结束


从左侧的图中可以看到配置的接口。结束后得到生成后的ip

3,测试接口时序

本次测试其实就是想测试写入与读出对应接口的时序关系(已经够基本的的使用了)
其次测试空满信号,测试读写响应信号。

3.1 测试正常读写

测试写入的数据wr_en为高电平时,数据写入,当rd_en为高电平,数据延时一个时钟输出。valid为高时候,数据输出有效。写有效拉高,证明前一个数据写入成功。如下图所示。

`timescale 1ns / 1ps
module tb_ip_test_new;reg s_clk;reg s_rst_n;reg [7:0] din;reg rd_en;reg wr_en;wire [7:0] dout;wire full;wire wr_ack;wire empty;wire valid;ip_test_new uut (.s_clk(s_clk), .s_rst_n(s_rst_n), .din(din), .rd_en(rd_en), .wr_en(wr_en),.dout(dout), .full(full), .wr_ack(wr_ack), .empty(empty), .valid(valid));
always #10 s_clk = ~s_clk;initial begins_clk = 1;s_rst_n = 0;din = 0;wr_en = 0;rd_en = 0;#(20*10);s_rst_n = 1;    #20;wr_en = 1'b1;din = 8'h11;#20;wr_en = 1'b1;din = 8'h12;#20;wr_en = 1'b1;din = 8'h13;#20;wr_en = 1'b1;din = 8'h14;#20;wr_en = 1'b1;din = 8'h15;#20;wr_en = 1'b1;din = 8'h16;#20;wr_en = 1'b0;#20;rd_en = 1'b1;#(20*3);rd_en = 1'b0;#(20*2);$finish;end
endmodule

3.2 测试空满信号

这里空满信号不建议使用,或者具体使用时可以在进行测试。
空满信号其实这里只是大致的一个表示,从上图其实已经可以看出,empty拉低有几个时钟的延时。

满信号也是类似,这里已经写满了,读取数据后full也是延时了几个时钟后拉低的

 initial begins_clk = 1;s_rst_n = 0;din = 0;wr_en = 0;rd_en = 0;#(20*10);s_rst_n = 1;#20;rd_en = 1'b1;#20;rd_en = 1'b0;    #20;wr_en = 1'b1;din = 8'h11;#(20*255);wr_en = 1'b0;#20;rd_en = 1'b1;#(20*3);rd_en = 1'b0;#(20*2);$finish;

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

  1. ISE_FIFO_IP核接口测试(一)

    引荐博文: xilinx FIFO的使用及各信号的讨论 Xilinx ISE FIFO读写操作仿真学习 这两篇博文都很好,一共介绍了两种比较全面的fifo数据接口测量方案. 下面进行博主自己的fifo ...

  2. 局域网SDN技术硬核内幕 二 云网CP的日常恩爱——硬件VXLAN转发平面

    局域网SDN技术硬核内幕 二 云网CP的日常恩爱--硬件VXLAN转发平面 在大家的祝福之下,云和网络经历了红娘撮合(EVPN信令平面).领证(层次化端口绑定),终于要过上幸福的小日子了--也就是业务 ...

  3. 局域网SDN技术硬核内幕 二 从软件Overlay到硬件Overlay

    局域网SDN技术硬核内幕 二 从软件Overlay到硬件Overlay 在前一阶段的文章中,我们介绍了Neutron和NSX中的几个基本概念: IRB(Integrated Routing & ...

  4. 3G UMTS与4G LTE核心网(二):4G网络概述

    4G网络概述 1 关于4G的几个概念 2 长期演进到哪里了 3 EPC网络的网元 参考文献 1 关于4G的几个概念 SAE(System Architecture Evolution,系统架构演进) ...

  5. 接口测试二(App抓包)

    在讲抓包之前,先讲个小故事: 某程序猿写JS,自己手机没电了,拿同事老王的安卓机调试,很简单的获取用户微信昵称,结果死活获取不到,一直显示为null.应该是跨平台问题,因为之前在自己iPhone上是没 ...

  6. 【SRIO】4、Xilinx RapidIO核详解

    目录 一.RapidIO核概述 二.RapidIO核接口说明 2.1 逻辑层接口 2.2 Buffer接口 2.3 物理层接口 2.4 寄存器空间 三.使用RapidIO核 3.1 设计指南 3.2 ...

  7. Vivado 自定义VHDL的IP核

    自定义VHDL的IP核 本文介绍基于VHDL语言的IP核的创建. 说明:使用软件版本为Vivado 2019.2 文章目录 自定义VHDL的IP核 一.创建IP核 1.1 创建IP核管理工程 1.2 ...

  8. 【高速接口-RapidIO】Xilinx SRIO IP 核详解

    目录 原文链接:https://www.cnblogs.com/liujinggang/p/10072115.html 一.RapidIO核概述 二.RapidIO核接口说明 2.1 逻辑层接口 2. ...

  9. python人脸检测与微信小程序_python+requests对app和微信小程序进行接口测试

    对于web端和app端的接口测试来说,他们都是通过请求方法,url和传递的body参数进行接口请求,区别web和app的区别就是header请求的不同.不同的地方在于header中的User-Agen ...

最新文章

  1. {} 与 function() { } , 选用空对象{}来存放keyValue
  2. 重磅直播 | PointDSC:基于特征匹配的点云配准方法(CVPR2021)
  3. python编程 从入门到实践豆瓣-三周刷完《Python编程从入门到实践》的感受
  4. How to be a hacker
  5. HTTP网页请求响应的状态码/状态代码
  6. Git学习系列(六)解决分支冲突及分支管理策略
  7. 网络安全之等级保护问题集
  8. Extjs GRID表格组件使用小结
  9. Leap 使用注意事项
  10. 融媒体需要什么计算机软件,融媒体时代对编辑的能力要求
  11. c语言16qam,基于FPGA的高阶QAM调制器的实现
  12. OpenAI发布DALL·E 2
  13. 制订项目进度计划的讨论
  14. golang chan
  15. 题解 luoguP2928 【[USACO09HOL]牛的打手Cattle Bruisers】
  16. 入门3D游戏建模,有哪些建模软件可以选择?
  17. 状语从句不是简单句_英语简单句、从句分类及解析
  18. tws真无线蓝牙耳机隐藏的冷知识
  19. python读文件的三种方式_Python|读、写Excel文件(三种模块三种方式)
  20. 《明解C语言入门篇》 基础知识点汇总

热门文章

  1. 机器学习——异常值检测
  2. 全文搜索引擎的比较-Lucene,Sphinx,Postgresql,MySQL?
  3. 如何在Linux命令行中替换多个文件中的字符串
  4. 如何从JQuery中的each()函数中断/退出? [重复]
  5. 如何使用git merge --squash?
  6. 如何检查字符串“ StartsWith”是否为另一个字符串?
  7. php josnp_浅析php中jsonp的跨域实例
  8. Windowstelnet服务怎么开启 Win11telnet服务怎么开启详细介绍
  9. aspen和python一起使用_python-将$cond语句与$project一起使用并在PyMongo中聚合
  10. aardio部署_aardio有什么用