注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

清风笑

开始,就是未来

 
 
 

日志

 
 

FPGA学习之QUARTUS II,MODELSIM使用和一些其他总结  

2013-01-07 21:22:20|  分类: FPGA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一.如何在QUARTUS II 中输入程序文件,生成网表及标准延时文件,然后通过MODELSIM 进行功能仿真与后仿真的过程,主要为图解,含全部代码及仿真波形。
工具:

源程序:
module sim(reset,clk_in,clk_o1,clk_o2);
input reset,clk_in;
output clk_o1,clk_o2;
reg clk_o2;
assign clk_o1 = clk_in;
always @(negedge reset or posedge clk_in) //
begin
if(!reset)
clk_o2 = 0;
else
clk_o2 = ~clk_o2;
end
endmodule
测试程序:
`timescale 1ns/1ns
module testsim;
reg reset,clk_in;
wire clk_o1,clk_o2;
sim aa(.reset(reset),.clk_in(clk_in),.clk_o1(clk_o1), .clk_o2(clk_o2));
//sim aa(reset,clk_in,clk_o1,clk_o2);
always
#5000 clk_in = ~clk_in;
initial
begin
clk_in = 0;
reset = 0;
#10000;
reset = 1;
#1000000 $stop;
end
endmodule
测试程序注意:
例化时,最好用名称关联的方法进行例化,我曾试过用位置关联的方法,但后仿真不正常。不知道是不是Modelsim 在语法上的要求。

一、 程序输入与网表、延时文件的生成,相关库文件的拷贝
在建立Quartus II 源文件时,选择modelsim 作为仿真工具,这个不详说了,设置完点击finish
输入文件sim.v,testsim.v,开始编译Start Complation,源文件在QII 的工程目录sim 下,
点击看大图
下图为生成的网表文件及延时文件,在目录QII 工程sim\simulation\modelsim\work,其中,maxii_atoms.v 是MAX II系列CPLD 的库文件,在QII 安装目录\quartus50\eda\sim_lib 下拷贝过来,同时,将sim 工程目录下的测试文件testsim.v 拷到该目录,为后仿真做准备。
点击看大图

二、 前仿真
1、选择QII 工程目录sim 为当前工作目录
点击看大图
2、编译源文件 sim.v , testsim.v

3、新建一个work 库

4、编译源文件 sim.v , testsim.v

5、将信号加到波形窗口

6、点击RUN ALL 按钮,进行仿真,功能仿真完成

三、 后仿真
1、前面已经生成相关网表、延时文件,并已经拷贝需要的文件了。现在,将工作目录变换到生成的网表文件、延时文件所在目录,这里为
..sim/simulation/modelsim并新建一个工作库,与功能仿真一样操作。

2、编译以下三个文件

3、选择菜单simulate —> start simulation。选择SDF 卡片,点击browse,选择延时文件sim_v.sdo Apply to Region 中,填写测试文件中例化用的名字,这里为aa。点击OK。

4、再选择Design 卡片页选择 WORK—>testsim点击OK,到下一步选择要显示的信号

5、将要显示的信号加入波形窗口。

6、点击RUN ALL,开始仿真,后仿真步骤完成

?

二.关于Quartusii编译综合后调用Medlsim仿真出错的解决方案

在用Quartusii编译综合后调用Medlsim仿真出现以下错时的解决方案:

vsim -novopt work_test.vtf_test
# vsim -novopt work_test.vtf_test
# Refreshing C:\altera\modeltech_6.5b\examples\work_test.vtf_test
# Loading work_test.vtf_test
# Refreshing C:\altera\modeltech_6.5b\examples\work_test.modelsim_test
# Loading work_test.modelsim_test
# Refreshing C:\altera\modeltech_6.5b\examples\work_test.maxii_io
# Loading work_test.maxii_io
# Refreshing C:\altera\modeltech_6.5b\examples\work_test.maxii_lcell
# Loading work_test.maxii_lcell
# Refreshing C:\altera\modeltech_6.5b\examples\work_test.maxii_asynch_lcell
# Loading work_test.maxii_asynch_lcell
# Refreshing C:\altera\modeltech_6.5b\examples\work_test.maxii_lcell_register
# Loading work_test.maxii_lcell_register
# ** Error: (vsim-SDF-3894) modelsim_test_v.sdo: CompiLED SDF file was not found.
# ** Error: (vsim-7) Failed to open SDF file "modelsim_test_v.sdo" in read mode.
# No such file or directory. (errno = ENOENT)
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "modelsim_test_v.sdo".
#??? Time: 0 ps? Iteration: 0? Region: /vtf_test? File: C:/altera/90/qdesigns/cpldstudy/Self/modelsim_test/simulation/modelsim/vtf_test.v
# Error loading design
# Optimization canceled

我悲剧的遇到了(⊙o⊙)…解决:如下:(我偷懒只完成了第二没想到也可以)

第一; 即可将用QuartusII先生成的.sdo文件考到与工程名同目录下,工程名的后缀名为.mpf

第二:建Project。把除sdf文件以外的文件添加到工程编译。然后打开start simulation对话框,选design页,选中testbench文件,再点开sdf页,添加sdf文件,选中左下角的两个选项(禁止警告,把错误变成警告)。继续仿真即可。

注:在QuartusII如何生成:.v文件.sdo(sdf)文件以及.vo文件在此就不在累述网上都有。以及Medlsim新建工程等也不在累述。

三.基于QuartusII 9.0功能仿真和时序仿真(高版本不支持)

2E4{JYTT_@6UB`66%FZF[@I

?

5CGJ9VFE)Q46UY`J{NWXKNQ

ZM81LC4CNP41SXQ[~2U_Y_A

NMGVKNOE8F2HSH{AP6)DJXK

?

4(FD34$XCU@S`Y1~XRHU5RH

%(U`K]HJ297ZXRR~}UOYK[B

]6[]`_GOEXC(ZWQ@9)@M[9W

注:综合后就可以进行时序仿真了

?

?

四.使用 Quartus 软件下载 FPGA 程序说明
1、连接计算机。将 FPGA 下载器 USB Blaster 的 USB 端口连接计算机 USB 口,
下载器的 10 芯端口插接至 FPGA 芯片插槽;
2、打开 Quartus 软件。双击桌面或单击开始菜单中软件图标 Quartus II 5.0

3、打开 FPGA 程序。点击菜单栏 File 下的 Open Project 选项

4、打开下载界面。点击菜单栏“Tools”下的“Programmer”选项,下载界面如
图 4。若下载器连接正常,则能点击“Start”按钮,否则按钮为灰色。

image

7、下载程序。点击“Start”按钮开始下载程序,界面中有一蓝色进度条显示下
载进度,下载完毕后界面如图 5,蓝色状态栏显示 100%(大约需要 10 秒钟);

8、断开连接。主板断电,然后断开下载器与主板的连接。

(具体见书第四章)

五.Quartus 的一些其他操作

1.quartus中怎么把自己编的程序生成一个模块符号?

FPGA学习之QUARTUS II,MODELSIM应用和一些其他总结 - 勤天 - 远方的寂静

然后新建原理图文件,双击原理图的空白处,就有了

FPGA学习之QUARTUS II,MODELSIM应用和一些其他总结 - 勤天 - 远方的寂静

2.QuartusII下查看RTL原理图的方法

Tool>>Netlist Viewers>>RTL Viewers

?

六.宏功能模块和IP应用

1.模块库(参数可设置,也是代码,不过一些内部设计看不到)

2.调用FPGA以及集成的模块,如乘法器

3.IP核

具体可以参考黑金动力社区NIOS2的那些事儿(NIOS2的配置以及下载说明)以及EDA书的第6章(构造FIR,ROM,RAM(构造的ROM,RAM可以用QuartusII写入数据),51IP核,模拟锁相环,乘法累加器等)

?

七.FPGA经验之查找表工作原理

81214002 发表于: 2007-5-02 23:26 来源: 半导体技术天地

由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺或者是基于FLASH工艺的查找表结构,通过每次烧写改变查找表内容的方法实现对FPGA的重复配置。
??????? 那么查找表取代与非门电路的原理是什么呢?我们知道,一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果,若我们事先将相应的结果存放于一个存贮单元,不就相当于实际了与非门电路的功能了吗?FPGA的原理正是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。
以例1为例,它的真值表如表1所示。我们只需用将输出y的值事先存放在一个1x16的SRAM或者FLASH中,然后用a、b、c、d做地址索引查找输出,就可以代替与门运算,得到等价的结果。
【例1】??????? 一个四输入与门电路
assign y = a&b&c&d;
???????????????????????????????????? 表1??????????????????????? 例1对应的真值表
???????????????????????????????????????????? 输入??????????????????????????????????????????????????????? 输出
a??????? b??????? c??????? d??????? y
0??????? 0??????? 0??????? 0??????? 0
0??????? 0??????? 0??????? 1??????? 0
0??????? 0??????? 1??????? 0??????? 0
0??????? 0??????? 1??????? 1??????? 0
0??????? 1??????? 0??????? 0??????? 0
0??????? 1??????? 0??????? 1??????? 0
0??????? 1??????? 1??????? 0??????? 0
0??????? 1??????? 1??????? 1??????? 0
1??????? 0??????? 0??????? 0??????? 0
1??????? 0??????? 0??????? 1??????? 0
1??????? 0??????? 1??????? 0??????? 0
1??????? 0??????? 1??????? 1??????? 0
1??????? 1??????? 0??????? 0??????? 0
1??????? 1??????? 0??????? 1??????? 0
1??????? 1??????? 1??????? 0??????? 0
1??????? 1??????? 1??????? 1??????? 1

还有芯片SRAM配置等具体可以参考EDA书的第二章

  评论这张
 
阅读(1908)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017