老莫

数字芯片中使能信号的作用

0
阅读(1307) 评论(8)

使能信号是数字电路中常用到但是又不容易讲清楚的一个概念。此次我就尝试从我的角度来讲一下。原文刊发在我的知乎专栏(由于木易师姐说不能直接给知乎专栏导流,我只有再复制一遍上来了)。


昨天(2018年7月22日),西南地区电子线路研究会的几位“老”教授们邀请我去为即将参加全国电子技术、电子线路讲课比赛的老师们辅导一下。我当时听到这个邀请心理是懵逼的……我这30出头(划掉,30好几)的人,那也就是个年轻老师啊。参赛的那些老师们比我年龄大的多得很,讲课10多年、20年教龄的也有。我去能辅导个啥?我常年“评教成绩”还经常在后50%徘徊呢(主要也怪我这嘴,总习惯于上课伤人啊,有些被怼的受不了的小朋友们就喜欢给我打低分)。不过“老”教授们说你还是来吧,从你的角度上提点意见也是好的啊。我想想也是,抱着交流学习的态度过去听听这些在比赛中脱颖而出的老师们讲课。

这一去啊还真有不少收获和心得体会。也为现在很多大学电路类基础课程的教学现状感到担忧。按照某位“老”教授的说法,课程讲解分为三个层次。第一个层次是What,要讲清楚基本概念,让学生理解到这个技术叫什么/是什么。第二个层次是How,就是要讲清楚这些技术应该怎么去用。第三层次是Why,要讲清楚这些技术背后产生的原因,技术的来源和产生的历史条件。只有讲到第三个层次,才能脱离具体的知识点,进入到“启发思考”的阶段。但从实际的表现来看,大部分的老师停留在第一个层次。勉强进入第二个层次呢,大部分是教如何去做题而不是教如何解决实际问题的。第三个层次基本上无人讲到,所谓的“举一反三”也基本上停留在如何举一反三的做题(当然,能做到这点也算不错了)。在这里顺便多说一句。其实基于卷面的考试形式主要是考What,能部分的考到How,而几乎无法有效的考察Why。所以有些考试成绩还不错的遇到实际问题就懵逼,就是这个原因。

虽然说What,How和Why是依次提升的,但How和Why往往不能分开。简单的讲How就会变成“讲套路”,包括做题的套路和做事的套路。昨天听到一位老师讲使能信号和芯片扩展,觉得就没有讲的很好。想到这应该是一个普遍性的问题,那就从我认为应该比较合理的方法来讲讲使能信号。

1.什么是使能信号。

所谓使能信号,英文叫Enable。翻译成中文还有“启用”等意思。其实我觉得更符合大家的理解习惯的可以叫“启用信号”。简单的说,通过这个信号可以控制某颗芯片/某个电路有没有被“启用”。

我们以数字电路里面经常被讲到的一个非常基础的芯片74XX138为例来看。首先看74XX138的功能表:

功能表.jpg

如图所示,当G1为低电平的时候,不管其它输入是什么。输出全为高电平。而当G2为高电平时(G2等于G2A与上G2B),不管其它输入是什么,输出也都一律为高电平。因此仅从功能上来判断,G1和G2就可以控制这颗芯片是不是被“启用”了。可以看出当G1为低或G2位高时,整个芯片的其它输入无论如何变化都不影响输出。简单的说就是整个芯片实际上没用发挥作用,功能没有“启用”。


2.为什么使能信号可以控制芯片的“启用”和“停用”

继续以74XX138为例。

如果把74XX138内部电路打开,我们可以看到这样一个电路图:

ls138.jpg

我们需要仔细观察一下,使能信号的那几个G1, G2A,G2B

ls138-2.jpg

从逻辑上我们可知,如果要这个与门的出为1,必须要满足G1为高电平,G2A和G2B都为低电平。

而我们在仔细的观察一下这个与门的输出都连到了哪里:

ls138-3.jpg

全部都连到了最后一级的所有与非门上。我们知道一个与非门,如果有1个输入为0,那么这个与非门的输出就会是1。因此,如果不满足G1为高电平,G2A和G2B都为低电平这个条件,就会让所有输出全为1。而这时无论别的输入是什么,都不会让输出有任何改变。从这一点上来说,要启用这颗芯片的功能就必须满足G1为高电平,G2A和G2B都为低电平这个条件。否则,其它输入影响不了输出,芯片“译码”的功能就没有被“启用”。

3.为什么需要使能信号?

需要使能信号的主要原因是一个大型的数字系统中,通常都需要使用多个芯片/电路单元来配合完成一个功能。而这些芯片并不是每时每刻都在工作的。因此需要用使能信号来控制应该“启动”哪个芯片来工作。

继续以74XX138为例。74XX138是一个3-8译码器,就是把3位的二进制码翻译为8位的“独热码”。而如果我们此时需要将4位的二进制码翻译成16位的“独热码”怎么办呢?我们可以使用2颗74XX138来实现。

具体的电路连接如下:


假设4bit的二进制编码从高到低依次是A3A2A1A0

将A2A1A0分别对应连接到两片74XX138上。而将A3连接到低位片的G2B上和高位片的G1上。

这样我们实际上把4bit的二进制数据划分为了2段

其中一段从0000到0111,另外一段从1000到1111。当现在A2A1A0为111时,低位片的Y7和高位片的Y7都有可能输出。而假设此时A3为0(此时输入为0111),那么低位片的所有使能信号均有效,而高位片的G1是无效的。那么此时低位片被启用而高位片未被启用。所以低位片的Y7输出为低而其它均为高,高位片的所有输出都是高。因此,0111被译码为了1111111101111111(输出低有效)。反之,A3为1(此时输入为1111)。则低位片的G2B无效而高位片所有的使能信号都有效。1111倍译码为0111111111111111

4.使能信号还有哪些用法。

使能信号的用途非常广泛,可以作为计算机系统中的存储芯片选通信号,可以作为显示系统中的控制信号。但核心的一点就是使能信号控制了芯片的功能是否能被正常的启用,这在设计大型的数字系统中是非常重要的一环。在后面的课程中我们将使用更多的实例来说明这个问题。

ls138-4.jpg

后记:由于多年不上基础的数字电路课程了,没有做这方面的课件。此次是临时有感而发,在网上找了一些图片来写了这篇文章。有不足之处,请各位网友多提意见。


最后打一个小广告,本人的官方主页:

http://faculty.uestc.edu.cn/huangletian/zh_CN/index.htm


本人主要从事芯片设计与计算机系统交叉融合的方向的研究,欢迎有兴趣攻读相关方向硕士研究生的同学通过联系。也欢迎业界从事相关研究的学者和工程师们交流合作。


  1. @fengwuyeling   
    @老莫   
    @fengwuyeling   
    @老莫   
    @fengwuyeling   

    黄老师的新书怎么样了?

    挖坑太多,慢慢填了……

    只求异构算法那本能早点出,现在只有初版可以看,能推荐基本fpga 异构算法相关的书吗?

    除了我写的就剩下一本日本人写的英语书了。

    差不多也猜到了,也就是因为这个原因,其实我去年就有在这里催书了,但还是求书名,不过是哪个版本的opencl SDK?

    https://www.springer.com/gp/book/9783319681603#aboutAuthors

  2. @小鸡快跑   

    日本人写的英语书啥名字?

    https://www.springer.com/gp/book/9783319681603#aboutAuthors

  3. @老莫   
    @fengwuyeling   
    @老莫   
    @fengwuyeling   

    黄老师的新书怎么样了?

    挖坑太多,慢慢填了……

    只求异构算法那本能早点出,现在只有初版可以看,能推荐基本fpga 异构算法相关的书吗?

    除了我写的就剩下一本日本人写的英语书了。

    差不多也猜到了,也就是因为这个原因,其实我去年就有在这里催书了,但还是求书名,不过是哪个版本的opencl SDK?

  4. 日本人写的英语书啥名字?

  5. @fengwuyeling   
    @老莫   
    @fengwuyeling   

    黄老师的新书怎么样了?

    挖坑太多,慢慢填了……

    只求异构算法那本能早点出,现在只有初版可以看,能推荐基本fpga 异构算法相关的书吗?

    除了我写的就剩下一本日本人写的英语书了。

  6. @老莫   
    @fengwuyeling   

    黄老师的新书怎么样了?

    挖坑太多,慢慢填了……

    只求异构算法那本能早点出,现在只有初版可以看,能推荐基本fpga 异构算法相关的书吗?

  7. @fengwuyeling   

    黄老师的新书怎么样了?

    挖坑太多,慢慢填了……

  8. 黄老师的新书怎么样了?