利用触发器设计计数器
2016-11-15 13:25
246 查看
概述
前面的课程中,介绍了基本触发器的功能特性,对触发器的内部电路进行了分析;然后还对时序电路分析给出了基本思路,即抓住三个核心方程:输出方程、激励方程、次态方程。学习组合电路和基本触发器的目的是为了设计电路,数字逻辑这门课程的目的是能够设计简单的同步时序电路,并对其简单分析,下文通过一个模16的减1计数器进行说明。
基本流程
要设计时序电路,首先必须要对功能需求进行分析,模16减1计数器的功能需求很显然应该是: 15 –> 14 –> 13 –> 12 –> … –> 1 –> 0 –> 15 –> 14 –> …。有了上面的迁移关系,接下来应该做的是如何实现这种转换。显然,上面的这种转换关系是我们人类的头脑意识,电路并不知情,因此,我们需要给上面的这种关系进行形式化描述,即对15,14等数字(这个例子里直接认为是状态)进行编码(这个编码是任意的,可以自由发挥,但是一般我们采用大家都认可的规范,这个例子中用二进制数进行编码),编码规则为:
- 15: 1111
- 14: 1110
- 13: 1101
- …
- 0:0000
显然,这里需要4个触发器来存储需要表达的状态。
然后,如何表述状态之间的转换关系呢?前面学习的状态转移表刚好可以表述现态和次态之间的关系,如下表所示:
Q3Q2Q1Q0 | Q3(t+1)Q2(t+1)Q1(t+1)Q0(t+1) |
---|---|
1111 | 1110 |
1110 | 1101 |
1101 | 1100 |
1100 | 1011 |
1011 | 1010 |
1010 | 1001 |
1001 | 1000 |
1000 | 0111 |
0111 | 0110 |
0110 | 0101 |
0101 | 0100 |
0100 | 0011 |
0011 | 0010 |
0010 | 0001 |
0001 | 0000 |
0000 | 1111 |
首先寻求Q3(t+1)与Q3Q2Q1Q0的关系,其对应的卡诺图为:
Q3Q2\Q1Q0 | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 1 | 0 | 0 | 0 |
01 | 0 | 0 | 0 | 0 |
11 | 1 | 1 | 1 | 1 |
10 | 0 | 1 | 1 | 1 |
利用卡诺图化简规则,得到:
Q3(t+1) = Q3 !(!Q2!Q1!Q0) + !Q3 (!Q2!Q1!Q0) // 由于markdown中没有异或符号,直接展开
同理,可以获取Q2(t+1)、Q1(t+1)、Q0(t+1)与Q3Q2Q1Q0之间的关系,得到:
Q2(t+1) = Q2 !(!Q1!Q0) + !Q2 (!Q1!Q0)
Q1(t+1) = Q1 Q0 + !Q1 (!Q0)
Q0(t+1) = !Q0
此时,已经得到了次态与现态的准确关系,剩下的工作就是根据所提供的触发器来设计。假设,给定的是4个下降沿J-K触发器,则需要根据J-K触发器的次态方程,对上述方程进行匹配赋值。由此得到:
J3 = K3 = (!Q2!Q1!Q0)
J2 = K2 = (!Q1!Q0)
J1 = K1 = (!Q0)
J1 = K1 = 1
因此,最终的电路图为:
![](http://upload-images.jianshu.io/upload_images/2756933-65d354eea67dcdcf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
分析
至此,模16减1计数器已经实现了。分析上面得到的次态与现态的表达式,其实可以直接写出模32减1的计数器;另外,也可以看出:Q0的状态每个脉冲都会跳变一次,Q1的状态每两个脉冲跳变一次,Q2的状态每四个脉冲跳变一次,Q3的状态每8个脉冲跳变一次,这种跳变对应着脉冲的2分频、4分频、8分频、16分频。小结
不管是分析时序电路,还是设计时序电路,切忌简单背诵分析和设计步骤,抓住分析和设计的关键点(分析电路时的三个方程、设计电路时的状态迁移)即可。简单意味着复杂,计数器可以说是最基本的时序逻辑电路,利用计数器可以做出十分复杂且有用的电路。然而,本文讲解的计数器除了时钟脉冲,没有其它输入,即其不可控,无法灵活使用,下一节将详细讲解163计数器及其应用。
如有错,请大家批评指正!谢谢!
相关文章推荐
- FPGA作业1:利用74161设计20进制计数器
- FPGA作业2:利用veilog设计循环进制计数器
- 利用Quartus设计4位同步二进制加法计数器
- FPGA作业2:利用veilog设计12进制计数器
- 利用Quartus设计4位同步二进制加法计数器
- 在ASP.NET中利用GDI+ 设计Chart控件
- 利用VB.NET设计Web菜单组件
- 利用UML类图设计Java应用程序详解(一)
- 利用XML进行GUI设计与运行时显示------基于GTK+/Gtkmm的Glade/libglade/libglademm
- 面向搜索引擎的内容管理系统(CMS)设计——利用Squid反相代理缓存实现网站内容静态发布
- 利用WSS做后台存储--设计一个统一的信息发布平台
- 利用ASP.NET构建网上考试系统(转)不错的设计方案。让我的开发有了新的想法
- 利用UML类图设计Java应用程序详解(二)
- web组件设计,利用接口(IPostBackDataHandler)产生数据回传的问题
- 利用C++语言设计可扩展线程池
- 利用UML类图设计Java应用程序详解(一)
- 利用UML类图设计Java应用程序详解(二)
- 触发器设计技巧与实例
- 利用UML类图设计Java应用程序详解(二)
- mono:利用glade设计界面