计算机原理与结构 实验2 《算术逻辑运算电路设计》
一、实验目的
1、掌握:如何采用Verilog设计组合逻辑电路;
2、掌握:Quartus II 的外设器件引脚配置;
3、了解:FPGA驱动USB-Blaster的安装。
二、实验内容
使用System Verilog设计一个四位二进制算术逻辑运算电路,完成加减乘除四个基本算术运算和与或非三个基本逻辑运算,采用FPGA开发板上的SW[1] - SW[4]作为输入,LEDR[1] - LEDR[5]作为输出(条件限制,可以模拟),实现设计好的算术逻辑运算单元电路。
三、实验方法
首先使用System Verilog语言完成设计,其次使用Quartus II与MoldelSim联合仿真保证预期结果的正确性,连接FPGA开发板,将所编写的汇编程序写入开发板、规定输入与输出,并使用设计好的测试集进行测试。
四、实验步骤
1、新建一个Quartus II项目ALU,引入编写好的算术逻辑单元SystemVerilog代码文件ALU.sv,执行编译。
2、选择与现有FPGA开发板匹配的设备,这里选择Cyclone II中具有484个引脚、35个单元的EP2C35F484C8类型的设备,执行编译。
3、编译成功后可以查看编译出来的结果的电路原理图。
4、可以先使用Quartus II + MoldeSim进行简单的联合仿真的方式查看效果。
5、准备将程序写入FPGA开发板进行实验,这里省略FPGA开发板与计算机连接的详细步骤。先根据FPGA开发板的使用说明手册确定输入与输出的接口。
6、上述步骤执行完毕之后将程序导入到FPGA开发板。
7、对FPGA开发板约定好的输入端口,输入测试集进行测试。
注意:初次使用电脑连接FPGA开发板需要安装驱动程序,在Windows 10自带的设备管理器中的“通用串行总线控制器”中找到usb-blaster设备并安装即可。
五、实验结果
1、输入ALUControl为00,执行加法;
输入A为0000,B为1110时结果为1110,结果如图。其中,最左侧4位的K1K2K3K4为输入A,紧邻的2位K5K6为ALUControl,右侧的4位K7K8K9K10为输入B,上侧的指示灯D1D2D3D4为计算出的结果Result。
输入A为0110,B为0010,结果为1000,结果如图。
2、输入ALUControl为10,执行与操作;
输入A为1011,B为1111时结果为1011,结果如图。
输入A为1001,B为0001时结果为0001,结果如图。
3、输入ALUControl为11,执行或操作;
输入A为1111,B为1001时结果为1111,结果如图。
输入A为1001,B为0101时结果为1101,结果如图。
六、实验结论
通过简单的联合仿真结果和实际的FPGA开发板的仿真结果可知该算术逻辑运算单元ALU的运作是正常的。
七、实验小结
通过本次实验,主要是掌握了使用System Verilog语言构建一个简单的算术逻辑运算单元ALU的方法,以及将构建好的程序写入到物理上的FPGA开发板进行实现的方法。了解到了实际的FPGA的构成,和一些关于FPGA的操作流程。
本次实验是以小组形式进行的,中途也遇到了一些问题。首先遇到的问题就是按照要求启动FPGA设备之后,通过USB连接到电脑结果发现找不到代表FPGA开发板设备的硬件驱动。在设备管理器中仔细寻找了各个二级目录才发现需要安装USB-BLASTER之后才可以找到,并且这个二级目录可能不同的电脑名字不一样,但是总归是在设备管理器中找到了。其次的问题是不了解如何指定输入端口以及输出。解决方法是根据FPGA开发板的使用说明书,在Quartus II中写入之前进行外设器件引脚配置。
FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA 器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。FPGA 的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块RAM,布线资源,内嵌专用硬核,底层内嵌功能单元。由于FPGA具有布线资源丰富,可重复编程和集成度高,投资较低的特点,在数字电路设计领域得到了广泛的应用。FPGA的设计流程包括算法设计、代码仿真以及设计、板机调试,设计者以及实际需求建立算法架构,利用EDA建立设计方案或HD编写设计代码,通过代码仿真保证设计方案符合实际要求,最后进行板级调试,利用配置电路将相关文件下载至FPGA芯片中,验证实际运行效果。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。