精华内容
下载资源
问答
  • 15_async_fifo.rar

    2020-06-10 20:38:58
    FPGA异步FIFOVerilog,参数化设计,带完整注释,保证对,欢迎下载
  • 异步FIFO功能实现源代码,包含完整的读写指针模块和空满判断模块。
  • async_fifo.zip

    2022-01-06 22:26:29
    异步fifo设计示例代码
  • XPM_ASYNC_FIFO学习笔记02

    千次阅读 2020-07-09 08:57:00
    XPM_FIFO_ASYNC 一、BLOCK图 二、参数说明 三、接口说明 ASYNC_FIFO ASYNC_FIFO是把XPM_FIFO_ASYNC包起来做成精简版的fifo模块以供使用。 一、参数说明 二、接口说明 三、配置说明 1.READ_MODE设为”fwft”时...

    XPM_FIFO_ASYNC

    一、BLOCK图

    图1

    二、参数说明

    图2

    在这里插入图片描述
    在这里插入图片描述

    三、接口说明

    在这里插入图片描述

    ASYNC_FIFO

    ASYNC_FIFO是把XPM_FIFO_ASYNC包起来做成精简版的fifo模块以供使用。

    一、参数说明

    在这里插入图片描述

    二、接口说明

    在这里插入图片描述

    三、配置说明

    1.READ_MODE设为”fwft”时,FIFO_READ_LATENCY必须设为0;
    2.FIFO_MEMORY_TYPE设置为"auto"和"distributed"(试验得知的)时,读写位宽必须相同;
    3.PROG_EMPTY_THRESH,PROG_FULL_THRESH的设定必须根据FIFO_WRITE_DEPTH设定,具体范围查上表;
    4.其余参数内置配置如图3。
    图3

    展开全文
  • async_fifo_sys.zip

    2020-07-19 10:28:24
    本资源包含异步FIFO设计的全部文件:7个可综合.v文件、1个testbench文件以及一张测试用例的仿真图片(读写同时进行)。相关说明见两篇博客——可综合的异步FIFO设计。其中,包含了完整的设计思路,算法推演、详细的...
  • async_fifo.rar

    2020-06-14 16:23:52
    用格雷码实现的异步FIFO的Verilog代码,代码很规范,希望大家喜欢,多多下载,多给好评!!!!!
  • XPM_ASYNC_FIFO学习笔记01

    千次阅读 2020-07-01 15:48:30
    一、概述 软件:vivado 器件:vu9p 参考文档:ug974 简介:XPM,Xilinx Parameterized ...1新建工程及.v文件xpm_async_fifo.v 2.找到Language Templates(界面左侧)–> Verilog–> Xilinx Parameterized Macros

    一、概述

    软件:vivado
    器件:vu9p
    参考文档:ug974
    简介:XPM,Xilinx Parameterized Macros,赛灵思参数化宏,其实就是类似“原语”调用那样,vivado会直接将其识别为对应的模块(目前有CDC跨时钟处理器,FIFO以及BRAM三种)

    二、快速上手

    步骤如下:
    1新建工程及.v文件xpm_async_fifo.v
    2.找到Language Templates(界面左侧)–> Verilog–> Xilinx Parameterized Macros(XPM)–> XPM–> XPM_fifo–> Asynchronous FIFO,复制到.v中,如下图
    在这里插入图片描述
    3.写个完整的module(xpm_async_fifo),把接口和参数对接到 XPM 例化模块中,如下图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.编写“异步fifo”的读写tb,对xpm_async_fifo进行仿真
    在这里插入图片描述
    PS:如何用questa,modelsim等第三方仿真器对vivado工程仿真?
    1.用vivado编译器件库;
    vivado-----tools-----Compile Simulation Libraries,选择将要使用的仿真器simulator以及编译后的器件库存放地址等。
    2.设置仿真器
    Vivado GUI的左侧 Settings-----Project Settings----Simulation,选择对应的simulator和器件库地址,点OK
    3.启动仿真

    三、接口描述

    在这里插入图片描述

    3.1参数

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.2接口

    在这里插入图片描述
    在这里插入图片描述

    四、使用注意

    1.fifo深度根据 READ_MODE 有不同的真实值
    2.根据深度不同,WR_DATA_COUNT_WIDTH和RD_DATA_COUNT_WIDTH有取值范围要求
    3.根据深度不同,PROG_FULL_THRESH和PROG_EMPTY_THRESH有取值范围要求
    4.读写端口可以位宽不同
    5.CDC_SYNC_STAGES*RD_CLK 表达了写busy和读busy的上升沿时间差,有取值范围要求,一般不改变
    6.建议rst信号用脉冲复位
    7.注意两个busy信号,如果在busy的时候读写操作会导致上溢或下溢信号的拉高
    8.RD_DATA_COUNT和WR_DATA_COUNT数值有时候会跳跃,不准,建议不使用
    9.时序延迟等信息由于情况太多,请参照ug974

    展开全文
  • async_fifo学习

    2021-09-23 23:19:51
    async_fifo学习

    1.框架

    1.1 逻辑框图

    Fifo 看成环形存储器,读操作把读指针指向下一个读数据地址,写操作把写指针指向下一个写数据地址

     

    1.2 gray转换框图,注意二进制地址和格雷码转换要同步

    2.代码实现

    2.1 写控制模块

    2.1.1 端口和参数定义

    2.1.2 给ram产生二进制地址,再经过二进制寄存器

    2.1.3 对产生的写地址转换格雷码,再经过格雷码寄存器

    2.1.4  在w_clk对读模块产生的读格雷码指针打两拍

    2.1.5 产生写满信号

     

    对比gray-code 7和15 要对高位和次高位都取反 

    2.2 读控制模块

    2.2.1 端口和参数定义

    2.2.2 给ram产生二进制读地址,再经过二进制寄存器

     

    2.2.3 对产生的读地址进行格雷码准换,再经过格雷码寄存器 

    2.2.4 在r_clk对写模块产生的写格雷码指针打两拍

    2.2.5 产生读空信号

    #步骤总结#

    1 产生读写地址
    2 转格雷码
    3 对传过来的写读格雷码指针打两拍
    23 比较产生空满

    2.3 例化ram

    先生成ipcore 

    去掉产生的读写地址的msb送进ram

    2.4 顶层例化top

     

     

    3.编写tb

    3.1参数 时间单位 端口定义

    3.2 读写时钟定义 以及初始化读写模块

     3.3 利用task 进行数据读写

    task 任务名;// 不要漏分号!!!!!

    //1.声明变量,举例:

      integer i;

    //2.赋值 编程

      begin

      赋值逻辑

            比如:for(...)begin

                                    @(posedge clk)

                            end

      end

            @(posedge clk)

    endtask

    initial 一上电就执行,仅执行一次 !

    3.4 例化顶层

    4. 仿真波形

    4.1利用脚本 跑modelsim

    quit -sim
    .main clear

    vlib work

    vlog ./tb_fifo_top.v
    vlog ./../design/*.v
    vlog ./../ipcore

    vsim -voptars=+acc work.tb_fifo_top

    add wave tb_fifo_top/fifo_top_inst/*

    run 20us

    4.2

    观察波形

    4.2.1 写进去256个数据 0-255

    4.2.2写满信号在写data 8ff时候拉高

     4.2.3读空信号在读data 8ff时候拉高

     4.2.4

    展开全文
  • 配合‘’FPGA_FIFO深度与宽度的配置及验证‘’文章的quartusⅡ程序,其中芯片引脚需要修改哦,只是用于验证,没有其它实用价值
  • 异步fifo,读写使用不同的时钟。使用LUT实现。
  • async_fifo深度计算

    2021-12-27 22:04:26
    最悲观:写最密集,突发数据长度 1st 100clk 最后60个clk写60数据 2nd 100clk 前60clk 写60数据 这120个时钟周期 保证fifo不溢出,fifo一边写一边读 120个100Mhz 写时钟周期把数据写进fifo中 3算写入突发数据长度...

     1.吞吐量知识补充

    吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。

    吞吐量的英文单词是“throughput ”,也很形象,就是“穿越流量”,单位为bit/s,如果有一个入接口每秒收到1M bit 流量,这1M bit 流量又从其它出接口流走,那么吞吐量 = 1M bit/s。

    单位时间内接收的所有数据的速率之和。

    单位时间数据的写入或者读出量

     

    总数据量/吞吐量=下载时间 

    数字带宽:理想带宽

    吞吐量:用户体验得到 感受得到的 

    写时钟频率:100Mhz

    读时钟频率:200Mhz

    写:100拍时钟周期写入60拍

    读:100拍时钟周期读出30拍

    写和读同时启动

    1.吞吐量 :单位时间 这个模块吞吐的数据个数,比如1s内读出写入多少数据

    这里应该是这样,比如一拍写64bit,64bit/时钟周期=64bitx时钟频率xvld-change(vld拉高密度)

    平均一个时钟周期 写入60/100 =0.6拍

    写吞吐量=平均一个时钟周期写入的数据量/时钟周期=平均一个时钟周期写入的数据量x时钟频率

    写吞吐量=数据位宽x(60/100)x100Mhz

    so读吞吐量= 数据位宽x(30/100)x200Mhz

    如果 写吞吐量>读吞吐量 ,就一定会满 没有计算的必要了;

    2.最悲观:写最密集,突发数据长度
    1st 100clk 最后60clk60数据
    2nd 100clk 60clk 60数据

    这120个时钟周期 保证fifo不溢出,fifo一边写一边读

    120个100Mhz 写时钟周期把数据写进fifo中

    3算写入突发数据长度需要的时间

    没读出的数据剩在fifo中了,算fifo写完的时刻读出去的数据

    写完突发长度数据时刻,fifo中还剩下x个数据,读出数据=突发数据长度-x

    写完 突发数据长度时间= 读完 (突发数据长度-x)个数据时间

    写时钟周期:100Mhz:10ns

    读时钟周期:200Mhz :5ns

    写突发数据长度所用时间:120x10ns

    4.算 这段时间读走了多少数据

    方法1:

    读走多少数据=(突发数据长度-剩余长度)

    读走的数据个数x读时钟周期x100/30=写突发长度所用时间

    读走数据个数x5nsx100/30 = 120x10ns

    读走数据个数=72

    方法2:写入突发数据长度所用的时间x读吞吐量(单位时间内读走的数据)=120x10nsx60M个数据/sx数据位宽/数据位宽=72

    5.算 剩余数据个数

    剩余数据个数=突发数据个数-读走数据个数=120-72=48

    6.求深度

    异步fifo要2^n 深度设计为64

    展开全文
  • 在大规模ASIC或FPGA设计中,多时钟系统往往是不可避免的,这样就产生了不同时钟域数据传输的问题,其中一个比较好的解决方案就是使用异步FIFO来作不同时钟域数据传输的缓冲区,这样既可以使相异时钟域数据传输的时序...
  • 在大规模SoC设计中,多时钟系统往往是不可避免的,这样就产生了不同时钟域数据传输的问题,其中一个比较好的解决方案就是使用异步FIFO来作不同时钟域数据传输的缓冲区,这样既可以使异步时钟域数据传输的时序要求变...
  • XPM_FIFO_SYNC使用说明

    2021-09-25 00:14:39
    • 所有同步信号都对wr_clk 的上升沿敏感,它被假定为根据目标设备和FIFO/存储器原语要求运行的缓冲和切换时钟信号。 • 当FIFO 未满且wr_en 在每个wr_clk 周期置位时执行写操作。 • 当FI...
  • async fifo

    2019-09-22 10:55:09
    异步fifo,解决跨时钟域的数据传输问题。 由binary,gray两种counter组成,在读写domain之间,只传输gray code。 主要的设计难点在empty和full的产生中。 empty信号在read domain中产生,full信号在write domain...
  • Cummings异步FIFO——第二篇

    千次阅读 2019-07-19 09:51:49
    Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons -- Clifford E. Cummings ,Sunburst Design 1. 异步FIFO 异步FIFO是指读数据在一个clock demain,写...
  • 同步FIFO代码和testbench

    2018-04-02 17:03:18
    此代码是同步FIFO的Verilog源代码,经上板测试是没有问题的,请大家放心使用
  • 最近用到异步FIFO,发现其中的show-ahead模式很有意思。如下图,对FIFO IP核仿真后,可以看到在写请求信号上升沿两个时钟周期后数据被写入,三个时钟周期后FIFO输出端就有数据输出,而不需要读请求信号,但是只有当...
  • Verilog codes for asynchrounous fifo design
  • 对于GCD来说,所有的执行都放到队列中(queue),队列的特点是FIFO(先提交的先执行)。 GCD的队列分为几种,主队列(main),全局队列(global),用户创建队列(create) 对于全局队列,默认有四个,分为四个优先级 #...
  • 根据FIFO工作的时钟域分为同步/异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟在时钟沿来临时同时发生读写。异步FIFO读写时钟不一致,读写相互独立。读写指针的工作原理读指针:总是指向下一个将要读取的单元,...
  • 对于GCD来说,所有的执行都放到队列中(queue),队列的特点是FIFO(先提交的先执行)。 GCD的队列分为几种,主队列(main),全局队列(global),用户创建队列(create) 对于全局队列,默认有四个,分为四个优先级 ...
  • fx2lp_loopback_proj: (1) fx2lp_slaveFIFO2b_loopback_fpga_top.v module fx2lp_slaveFIFO2b_loopback_fpga_top( // reset_n_in, fdata, faddr, slrd, slwr, sloe, ...
  • 异步FIFO 首先是比较好的博客资料: https://blog.csdn.net/MaoChuangAn/article/details/88783320 https://www.cnblogs.com/mikewolf2002/p/10945488.html ...
  • 同步fifo与异步fifo

    2019-05-29 18:29:00
    fifo_sync #(.FIFO_WIDTH(8), .ADDR_WIDTH(3), .FIFO_DEPTH(8)) fifo_inst(.clk(clk),.rst_n(rst_n),.wr_data(wr_data),.rq(rq),.wq(wq),.rd_data(rd_data),. full ( full ),.empty(empty)); always #10 clk = ~...
  • async fifo.7z

    2021-07-23 11:18:22
    异步FIFO设计(经典文档)
  • 对于GCD来说,所有的执行都放到队列中(queue),队列的特点是FIFO(先提交的先执行)。 GCD的队列分为几种,主队列(main),全局队列(global),用户创建队列(create) 对于全局队列,默认有四个,分为四个优先级 ...
  • 对于GCD来说,所有的执行都放到队列中(queue),队列的特点是FIFO(先提交的先执行)。 GCD的队列分为几种,主队列(main),全局队列(global),用户创建队列(create) 对于全局队列,默认有四个,分为四个优先级 ...
  • FPGA学习之FIFO

    2020-12-30 02:21:44
    FIFO是一种先进先出的电路,使用在需要产生数据接口的部分,用来存储、缓冲在两个一部时钟之间的数据传输。在一部电路中,由于时钟之间周期和相位完全独立,因为数据丢失概率不为零。使用FIFO可以在两个不同时钟域...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,501
精华内容 3,800
关键字:

async_fifo