调用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. 快速开发基于 HTML5 网络拓扑图应用

    采用 HT 开发网络拓扑图非常容易,例如<入门手册>的第一个小例子麻雀虽小五脏俱全:http://www.hightopo.com/guide/guide/core/beginners/e ...

  2. ASP.NET MVC5 ModelBinder

    什么是ModelBinding ASP.NET MVC中,所有的请求最终都会到达某个Controller中的某个Action并由该Action负责具体的处理和响应.为了能够正确处理请求,Action的 ...

  3. c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】

    字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...

  4. 有点激动,WPF换肤搞定了!

    一如既往没废话! wpf桌面应用开发都是window内引入很多个UserControl. 如果你有通过不同颜色来换肤的需求,那么下面我就将整个过程! 分2个步骤: 1.主窗体背景色替换: 2.同时界面 ...

  5. 数据结构:优先队列 基于list实现(python版)

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: Minion-Xu #list实现优先队列 class ListPriQueueValueE ...

  6. 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  7. 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  8. Java设计模式 -- 基本原则

    这两个星期开始系统地学习设计模式相关的知识,对每一个原则或者设计模式主要从下面几点分析学习: 定义:简单地描述其作用 解决问题:说明该原则或设计模式解决什么限制条件下的问题. 结构图:绘制相关例子的U ...

  9. 一步步实现ABAP后台导入EXCEL到数据库【3】

    在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...

  10. Hadoop学习日志- install hadoop

    资料来源 : http://www.tutorialspoint.com/hadoop/hadoop_enviornment_setup.htm Hadoop 安装 创建新用户 $ su passwo ...