调用altera IP核的仿真流程—上

在学习本节内容之后,请详细阅读《基于modelsim-SE的简单仿真流程》,因为本节是基于《基于modelsim-SE的简单仿真流程》的基础上进行设计的,关于设计仿真流程的过程所涉及到的重复内容将不再详述,将会一笔带过,如果深入学习了《基于modelsim-SE的简单仿真流程》这一小节,则下面的内容将会非常的简单。

编写RTL功能代码

本小节通过调用altera的ROM宏功能模块,FPGA的ROM模块主要用于存储数据,可以在上电的时候进行写入(下载),ROM模块主要包含三个信号:时钟、地址、数据,在时钟的驱动下,往ROM写入地址,则ROM的数据端就会输出对应地址所存储的数据。采用《基于modelsim-SE的简单仿真流程》所设计的8bit计数器产生的8bit计数值作为ROM模块的地址信号,对ROM进行寻址,输出ROM中存储的数据。

在8bit计数器模块和ROM模块的基础上,新建一个RTL文件,对这两个模块进行信号映射并将ROM输出的数据信号进行输出。设计的结构如下所示:

这里如何调用altera的ROM宏功能的过程就不详细说明了,这里简单说明ROM模块的参数设置,数据位宽为8bit,存储深度为256,如下图所示。

数据输出不经过寄存器

对ROM的原始存储文件进行设置,将sin.mif文件作为原始存储数据,sin.mif文件存储256个正弦波的数据,数据位宽和ROM的数据位宽一致。

编写顶层RTL文件,将两个模块连接起来,代码如下所示

module rom_top(

clk,

reset_n,

rom_data

);

input clk;

input reset_n;

output [7:0]rom_data;

wire[7:0]counter_out;

counter counter_1(

.clk (clk),

.reset_n (reset_n),

.counter_out(counter_out)

);

rom rom_1(

.address (counter_out),

.clock (clk),

.q (rom_data)

);

endmodule

编写testbench代码

Testbench文件采用1 ns/ 10 ps的时间单位和时间精度,该文件的激励输入信号只需要对时钟信号和复位信号进行赋值,同时输出信号是rom中存储的正弦信号。如下所示。

Testbench代码:

`timescale 1 ns/ 10 ps

module rom_tst();

// constants

// general purpose registers

// test vector input registers

reg clk;

reg reset_n;

// wires

wire [7:0]rom_data;

rom_top rom_top_1(

.clk (clk),

.reset_n (reset_n),

.rom_data (rom_data)

);

initial

begin

// code that executes only once

// insert code here --> begin

clk<=1'b0;

reset_n<=1'b0;

// --> end

$display("Running testbench");

end

always

// optional sensitivity list

// @(event1 or event2 or .... eventn)

begin

// code executes for every event on sensitivity list

// insert code here --> begin

#10 clk<=~clk;

reset_n<=1'b1;

// --> end

end

endmodule

创建工程

运行 ModelSim,方法是点击开始->程序->ModelSim SE->ModelSim 或双击桌面上的快捷方式,会出现如下图所示的界面,如果上一次使用ModelSim 建立过工程,这时候会自动打开上一次所建立的工程;

点击 File->New->Project,会出现如下图所示的界面。

选择project后,会出现如下界面在 Project Name 中我们输入建立的工程名字为rom,在Project Location 中点击browse按键,选择工程保存的路径,注意 ModelSim 不能为一个工程自动建立一个目录,这里最好是选择已经创建好的一个工程文件夹作为目录,在 Default Library Name 中为我们的设计编译到哪一个库中,这里使用默认值,这样,在编译设计文件后,在 Workspace 窗口的 Library中就会出现 work 库。这里我们输入完以后,点击 OK。

在点击OK按键后会出现选择仿真文件的界面,如下图所示,可以点击不同的图标来为工程添加不同的项目,点击 Create New File 可以为工程添加新建的文件, 点击 Add Existing File为工程添加已经存在的文件,点击 Create Simulation 为工程添加仿真,点击Create New Folder 可以为工程添加新的目录。这里我们点击Add Existing File;

这里将前面设计的counter.v文件、rom.v、rom_top.v、rom_tst.v 文件包含进工程里面,同时由于调用了Altera的IP核所以需要将IP核库文件包含进行来,该文件为altera_mf.v也包含到工程中(可以在quartus的安装目录下的eda/sim_lib文件夹下面找到这个文件)。点击browse按键,将文件包含进来,如下图所示,然后点击ok按键。

接着会在modelsim的工程工作窗口出现如下图所示,即已经将两个文件包含进来,其中在状态那一栏出现问号,表明文件包含进来了,还没有进行编译。

每日推送不同科技解读,原创深耕解读当下科技,敬请关注微信公众号“科乎”。

调用altera IP核的仿真流程—上的更多相关文章

  1. 调用altera IP核的仿真流程—下

    调用altera IP核的仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile All是 ...

  2. Vivado 调用自定义IP核

    关于Vivado如何创建自定义IP核有大量的参考文章,这里就不多加阐述了,本文目的主要是解决如何在新建工程中引用其它工程已经自定义封装好的IP核,从而实现自定义IP核的灵活复用. 举个例子,我们的目标 ...

  3. Altera三速以太网IP核快速仿真与使用(上篇)

    对于比较高级的ip核,altera一般都会提供仿真案例,网上有关于这个IP核的各种仿真方法,但都比较繁琐,前几日,朋友跟我分享了一个比较快速高效的仿真方法,这个方法也是他摸索折腾了一段时间才总结出来的 ...

  4. altera DDR2 IP核之仿真

    在生成的IP核文件夹下,有一个testbench文件夹,里面包含了一个example测试激励和DDR2仿真模型. 如下 20 -rw-r--r-- 1 Administrator 197121 171 ...

  5. modelsim 独立仿真vivado的IP核及仿真脚本

    Modelsim独立仿真vivado的IP 最近一直在做local dimming项目的FPGA硬件实现,算法的其中一步就是直方图统计,即数字图像的某一灰度级的像素数,这个直方图的源码找了半天才搞到, ...

  6. 基于modelsim-SE的简单仿真流程—上

    基于modelsim-SE的简单仿真流程 编写RTL功能代码 要进行功能仿真,首先得用需要仿真的模块,也就是RTL功能代码,简称待测试的模块,该模块也就是在设计下载到FPGA的电路.一个电路模块想要有 ...

  7. FPGA分频与倍频的简单总结(涉及自己设计,调用时钟IP核,调用MMCM原语模块)

    原理介绍 1.分频 FPGA设计中时钟分频是重要的基础知识,对于分频通常是利用计数器来实现想要的时钟频率,由此可知分频后的频率周期更大.一般而言实现偶数系数的分频在程序设计上较为容易,而奇数分频则相对 ...

  8. altera ip 核小究

    用quartus的MegaWizard工具生成一个乘法器multiplier,会在工程目录下产生 multiplier.qip    (可选) multiplier_bb.v  (可选) multip ...

  9. 基于modelsim-SE的专业进阶仿真流程

    基于modelsim-SE的专业进阶仿真流程 通过<基于modelsim-SE的简单仿真流程>和<调用altera IP核的仿真流程>是否感受到仿真流程中的繁琐步骤,特别是在m ...

随机推荐

  1. Django admin美化插件suit应用[原创]

    前言 由于比较懒,自己弄了一个用户验证,没有自己写后台,用了django自带的user认证,并通过admin直接进行管理,但默认的admin并不漂亮,于是使用了这个django-suit插件,效果对比 ...

  2. ASP.NET MVC传递参数(model)

    一看到此标题,相信你也会.因为路由是可以从URL地址栏传过去的. 但是Insus.NET不想在地址栏传递,还是一个条件是jQuery的Ajax进行POST的.Insus.NET不清楚别人是怎样处理的, ...

  3. jQuery Lightbox图片放大预览

    简介:jQuery Lightbox图片放大预览代码是一款可以在用户点击页面中的小图片时,将该图片的高清版本以Lightbox的方式放大显示在页面的中间,提高用户的体验度. 效果展示 http://h ...

  4. 来玩Play框架03 模板

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在上一章节中,我把字符串通过ok()返回给客户.我可以把一个完整的html页面放入 ...

  5. (转)配置Log4j(很详细)

    来自:http://blog.csdn.net/yttcjj/article/details/37957317 Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存 ...

  6. Position属性四个值:static、fixed、relative、absolute的区别和用法

    1.static(静态定位):默认值.没有定位,元素出现在正常的文档流中(如果设置 top, bottom, left, right, z-index这些属性就不起做作了). 2.relative(相 ...

  7. 在网站开发中很有用的8个 jQuery 效果【附源码】

    jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 JavaScript 的方式.它简化了 HTML 文档遍历,事件处理,动画和 Ajax 交互,而且有成千上万的成熟 jQuer ...

  8. BCS datetime 时间区间问题

    BCS 整合sql表时发现以下问题: datetime字段在列表中带了时区,比如插入12-6号的数据,在sql中显示的是12-5 date类型字段无法正确识别,插入成功但报错 LobSystem (外 ...

  9. Windows Server2008 下用于.NET Framework3.0版本的问题无法在IIS7中配置.NET Framework4.0节点的问题

    Windows Server 2008中,功能列表安装的为.NET Framework3.0. 试了N种方法未升级为.NET Framework4.0(哪位如果可以直接升级为4.0或3.5希望能够分享 ...

  10. [Android]使用Dagger 2依赖注入 - 图表创建的性能(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5098943.html 使用Dagger 2依赖注入 - 图表创 ...