![FPGA从入门到精通(实战篇)](https://wfqqreader-1252317822.image.myqcloud.com/cover/608/35808608/b_35808608.jpg)
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 所示的对话框(用于创建一个新的工程)。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_28.jpg?sign=1739275589-oHm5ixzpHUiwnv0W9xVh8qsscSJY7OXD-0-ad5d0c12143e649a44da7601f9563615)
图1.14
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_29.jpg?sign=1739275589-fN4K6tqInaGkHTR8ri7SE90OdV1Hq5cK-0-35294548a8d5952d6aafaa543d748477)
图1.15
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1739275589-3lANy9KFOdiS9UM9DbNIQMmYGnVBI9Hc-0-9e58292a4e844d310cc2cb8a79713bec)
图1.16
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1739275589-TVbb0ss0Ar4JLd5qZ6u998SHmUcjHvuL-0-8c431ef4a94b493823dcf259c02eef2d)
图1.17
单击Next 按钮,弹出如图1.18 所示的对话框。在选择工程所在路径,以及为工程命名后(建议:工程名称最好和文件夹名称一致),效果如图1.19 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1739275589-LMsfnFxn9V3VWVVjwbXIuaWP6jLao1uy-0-b6d2fb97c4f57bf86a1bbda25067b571)
图1.18
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1739275589-POkI5pLgtelupdPb3ntwsoRIiP7NLY52-0-b6175e3b2437d80d81231c4eaadddbac)
图1.19
单击Next 按钮,弹出如图1.20 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1739275589-khnIqPJMlQjUgY6mKle3Wn8AhMrSF7vq-0-45bf4d5c4c80574b0920250095fe30a6)
图1.20
单击Next 按钮,弹出如图1.21 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1739275589-EncNJiNY7vtgG4jCB9xWWFeSEPeUfs5H-0-7571f5b32547e1a20faf4f36794d9378)
图1.21
在图1.21 中,可添加工程文件夹中已有的文件。因为目前该文件夹中还没有文件,所以可忽略这一步,直接单击Next 按钮,弹出如图1.22 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_40.jpg?sign=1739275589-screAKy1Vw12EutyNAew6QAar4LOlIp5-0-29bfd64825df14c5e0c04530a90b6e25)
图1.22
在图1.22 中,可以选择芯片的具体型号,小芯选择的芯片型号如图1.23 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_42.jpg?sign=1739275589-txMTm9xUqz1MHKpjakgFsolI31Wfmyri-0-a8e2b0231f7cc1f005a1c927f22e1bda)
图1.23
单击Next 按钮,弹出如图1.24 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_44.jpg?sign=1739275589-GFV5fZeGTg863XHVxbCBozQw2nY19YiZ-0-e946481dfeef642dda4b7fe125e61923)
图1.24
在图1.24 中可选择仿真工具和语言,效果如图1.25 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_46.jpg?sign=1739275589-QwiFuU46ao9LYK1SaK1hHCvwqzxAD0Zm-0-b48db66407b8c2cceb9db538fa3cb659)
图1.25
单击Next 按钮,将弹出工程设置报告,如图1.26 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_48.jpg?sign=1739275589-WgNGGZylIfU19hjX74BpieOkH2DRDfY1-0-47613e3d24be16c881edb8a280a509d7)
图1.26
单击Finish 按钮,完成工程的创建,效果如图1.27 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_50.jpg?sign=1739275589-3i8dKwVDKMKQOojOEqzATl5MYi3e4h8e-0-7bda2399aa7ceb545fd45e48a7ad3f97)
图1.27
2.新建文本编辑器
通过以上操作,即可创建一个新的工程。如果需要继续操作,如录入代码,则需要新建一个文本编辑器。新建一个文本编辑器的操作步骤如下。
选择 “File→New”,弹出如图1.28 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_52.jpg?sign=1739275589-joexV7NccbccWsVrAFg3zSurfcphxE9C-0-2c2c3d0d6a91c6370485313bf4fc683e)
图1.28
选中Verilog HDL File 选项,单击OK 按钮即可新建一个文本编辑器,弹出如图1.29所示的界面。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_54.jpg?sign=1739275589-p1BpQo7jNHj3O17BnU1gocv1WXOtuwl2-0-0c8b1d8a61a9d48ae9420ba5d79661d6)
图1.29
将新建的文本编辑器另存到指定的文件夹src 中:选择 “File→Save As”,弹出 “另存为” 对话框。将其保存到新建的src 文件夹中,单击 “保存” 按钮,如图1.30 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_56.jpg?sign=1739275589-1eLdLu88iRdfDZ7ibyc3zzNlReTS3Iwx-0-9491e0b1dfc64a41f385782c7e9a821f)
图1.30
3.编译代码
在新建文本编辑器后,就可以录入代码了,如图1.31 所示。注意:小芯的目的只是教大家如何使用软件,所以在这里不再过多介绍代码的编写过程和方法。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_58.jpg?sign=1739275589-G25K3TvLiL88vK4JjMs9nE70vXIXtHll-0-084b5f127d0e93d69c22c0fe7672d02e)
图1.31
在代码编写完毕后,需要对其进行编译,以便检查是否存在语法错误。可通过按“Ctrl+L” 组合键和 “Ctrl+K” 组合键对代码进行编译。编译后的效果如图1.32 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_60.jpg?sign=1739275589-mCNhHmSlu6CLvwEMDNz63PNIAfPbANz8-0-4ff83c9e837b8dcb61ed7d6f1643d978)
图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 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_63.jpg?sign=1739275589-tF4jC6RSERhe5meApzFO96lrfE5ehyb3-0-89546ea22b67a4065bd0850b96c448e9)
图1.33
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_64.jpg?sign=1739275589-Vda8Zr1tEj1dAQHrR7ks2myfjR6n7cfN-0-285b9489dc4ab3eb44b00915cc4d6387)
图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 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_70.jpg?sign=1739275589-v2SKRz6ZS3I95Ntcpi0Y2dRwXaB0w9Yk-0-190452db1f9a97fb41953ea21811e01d)
图1.35
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_71.jpg?sign=1739275589-Yg2Mpdc2zCPbaMmTSEV9D2c6lUp2aDO4-0-76f58d2bd3ab67c5ee6251edc4b69e80)
图1.36
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_72.jpg?sign=1739275589-KCi9X8TY75SakesCixHZaxLXR4pCMpmb-0-d711571260253e8019808632ad834e0d)
图1.37
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_73.jpg?sign=1739275589-NZbeZsYPcml62Sgnaa5Lqa9c2Q6NMcxe-0-b21c899794f46b462de1d30a0ee8531f)
图1.38
单击Add 按钮,将测试文件添加到下方的列表框中,如图1.39 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_75.jpg?sign=1739275589-U3z9AUON1nPFtJ6LZvAOqb8eRlwhO4lw-0-925e126617d0d46ee3245fb81c1ac86e)
图1.39
单击OK 按钮,弹出Test Benches 对话框,如图1.40 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_77.jpg?sign=1739275589-jYTLfYcoIyJSkuVr2ta70Bgiv7R93vgj-0-b28cf64005d66bf0f59267629b71275d)
图1.40
单击OK 按钮,弹出如图1.41 所示的界面。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_79.jpg?sign=1739275589-AUOudc1YmCbXza4i8000q3OfpT8LQ8cB-0-fcb8924c51b4162ad83084d18b53ca82)
图1.41
先单击Apply 按钮,再单击OK 按钮,即可退出仿真设置对话框,返回到如图1.42所示的界面。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_81.jpg?sign=1739275589-pJ33hyoisNdBeN74f6WTmVNDGUzf66xv-0-452428540670c4ff1a446bfd20220810)
图1.42
选择“Tools→Run Simulation Tool→RTL Simulation”,弹出ModelSim 界面,如图1.43所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_83.jpg?sign=1739275589-PBA7IIxnIZLSe5VTke4BwBTMdhhEJPMe-0-9f69c9da7bc3e88471095c927376ff63)
图1.43
通过单击Wave 按钮,将界面切换到Wave 选项卡,如图1.44 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_85.jpg?sign=1739275589-JmroKmnS5HHzTxZ0Nla7lUSdRvzT5Gl3-0-f08254af6018d7836274837906a9e086)
图1.44
按 “Ctrl+A” 组合键选中所有信号,单击键盘上的Delete 键,删除全部波形,效果如图 1.45 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_87.jpg?sign=1739275589-fE5CrD95xmoId1zkJPzMaYb4gRrIHMfv-0-555a5cfd9053f96ad88ceccfffd66910)
图1.45
切换到sim 选项卡,如图1.46 所示。右键单击inst 选项,在弹出的快捷菜单中选择Add Wave 选项,效果如图1.47 所示。
小芯温馨提示
通过这种方式,可以在波形中看到所有的输入/输出变量,以及内部变量。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_89.jpg?sign=1739275589-tDkQlepetGpOQb5FRGORO46mxWKBl35f-0-d751fa5b2f18e4f0464649d0a9ba9d89)
图1.46
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_90.jpg?sign=1739275589-ndjZ196UGH6jO9zqAs7nacCl7SJQlYQL-0-00f394440d0c88b53c570c385e2e10c4)
图1.47
单击
按钮,如图1.48 所示。
按 “Ctrl+G” 组合键实行自动分组,效果如图1.49 所示。
右键单击信号名称,在弹出的快捷菜单中选择 “Radix→Unsigned” 选项,即选择无符号类型数据,改变信号的显示进制(大家也可以根据需要选择其他的显示进制),如图1.50 所示。
切换到Transcript 选项卡,输入restart 指令,如图1.51 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_96.jpg?sign=1739275589-tC0wVRcmGsBkg8Ya0KFpzWHWMizf4QGW-0-34576b10a61ac63e2db40d9aae452d34)
图1.48
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_97.jpg?sign=1739275589-jG5skLE6jx3EulIXfWclJ4OOIudFsC8P-0-242a5f09a59b02ad7c71eed1f605379b)
图1.49
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_98.jpg?sign=1739275589-sSnF3R3RYO75v08c9GvGVeA6E1m0ZPTp-0-9d11ab6ce0850d32d27caa8180aa3b98)
图1.50
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_99.jpg?sign=1739275589-zqOCFMHdFFvIyqfeWCT9EiqpqlCo4u3h-0-5715acff3b834a4764b13b577f7f9b9f)
图1.51
按Enter 键进行确认,弹出如图1.52 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_101.jpg?sign=1739275589-6BV2DjSrLgBGqd6JyLbt7VCXKFe6LZKc-0-286f919e18c29c7402c9f793d4507e82)
图1.52
单击OK 按钮,弹出如图1.53 所示的界面。
切换到Transcript 选项卡,输入指令 “do 1ms”(可以自定义执行时间),按Enter 键进行确认。切换到Wave 选项卡查看效果,如图1.54 所示。
在查看波形时,通过单击
图标,不仅可以缩小或放大波形,而且还可以查看波形的任意位置,如图1.55 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_106.jpg?sign=1739275589-bFjCJtaUGIYBrQuTFnZaaGkG6Y4p6tJL-0-3c208478cd50261aa7f45544cb26d8c4)
图1.53
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_107.jpg?sign=1739275589-pqtX3Qx4sKmdzc2BO61ogSH3emNFZXlJ-0-2715de180cda43862376716af30d118d)
图1.54
小芯温馨提示
通过以上操作步骤,即可完成Quartus 和ModelSim 的设计、调试过程,之后的学习都将以此操作为基础。建议大家一定要勤加练习,掌握好软件的基本用法。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_108.jpg?sign=1739275589-mvadgeaF70DbDKaYdAAIeD3XJCmhJ4mU-0-7160939bf86971ff0f511bcb6e52b96b)
图1.55