FPGA|VHDL入门实践第二发:使用VHDL编写FPGA全加器

[TOC]

一位全加器实验报告

一、实验目的与要求

​ 通过此实验让用户逐步了解、熟悉和掌握FPGA开发软件Quartus II的使用方法及VHDL的编程方法。学习用VHDL语言以不同方式来描述1位全加器及电路的设计仿真和硬件测试,同时结合按键输入,在硬件设备上实现全加器的功能。

二、实验设备

  1. SmartSOPC+实验箱
  2. 装有QuartusⅡ的PC机
  3. JTAG下载器

三、实验内容

本实验的内容是建立一个1位全加器。具体内容包括:
(1)使用Quartus II建立工程、编写程序;
(2)进行波形仿真验证;
(3)进行硬件测试。

通过SmartSOPC实验箱上的按键KEY1~KEY3输入信号,分别为A.B和Cin,并通过,LED1 ~LED3指示相应的状态。输出Sum和Cout通过LED7和LED8指示(灯亮表示输人或输出为“1”)。

一位全加器真值表:

真值表

四、实验步骤

  1. 启动QuartusII建立一个空白工程,然后命名为add.qpf。

  2. 新建VHDL源程序文件add.vhl,输人程序代码并保存,然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直至编译成功为止,并生成图形符号文件add.bdf。

  3. 波形仿真验证,步骤如下:

    1. 在QuartusII主界面中选择File→New命令,打开新建文件对话框,在该对话框中选;择Other Files选项卡,从中选择Vector Waveform File,如图3. 38所示。单击OK关闭建立一个 空的波形编辑器窗口
      创建文件:

      创建文件
      wave文件:选择wave

    2. 在如图所示的Name选项卡内双击鼠标左键,弹出下图所示对话框。在如该对话框中单击NodeFinder按钮,弹出如图对话框。
      结果图

    3. 点击list列出节点并添加节点
      节点添加图

    4. 为输入信号添加随机信号,便于仿真
      添加随机信号

    5. 点击仿真,保存,得到仿真结果,对比真值表,如下图
      仿真结果

  4. 仿真正确无误后,分配程序引脚,下载程序

五、设计程序

一位加法器程序较为简单,设计思路主要为读取按键端口,带入逻辑计算后输出加法器值,具体程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned .all;
--add
entity add1 is
port(a,b,c:in std_logic;
led:out std_logic_vector(1 downto 0)
);
end entity;
architecture rtl of add1 is
signal s,co : std_logic;
begin
s<= a xor b xor c;
co <= ((a xor b)and c)or (a and b);
led <= s & co;
end rtl;

六、实验结果及分析

实验图片:

  1. 进位为:1 1 1
    在这里插入图片描述
  2. 进位:1 0 0
    在这里插入图片描述
  3. 进位:1 1 0
    在这里插入图片描述

结果分析:

​ 对下载后程序进行测试,其实验现象和理论仿真一致,程序达到设计目标。