Lattice联合ModelSim仿真FIFO

  • 前言
  • 一、添加IP
  • 二、库文件添加
    • (一)方式一:添加器件库到ModelSim
    • (二)方法二:直接添加器件库到Libray,和tb.v在同一个目录下仿真
  • 三、仿真
    • (一)仿真文件
    • (二)仿真结果

前言

本实验FPGA基于LFE5U—25F一6BG256C,软件Lattice Diamond 3.10 (64-bit)ModelSim SE-64 10.5
掌握基本使用方法后,调用FIFO的IP核,用Lattice联合ModelSim仿真。


一、添加IP

1.项目器件设置
具体参考02_LATTICE入门篇之新建项目


2.IP核配置
具体参考05_LATTICE入门篇之IP核



二、库文件添加

(一)方式一:添加器件库到ModelSim

此处参考Modelsim添加Lattice库
1.在modelsimF:\modeltech64_10.5目录下,新建一个文件夹,比如lattice,并进入此文件夹
2.新建一个名为sim.tcl的文本文件,输入如下脚本:

set DIAMOND_PATH F:/lscc/diamond/3.10_x64/cae_library/simulation/verilogvlib work
vlib ec
vlib ecp
vlib ecp2
vlib ecp3
vlib ecp5u
vlib lptm
vlib lptm2
vlib machxo
vlib machxo2
vlib machxo3l
vlib pmi
vlib sc
vlib scm
vlib xp
vlib xp2vlog -work ec       $DIAMOND_PATH/ec/*.v
vlog -work ecp      $DIAMOND_PATH/ecp/*.v
vlog -work ecp2     $DIAMOND_PATH/ecp2/*.v
vlog -work ecp3     $DIAMOND_PATH/ecp3/*.v
vlog -work ecp5u    $DIAMOND_PATH/ecp5u/*.v
vlog -work lptm     $DIAMOND_PATH/lptm/*.v
vlog -work lptm2    $DIAMOND_PATH/lptm2/*.v
vlog -work machxo   $DIAMOND_PATH/machxo/*.v
vlog -work machxo2  $DIAMOND_PATH/machxo2/*.v
vlog -work machxo3l $DIAMOND_PATH/machxo3l/*.v
vlog -work pmi      $DIAMOND_PATH/pmi/*.v
vlog -work sc       $DIAMOND_PATH/sc/*.v
vlog -work scm      $DIAMOND_PATH/scm/*.v
vlog -work xp       $DIAMOND_PATH/xp/*.v
vlog -work xp2      $DIAMOND_PATH/xp2/*.v

3.运行脚本
打开命令提示符进入sim.tcl 所在F:\modeltech64_10.5\lattice目录下
运行脚本

vsim -do sim.tcl

4.回到modesim主目录:F:\modeltech64_10.5,找到modelsim.ini文件,右键->将“只读”属性去掉。


5.然后再打开modelsim.ini,在[Library]这个标签后,添加如下:

ec       = $MODEL_TECH/../lattice/ec
ecp      = $MODEL_TECH/../lattice/ecp
ecp2     = $MODEL_TECH/../lattice/ecp2
ecp3     = $MODEL_TECH/../lattice/ecp3
ecp5u    = $MODEL_TECH/../lattice/ecp5u
lptm     = $MODEL_TECH/../lattice/lptm
lptm2    = $MODEL_TECH/../lattice/lptm2
machxo   = $MODEL_TECH/../lattice/machxo
machxo2  = $MODEL_TECH/../lattice/machxo2
machxo3l = $MODEL_TECH/../lattice/machxo3l
pmi      = $MODEL_TECH/../lattice/pmi
sc       = $MODEL_TECH/../lattice/sc
scm      = $MODEL_TECH/../lattice/scm
xp       = $MODEL_TECH/../lattice/xp
xp2      = $MODEL_TECH/../lattice/xp2

6.保存modelsim.ini,然后关闭刚modelsim重启,看到库的情况如下:


7.回到modesim主目录:F:\modeltech64_10.5,找到modelsim.ini文件,右键->增加“只读”属性。

:这个方法添加了器件库后,编译没有问题,但是新建库仿真跑波形又会报错提示找不到对应的库对应.v了,很奇怪。猜测可能是添加的库文件.v和需要仿真的.v不在同一个Libray中,也可能是其他.所以用了下面的方法,解决。


(二)方法二:直接添加器件库到Libray,和tb.v在同一个目录下仿真

此处参考Lattice Diamond与modelsim联合仿真环境设置

1… 选中空库(work))

2.点击modelsim的菜单栏中选择Compile >> Compile
3.找到F:\lscc\diamond\3.10_x64\cae_library\simulation\verilog目录下对应器件库ecp5u下的所有.vCtrl+A全选点击Complie,编译完成点击Done


5.完成后可以看见库文件和tb文件全在同一个Library下了,再仿真,没有报错了。

除了找仿真文件tb.v的时候有点麻烦,其他的没什么问题。


三、仿真

下面是利用脚本进行仿真

(一)仿真文件

1.再添加ip时,Diamond会自动添加仿真文件,只需略微修改即可或者不修改也行。


2.tb文件,放到项目仿真目录下

`timescale 1 ns / 1 psmodule tb;GSR GSR_INST (.GSR(1'b1));PUR PUR_INST (.PUR(1'b1));reg [7:0] Data = 8'b0;reg WrClock = 0;reg RdClock = 0;reg WrEn = 0;reg RdEn = 0;reg Reset = 0;reg RPReset = 0;wire [7:0] Q;wire Empty;wire Full;integer i0 = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;fifo u1 (.Data(Data), .WrClock(WrClock), .RdClock(RdClock), .WrEn(WrEn), .RdEn(RdEn), .Reset(Reset), .RPReset(RPReset), .Q(Q), .Empty(Empty), .Full(Full));initialbeginData <= 0;#100;@(Reset == 1'b0);for (i1 = 0; i1 < 515; i1 = i1 + 1) begin@(posedge WrClock);Data <= Data + 1'b1;@(posedge WrClock);endendalways#5.00 WrClock <= ~ WrClock;always#5.00 RdClock <= ~ RdClock;initialbeginWrEn <= 1'b0;#100;@(Reset == 1'b0);for (i4 = 0; i4 < 515; i4 = i4 + 1) begin@(posedge WrClock);#1  WrEn <= 1'b1;@(posedge WrClock);#1  WrEn <= 1'b0;endWrEn <= 1'b0;#200;$stop;endinitialbeginRdEn <= 1'b0;@(Reset == 1'b0);@(WrEn == 1'b1);@(WrEn == 1'b0);for (i5 = 0; i5 < 515; i5 = i5 + 1) begin@(posedge RdClock);#1  RdEn <= 1'b1;@(posedge RdClock);#1  RdEn <= 1'b0;endRdEn <= 1'b0;#200;$stop;endinitialbeginReset <= 1'b1;#100;Reset <= 1'b0;endinitialbeginRPReset <= 1'b1;#100;RPReset <= 1'b0;end
endmodule

3.脚本文件top.do

vlib work
vmap work work#编译testbench文件
vlog ../sim/tb.v#编译     设计文件
vlog ../ip/Clarity/fifo/fifo.v#添加库文件#指定仿真顶层
vsim -novopt work.tb
#添加信号到波形窗
add wave -position insertpoint sim:/tb//*

(二)仿真结果

对照参考Lattice系列内存时序
六、双端口FIFO(FIFO_DC) – 基于 EBR 或 LUT

1.写入第一个数据
WrEn=1:Wrclock上升沿写入第一个数据Data=8’d1


2.读出数据
RrEn=1:Rrclock上升沿写入第一个数据Q=8’d1


3,关于empty
empty延迟了两个周期生效


Lattice库联合ModelSim仿真FIFO相关推荐

  1. 紫光同创 FPGA 开发跳坑指南(三)—— 联合 Modelsim 仿真

        Modelsim 是 FPGA 开发中重要的 EDA 设计仿真工具,主要用于验证数字电路设计是否正确.紫光 Pango Design Suite 开发套件支持联合 Modelsim 仿真,这里 ...

  2. 基于FPGA的DDS算法实现(可调幅值,附ISE联合Modelsim仿真结果)

    基于FPGA的DDS算法实现(附ISE联合Modelsim仿真结果) 声明:这篇博客是在充分参考前人成果的基础上写成的,如有侵权,请联系我作进一步处理.此外,这是我第一次写博客,描述不准确之处敬请指出 ...

  3. ISE联合Modelsim仿真失败的解决办法

    问题: ISE联合Modelsim进行功能仿真,但是Moldelsim唤起失败,显示错误为:编译库的路径未包含.如下: 解决: 由报错信息,错误原因为:编译库的路径未包含.需要添加编译库路径: 点击P ...

  4. Vivado联合ModelSim仿真设置(附图步骤)

    目录 1.在Vivado中生成lib 2.生成库的选择 3.点击Compile,即可开始生成库文件 4.在Vivado中添加ModelSim调用设置 5.将Vivado的仿真库添加到ModelSim中 ...

  5. QUARTUS联合modelsim仿真(quartus13.0)

    设置仿真软件(Modelsim/ Modelsim-Altera)路径 (1)点击tools ->Options (2)选择EDA Tool Options PS:看自己情况设置,使用独立Mod ...

  6. QuartusII联合modelsim仿真时调用两个模块如何设置

    在QuartusII中Setting中simulation下添加Test bench如下图所示: 在Test bench中添加需要仿真调用的两个子模块代码如下图所示: 添加完后即可仿真!

  7. 【调用IP宏文件进行仿真】modelsim仿真时出现 Instantiation of 'xxx' failed. The design unit was not found....

    出现错误类似:modelsim 仿真fifo时出现 Error: (vsim-3033) E:/Programs/ModelSim/fifo/ps2_fifo.v(75): Instantiation ...

  8. Lattice Diamond与modelsim联合仿真环境设置

    Lattice FPGA开发环境在仿真时可以使用modelsim,相比于Diamond自带的Active-HDL仿真工具,具有更好的交互性以及更便捷的可操作性.与其他FPGA的开发环境一样,需要设置联 ...

  9. modelsim仿真库

    库:工作库和资源库,工作库即自己编写的.v和tb文件,资源库存放着可以被编译操作调用的已经编译过的设计单元,如一些altera函数等 modelsim编译库:因为modelsim单独仿真时需要调用一些 ...

最新文章

  1. leveldb源码分析:Open启动流程
  2. pyqt5 tableview 设置行颜色_Tools Ⅰ:如何用 PyQt5 和 Qt Designer 在 Pycharm 中愉快地开发软件...
  3. ros构建机器人运动学模型_古月私房课 | ROS机械臂开发中的主角MoveIt!
  4. [蓝桥杯][算法提高VIP]数的划分(记忆化搜索)
  5. 前端学习(2163):安装clint错误和ESlint规范
  6. 作为参数给后端为空_后端 API 接口文档 Swagger 使用指南
  7. try-catch-finally的返回值问题
  8. [渝粤教育] 广东-国家-开放大学 21秋期末考试建设工程法规10221k1
  9. 网页版QQ、MSN等等聊天工具web版大全
  10. Eps总结(2)——Eps常用命令与快捷键
  11. 基于KNX技术设计的智能照明控制系统在医院的设计与应用
  12. 根据身份证号码计算年龄和判断性别
  13. flash builder 找不到所需要的AdobeFlashPlayer调试器版本
  14. creo 6.0—01:软件界面介绍,系统背景颜色修改
  15. down mark 打钩_[MarkDown] markdown语法小结
  16. 菜鸟学人工神经网络(C++11实现)零:矩阵类
  17. 计算机专业必须做毕业设计吗,可以写和本专业无关的论文吗_计算机系的可以写别的系的论文吗_毕业论文一定要写和专业相关的吗...
  18. HTML5七夕520情人节表白网页❤ 属于我们的浪漫星空 ❤ HTML+CSS+JavaScript
  19. 2022年,女生到底适合转行ui设计还是软件测试?
  20. 【SPOJ-WACHOVIA】Wachovia Bank【01背包】

热门文章

  1. 网店版重生系列:Linux下Jboss启动、关闭、端口配置等常见问题FAQ
  2. lass path resource [com/spring/] cannot be resolved to URL because it does not
  3. Git生成的ssh公钥部署在GitHub后校验报错Permission denied(publickey, password, keyboard-interactive)完美解决
  4. JavaScript的基本使用以及输出hello world,很简单
  5. 情书 沈从文 张兆和
  6. 欧姆龙CP1H系列码垛程序
  7. 来啦|深度讲解风控模型中的参数调优
  8. 转 CanvasPaint—基于HTML5的Windows画板
  9. Mybatis-Plus(入门篇 ==> 三分钟完成入门案例
  10. Long, int, uint, char 等整型总结