![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=1739391544-Z2yYh4oc9vmTEOXiNS7qx3uN0tKOBeVM-0-8dd3bc9d41bbfef586349cbfcfa378b0)
图1.14
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_29.jpg?sign=1739391544-lanE81FloAmizm18TlCG71jqHzHSr0fL-0-bfbd9a5d116386c3c80338365e02ac7b)
图1.15
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_30.jpg?sign=1739391544-Etw8hklY1TQ0zKIq6UY2QwZvVANgQYyg-0-857e5b65bcebbf72859dbf24bbd2a30c)
图1.16
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_31.jpg?sign=1739391544-Y33SD5Ssw3IWLHL2gtxPdd3Zv1DEPGia-0-d2a24cfe6f46551b4a82d68d88bce41c)
图1.17
单击Next 按钮,弹出如图1.18 所示的对话框。在选择工程所在路径,以及为工程命名后(建议:工程名称最好和文件夹名称一致),效果如图1.19 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_33.jpg?sign=1739391544-Y7snAfm6J8Gc41RTPRuZnjbT1o2W8zPC-0-dd71ff27bf10bf70184678e22d3a2119)
图1.18
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_34.jpg?sign=1739391544-eXwdxpR3tEjW0wCqZXuOwfzFTiurtX9L-0-68116d3c78918779219ca48b2726be74)
图1.19
单击Next 按钮,弹出如图1.20 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_36.jpg?sign=1739391544-O7JGb6I51kE91zrwJDctU5PAvffojFed-0-762b66afe139bc8580b847f20c27e823)
图1.20
单击Next 按钮,弹出如图1.21 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_38.jpg?sign=1739391544-BZZdg8GagS6G4eK3LzNic4WxOuHgorPE-0-5f498402dd865bdf83f41e0f58891380)
图1.21
在图1.21 中,可添加工程文件夹中已有的文件。因为目前该文件夹中还没有文件,所以可忽略这一步,直接单击Next 按钮,弹出如图1.22 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_40.jpg?sign=1739391544-Px8QB6ROOsLMrpl49bTf0rqW10BpHh2Y-0-49585659c0ae3ae1d23a82da921735f8)
图1.22
在图1.22 中,可以选择芯片的具体型号,小芯选择的芯片型号如图1.23 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_42.jpg?sign=1739391544-q0rhVYoEb4XYLv6cBA0XH2DWELfHyE2B-0-33aff361966451c08f691e4f4c5d19a3)
图1.23
单击Next 按钮,弹出如图1.24 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_44.jpg?sign=1739391544-NWV7QeVY4cEQ7eY7I1WVEmuRG8GbakiY-0-9f61ce5d1ab676c2314b1e9e0d456383)
图1.24
在图1.24 中可选择仿真工具和语言,效果如图1.25 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_46.jpg?sign=1739391544-dyyckbbTaYEmCk44x48GoWRqBTDcPhDK-0-06394228442cf1b13006815cac214551)
图1.25
单击Next 按钮,将弹出工程设置报告,如图1.26 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_48.jpg?sign=1739391544-R8G08RLErwDpJiIg4V3ygvrTODDtR68q-0-2dd0f03e55246838f41684791d6cfc0f)
图1.26
单击Finish 按钮,完成工程的创建,效果如图1.27 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_50.jpg?sign=1739391544-9GpaT2cq6v6EHD812RI9I8QkT7az7ltZ-0-ac002f7707ec777be619f8bf65e672de)
图1.27
2.新建文本编辑器
通过以上操作,即可创建一个新的工程。如果需要继续操作,如录入代码,则需要新建一个文本编辑器。新建一个文本编辑器的操作步骤如下。
选择 “File→New”,弹出如图1.28 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_52.jpg?sign=1739391544-Q00E1801bdRO5JC8WmNefCxI7slD2eVE-0-248c7b65046977edb0c0385b66708bda)
图1.28
选中Verilog HDL File 选项,单击OK 按钮即可新建一个文本编辑器,弹出如图1.29所示的界面。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_54.jpg?sign=1739391544-aR1iecjttTcUwsnJRRPTmWmGbMXDUrFy-0-5ec122511c0d66d0b2c4ddbd154cae67)
图1.29
将新建的文本编辑器另存到指定的文件夹src 中:选择 “File→Save As”,弹出 “另存为” 对话框。将其保存到新建的src 文件夹中,单击 “保存” 按钮,如图1.30 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_56.jpg?sign=1739391544-vwA2UirGHcSnJV6kr53PNtUKQBvdE0Uf-0-645ee0a97ea2b4ae13fd0f11693ed81b)
图1.30
3.编译代码
在新建文本编辑器后,就可以录入代码了,如图1.31 所示。注意:小芯的目的只是教大家如何使用软件,所以在这里不再过多介绍代码的编写过程和方法。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_58.jpg?sign=1739391544-GEXntN9XQAq4psBEt84N4Lk66nI9UTQ4-0-d3c988778746829399a94d7e2ef38ba5)
图1.31
在代码编写完毕后,需要对其进行编译,以便检查是否存在语法错误。可通过按“Ctrl+L” 组合键和 “Ctrl+K” 组合键对代码进行编译。编译后的效果如图1.32 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_60.jpg?sign=1739391544-7nO6S7SFRqpkouQzoIlGmXQJgvAMDKgV-0-a5d0f7ecd966cc423bede82005c0b6aa)
图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=1739391544-iCkOQ4L0kZdXv7mjMvjmR7oFNyvjUaRS-0-225428f15e1bde6582f7abd7813439de)
图1.33
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_64.jpg?sign=1739391544-UPmcxd9GOEi56e8E0tfR38IHkavDAVUr-0-1abba3adec84bb48588eb4759768d7d9)
图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=1739391544-6CJxZye8vFFfcsxIeAECI6o5sxExYuI3-0-d5515248c66944e889a36be712f3d091)
图1.35
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_71.jpg?sign=1739391544-j3LBdpWlN1ugi9br5WXCKZwysbe2atSi-0-c7ed9f061c9b4377b5c5a748e51d552e)
图1.36
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_72.jpg?sign=1739391544-nzQHQvg1w1s8pIfqRjIcei9Jp385NGBR-0-d59c0e5c71ef56df84531d9290581067)
图1.37
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_73.jpg?sign=1739391544-hkBISojCj9dNFL06OnfMl6F1shQv2Bn8-0-45b32d3c4847b43ba1c618ebe7603912)
图1.38
单击Add 按钮,将测试文件添加到下方的列表框中,如图1.39 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_75.jpg?sign=1739391544-AwypIxMdZnNIcXeaXDgOg0hCLsPnoPpI-0-45e271c8eec8090dbc73e80929771ed7)
图1.39
单击OK 按钮,弹出Test Benches 对话框,如图1.40 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_77.jpg?sign=1739391544-poF539GWBWZV3T8pPylDvReRuZZOoYbP-0-2b43e5209407ad6d3364fa49eaa58198)
图1.40
单击OK 按钮,弹出如图1.41 所示的界面。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_79.jpg?sign=1739391544-ccru5TXd42Fb8wfGtesuIiov5O0X5bc7-0-bbcdc5b2617a9ab994838b7327e4df1e)
图1.41
先单击Apply 按钮,再单击OK 按钮,即可退出仿真设置对话框,返回到如图1.42所示的界面。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_81.jpg?sign=1739391544-EdEw7YntibdRiF7kBfIblBy3ai1JH8PA-0-7c08c562bf39a62afa10f0f1dd697992)
图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=1739391544-yC7NqTqzDqERBBmdCPdbeDap0dhUKFTa-0-4e2c02b224f7a4a1cb61c0dac9f4639b)
图1.43
通过单击Wave 按钮,将界面切换到Wave 选项卡,如图1.44 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_85.jpg?sign=1739391544-bHe0vNoNducCScRxUzSvbtqU5fK1Wo7P-0-f8ef01020a0ba77a75e856690eaf1d7b)
图1.44
按 “Ctrl+A” 组合键选中所有信号,单击键盘上的Delete 键,删除全部波形,效果如图 1.45 所示。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_87.jpg?sign=1739391544-va87NRGjsmZt9vWSLzZKVKV1H3oBhZIW-0-711459e8f6ed30ffea53c6d9bb5070d5)
图1.45
切换到sim 选项卡,如图1.46 所示。右键单击inst 选项,在弹出的快捷菜单中选择Add Wave 选项,效果如图1.47 所示。
小芯温馨提示
通过这种方式,可以在波形中看到所有的输入/输出变量,以及内部变量。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_89.jpg?sign=1739391544-MpkTDtMapfF9SJQ8BofomC5trm8lVbuP-0-e24b6ce70bf06e8a5a4dc2437c643468)
图1.46
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_90.jpg?sign=1739391544-tWzXMuaYgX6SgQbrxMFhhpPRfGywUDLA-0-86bb9ca86d5c5cb1c091cbb7e8b351db)
图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=1739391544-dv1bRbNuPxavWLIIUeQbvCAe4w6McasA-0-a82a25e684240df262be0cb0a97dee1b)
图1.48
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_97.jpg?sign=1739391544-79IbkVPWMUI8W0c6FuStelxPcCASpPaZ-0-15a12d613df327ecb184cf2ca749d0f3)
图1.49
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_98.jpg?sign=1739391544-1VONz6ke6bjcMqATO7ReWqGwMZ8Gco7Q-0-0fcd742c5d20280ef770380882d3450c)
图1.50
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_99.jpg?sign=1739391544-vMhnUP8qbJQSF8AORnG1vh9OYfT9ddYG-0-e0dc78f0e9b24ee3c9335a9b6e767917)
图1.51
按Enter 键进行确认,弹出如图1.52 所示的对话框。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_101.jpg?sign=1739391544-sbuBL8pZqSrehiXfbE09qXniGTQIcQqi-0-aed85a27d1ec1cbd06b77d2d0e746a18)
图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=1739391544-BCQQjZorW0QpZFCkJp349dl7AHAsFbyA-0-14ab91d95d049bef2a59fb2bf172ae1d)
图1.53
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_107.jpg?sign=1739391544-PY2bhjNm3VYbAKyWtJNVRxCq3GCKlc36-0-becfcf56e99b5b5cb11bba03a89725e9)
图1.54
小芯温馨提示
通过以上操作步骤,即可完成Quartus 和ModelSim 的设计、调试过程,之后的学习都将以此操作为基础。建议大家一定要勤加练习,掌握好软件的基本用法。
![img](https://epubservercos.yuewen.com/75AADB/19118077408013006/epubprivate/OEBPS/Images/txt001_108.jpg?sign=1739391544-c5HqvRxuNJZlgvOnnQ9ILpAQVuw3ngu5-0-938cf991a410edb9e2fa4758c275d91e)
图1.55