altera DCFIFO IP核 功能仿真

xiaoxiao2021-02-28  10

本文主要介绍用altera-modelsim 对altera的DCFIFO IP核进行功能仿真 fifo在程序中常用的有两种功能: (1) 跨时钟域进行数据传输; (2)不同位宽数据进行转换。 首先在altera官网上 下载 dcfifo_design_example 例程。利用该工程来进行DCFIFO的功能仿真,DCFIFO即 dual clock fifo 双时钟fifo,读和写fifo用两个不同的时钟。 该例程实现的是数据从rom 发送到ram,而rom模块和ram模块处于不同的时钟域,所以就用了dcfifo来实现不同时钟域的数据传输。整体设计框图如下,可以看出dcfifo左边部分时钟用的是trclk,而右边用的是rcvclk。中间用了DCFIFO来做不同时钟域转换。

1、首先打开altera-modelsim软件,左键File->左键Change Directory

2、弹出下面的窗口,找到你的工程文件目录,点击 确定 按钮。这样就把路径修改到你的工程文件夹下了。

3、左键Tools->Tcl->Execute Macro…

4、弹出下面的窗口,选择dififo_de_top.do文件,点击 打开 按钮 altera-modelsim就会自动开始进行编译 ,添加波形等操作,之后就会自动弹出 Wave 窗口,从这里面就可以看到DCFIFO波形仿真的结果了。 (.do格式的文件 里面是用tcl 语言写的自动化运行脚本,这样就不用我们手动地去点击altera-modelsim窗口里的按钮进行仿真文件添加,编译,添加波形等操作了)

5、仿真波形,如下。

附: 1、在例化fifo时,有两种读fifo模式 Normal Mode 和Show-Ahead Mode (1)Normal Mode: 读数据在发送读请求后 才会输出。如下图,数据00000001在rdreq 信号为高后才从q 输出。 (2)Show-Ahead Mode:数据在没有发送读请求时就已经输出。如下图,数据00000001在发送rdreq 前就已经从q 输出了。这种方式的好处就是我不用发送读请求就能去读到数据的值。

2、输入输出fifo的数据位宽不同 (1)写数据位宽16,读数据位宽8。注意:写入数据 16’hFF01,读数据时是先输出的写入数据的低8位,8’h01,再输出写入数据的高8位8’hFF。wrusedw指的是fifo中有多少个写入的数据。 (2)写数据位宽8,读数据位宽16。注意:写入两个八位数据 8’h01,8’h02,读数据时输出是16’h0201。即先写入的数据 8’h01,是输出数据的低8位,后写入的数据8’h02是是输出数据的高8位。rdusedw指fifo中可读的数据个数

转载请注明原文地址: https://www.6miu.com/read-1600101.html

最新回复(0)