用ModelSim仿真SDRAM操作】的更多相关文章

之前写了两篇关于Modelsim仿真的blog,其中模块管脚的命名可能让人觉得有些奇怪,其实不然,之前的两篇内容都是为了仿真SDRAM操作做铺垫的. 由于SDRAM的仿真过程相对比较复杂,也比较繁琐.故可能需要不止一篇blog来完成. 在开始仿真之前,如果对SDRAM原理以及时序不是很了解的朋友,推荐看一下如下这篇文章: SDRAM-高手进阶,终极内存技术指南——完整进阶版 OK,下面正式开始仿真的过程. 通过看内存技术指南,我们大概可以总结出SDRAM的工作过程: 上电后进入200us的输入稳…
ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发方面的初学者,那么这个教程一定能够帮助你在仿真技术上越过新人的台阶:如果您是FPGA开发的老手,这篇文档也并非对您没有帮助,您可以把教程发给其他刚入门的同事,免去您亲自上阵指导的麻烦,把主要的精力放在更有价值的地方. 一.FPGA设计仿真验证简介 严格来讲,FPGA设计验证包括功能仿真.时序仿真和电…
1. 算法介绍 CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲线.指数.对数的计算.该算法通过基本的加和移位运算代替乘法运算,使得矢量的旋转和定向的计算不再需要三角函数.乘法.开方.反三角.指数等函数,计算向量长度并能把直角坐标系转换为极坐标系.因为Cordic 算法只用了移位和加法,很容易用纯硬件来实现,非常适合FPGA实现. CORDIC算法完成坐标或向量…
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/alinx/p/3362790.html <FPGA那些事儿-Modelsim仿真技巧>REV1.0 PDF下载地址: http://www.heijin.org/forum.php?mod=viewthread&tid=22419&extra=page%3D1 前 言 第一章 仿真的…
modelsim仿真include文件会出现找不到文件的情况,这是因为include文件路径有两种,一种是相对路径,另一种是绝对路径. 相对路径: 如果 ‘include "primitive.v"文件放在测试文件tb的当前目录中,则在工程.v文件中只需写 ‘include "primitive.v"就可以仿真了. 绝对路径: 如果 ‘include "primitive.v"文件没放在测试文件tb的当前目录中,则在工程.v文件中需写如 `inc…
在quartus调用modelsim仿真过程中,出现了一个错误,如下所示: Check the NativeLink log file I:/Quartus11.0/Myproject/testi_nativelink_simulation.rpt for detailed error message 如果modelsim在quartus中的路径设置对的,那么就是.v程序有问题,或程序中含有中文字体没注释掉.…
这两天做综合后仿真,发现FPGA器件库又不会加了,无奈上网找方法.说起来不好意思,很早就接触Modelsim这个仿真软件了,可是没有好好琢磨.把这两天找的方法贴出来,再加上自己的理解,以后忘了可以上博客翻翻,也适合新手看.(这个办法是quartusII综合完后启动Modelsim仿真综合后的网表,要是quartusII里直接启动Modelsim需不需要加库不清楚,我没试过) -----------------------------------转载分割线---------------------…
modelsim 仿真时出现无限迭代(iteration reach limitation) 出现这种故障的原因:  一般都是代码里出现的组合逻辑无限循环或者组合逻辑A产生signal_A,signal_A又通过组合逻辑产生signal_B,signal_B又通过组合逻辑产生signal_C,signal_C又通过组合逻辑产生signal_A(这样就形成了组合逻辑的无限循环),就会导致这个故障出现.类似: always(*) begin signal_A=~signal_A; end 出现这种故…
在使用Verilog编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示(如IDLE等).当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,如下面所示,这种显示形式不是很直观,但我们可以使用ModelSim提供的命令将状态机变量以“文本”形式的参数名显示,从而有利于调试. 下面以一个实例来说明. 代码来源:http://www.cnblogs.com/oomusou/archive/2011/06/05/fsm_coding_style.html 源文件:…
本文章详细介绍了怎样用ModelSim仿真Verilog,虽然只是很简单的一个二分频器的例子,但却正式小白入门所需要的. 本教程以ModelSim SE 10.4为例 1. 新建工程 file->new->project,输入工程名 例如half_clk 2. 新建文件 新建二分频器模块文件和testbench文件,分别为half_clk和half_clk_tb,注意type选择Verilog. 3. 编写模块文件和激励文件内容 half_clk.v half_clk 1 2 3 4 5 6…
困住整整一周了,工作进行不下去,中午偶遇导师,指导意见是有两种可能: 1.  FPGA编译器优化代码,可以考虑把综合过程中所有的warning排查一下 2.  verilog里有不可综合的语句. 又及,原有的功能模块完全正确,自己改写的不行,导师说那是自己写的时序不对,仿正确的模块看modesim里自己写的和正确的模块时序差在哪里,修改自己的. 添加各种(*keep="true"*),未果 排查所有warning,没看到会和这个问题相关 相信大神导师写的代码不会有问题 一下午加晚上各种…
好久没再用过modelsim,都忘的一干二净了.刚换了份工作,又要重新拾起来,不过现在感觉modelsim的仿真其实是比较快的,很有用处.再者这么长时间老是学了忘,忘了再学,觉得真浪费时间,平时确实应该好好总结下的,关于modelsim的仿真这一次一定要系统的总结出来,顺便再练下写文档的能力. modelsim仿真方法1:用modelsim直接建立工程. 1.建工程 输入工程名,选择工程路径. 添加源文件及测试文件. 在这里为什么要选择第二项,我也不在了然的,改天再查下. 文件添加进来之后就是编…
1.modelsim经常遇到数据位宽不相等的情况,这样往往仿真时是不会出数据的,如果用parameter定义了数据的位宽, 要注意实际的位宽数大于parameter定义参数能表示的位宽时,如: parameter WIDTH = 5'd46,要注意5位的数据宽度最大能表示的数是31,46已经溢出. 2.# ** Warning: (vsim-3015) F:/Company_Prj/Date201409/LowCost/ICS_MyPrj/Src/aic_fir_2ch_64x.v(182): …
前两天在群里看到有朋友说Vivado级联Modelsim仿真出现修改设计代码后重新run do文件,波形没有随着代码修改而改变,这个问题博主之前没有注意到,因为把Vivado和Modelsim级联好后还没有试过仿真过,不过用ISE级联好后,修改设计代码,可以直接重新run do文件进行仿真,不必关闭Modelsim. 对于这个问题博主打开Vivado工程目录下生成的do文件看了下. 我们需要run的是这个xxx_simulate.do文件,打开看下里面内容. 发现这里面没有,编译库和编译文件的脚…
1. 在QuartusII中生成rom的初始化文件,可以是hex,也可以是mif.MIF文件的格式很简单明了,所以我一向都是用MIF. 2.下载convert_hex2ver.dll文件,convert_hex2ver.dll就是把hex文件转换成ModelSim 能认出来的ver文件的动态链接库文件.新版本的QuartusII中已经不带此文件了.需要在网上找一份.(老版本 的软件里带了此文件(路径:quartusXX/eda/mentor/modelsim/),应当可以用.) 3.将conve…
2021年11月15日 00 安装包/版本 我是提前在网上下好的(但这一点也给我的实验造成了"麻烦"),用的是Modelsim SE-64 2020.4版本的,学校实验室的似乎不同.但最终没有太大影响. 01 配置环境步骤 学校有一个文档,在机房电脑照做就行.我因为是自己下载的,配置与机房软件有所不同,所以又平添了很多麻烦. 01-0 verilog文件 这个代码可以在很多地方编写:Visual Studio Code里有Verilog的插件:还可以有更强大的语言编辑器:Nodepad…
对于 lattice  Diamond 与 modelsim 的联合仿真,我总结了一句话,那就是—— 难者不会,会者不难.  也许刚开始 觉得 摸不着 头脑,但是 一旦学会 感觉还是很简单和直观的. 直接进入正题, 仿真第一步 : 建立仿真库. 在正确安装了Diamond  和 modelsim  之后,就是先要建立自己的 lattice 仿真的库文件: 1.打开 modelsim 的 安装目录,在其目录下 打开 modelsim.ini 的属性,去除其只读性. 2.在modelsim 安装目录…
如果在不需要波形,只需要快速知道结果的情况下,可以用优化选项.这适用于做大量case的仿真阶段.因为这一阶段多数case都是通过的,只需要快速确认即可,然后把没通过的case拿出来做全波形的仿真调试. 根据“Quick Reference Guide for Increasing Performance”,经典的办法是 3-step method1) Compile2) Optimize3) Simulate 脚本如下vlib workvlog *.vvopt -o testbench_opt…
现象 在vivado2018.3下生成了RAM IP,丢到modelsim中仿真发现doutb输出均为0.调整AB端口的时钟速率,发现低于5ns不行,输出为0.但5ns以上正常. 解决方法 比对了vivado自带的仿真和modelsim的仿真,时钟设置过小的时候,结果均为0.排除软件问题. *延长RAM空闲时间,之后才去操作,避免内部还没有初始化完成就去操作.真是老了,犯这个错误,哈哈. 以上…
STEP1:创建一个工程,实现并编译该工程,编写TestBench文件. STEP2:设置启动Modelsim的路径 选择Nios II菜单Tools->Options..,在弹出的界面中,选择Modelsim的安装路径. STEP3:选择仿真软件 选择菜单Assignments->Settings..,在弹出的界面选择Tool name为ModelSim. STEP4:选择测试代码文件 如下图所示选择,单击Test Benches 单机New 填写Test bench name,找到File…
(1)出现“Fatal: SDF files require Altera primitive library”  书上的方法是在ModelSim-SE下的使用,而我用的是ModelSim-Altera,和ModelSim-SE的使用存在差别:     使用ModelSim-Altera,需将D:\Altera\modelsim_ae\altera\verilog\cycloneii(对应相应型号我用的是CYCLONEII)内的全部文件(编译好的库)拷贝到自己工程项目下的..\simulatio…
Modelsim的仿真,如果一直使用图形界面建工程,编译,仿真,一个个加入观察波形的话,未免复杂了一些,尤其是当工程较大,需要观察的信号较多时,下面贴出一些常用的tcl脚本命令和wave.do常用语法:   vsim.tcl仿真脚本: vlib compress_lib vmap compress_lib compress_lib   set verilog_file_list [ glob verilog/compress/*.v ]   foreach i $verilog_file_lis…
①仿真精度越高,仿真效率月底. 仿真时采用`timescale 1ns/1ns比采用1ns/100ps的仿真效率高 simulation was two billion ns. ②clock generation coding tips (from<A BFM Simulation Strategy for Verilog>) ②减少层次结构 在设计中层次结构越少,仿真速度越快,这是因为参数在module中通过端口传递会消耗仿真器的时间 ③进程越少,仿真效率越高 代码中出现的进程越少,仿真越快…
对SDRAM基本概念的介绍以及芯片手册说明,请参考上一篇文章SDRAM操作说明. 1. 说明 如图所示为状态机的简化图示,过程大概可以描述为:SDRAM(IS42S16320D)上电初始化完成后,进入"空闲"状态,此时一直监控外部控制模块给予的控制信号.初始化完成后,外部定时器开始定时,定时周期为SDRAM刷新周期(7.7us),一旦计数到刷新周期后,向状态机发送auto_ref_req(自动刷新请求),此时状态机进入"刷新"状态,这样就确保在无任何操作时,SDRA…
#“#”为注释 #删除原有工程,需重启Modelsim #vdel -all -lib work #退出当前仿真 quit -sim #清空命令行显示 .main clear #创建库,是实际存在的物理库 vlib ./lib vlib ./lib/design_workvlib ./lib/sim_workvlib ./lib/altera_work #映射逻辑库到指定的物理库 vmap d_work ./lib/design_workvmap s_work ./lib/sim_workvma…
用Quartus Prime 15.1调用modelSIM进行RTL仿真,modelSIM的transcript框框总是有Failed to Open Readmem File提示. 错误原因:IP核参数设定的Megawizard界面,HEX文件(或MIF文件)路径的写法是正斜杠/,windows下要用反斜杠. 解决办法:将路径的/全部改成\即可.…
实验现象: 通过仿真波形,分析输入与输出的关系,可以清晰的看到所添加信号波形的变化与程序所写的一致. 核心代码: module modelsim( input CLK_12M, output FPGA_LEDR ); //-------------------------rst_n-----------------------// :]cnt_rst = 'd0; 'd0; always@(posedge CLK_12M) //产生复位信号 begin 'd10) begin rst_n <=…
quarutsii调用modelsim实际是相对比较简单的.因为不需要选择要编译的库. 调用前的设置:设置调用的工具,也就是下面的Tool name,选择仿真语言,在这里选择为Verilog HDL,另外还有时间精度.时间精度是: 注意:测试脚本也要添加到工程中去的 Top level module in test bench指的是测试脚本的名称. Test bench name 是随便取的 Use test bench to perform VHDL timing simulation 前面的…
网上的关于DO文件的编写好像资料不多,比较杂,所以本人总结一下常用的简单语法,方便大家查看.其实本人也刚接触DO文件没多久,有纰漏很正常,欢迎指正批评,互相学习.PS:写得有点乱   还有一个值得注意的是 我在看到这篇文章的时候我正在仿真一个verilog文件,文件中调用了一个ROM , 但是我怎么仿真 rom的输出文件都有问题, 经过一个QQ好友的指点,我发现竟然是我 QUARTUS 下考过来的库文件 有问题, 自此提醒遇到过此问题 但还没有解决的同学.. 一.DO文件的简介和工作方式 DO文…
到现在不管fir ip 用的对不对,但是在使用modelsim是可以仿真fir ip的. 具体步骤: 1.仿真库,添加到modelsim目录配置文件: 2.将这个文件中的: :List of dynamically loaded objects for Verilog PLI applications:Veriuser = D:/modeltech64_10.2c/convert_hex2ver.dll 改成如下: List of dynamically loaded objects for V…