计数器及时序电路
一、实验目的
1、了解时序电路的经典设计方法(D触发器、JK触发器和一般逻辑门组成的时序逻辑电路)。
2、了解同步计数器,异步计数器的使用方法。
3、了解同步计数器通过清零阻塞法和预显数法得到循环任意进制计数器的方法。
4、理解时序电路和同步计数器加译码电路的联系,设计任意编码计数器。
5、了解同步芯片和异步芯片的区别。
二、硬件要求
主芯片Altera EPM7128SLC84-15,时钟,四位八段数码管。
三、实验内容
1、用D触发器设计异步四位二进制加法计数器。
2、用JK触发器设计异步十进制减法计数器。
3、用74161两个宏连接成八位二进制同步计数器。
4、用74390两个宏连接成八位十进制异步计数器。
5、用74161用清零和置数法组成六进制和十二进制计数器。
6、分别用D触发器和同步计数器加译码电路的方法构成7进制电路实现如下编码:
[0→2→5→3→4→6→1] 循环。
四、实验原理及连线
实验内容中的六个实验均要通过实验四的“扫描显示电路”进行显示,具体连线根据每个实验内容完成时的管脚分配来定义,同相应的输入输出接口功能模块相连,扫描模块的连接参考实验四。
1、实验参考原理图,如图8-1所示:
t8_1.gdf说明:计数时钟频率CLK<2Hz;扫描时钟频率>40Hz;
四位D触发器接成异步计数器;SEL0~SEL2为扫描地址(控制八位数码管的扫描顺序和速度);A……G为显示译码输出,代表数码管的八个段位(a,b,c,d,e,f,g)。
八位数码管同时顺序显示0~F。
2、实验参考原理图,如图8-2所示:
3、实验参考原理图,如图8-3所示:
说明:两个74161串接成典型的同步计数器;muxh14完成扫描数据切换;两位数码管同时显示00~FF。
4、实验参考原理图,如图8-4所示:
说明基本同前;
两位数码管同时顺序显示十进制00~99。
5、实验参考原理图,如图8-5所示:
说明:清零法分别完成 0~6、0~B的顺序计数;置位法分别完成3~9,3~F的顺序计数,用四个数码管显示四个计数状态。
6、实验参考原理图,如图8-6所示:
说明:这是按0,2,5,3,4,6,1变化的七进制计时器;图中包括两个独立的实现方法,一种为异步清零,一种为同步清零,两种方法同时显示;
t8_6.gdf用74161计数器加译码的方法实现异步清零七进制计数器的设计;同时用状态机的方法实现同步清零七进制计数器的设计。(具体实现请见AHDL源程序)
五、试验报告
说明在CPLD设计中,同步设计和异步设计的不同之处。
附:各模块AHDL源程序
1、muxhl4.tdf
SUBDESIGN muxhl4
(
SEL,DA[7..0] :INPUT;
Q[3..0] :OUTPUT;
)
BEGIN
IF SEL==B"0" then
q[3..0]=da[3..0];
ELSIF SEL==B"1" then
q[3..0]=da[7..4];
END IF;
END;
2、nineto0.tdf
SUBDESIGN nineto0
(
DA[3..0] : INPUT;
Q : OUTPUT;
)
BEGIN
if DA[3..0]==B"1010" then
q=B"0";
ELSE
q=B"1";
END IF;
END;
3、hb1.tdf
SUBDESIGN hb1
(
d[2..0] : INPUT;
q[2..0] : OUTPUT;
)
BEGIN
CASE d[] IS
WHEN 0 => q[]=0;
WHEN 1 => q[]=2;
WHEN 2 => q[]=5;
WHEN 3 => q[]=3;
WHEN 4 => q[]=4;
WHEN 5 => q[]=6;
WHEN 6 => q[]=1;
END CASE;
END;
4、hb2.tdf
SUBDESIGN hb2
(
reset,d[2..0] : INPUT;
q : OUTPUT;
)
BEGIN
IF(reset) THEN
IF(d[]>6) THEN
q=GND;
ELSE
q=VCC;
END IF;
ELSE
q=GND;
END IF;
END;
5、hb3.tdf
SUBDESIGN hb3
(
clk,reset: INPUT;
q[2..0]: OUTPUT;
)
VARIABLE
ss: MACHINE OF BITS (q[2..0])
WITH STATES (
s0=0,
s1=2,
s2=5,
s3=3,
s4=4,
s5=6,
s6=1 );
BEGIN
ss.clk=clk;
ss.reset=!reset;
TABLE
ss => ss;
s0 => s1;
s1 => s2;
s2 => s3;
s3 => s4;
s4 => s5;
s5 => s6;
s6 => s0;
END TABLE;
END;
6、hb4.tdf
SUBDESIGN hb4
(
sel,d1[2..0],d2[2..0] : INPUT;
q[2..0] : OUTPUT;
)
BEGIN
IF(sel) THEN
q[]=d1[];
ELSE
q[]=d2[];
END IF;
END;
注:sixto0.tdf,hbto0.tdf,hfto0.tdf与nineto0.tdf类似,selda1t4.tdf与muxh14.tdh类似,自己完成。
附:74161真值表
0