数字逻辑课程设计
——流水灯的设计
1问题概述:
设计一个可以循环移动的流水灯,灯总数为8盏,具体要求如下:
1、5亮,其余灭,右移三次后全灭
4、8亮,其余灭,左移三次后全灭
4、5亮,其余灭,各向两边移三次后全灭
1、8亮,其余灭,各向中间移三次后全灭
所要求的彩灯电路在某电路板上完成,该电路板能够提供48MHz标准时钟信号,附带有8个共阳的LED管可作为彩灯使用。
2问题分析
本装置可以看作一个具有20个状态的无输入、8个输出的Moore型时钟同步状态机,每一个状态对应依次出现的每一种亮灯情况,用5位状态编码表示。
这里构造一个模20的计数器来循环产生这20种状态。
同时对于输入的48MHz的标准时钟信号,需要将其转化为1HZ的信号,此处同样用计数器来实现分频功能。
8个输出分别控制LED的发光情况。
这里使用5-32的译码器实现输出函数的构造。
电路框图如下:
这里使用一个5位的状态编码Q4Q3Q2Q1Q0,表示20个状态。
8位的输出函数F7F6F5F4F3F2F1F0分别表示由左至右每一个灯的通断情况。
由于本题中LED灯采用共阳极连接方式,所以当Fn为低电平时,对应的LED灯发光。
本电路状态图如下:
本电路的转移/输出表如下:
现针对每一部分设计具体电路
3设计方案
3.11/48MHz分频电路
对于48MHz的信号,一秒钟内有4.8*10^7个周期,而所需1Hz信号,每秒只有一个周期。
使输入信号每经过2.4*10^7个周期,输出信号翻转一次方向,便可获得所需的1Hz信号。
可以构造一个模4.8*10^7的计数器用于计数,并使计数器输出的最高位在一秒之内恰好变化一次,且占空比为50%,故采用7片74x163进行级联。
计数范围为:0110 1001 0001
1100 1010 0000 0000-1001 0110 1110 0011 0101 1111 1111。
这样恰好可以保证最高位输出的信号为1Hz 。
这里采用置位法,电路如下。
3.2 模20计数器。
此处用一个74x163和一个T 触发器来构造模20计数器。
由于没有T 触发器,故用一个JK 触发器74x112代替。
20个状态编码分别为00000~01001,10000~11001。
其中最高位有T 触发器输出,其余4位由74x163输出,74x163设为每计数10次则清零,同时触发T 触发器翻转。
电路图如下所示:
3.3 译码电路
对于由计数器产生的20个状态编码,构造一个5-32译码器,产生最小项,控制灯的开关。
此时可以用5块74x138级联成5-32译码器,根据转移输出表为每一个F 构建对应的最小项组合。
由于译码器的输出是低电平有效,所以当输出通过与非门后,还需要反向后,才能正确驱动共阳极LED 管。
电路如图所示:
CLK
Q0 Q1 Q2 Q3 Q4
将三部分电路级联,便可获得所需电路。
如图所示Q0
Q1 Q2 Q3 Q4。