利用modelsim直接添加库文件并进行仿真

2 篇文章 0 订阅
1 篇文章 0 订阅

利用modelsim直接添加库文件并进行仿真


由于某些原因,需要使用modelsim单独添加一些库文件进行编译,这里可以是altera/xilinx/lattice的库,也可以添加自己写的库,只要编译通过就行。

一 Modelsim添加altera/xilinx/lattice的库
1.在modelsim的安装目录下找到"modelsim.ini"文件,将属性选项里的"只读"去掉,添加库的时候会在里面写入路径。
2.打开modelsim,点击file下的change directory,将路径改为你要添加库文件的文件夹,我在安装目录下新建了一个文件夹,这里我放到了my_lib文件夹下面。
在这里插入图片描述在这里插入图片描述

3.点击file-new-library,新建一个库,输入库名称,在modelsim的library界面下会新建一个xp2库。
在这里插入图片描述
在这里插入图片描述
接下来点击Modelsim菜单栏的compile–compile,出现编译窗口,将library选为你新建的库,找到D:\modelsim\modelsim_ase\my_lib\verilog\xp2,Ctrl+A选中全部文件(前提是你要有要加入的.v文件),点击compile开始编译,编译完成后点Done结束。注意这里上面的Library要选择你建立的库。
4.此时打开"modelsim.ini",里面多了一句xp2 = xp2,将后面那个改为你的物理路径,
xp2 = D:/modelsim/modelsim_ase/my_lib/verilog/xp2(否则会出现unname什么的,注意这里用 / 而不是用 \ )。最后将modelsim.ini的只读勾上,只是VHDL要麻烦一些得注意编译的顺序。
在这里插入图片描述
二 功能仿真

  1. New—project,新建一个工程,导入testbench和待测试文件,右击或在菜单栏中选择compile all。编译通过的status栏会有一个绿色的勾,未编译是黄色的问号,通不过是红色的叉叉。
    在这里插入图片描述
    2 .仿真,点击菜单栏中的simulate—start simulate,在design标签中选择测试文件。选定进行仿真的文件(默认在work工作库中),如果文件中没有设置时间单位,可以在Resolution选择,最好把optimization中的勾取消,不然很多寄存器会被优化掉。如果没有用到pll等 ip core的话,点击OK就可以进行仿真了。这一步也可以直接在library界面,右击测试文件选择simulate without optimization 进行仿真。

在这里插入图片描述
另外在library选项中切记加入自己刚才的库要不然会报错
在这里插入图片描述
到这里基本就结束了,可以开始进行仿真了。

参考链接:http://blog.sina.com.cn/s/blog_88c9ddc50101bn17.html

通过自己记录的方式,方便今后的学习,以及和小伙伴们共同进步。如果觉得有用的话请关注和点赞,感谢老铁。
另外我的fpga的全部资料和笔记在这里哦(欢迎浏览查看):https://blog.csdn.net/weiyunguan8611/article/details/100934712

  • 12
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个基于Verilog的实现: ```verilog module BCD_counter(clk, clear, qout); input clk, clear; output reg [3:0] qout; always @(posedge clk or negedge clear) begin if (clear == 1'b0) // 异步清零 qout <= 4'd0; else begin if (qout == 4'd9) qout <= 4'd0; else qout <= qout + 1; end end endmodule ``` 在这个模块中,我们定义了输入时钟 `clk` 和异步清零信号 `clear`。输出是一个4位的BCD码计数器 `qout`。当清零信号为低电平时,计数器立即清零。否则,每当时钟上升沿到来时,计数器的值递增1,当计数器的值达到9时,它会被重置为0。 下面是一个简单的测试代码,用于检查计数器是否按预期工作: ```verilog module tb_BCD_counter(); reg clk, clear; wire [3:0] qout; BCD_counter DUT(clk, clear, qout); initial begin clk = 0; clear = 1; #10 clear = 0; // 异步清零信号变为低电平 #20 clear = 1; // 重新置为高电平 #10; repeat(20) begin #10 clk = ~clk; // 时钟翻转 end #10 $finish; // 结束仿真 end endmodule ``` 在这个测试代码中,我们实例化了BCD_counter模块,并将其连接到一个时钟和异步清零信号。我们还定义了一个 `repeat` 循环,以测试计数器是否按预期工作。最后,我们使用 `$finish` 来结束仿真。 在Quartus II中,我们可以创建一个新项目,并将上述代码添加到一个新的Verilog文件中。然后,我们可以使用ModelSim进行功能仿真和时序仿真。我们还需要创建一个测试台,将 `tb_BCD_counter` 模块作为顶层模块,并运行仿真

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pose_Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值