数电实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数电实验报告
实验一
实验题目:十进制代码——8421码转换电路
实验目的:
(1)掌握组合逻辑电路设计方法
(2)掌握码制转换逻辑的设计特点
(3)掌握TTL芯片的应用和调试
实验原理:
实验内容:
将TTL设计成十进制转换成8421BCD码。
实验总结与收获:
对TTL有了一定的了解,掌握码制转换逻辑的设计特点,组合逻辑电路设计方法也有些了解,对以后的实验有心理准备。
实验二
实验题目: 译码器及数码显示
实验目的:
(1) 掌握组合逻辑电路设计的方法.
(2) 对比用不同的器件,不同设计方法之间的比较. (3) 掌握数码关与译码器的电位关系.
实验原理:
1.数码管是一种子常用器件,当你显示十进制数时,是有很多电路供你选用,一般根据所使用的数码管是共阳极还是共阴极来选择对应芯片的.七段发光二极管(LED)数码显示器的字形与七段荧光数码管一样,外观为平面型.它的a,b,c,d,e,f,g 段是用发光二极管显示的,并且分为共阳极和共阴极两种.共阳极是七个发光二极管的阳极接在一起,接到高电平(正电源)上,阴极接到译码器的输出端,哪个发光二极管的阴极为低电平,哪个发光二极管就亮,而阴极为高电平的发光二极管就不亮.共阴极是七个发光二极管的阴极接到一起,,接到低电平处,哪个发光二极管的阳极接高电平,哪个发光二极管就亮,否则就不亮.这种数码特点是电源电压为5V,与TTL 电源一致共阳弄数码管内部结构.
2.LED 数码管的内部显示如图所示:
3.BI 是消隐输入端,当输出功能为0—15V 时,BI 必须开路或接高电平,BI 处于低电平时,所有各段输出均被切断且与其它输入端的电平无关.RBI 串行消隐输入端,能消除无意义的0显示,RBO 串行消隐输出端与RBI:LT 组合控制可消除其它无意义的输出.LT 为灯测
注:输出端中Y表示导通,N表示截止.
实验内容:
(1)要求设计16进制译码器的逻辑图.
(2)根据逻辑图边好译码器,并将电阻,数码管连上.
(3)通电调试,直到0—F都能正确显示为止.
实验设计:
1.根据实验需求分析,可得出下面的逻辑关系式:
C
B
A
D
AC
B
AD
D
B
CD
B
A
C
B
AD
D
C
B
A
D
ABC
BC
D
A
D
B
AC
AB
D
C
D
C
B
A
D
C
B
A
a
+
+
+
=
+
+
+
+
+
+
+
+
=
D
AB
C
B
A
B
A
D
C
CD
B
A
D
C
B
A
D
C
B
A
D
ABC
D
C
B
A
D
C
AB
D
C
B
A
D
C
B
A
D
C
B
A
b
+
+
+
=
+
+
+
+
+
+
+
+
=
C
B
A
C
D
C
A
C
ABD
C
B
AD
D
C
B
A
D
ABC
D
A
BC
D
B
AC
D
C
B
A
D
C
AB
D
C
B
A
D
C
B
A
c
+
+
=
+
+
+
+
+
+
+
+
+ =
D
B A
C B A
BC
A
C
AB
D
C
BCD
A
B
ACD
C
ABD
C A
BD
C B
AD
D
C B A
D
A
BC
D
B
AC
D
C
AB
D
B A
C
D
C B A
d
+
+
+
+
=
+
+
+
+
+
+
+
+
+
+
=
C
A
B
A
BCD
A
D
C
B
A
D
C
B
A
D
BC
A
D
C
B
A
D
C
B
A
e+
=
+
+
+
+
+
=
D
B
D
C
B
A
BCD
A
CD
B
A
CD
B
A
C
B
AD
D
C
B
A
BC
D
A
AC
D
B
C
D
B
A
D
C
B
A
f
+
+
=
+
+
+
+
+
+
+
+ =
C B
B A
D
C
C B
BCD
A
CD
B A
CD
B A
D
C
AB
D
C B A
D
C B A
D
C B A
D
BC
A
AC
D
B
D
C B A
D
C
AB
D
C B A
g
+
+
+
=
+
+
+
+
+
+
+
+
+
+
+
=
其中:0=a+b+c+d+e+f 1=b+c 2=a+b+d+e+g. 3=a+b+c+d+g.
4=b+c+g+f. 5=a+c+d+f+g. 6=a+c+d+e+f+g. 7=a+b+c.
8=a+b+c+d+e+f+g. 9=a+b+c+d+f+g A=a+b+c+e+f+g.
B(b)=c+d+e+f+g. C=a+e+f. d(D)=b+c+d+e+g.
E=a+d+e+f+g F =a+e+f+g.
2.用编程语言进行编程:
PLD16V8 //器件名称
BASIC GATES //逻辑功能
WANGTAO 2009.4.13 //姓名,时间
SHIYAN LATTICE V4.6 //用途,公司,版本
D C B A NC NC NC NC NC GND //定义输入脚
NC a b c d e f g NC VCC //定义输出脚
;LOGIC EQUATIONS //注释
a=B*/D+A*/B*D+A*C*/D+/A*/B*/C
b=/C*/D+/A*/B+A*/B*/C+A*B*/D
c=A*/C+C*/D+/A*/B*/C
d=/C*D+A*B*/C+/A*B*C+A*/B*C+/A*/B*/D
e=/A*B+/A*/C
f=/A*/B+C*/D+/B*D
g=B*/C+/C*D+/A*B+/B*C
DESCRIPTION //程序结束
3.调试验证:
实验中用fm.exe对程序wt.pld进行编译.生成wt.jed文件。
将程序导入芯片中,最后按照实验要求将电路线连好。
即0000显示0,0001显示1,0010显示2,0011显示3,0100显示4,0101显示5,0110显示6,0111显示7,1000显示8,1001显示9,1010显示A,1011显示b,1100显示C,1101显示d,1110显示E,1111显示F.另外,实验中由于LED数码管显示的8与B一样,0与D一样,所以采用b代替B,d代替D.
实验结论与收获:
通过本次实验,解到了一些组合逻辑电路设计的方法.并且意识到TTL芯片与GAL芯片的一些差异.当电路较为复杂时, 用GAL芯片比用TTL芯片好,它会使工程会变得简单许多.还让我对计算机硬件方面多了一些兴趣,意识到作为一个计算机系的学生,不仅仅是要知道编程等方面的软件知识,也应该了解计算机的硬件.
实验三
实验题目:海明码校验逻辑实验(设计型)
实验目的:
1)掌握总线的应用方法;
2)掌握总线出错时发现错误和纠正错误的方法;
3)掌握奇偶校验的原理;
4)掌握海明校验的编码原理及设计,调试方法。
实验原理:
(2).海明码由8421码加三位校验位组成.设8421码为I4I3I2I1,三位校验码为P3P2P1,则海明码为下列七位代码:
其中P3=I4⊕I3⊕I2.P2=I4⊕I3⊕I1.P1=I4⊕I2⊕I1.
S3=I4⊕I3⊕I2⊕P3.S2=I4⊕I3⊕I1⊕P2.S1=I4⊕I2⊕I1⊕P1.然后判断S3S2S1,若代码正确,则S3S2S1=000,否则指出出错数位.
实验要求:
(1).设计信息位为4位的内存的海明校验逻辑电路,在读内存储器时,具有一位出错报错和纠正一位错误的功能.
(2).为了难其正确性,在读出信息的通路上,要串入造错用逻辑,位数自定.
(3).奇偶发生器与海明校难器对同一位用一块厅偶校验集成块.
实验设计:
(1).实验设计时的参考逻辑图:
(2).根据上面的参考逻辑图得到的实际电路原理图如下:
(3).用VHDL语言编写的程序代码如下:
(4).对实验的模拟波形图如下:
实验总结:
这次实验主要是建立起了总线和使能控制的概念,和实验一相比,本实验中引入了时序逻辑(寄存器)。
虽然实验原理不难,但由于是初次使用MAX+plus,所以这次实验花的时间比较多,特别是用原理图实现部分。
通过这次实,对寄存器和总线结构有了更进一步的理解,验同时也学会了MAX+plus的初步使用,对异或门和同或门的输入输出特性也有了更深的了解。
实验四
实验题目:时序脉冲分频分配延迟与整形电路(VHDL设计型)
实验目的:
掌握同步时序电路和分频,延迟整形的原理和设计方法,进一步提高实践能力.
实验要求:
①脉冲源为10兆,要求得到主脉冲1兆,即周期T=1us脉宽500ns(占空比1:1).
②在主脉冲CP下产生单拍脉冲CPO.
③在主脉冲CP下产生三个周期T1-T2,每个周期包括2个主脉冲的分频分配器,输出系统波为CP1-CP2.
④有CP1得到延迟200ns,波宽为200ns的脉冲CP1.
⑤由CP2得波宽为700ns的脉冲CP2.
实验原理:
实验中提供10兆脉冲源;双D触发器74LS74;单稳74LS123;计数器74LS161;延迟线或作延迟用的低频反相器;能用反相器、与门、与非门等;整形、延迟中用的电阻电容.
延迟方法可用单稳(但要保持原脉冲宽度一般不用),还可用延迟线,低频反相器,积分电路.波形整形电路设计也可用单稳,延迟时间键电路加触发器”葫芦串”结构电路,微积分电路等.
实验设计:
实验的逻辑参考图如上图所示.在设计中,5分频用了一个5进制计数器来实现.该部分是自己设计的一个芯片.而4分频或2个2分频部分是用系统自带的芯片74LS74.三周期部分也是自己设计的一个芯片,是用移位寄存器的原理实现的.其中CP1,CP2,CP3,CP4,CP5和CP6的实现是通过已得到的波形通过逻辑关系组合而成的.
1)实验原理图
原理图的设计可分为四个模块:五分频部分,四分频部分,二分频部分,T3波形变换部分(这里用计数器实现的,用移位寄存器也可以)。
五分频部分电路图如下:
三个寄存器能表示八个状态,但在这里只用到了五个状态,构成五进制计数器。
计数器为自启动计数器。
同理用两个触发器组成的四分频电路如下:
二分频电路为:
T3波形变换电路为:
实际上是有三个输出的计数电路。
由上述部分经过组合逻辑设计得电路原理图如下:
VHDL代码部分:
将原理图的实现用VHDL语言描述为:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY clk IS
PORT(clk : IN STD_LOGIC;
CP1,CP2,CP3,CP4,CP5,CP6 : OUT STD_LOGIC;
Q3,Q4,Q4b,Q5,Q6,Q7,Q8 : BUFFER STD_LOGIC);
END clk;
ARCHITECTURE VHDL OF clk IS
BEGIN
PROCESS(clk,Q3,Q5)
VARIABLE count_5 : STD_LOGIC_VECTOR(2 DOWNTO 0);
VARIABLE count_2 : STD_LOGIC;
VARIABLE count_4 : STD_LOGIC_VECTOR(1 DOWNTO 0);
VARIABLE count_3 : STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
IF(clk'EVENT AND clk='1')THEN
IF(count_5="000")THEN
count_5 := "001";Q3 <= '1';
ELSIF(count_5="001")THEN
count_5 := "010";Q3 <= '0';
ELSIF(count_5="010")THEN
count_5 := "011";Q3 <= '0';
ELSIF(count_5="011")THEN
count_5 := "100";Q3 <= '0';
ELSIF(count_5="100")THEN
count_5 := "000";Q3 <= '0';
END IF;
END IF;
IF(Q3'EVENT AND Q3='1')THEN
IF(count_2='0')THEN
count_2 := '1'; Q4 <= '1';Q4b <= '0';
ELSIF(count_2='1')THEN
count_2 := '0'; Q4 <= '0';Q4b <= '1';
END IF;
END IF;
IF(Q3'EVENT AND Q3='1')THEN
IF(count_4="00")THEN
count_4 := "01";Q5 <= '1';
ELSIF(count_4="01")THEN
count_4 := "10";Q5 <= '1';
ELSIF(count_4="10")THEN
count_4 := "11";Q5 <= '0';
ELSIF(count_4="11")THEN
count_4 := "00";Q5 <= '0';
END IF;
END IF;
IF(Q5'EVENT AND Q5='1')THEN
IF(count_3="00")THEN
count_3 := "01"; Q6 <= '1';Q7 <= '0';Q8 <= '0';
ELSIF(count_3="01")THEN
count_3 := "10"; Q6 <= '0';Q7 <= '1';Q8 <= '0';
ELSIF(count_3="10")THEN
count_3 := "00"; Q6 <= '0';Q7 <= '0';Q8 <= '1';
END IF;
END IF;
END PROCESS;
CP1 <= Q4b AND Q5 AND Q6;
CP2 <= Q4b AND NOT Q5 AND Q6;
CP3 <= Q4b AND Q5 AND Q7;
CP4 <= Q4b AND NOT Q5 AND Q7;
CP5 <= Q4b AND Q5 AND Q8;
CP6 <= Q4b AND NOT Q5 AND Q8;
END VHDL;
实验中的波形模拟图:
使用GAL编写程序
PLD16V8
BASIC GATES
WANGTAO 2009.5
SHIYAN LATTICE V4.6
Q4b Q5 Q6 Q7 Q8 N P Q H GND
C P1 CP2 CP3 CP4 CP5 CP6 V U A VCC
;LOGIC EQUATIONS
CP1=Q4b*Q5*Q6 CP2=Q4b*Q5*Q6 CP3=Q4b*Q5*Q7
CP4=Q4b*Q5*Q7 CP5=Q4b*Q5*Q8 CP6=Q4b*Q5*Q8
DESCRIPTION;
实验调试:
1)本次实验在逻辑上基本是串形的,所以可完成一部分调一部分。
2)先调五分频,接着调四分频或两个二分频、然后调三个周期和调六个系列波。
3)先用单拍脉冲作脉冲源,看指示灯或万用表测电位,来查各部分逻辑是否正确.注意在第N
态错,要查N-1态.。
实验收获:
在实验过程中碰到了许多自己不懂的问题.通过本次实验我了解到了如何将信号作分频处理以得到所需信号的方法。
通过本次实验,我也训练了模块化并最终将各模块合理的衔接到一起的思想方法。
通过本次实验,增强了自己对VHDL的熟练程度。
通过这次实验,对触发器和计数器的工作原理和应用有了更好的掌握,对时钟概念的理解也更深了。
原理图实现时第一次尝试用模块化来设计,使电路看起来简单明了了。
实验五
实验题目:串行输入并行输出
实验目的:掌握数据的串行输入与并行输出,从而进一步掌握时序电路及其在计算机中的应用,以培养和提高实践技能.
实验原理及要求:
i.数据输入:
将数据串行输入系统中.对于本实验,以八位数据为基准.即对输入的数据分隔,每八位作为一个整体将其输出.
ii.数据输出:
当输入的数据满足一定条件时将其每八位并行输出一次.这其中数据需满足的条件是:数据组合必须是每八位组合一次,并且当数据处于接收状态.
iii.数据控制:
将输入的数据同样按八位读取,当读取到某一特定串行输入数据序列时,控制器处于开启状态,表示接受数据输入.当输入的八位数据为另外一个特定的串行输入数据序列时,控制器处于关闭状态.并且在这时候控制数据输出是否将串行输入的数据并行输出.由于数据必须满足上述两个条件,所以数据控制部分可分为两个小模块来完成.一部分用于判定数据的输入序列是否为特定的序列.另一个模块用于对串行输入的数据进行计数,看是否已输入八位.
本实验中,自己约定两个特定的序列. "00111100"表示控制器开启,即读取数据开始.相反地, "11000011"表示控制器关闭,即读取数据结束.
实验设计:
根据实验的原理及要求,可以将整个系统分为三个模块来设计.
数据输入模块:以时钟信号为基础,将时钟信号作为输入,通过高低电平的控制,实现串行输入数据的序列.此时需将所输入的数据存储在一个存储器中,以便用于后面的输
出工作.
数据控制模块:将数据输入模块所输入的数据输出作为数据控制模块的输入数据序列.根据实验原理及要求部分所述,将”00111100”作为数据控制模块的开启信息.此时
表示数据的读取状态.而”11000011”作为数据控制模块的关闭信息,表示数据
读取结束.这两个状态是相反的,可用一个D触发器来获得最终的控制结果.
此时还需要作另外一个判断,即串行输入的数据序列是否已满8位.因此需要
一个计数器来对已输入的数据序列进行计数.当已有8位时,数据控制模块的
逻辑值应为1,即将把串行输入的8位数据并行输出.
数据输出模块.:由于在数据输入模块中已经将数据存储在了一个存储器中,若此时数据输出
模块接收到数据控制模块的逻辑值为1的信息,那么数据模块将把存储在存
储器的数据8位并行输出.否则,数据输出模块将不输出数据.
实验具体设计.
实验采用模块化设计.具体模块如下图所示:
1)实验原理连接图.
2)实验VHDL程序.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY exp5 IS
PORT(CLK,CLRN,INPUT:IN STD_LOGIC;
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,B1,B2,D1,C1,CLK2:BUFFER STD_LOGIC;
S1,S2,S3,S4,S5,S6,S7,S8:OUT STD_LOGIC);
END exp5;
ARCHITECTURE ex5 OF exp5 IS
BEGIN
PROCESS(CLK,CLRN,INPUT)
BEGIN
IF(CLRN='0')then
Q1<='0';
Q2<='0';
Q3<='0';
Q4<='0';
Q5<='0';
Q6<='0';
Q7<='0';
Q8<='0';
ELSIF(CLK'EVENT AND CLK='1')then
Q1<=INPUT;
Q2<=Q1;
Q3<=Q2;
Q4<=Q3;
Q5<=Q4;
Q6<=Q5;
Q7<=Q6;
Q8<=Q7;
END IF;
END PROCESS;
PROCESS(Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,CLRN,CLK)
BEGIN
B1<=NOT((NOT Q1) OR Q2 OR Q3 OR Q4 OR Q5 OR Q6 OR Q7 OR (NOT Q8));
B2<=(NOT Q1) AND Q2 AND Q3 AND Q4 AND Q5 AND Q6 AND Q7 AND (NOT Q8);
IF(CLRN='0')then
D1<='0';
ELSIF(CLK'EVENT AND CLK='1')then
D1<=(B1 AND (NOT D1)) OR ((NOT B2) AND D1);
END IF;
END PROCESS;
PROCESS(CLK,CLRN,D1,CLK2)
VARIABLE c:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN
CLK2<=(CLK AND D1);
IF(CLRN='0')then
c:="000";
ELSIF(CLK2'EVENT AND CLK2='1')then
IF(c="000")THEN
c:="001";C1<='0';
ELSIF(c="001")THEN
c:="010";C1<='0';
ELSIF(c="010")THEN
c:="011";C1<='0';
ELSIF(c="011")THEN
c:="100";C1<='0';
ELSIF(c="100")THEN
c:="101";C1<='0';
ELSIF(c="101")THEN
c:="110";C1<='0';
ELSIF(c="110")THEN
c:="111";C1<='0';
ELSIF(c="111")THEN
c:="000";C1<='1';
END IF;
END IF;
END PROCESS;
PROCESS(CLRN,C1,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8) BEGIN
IF(CLRN='0')then
S1<='0';
S2<='0';
S3<='0';
S4<='0';
S5<='0';
S6<='0';
S7<='0';
S8<='0';
ELSIF(C1'EVENT AND C1='1')then
S1<=Q1;
S2<=Q2;
S3<=Q3;
S4<=Q4;
S5<=Q5;
S6<=Q6;
S7<=Q7;
S8<=Q8;
END IF;
END PROCESS;
END ex5;
3)实验模拟波形图.
4)使用GAL进行编程
PLD16V8
BASIC GATES
WT 2009.6
SHIYAN LATTICE V4.6
A1 A2 A3 A4 A5 A6 A7 A8 H GND
I J Z Y X W V U A VCC
;LOGIC EQUATIONS
I=A1*A2*/A3*/A4*/A5*/A6*A7*A8 (控制电路jk触发器j输入)
J=/A1*/A2*A3*A4*A5*A6*/A7*/A8 (控制电路jk触发器k输入)
DESCRIPTION;
实验收获:
进一步熟悉了一个设计性实验的具体设计思想过程及方法.在与同学们的讨论中,逐渐熟悉设计思想。
主要是8位数据输入的控制和对输入的数据进行计数。
再一次熟悉了模块化思想并最终将各模块合理的衔接到一起的思想方法.虽然过程中遇到不少麻烦,但都一步步得化解,最终成功的完成。