- FPGA从入门到精通(实战篇)
- 至芯科技教研组
- 2225字
- 2025-02-17 16:14:03
1.3 级联调试实战演练
尽管开发工具Quartus 和仿真工具ModelSim 都已安装完毕,但是这两个工具如何使用呢?下面小芯将通过一个简单的计数器工程介绍这两个工具的使用方式。
1.新建工程
新建一个文件夹,并为新的文件夹重命名。在这里,小芯将文件夹命名为counter,如图1.14 所示。
打开counter 文件夹,并在该文件夹中新建4 个子文件夹,分别为doc、prj、sim、src,如图1.15 所示。其中,doc 文件夹用于存放本次设计的设计文档及参考文件;prj 为工程文件夹,用于保存在Quartus 软件中新建工程时的工程文件;sim 用于保存测试文件;src 用于保存设计文件。
小芯温馨提示
良好的设计风格及代码风格会为设计工作加分!
在准备工作完成后,打开Quartus 软件,如图1.16 所示。
选择 “File→New Project Wizard”,弹出如图1.17 所示的对话框(用于创建一个新的工程)。

图1.14

图1.15

图1.16

图1.17
单击Next 按钮,弹出如图1.18 所示的对话框。在选择工程所在路径,以及为工程命名后(建议:工程名称最好和文件夹名称一致),效果如图1.19 所示。

图1.18

图1.19
单击Next 按钮,弹出如图1.20 所示的对话框。

图1.20
单击Next 按钮,弹出如图1.21 所示的对话框。

图1.21
在图1.21 中,可添加工程文件夹中已有的文件。因为目前该文件夹中还没有文件,所以可忽略这一步,直接单击Next 按钮,弹出如图1.22 所示的对话框。

图1.22
在图1.22 中,可以选择芯片的具体型号,小芯选择的芯片型号如图1.23 所示。

图1.23
单击Next 按钮,弹出如图1.24 所示的对话框。

图1.24
在图1.24 中可选择仿真工具和语言,效果如图1.25 所示。

图1.25
单击Next 按钮,将弹出工程设置报告,如图1.26 所示。

图1.26
单击Finish 按钮,完成工程的创建,效果如图1.27 所示。

图1.27
2.新建文本编辑器
通过以上操作,即可创建一个新的工程。如果需要继续操作,如录入代码,则需要新建一个文本编辑器。新建一个文本编辑器的操作步骤如下。
选择 “File→New”,弹出如图1.28 所示的对话框。

图1.28
选中Verilog HDL File 选项,单击OK 按钮即可新建一个文本编辑器,弹出如图1.29所示的界面。

图1.29
将新建的文本编辑器另存到指定的文件夹src 中:选择 “File→Save As”,弹出 “另存为” 对话框。将其保存到新建的src 文件夹中,单击 “保存” 按钮,如图1.30 所示。

图1.30
3.编译代码
在新建文本编辑器后,就可以录入代码了,如图1.31 所示。注意:小芯的目的只是教大家如何使用软件,所以在这里不再过多介绍代码的编写过程和方法。

图1.31
在代码编写完毕后,需要对其进行编译,以便检查是否存在语法错误。可通过按“Ctrl+L” 组合键和 “Ctrl+K” 组合键对代码进行编译。编译后的效果如图1.32 所示。

图1.32
● 通过按 “Ctrl+L” 组合键可进行全编译:不但检查代码的语法,而且还会进行布局、布线,即将代码映射成具体的电路。如果需要将代码下载到开发板,则在下载之前必须进行一次全编译。全编译的时间相对较长。
● 通过按 “Ctrl+K” 组合键可进行普通编译:只检查语法错误,编译速度较快。在这里,小芯按 “Ctrl+K” 组合键进行普通编译。
编译结束后,系统会告诉使用者片内资源的使用情况。在图1.32 中,可以发现最下面的报告栏中提示 “Quartus Prime EDA Netlist Writer was successful.0 errors,1 warning”,并且没有显示红色的错误报告,这就说明代码的语法正确。
4.使用仿真工具
即便在编译代码时可顺利通过,也只能说明代码的语法正确,那逻辑是否正确呢?可以实现想要的功能吗?这就不得而知了,毕竟软件并不知道代码编写者的最终目的。此时可借助ModelSim 进行仿真,通过波形查看代码的逻辑是否正确。那如何进行仿真呢?大家可以将仿真理解为平时测试电路板的过程:给待测单元输入一定的信号,观察它的输出及内部执行过程。使用仿真工具的步骤如下。
在调用ModelSim 之前,需要编写一段测试代码,如图1.33 所示。

图1.33

图1.34
在编写完测试代码后,需要对软件进行设置。右键单击工程名称counter,在弹出的快捷菜单中选择Settings 选项,弹出如图1.34 所示的界面,选中Compile test bench 单选按钮。
单击Test Benches 按钮,弹出如图1.35 所示的界面。
单击New 按钮,弹出New Test Bench Settings 对话框,输入测试文件名称counter_tb,如图1.36 所示。
单击File name文本框右侧的
按钮,弹出如图1.37所示的对话框,选中counter_tb.v文件,单击Open 按钮,返回New Test Bench Settings 对话框,如图1.38 所示。

图1.35

图1.36

图1.37

图1.38
单击Add 按钮,将测试文件添加到下方的列表框中,如图1.39 所示。

图1.39
单击OK 按钮,弹出Test Benches 对话框,如图1.40 所示。

图1.40
单击OK 按钮,弹出如图1.41 所示的界面。

图1.41
先单击Apply 按钮,再单击OK 按钮,即可退出仿真设置对话框,返回到如图1.42所示的界面。

图1.42
选择“Tools→Run Simulation Tool→RTL Simulation”,弹出ModelSim 界面,如图1.43所示。

图1.43
通过单击Wave 按钮,将界面切换到Wave 选项卡,如图1.44 所示。

图1.44
按 “Ctrl+A” 组合键选中所有信号,单击键盘上的Delete 键,删除全部波形,效果如图 1.45 所示。

图1.45
切换到sim 选项卡,如图1.46 所示。右键单击inst 选项,在弹出的快捷菜单中选择Add Wave 选项,效果如图1.47 所示。
小芯温馨提示
通过这种方式,可以在波形中看到所有的输入/输出变量,以及内部变量。

图1.46

图1.47
单击
按钮,如图1.48 所示。
按 “Ctrl+G” 组合键实行自动分组,效果如图1.49 所示。
右键单击信号名称,在弹出的快捷菜单中选择 “Radix→Unsigned” 选项,即选择无符号类型数据,改变信号的显示进制(大家也可以根据需要选择其他的显示进制),如图1.50 所示。
切换到Transcript 选项卡,输入restart 指令,如图1.51 所示。

图1.48

图1.49

图1.50

图1.51
按Enter 键进行确认,弹出如图1.52 所示的对话框。

图1.52
单击OK 按钮,弹出如图1.53 所示的界面。
切换到Transcript 选项卡,输入指令 “do 1ms”(可以自定义执行时间),按Enter 键进行确认。切换到Wave 选项卡查看效果,如图1.54 所示。
在查看波形时,通过单击
图标,不仅可以缩小或放大波形,而且还可以查看波形的任意位置,如图1.55 所示。

图1.53

图1.54
小芯温馨提示
通过以上操作步骤,即可完成Quartus 和ModelSim 的设计、调试过程,之后的学习都将以此操作为基础。建议大家一定要勤加练习,掌握好软件的基本用法。

图1.55