采用VHDL层次化文件设计一个一位全减器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
采用VHDL层次化文件设计一个一位全减器
一、实训目的
1.巩固编译、仿真VHDL文件的方法。
2.掌握在Quatrus Ⅱ中使用自定义库和程序包的方法。
二、实训器材
计算机与Quartus Ⅱ工具软件。
三、实训指导
(一)实训原理
一位全减器的真值表如表3-1所示:
表3-1 一位全减器的真值表
(二)实训步骤
1.设计输入VHDL文件
(1)设计输入底层文件my_package.vhd。
(2)设计输入顶层文件fullsub_work.vhd。
以fullsub_work为工程文件夹,fullsub_work.vhd为顶层文件新建的一个工程项目,把my_package.vhd文件添加到工程中。执行Project→Add/Remove Files in Project…把my_package.vhd文件添加到工程下。
VHDL代码如下:
my_package.vhd文件代码如下:
PACKAGE my_package IS
PROCEDURE halfsub (SIGNAL a,b:IN BIT; SIGNAL s,c:OUT BIT);
PROCEDURE orgate (SIGNAL a1,b1:IN BIT; SIGNAL o1:OUT BIT);
END my_package;
PACKAGE BODY my_package IS
PROCEDURE halfsub (SIGNAL a,b:IN BIT; SIGNAL s,c:OUT BIT) IS
BEGIN
s<=a XOR b AFTER 10 ns;
c<=(NOT a) AND b AFTER 10 ns;
END PROCEDURE halfsub;
PROCEDURE orgate (SIGNAL a1,b1:IN BIT; SIGNAL o1:OUT BIT) IS
BEGIN
o1<=a1 OR b1;
END PROCEDURE orgate;
END my_package;
fullsub_work.vhd文件代码如下:
USE WORK.my_package.ALL;
ENTITY fullsub_work IS
PORT(i1,i2,c_in:IN BIT;
fs,c_out:OUT BIT);
END fullsub_work;
ARCHITECTURE a OF fullsub_work IS
SIGNAL temp_s,temp_c1,temp_c2:BIT;
BEGIN
U0:halfsub(i1,i2,temp_s,temp_c1);
U1:halfsub(temp_s,c_in,fs,temp_c2);
U2:orgate(temp_c1,temp_c2,c_out);
END a;
2.编译顶层设计文件
把my_package.vhd文件放入fullsub_work文件夹中,直接编译顶层文件同时也就编译底层模块文件。若有错误,则加以纠正,直到通过为止。
3.仿真顶层设计文件
最后,仿真顶层文件,若发现功能错误,应检查其原因,并加以纠正。一位全减器的仿真图如图3-1所示:
图3-1 一位全减器仿真波形图