这是课程《计算机原理与结构》的实验2《算术逻辑运算电路设计》的实验内容。本文作者的专业性不高(因为我没怎么学明白TT),只是因为做实验时走了不少弯路,想记录一下,给后来做这个实验的朋友当个参考,希望大家都少走点弯路,以及祝大家实验都能顺利做出来。
实验用到的项目是ALUDemo。
百度云盘下载(当然老师会在带同学做实验的时候发的):
链接:https://pan.baidu.com/s/1Qh4jZ-0dfAasLdWCXK9S3Q?pwd=m4kz
提取码:m4kz
实验前需要准备的:
最好使用Quartus的正版(或者破解版),而不只是试用版。虽然试用版大部分功能是完备的,但可能会导致最后一步运行Programmer时无法成功运行出来,也就是单片机上看不到运行结果。
就我自己而言,我把单片机连在自己电脑上做实验,用的是试用版的Quartus,没有跑出结果:每次点击start之后progress就会提示failed,很有可能就是这里的原因。如果你使用了破解版,就需要注意自己的license是否真的配置成功。你可以在编译时看看能否顺利通过,一般情况下如果编译报了error的错,提示了license的问题,那就说明你的license没有配好,破解不完整。
订购版和试用版的详细区别可以参考下面的文章(留给专业大佬作参考哈哈哈,我初学这方面,不是很懂_(:з」∠)_
另外,实验1和3用试用版是没问题的。只是本文的实验2最好使用订购版或破解版。
实验2《算术逻辑运算电路设计》
一、实验目的
1. 掌握:如何采用Verilog设计组合逻辑电路;
2. 掌握:Quartus II 的外设器件引脚配置;
3. 了解:FPGA驱动USE-Blaster的安装。
二、实验内容
试用SystemVerilog设计一个四位二进制算术逻辑运算电路,完成加减两个基本算术运算和与或两个基本逻辑运算,采用FPGA开发版上的SW[1]-SW[6]作为输入,LEDR[1]-LEDR[8]作为输出(条件限制,可以模拟)。
三、实验方法
1. 设置Divices及其参数;
2. 设置引脚;
3. 编译后模拟、打开;
4. 安装USB-Blaster;
5. 运行Programmer,观察单片机运行结果。
四、实验步骤
逻辑运算电路设计思路参考如下:
1.设置Divices及其参数
在Quartus下打开simpleALU项目,找到Project Navigator(如果找不到,可以按照下图所示的步骤选中Project Navigator,就能显示了)。
在如下图所示的地方右键,选择Device,找到实验室使用的设备和家族,注意不要找错了,否则后续的引脚配置将出现问题。
点击编译,编译完成后可以查看设备的信息。
2.设置引脚
找到下图所示的Pin Planner,按照红皮书指导手册(或者老师发的文件)进行引脚配置。
配置情况如下:
3.打开ModelSim进行模拟
按照下图的指示打开RTL Simulation,打开ModelSim。
如果报错说打不开ModelSim,那么检查一下有没有写好ModelSim的相关路径。选择Tools下的Options,进行如图所示的修改然后点击确认(ModelSim的路径写自己对应的下载路径),再进行上面的步骤即可。
打开ModelSim后设置希望看到的波形,点击运行进行模拟,结果如下。
4.安装USB-Blaster
将实验器材接入电脑,然后在电脑的设备管理器里找到USB-Blaster的选项,然后右键点击更新驱动程序,详细可参考这篇教程:https://blog.csdn.net/quanqueen/article/details/109266720。
这里根据个人电脑软硬件的差异,可能会遇到安装有问题的情况。仅我自己的情况而言,我出现了A driver can't load on this device的警告。win11为我提供的提示如下:A driver can't load on this device - Microsoft Supporthttps://support.microsoft.com/en-us/windows/a-driver-can-t-load-on-this-device-8eea34e5-ff4b-16ec-870d-61a4a43b3dd5
说明需要在Windows安全中心内的内存完整性关闭,然后重启。
5.运行
回到Quartus,点击Programmer。
按照下图步骤,添加sof文件。
添加后界面如下。
然后点击Hardware Setup设置硬件,如果此前USB-Blaster设置成功的话,此处会显示对应的硬件设备。
最后再点击左侧的Start,即可在单片机上看到实验效果。
五、实验结果
ModelSim模拟结果如下:
(我自己没能在FPGA上面跑出结果,所以图就不放了;网上有图片大家可以自己找一下)
六、实验结论
(一)实验结果分析
Modelim模拟如下:
X=2,Y=4,C=00,表示Z = X + Y = 6;
X=4,Y=2,C=01,表示Z = X - Y = 2;
X=4,Y=2,C=10,表示Z = X AND Y = 0;
X=4,Y=2,C=11,表示Z = X OR Y = 6。
(二)实验思考
1.如何采用加法器完成加减乘除四个算术运算?
(1)加法
两个二进制的相加结果是用一个异或门实现的;两个二进制的进位结果是用一个与门来实现的。加法器本身即可实现加法运算。
(2)减法
乘法主要由加法器和移位运算实现。二进制下,被乘数直接和乘数的第N位与,结果左移N位(例:和第0位与的结果左移0位,和第6位与的结果左移6位),结果相加,然后进入下一位进行下次循环即可。
(3)减法
减数取补,然后再相加。
(4)除法
首先对齐除数和被除数,对齐后相减,如果结果大于等于0,则记录商1;如果结果小于0,则记录商0,之后右移,结果作为下次运算的被除数,并将商左移;循环这个过程,直到除数移回原位,并记录余数。
2.如何在计算机中安装USB驱动程序usb-blaster?
(安装过程参考下文)
学习日记——USB-Blaster 的驱动安装http://t.csdn.cn/i005E3.如何在Quartus II中分配FPGA引脚?如何处理暂不用的引脚?
(分配处理参考下文)