实验一一位二进制全加器设计实验
◎南昌大学实验报告
学生姓名: ______ 学号:____________ 专业班级:中兴101
实验类型:■ 验证口综合□设计口创新实验日期:2012 9 28 实验成绩: _________________
实验一一位二进制全加器设计实验
一. 实验目的
(1)掌握Quartus II的VHDL文本设计和原理图输入方法设计全过程;
(2)熟悉简单组合电路的设计,掌握系统仿真,学会分析硬件测试结果;
(3)熟悉设备和软件,掌握实验操作。
二. 实验内容与要求
(1)在利用VHDL编辑程序实现半加器和或门,再利用原理图连接半加器和或门完成全加器的设计,熟悉层次设计概念;
(2)给出此项设计的仿真波形;
(3)参照实验板1K100的引脚号,选定和锁定引脚,编程下载,进行硬件测试。
三?设计思路
一个1位全加器可以用两个1位半加器及一个或门连接而成。而一个1位半加器可由基本门电路组成。
(1) 半加器设计原理
能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。或:只考虑两
个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。图1为半加器
原理图。其中:a、b分别为被加数与加数,作为电路的输入端;so为两数相加产生的本位
和,它和两数相加产生的向高位的进位co 一起作为电路的输出。
半加器的真值表为
表1
由真值表可分别写出和数so,进位数co的逻辑函数表达式为:
so a b a b a b co ab (1)
(2)
(2) 全加器设计原理
除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图2全加器原理图。
全加器的真值表如下:
其中a为加数,b为加数,c为低位向本位的进位,co为本位向高位的进位,so为本位和。
图2.全加器原理图
四?实现方法一:原理图输入法设计(自己独立完成)
1. 建立文件夹
建立自己的文件夹(目录),女口c:\myeda,进入Windows操作系统Quartusll不能识别中文,文件及文件夹名不能用中文。
2. 原理图设计输入
打开Quartus II ,选菜单File 宀New ,选择“Device Design File->Block Diagram- 'Schematic File 项。点击“ OK'在主界面中将打开“ Block Editor 窗口'。
(1) 放置元件
在原理图编辑窗中的任何一个空白处双击鼠标左键或单击右键,跳出一个选择窗,选择此窗中的Enter Symbol项输入元件,出现元件选择窗口。
元件选择窗口窗口中Symbol Libraries: 的路径c:\ Quartus2\max2lib\prim 下为基本
逻辑元件库,双击之,在Symbol Files:下出现prim中的所有元件,选中你需要的元件(如: 二与门,即and2);或者在Symbol Name:中直接输入元件名称(and2),单击OK键。你需要的元件(and2)会出现在原理图编辑窗中。
为了设计半加器,分别调入元件an d2、not、xnor、in put和output 。
如果安放相同元件,只要按住CTRL键,同时用鼠标拖动该元件。
(2)添加连线
把鼠标移到引脚附近,则鼠标光标自动由箭头变位十字,按住鼠标左键拖动,即可画出连线。然后用鼠标分别在in put和output的PIN-NAME上双击使其变黑色,再用键盘分别输入各引脚名:ain、bin、co和so。
(3).保存原理图
单击File T Save as…按扭,出现对话框,选择自己的目录(如c:\myeda )、合适名称保
图3 一位半加器图
(4)设置工程文件(Project )
方法1 选择File Project Set Project to Current File ,即将当前的设计文件设
置成工程。
方法2如果设计文件未打开,选File Project Name然后在跳出的Project Name
窗中找到c:\myeda目录,在其File小窗口中双击gate.bdf文件。
选择此项后可以看到窗口左上角显示出所设文件路径的变化。
3. 选择目标器件
单击Assign T Device,跳出Device窗口,此窗口的Device Family是器件序列栏,首先在此栏中选定目标器件对应的序列名,如EPM7128S对应的是MAX7000S系列;EPF10K10
对应的是FLEX10K系列等。根据实际情况完成器件选择后(本实验为Cyclo ne||系列的
EP2C35F672C8,按0K键。
应将此栏下方标有Show only Fastest Speed Grades 的勾消去,以便显示出所有
速度级别的器件。
4. 编译(Compiler )
单击Quartusll T Compiler,跳出Compiler窗口,此编译器的功能包括网表文件的提取、设计文件的排错、逻辑综合、逻辑分配、适配(结构综合)、时序仿真文件提取和编程
下载文件装配等。单击Start,开始编译!如果发现有错,排除错误后再次编译。
5. 包装元件入库。
编译通过后,单击File T Create Default Symbol,当前文件变成了一个包装好的自己
的单一元件(半加器:gate ),并被放置在工程路径指定的目录中以备后用。
6. 用两个半加器及一个或门连接而成一位全加器
我们将上述1~5步的工作看成是完成了的一个底层元件,并被包装入库。利用已做好的
半加器gate,完成原理图输入、连线、弓I脚命名、器件选择、保存、项目设置、编译等过程,完成顶层项目全加器的设计。如图4所示。
IBJI.■ j ■. K a i . a <. ■
图4全加器的设计图半加器兀件gate的调用与库兀件的调用方法一样。
以文件名aaa.bdf存在同一目录(c:\myeda )中。以下步骤同方法二:
7. 仿真,测试项目的正确性
8. 观察分析波形
9. 时序分析
五. VHDL文本输入法设计
1. 试验程序(程序来源:自己独立编写)
--全加器设计的文本输入法设计程序
--设计人:邓小娇
--2012年9月26日
--1位二进制全加器顶层设计描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY aaa IS
P0RT(ain,bin,cin:IN STD_LOGIC;-- 输入信号ain为加数,bin为加数,cin为低位向本位的进位cout,sum:OUT STD_LOGIC);--输出信号:co为本位向高位的进位,--so为本位和
END ENTITY aaa;
--半加器描述:真值表描述方法
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY gate IS
PORT(a,b:IN STD_LOGIC;--a 为加数,b 也为加数
co,so:OUT STD_LOGIC); -- co 为本位向高位进位,so为本位和
END ENTITY gate;
ARCHITECTURE ART4 OF gate IS
SIGNAL abc:STD_L0GIC_VECT0R(1 DOWNTO 0);-- 定义标准逻辑位矢量数据类型BEGIN
abc<=a&b;--a相并b, 即即a与b并置操作
PROCESS(abc)
BEGIN
CASE abc IS --类似于真值表的CASE语句
WHEN "00"=>so<= '0';co<= '0';
WHEN "01"=>so<= '1';co<= '0';
WHEN "10"=>so<= '1';co<= '0';
WHEN "11"=>so<= '0';co<= '1';
WHEN OTHERS=> NULL;
END CASE;
END PROCESS;
END ARCHITECTURE ART4;
--或门逻辑描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY or2a IS
PORT(a,b:IN STD_LOGIC;--a .b 都为或门的输入c:OUT STD_LOGIC);--c 为或门的输出END ENTITY or2a;
ARCHITECTURE one OF or2a IS
BEGIN
c <= a OR b;
END ARCHITECTURE one;
ARCHITECTURE fd1 OF aaa IS
COMPONENT gate --调用半加器声明语句
PORT(a,b:IN STD_LOGIC;
co,so:OUT STD_LOGIC);
END COMPONENT;
COMPONENT or2a
PORT(a,b:IN STD_LOGIC;
c:OUT STD_LOGIC);
END COMPONENT;
SIGNAL d,e,f:STD_LOGIC;--定义3个信号作为内部的连接线。
BEGIN
u1: gate PORT MAP(a=>ain,b=>bin,co=>d,so=>e);--例化语句,=>表示信号连接
u2: gate PORT MAP(a=>e,b=>ci n, co=>f,so=>sum);
u3: or2a PORT MAP(a=>d,b=>f,c=>cout);
END ARCHITECTURE fd1;
2. 程序说明
对于对数综合器来说,程序所列的全部程序可以同时输入相应的EDA软件进行编译,也