altera DCFIFO IP核 功能仿真

来源:互联网 发布:asp sql 仓库管理系统 编辑:程序博客网 时间:2024/05/22 02:20

本文主要介绍用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中可读的数据个数
这里写图片描述

原创粉丝点击