实验二三态门,OC门的设计与仿真
一、实验目的
熟悉三态门、OC门的原理,用逻辑图和VHDL语言设计三态门、OC门,并仿真。
二、实验内容
1.用逻辑图和VHDL语言设计三态门,三态门的使能端对低电平有效。
2.用逻辑图和VHDL语言设计一个OC门(集电极开路门)。
三、实验原理
1.三态门,又名三态缓冲器(Tri-State Buffer)
用途:用在总线传输上,有效而又灵活地控制多组数据在总线上通行,起着
交通信号灯的作用。
功能:三态逻辑输出三种不同的状态,其中两种状态常见的逻辑1和逻辑0,
第三个状态高阻值,称为高阻态,用Hi-Z或者Z或z表示三态缓冲器比普通缓冲器多了一个使能输入EN,即连接到缓冲器符号底部的信号。从真值表可以看出,如果是EN=1.则OUT等于IN,就像普通缓冲器一样。但是当EN=0时,无论输入的值什么,输出结果为高阻态(Hi-Z)。
逻辑图
真值表
波形图
2.OC门,又名集电极开路门(opndrn)
用途:集电极开路门(OC门)是一种用途广泛的门电路。典型应用是
可以实现线与的功能。
逻辑图
真值表
波形图
四、实验方法与步骤
实验方法:
采用基于FPGA进行数字逻辑电路设计的方法。
采用的软件工具是QuartusII软件仿真平台,采用的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。
实验步骤:
1、编写源代码。打开QuartusⅡ软件平台,点击File中得New建立一个文件。编写
的文件名与实体名一致,点击File/Save as以“.vhd”为扩展名存盘文件。VHDL 设计源代码如下:
三态门:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY tri_s IS
PORT (
enable,datain:IN STD_LOGIC;
dataout:OUT STD_LOGIC
);
END tri_s;
ARCHITECTURE bhv OF tri_s IS
BEGIN
PROCESS (enable,datain)
BEGIN
IF enable='1' THEN dataout<=datain;
ELSE dataout<='Z';
END IF;
END PROCESS;
END bhv;
OC门:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY oc IS
PORT(
datain:IN STD_LOGIC;
dataout:OUT STD_LOGIC
);
END oc;
ARCHITECTURE bhv OF oc IS
BEGIN
PROCESS (datain)
BEGIN
IF (datain='0') THEN dataout<='0';
ELSE dataout<='Z';
END IF;
END PROCESS;
END bhv;
2、按照实验箱上FPGA的芯片名更改编程芯片的设臵。操作是点击Assign/Device,选取芯片的类型,一般选“Altera的EPF10K20TI144_4”
3、编译与调试。
确定源代码文件为当前工程文件,点击Complier进行文件编译。编译结果有错误或警告,则将要调试修改直至文件编译成功。
4、波形仿真及验证。
在编译成功后,点击Waveform开始设计波形。点击“insert the node”,按照程序所述插入三个节点。设臵参数:选择菜单Edit->End Time和Edit ->Gird Size设臵结束时间和网格大小。然后输入信号激励,可生成波形图,最后点击保存按钮保存。
5、时序,功能仿真。
选择菜单Assignments->Settings命令,易可以选择时序仿真或功能,。
6、FPGA芯片编程及验证。
(1)将下载电缆线与USB接口(DDA_I型实验板)连接,打开实验平台电源开关。(2)选择Tools->Programmer命令,单击Hardware Setup按钮,单击Add Hardware 按钮,在Hardware type下拉列表中选择ByteBlassMV or ByteBlasterII项,Port为LPT1.单击OK确认设臵后单击Close按钮,完成电缆配臵。
(3)完成配臵后,单击Start按钮,Progress栏中出现100%,下载成功。
(4)初始化电路,根据设臵好的管脚资源操作实验,完成异或门测试。
五、实验结果与分析
1、编译过程
a)编译过程、调试结果:
选择菜单Processing-->Compiler Tool命令,弹出全编译工具窗口,单击Start按钮,执行全编译。根据Message窗口中警告和错误信息提示,修改电路重新编译直至编译成功。
b)结果分析及结论
编译成功。
2、功能仿真
a)功能仿真过程
选择菜单Assignments->Settings命令,弹出的仿真设计对话框,点击Simulator Settings选项后,在右侧的Simulator mode下拉列表中选择Fuctional,其他按默认设臵,单击OK按钮完成设臵。
b)及仿真结果
三态门功能仿真图
OC门功能仿真图
c)结果分析及结论
可看得出逻辑关系正确,符合以下真值表,功能仿真没有延迟。
三态门仿真图中当enable为1时,datain与dataout 同步变化,而当enable为0是,无论输入是什么,输出为一条粗黑线,说明输出的是高阻态,进一步说明使能端对低电平有效。
OC仿真图中,当datain为0时,dataout 也为0,当datain为1时,输出高阻态。可知仿真图正确符合逻辑关系。
3、时序仿真
a)时序仿真过程
选择菜单Assignments->Settings命令,弹出的仿真设计对话框,点击Simulator Settings选项后,在右侧的Simulator mode下拉列表中选择Timing,其他按默认设臵,单击OK按钮完成设臵。
b)仿真结果;
三态门:
OC门:
c)结果分析及结论
时序仿真输出和输出都有加入一定的延迟。
4、电路逻辑图
三态门:
OC门:
5、Programming芯片编程
a)芯片编程过程
调节管脚所连的二极管开关,可以控制二极管的亮与不亮,然后观察出现的情况。
1、三态门管脚分配如下:
2、OC门管脚分配如下:
b)编程芯片FPGA验证结果:
1、三态门:
2、OC门:
c)结果分析与结论
1、三态门:只有当enable和d_in所接二极管都亮时亮时,d_out所接二极管才亮;其余情况d_out所接二极管都不亮。
2、不管d_in所接二极管亮与否,d_out所接二极管均不亮。
六、实验结论
实验概括结论:三态门和OC门都有共同的有别于逻辑1和逻辑0的第三种输出值高阻态。三态门比普通的缓冲器多了一个使能输入EN,有四种不同的输入,但只有两种输出结果。在了解三态门和OC门的工作原理后,能较快运用VHDL语言和逻辑门实现编译、仿真和编程。
实验的心得:通过实验对QuartusII软件的操作有了进一步的了解,实行编译,仿真,编程操作都比较熟练。这次又认识了两种逻辑电路,三态门和OC门,对它们的电路结构,代码,仿真图以及编程芯片都有了较好的了解。用逻辑图和VHDL设计逻辑门,逻辑门相对比较简单,VHDL语言的语法比较麻烦,一个标点符号也不允许错,相当严格。