当前位置:首页 > 新闻资讯 > FPGA之家动态 >

做FPGA开发如果你不知道这些技巧说明你还没入好门!

时间:2024-07-28      来源:网络搜集 关于我们 0

之前的文章有给大家介绍过从建立工程到编写RTL代码,再到编译综合以及烧写上板看效果的过程。对于这种简单的开发设计来说,不经过仿真直接上板调试的方法是可行的,逻辑对不对基本上可以在板上看到效果。但是对于比较复杂的逻辑关系,或者在开发板上不能直接看到效果的设计,就需要借助仿真器了。今天给大家介绍的内容就是如何使用仿真工具,直接在软件上就能完成对设计的验证!

建立仿真工程

File->New->Project,点击即可弹出创建工程的的界面:

填好项目名和工程路径之后,点击OK。

这时候选择Create New File,创建新的tb文件就可以写test bench了。

testbench,就是要在顶层文件里产生激励信号,时钟和复位信号是必须的。如下所示是最基本的产生时钟和复位信号的写法:

写好基本的顶层测试信号后,我们先仿真试一下看能不能看到波形。选中test_top.v文件,鼠标右键选择Compile->Compile all,编译完成后test_top.v右边的status那一栏会出现一个绿色的勾,就说明编译成功了。

接下来配置仿真条件,在test_top.v下面的空白处单击鼠标右键,Add to Project->Simulation Configuration。

进入Optimization Options后选择No design pbjectvisibility,然后点击OK,之后取消Enable optimization的选项,选中work下面的test_top,点击save即可。

之后点击刚才保存simulation1就可以进入仿真界面,如下图所示:

可以看到上面的波形窗口中已经有了clk和rst_信号的波形,说明我们的仿真环境已经搭建起来了。

添加测试对象和测试激励

测试对象就是我们写的设计代码,这里就用我之前写的tick_tock这个模块为例给大家介绍一下如何把设计加进来并跑起来。

首先把tick_tock.v这个文件加入到modelsim的项目工程中:

把测试对象的.v文件夹进来后,下一步是把测试对象例化到test_top中,如下图所示是把tick_tock例化之后的RTL代码,意思是在这里调用了这个模块。例化完之后点击编译,就可以看到左边的文件名后面有个绿色的勾,这就说明编译成功了!

运行仿真,查看波形是否符合预期(由于用modelsim仿真带IP核的设计比较复杂,这里暂时先把原来设计中的PLL去掉):

从上图可以看到tick_tock这个模块已经在仿真环境中跑起来了,中间蓝色的列表就是模块内部信号列表,我们可以根据需要把想观察的信号添加到右边的波形窗口中。

quartus II中查看设计的电路结构

很多初学者虽然有看过verilog语法,也能够写出一些逻辑电路出来,但是对于自己所写的电路实际上究竟长什么样子还很朦胧。这里介绍一个quartus中集成的一个很好的功能,用它就能清楚的看到你写的电路对应的门级电路图。

按照上图方式打开,等待片刻就会弹出RTL对应的逻辑结构图如下:

这是tick_tock模块的整体电路结构图,下面来看一下它的细分部分。

下图是模块的左边部分,包括一个PLL IP 核,三个加法器,一个EQUAL和三个选择器,PLL的输入时钟是52MHz的晶振。感兴趣的伙伴可以对照我之前发的tick_tock这个模块的RTL看一下这里是对应那一部分代码。

下面是中间的D触发器和触发器以及求余运算器,这个也可以对应RTL中的除法和求余运算来看:

最右边就是经过几层mux选择器后,再经过D触发器锁存,然后输出到模块外给其它器件使用:

我相信对于大部分接触数字电路不久的伙伴来说这绝对是理解数字电路设计的深层意义的好方法,希望大家都掌握起来!

今天的介绍先到这里,看完的伙伴请点赞转发一下,下次继续给大家分享!


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言