Lattice库联合ModelSim仿真FIFO

news/2024/5/8 14:19:04/文章来源:https://blog.csdn.net/weixin_56102526/article/details/128149073

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延迟了两个周期生效

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_229691.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django基于java的社区管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

计网个人作业03

R14. True or false? a a. Suppose Host A is sending a large file to Host B over a TCP connection. If the sequence number for a segment of this connection is m, then the sequence number for the subsequent segment will necessarily be m 1. 假设主机A通过一…

世界连续动作预测模型-方向模型

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 <

[附源码]JAVA毕业设计家庭理财管理系统(系统+LW)

[附源码]JAVA毕业设计家庭理财管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

[附源码]计算机毕业设计医院挂号住院管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计学生在线考试系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计医疗器械公司公告管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]JAVA毕业设计健身房管理系统(系统+LW)

[附源码]JAVA毕业设计健身房管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&a…

python使用opencv画圣诞树和画小星星函数

画星星函数&#xff1a; #img 图片 #x y 坐标 #size 大小 def darw_star(img,x,y,color,size40):poly_linenp.array([[x, y-size], [xint(size/4), y-int(size/4)], [xsize, y-int(size/4)],[xint(0.375*size),yint(size/4)],[xsize,ysize],\[x,yint(0.625*size)],[x-size,ysi…

uni-app入门:自定义tabbar

本文介绍如何使用vant Weapp定义自定义tabbar.按照自定义图标的方式进行添加: 自定义tabbar微信官方链接: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 1.导入vant weapp并构建npm 项目根目录右键选择外部终端窗口中打开 …

VS系列多通道无线采发仪

VS101/104/208/416/432 是以振弦、温度传感信号为主的多通道无线采发仪&#xff0c;并可扩展其它模拟&#xff08;电流、 电压、电阻&#xff09;信号和数字信号&#xff08;RS485、RS232&#xff09;传感器通道&#xff0c;内置电池&#xff0c;可外接太阳能电池板。最多可实…

【学习记录】Dynaslam源代码魔改-替换MaskRCNN为YoloV5

这两天接了个小任务&#xff0c;需求是替换Dynaslam里面的动态物体识别模块&#xff0c;将MaskRCNN换为YoloV5&#xff0c;这里记录一下过程中遇见的问题。 一、运行Dynaslam Dynaslam本身是一个基于ORBSLAM2的视觉SLAM框架&#xff0c;论文并没有仔细看过&#xff0c;简单来…

期末测试——H5方式练习题

期末考试——H5完成方式——练习题 前言 本练习训练了孩子们的栅格化布局&#xff0c;H5标签&#xff0c;CSS样式&#xff0c;并对列表与菜单进行了强化训练。使孩子们更好的掌握H5布局&#xff0c;为后面的框架教学打好基础。 素材下载地址&#xff1a; 链接&#xff1a;htt…

UltraISO 制作U盘启动盘

1、 从Ubuntu官网http://cn.ubuntu.com/download/下载系统的iso文件 用来制作的U盘需要是FAT32格式的&#xff0c;可以通过格式化U盘更改&#xff08;注意&#xff0c;如果U盘已经写入过隐藏分区了&#xff0c;需要在磁盘管理里面删除相关隐藏分区然后合并为一个大分区后…

open label file.(This can be normal only if you use MScoco)

E:\yolov4-rubish\darknet\our_data\ImagesAug 把标签的txt文件和Jpg文件放在同一个文件夹

12月2日:thinkphp中数据库完结

数据库的查询 聚合查询 聚合查询的几种方法其中将count作为重点来说&#xff0c;由图所示&#xff0c;即为使用count()方法中需要注意的点 count(*)的使用count()中字段名为具体值的使用方法时间查询 官方文档中列举的是使用wheretime()进行查询的方法&#xff0c;但是在日常的…

C++11标准模板(STL)- 算法(std::set_difference)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 计算两个集合的差集 std:…

历史名人鲁迅介绍HTML个人网页作业作品下载 历史人物介绍网页设计制作 大学生英雄人物网站作业模板 dreamweaver简单个人网页制作

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【历史上的今天】12 月 3 日:世界上第一条短信;Fortran 语言之父诞生;百度贴吧上线

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 12 月 3 日&#xff0c;在 21 年前的今天&#xff0c;电动平衡车&#xff08;Segway&#xff09;问世&#xff1b;电动平衡车是一种电力驱动、具有自我平衡能力…

Win11的两个实用技巧系列之如何关闭文字热门搜索、任务栏上的应用

目录 in10和Win11 22H2如何关闭文字热门搜索? Win11 22H2关闭文字热门搜索 Win10 22H2关闭文字热门搜索 Win11中如何不用鼠标打开已固定在任务栏上的应用 鼠标的操作方式如下&#xff1a; 点击拿去 in10和Win11 22H2如何关闭文字热门搜索? 不管是Win10还是Win11&#…