南昌大学实验报告
学生姓名: 刘志强 学 号: 6100409222 专业班级: 电子091班实验类型:验证 □综合 □设计 ■创新 □ 实验日期: 实验成绩:
实验一 一位二进制全减器设计
一、实验目的
(1) 掌握QuartusII的VHDL原理图设计和文本设计全过程;
(2) 熟悉简单组合电路的设计,掌握系统仿真,学会分析硬件测试结果。
二、实验内容与要求
(1)设计一个二进制全减器,用分层设计方法,顶层为全减器,底层为半减器和逻辑门组成;
(2)进行波形仿真,并分析仿真波形图;
(3)下载测试全减法器是否正确。
三、设计思路/原理图
一位全减器可以由两个半减器和一个或门连接而成,根据半减器真值表对半减器进行描述,再对或门的VHDL描述,而后根据原理图对全减器的VHDL描述。
图1全减器f_suber电路图
四、实验程序(程序来源:教科书本)
libraryieee; --半减器描述
useieee.std_logic_11.all;
entityh_suber is --定义半减器h_suber实体
port(a,b:instd_logic;
do,vo:out std_logic);
endentity h_suber;
architecturefs1 of h_suber is
signalabc:std_logic_vector (1 downto 0);
begin
abc<= a&b ;
process(abc)
begin
caseabc is
when"00" => do<='0';vo<='0';
when"01" => do<='1';vo<='1';
when"10" => do<='1';vo<='0';
when"11" => do<='0';vo<='0';
whenothers => null;
endcase;
endprocess;
endarchitecture fs1;
libraryieee; --一位二进制全减器顶层设计描述
useieee.std_logic_11.all;
entityf_suber is --定义全减器f_suber实体
port(ain,bin,cin:in std_logic;
v,sub:out std_logic);
endentity f_suber;
architecturefs of f_suber is
componenth_suber ---调用半减器声明语句
port(a,b:in std_logic;
do,vo:out std_logic);
endcomponent;
componentor2a --调用或逻辑门声明语句
port(m,n:in std_logic;
h:out std_logic);
endcomponent;
signale,f,g:std_logic; ---定义3个信号作为内部的连接线begin
u1:h_suberport map(a=>ain,b=>bin,do=>e,vo=>f); ---例化语句u2:h_suberport map(a=>e,b=>cin,do=>sub,vo=>g);
u3:or2aport map(m=>g,n=>f,h=>v);
endarchitecture fs;
五、实验步骤
1.利用QuartusII 7.2 建立工程
在file中打开【】→【】→ 在【】中选
择存放的目录→【】f_suber要与顶层文件中entity f_suber 相同→点击next→点击next→选择芯片→next完成;
再在file 下面点【 | 】→【 | 】→ 点击ok→ 编写程序→ 编 | |||||
译并保存在f_suber 文件中(改动程序后,再保存,再编译)→ 管脚【】→ | |||||||
【 | 】→ 而后对芯片设置,即打开device→点【 | 】→点 | |||||
【 | 】与【 | 】→选如【 | 】与 | ||||
【】→选芯片→确定ok ; | |||||||
重新编译→点下载,后选【 | 】硬件有“JTAG【 | 】”和“ASP | |||||
【】手动添加以扩展名为.pof 的文件【】”两个接口其一(要看硬 | |||||||
件接口),选中【 | 】” →添加【 | 】中的驱动程序→ |
【】→点【】开始下载。 | ||
注:原理图输入法工程建立与文本输入法建立相似,而且原理图形与以前学习的Mutisim相
同,这里不再多说。
2.用quartusII创建仿真工程
在已有的工程中,在file 下面点【】→【】OK→在任务栏 | |||
【 | 】中双击,来添加管脚→【】→【】OK 然后设置一下 | ||
输入引脚波形→保存一下→仿真【 | 】→必要时还可以设置一下【 | 】 | |
中的【 】改时间【】→再重新仿真一下。 | |||
六、仿真波形分析
下图为实验所得的波形图:
对实验所得的波形图作如上的标记,可以得到如下仿真信息表:
Value | A | B | C | D | V |
a | 0 | 0 | 0 | 0 | 0 |
b | 0 | 0 | 1 | 1 | 1 |
c | 0 | 1 | 0 | 1 | 1 |
d | 0 | 1 | 1 | 0 | 1 |
e | 1 | 0 | 0 | 1 | 0 |
f | 1 | 0 | 1 | 0 | 0 |
g | 1 | 1 | 0 | 0 | 0 |
h | 1 | 1 | 1 | 1 | 1 |
差值D的结果为A—B—C的值,与理论值一样借位输出V也与理论值一致;从波形图可以
看出输出波形有一定的延时和毛刺,是因为经过元器件需要时间和冒险现象存在。
七、硬件测试
使用的芯片是EP1K00QC208-3。ain、bin、cin分别连接引脚53(电平1)、54(电平2)、
55(电平3),sub、v分别连接引脚167(LED1)、168(LED2);测试为:电平1、2、3分别
为(低、低、低)、(低、低、高)、(低、高、低)、(低、高、高)、(高、低、低)、(高、低、
高)、(高、高、高)、(高、高、高)对应的LED1、LED2分别为(灭、灭)、(亮、亮)、(亮、
亮)、(灭、亮)、(亮、灭)、(灭、灭)、(灭、灭)、(亮、亮)。
八、实验小结
很幸运,我们这届学生遇上了全新的实验设备,可以放心做实验了。首先,老师教我们如何破解QuartusII 7.2,接着就开始设计全减器。
对全减器的设计是比较简单的,而且在对全减器编译、仿真和下载之前,我已对QuartusII 7.2 进行了多次操作,已经熟练地掌握了利用QuartusII 7.2建立工程和创建仿真等;通过此次试验,我可以向复杂的设计迈进,通过试验,一步一步地提高自己的设计能力、创新能力。通过这个实验,掌握了利用QuartusII建立工程、创建仿真工程和编程下载;在第一次编译时,发现“or2a”没有定义,然后定义一下逻辑或门or2a,保存一下,重新编译 time,保存,重新仿真,仿真后的波形没通过;在第一次波形仿真后,改变输入波形和end
有变,之后才发现要改动Assignments下的setting-f_suber框中的SimulatorSetting;在用原理图输入法设计时,底层用文本输入法创建半减器工程,顶层原理图连接之后,需要再在创建一个原理图工程,工程名是f_suber。