前言:
在一片人身攻击之声中,我微笑着开始提笔,为那些真正希望了解事物真相的朋友们揭开实质。
废话不说,直入正题。
文章的读者对象:我希望各位应该稍微具备一些数字电路的知识,当然没有的话也不打紧,我尽量做到用最简单的语言来描述。
文章的目的:我将一步一步的讲解,不放过一个细节,一步一步的讲清楚一个代表着1010的脉冲信号,如何真正转变为一个持续为4秒(假设此电路的时钟单位为1秒)的10V (10V==1×2的3次方+0X2的2次方+1X2的2次方+0X2的1次方,单位是1V) 的平缓的模拟电流 (-这句话你必须先理解,否则我真的没法讲下去)。
为了我画图方便,我就仅仅涉及到4位一组的数字脉冲信号,请理解!
文章的笔风说明: 我写文章,不是让看的人越来越糊涂,而是越来越清晰。 所以我尽量用最朴实的语言来描述,而不是拿一堆公式或者专业名词来吓唬人来装B,你们会爱上我的文风,I am sure.
好了, 和我一起踏上这漫漫DA路!
===================================================
DA是什么? DA用中文来说,就是数字(Digital)到模拟(Analogy)的转换。
DA干什么? DA就是把一组代表着一定模拟量的含义的数字脉冲,还原成那个原本的模拟量。举一个例子:一组脉冲为101000000001(每个0/1维持1秒,一共12个0或者1,一共维持12秒),那么DA把它首先解读为4位一组的模拟信号1010,0000,0001,然后把他们分别还原为4秒的10V,4秒的0V,4秒的1V。
也就是说,我将深入底层的讲解下面这张图是如何通过电路实现的:
有些眼尖的朋友,可能会跳出来问,你的时序图,DA后模拟输出流,是否画的不对?为何看起来要比数字脉冲流拖后4秒? 这是有原因的:4秒是理论上的最低延迟,实际上还不止4秒! 原因我会一步一步将给你听,而且画给你看!
(待续。。。)
=============================================
进入第二天的课程,今天我为各位讲解的是:
1) DA的逻辑过程图。
2) DA电路组的分块设计图和解释。
3) 讲解分块设计图里面的第一块:位移寄存器 (先别怕这个名词,我会打开这块寄存器,把电路画出来让你看得一清二楚!)
DA电路,如果动用你的抽象思维,你可以把它极限的简化到如下这张图,输入到DA电路的是数码脉冲,从DA电路中输出的,则是模拟电流。 (废话说开来,人身攻击响起来……)
不过,上面的废话并没说错。 只是,说起来简单,做起来难!
仔细想想,然后你会体会到(实际上还不是我讲给你听的?!)
1)DA首先要把一个连续的数码脉冲101000000001 很“巧妙”的解读出第一组4位的二进制数字1010 (用专业一点的话来说,这叫做串行转并行—-- 应该很形象了—---好比你吃一串烤羊肉,一块肉一块肉的吃觉得不爽,按就把羊肉取下来,4块一组排好放在手上再一口吃掉。)执行这任务的是位移寄存器。
2) DA随后要把1010 这组数字运算还原成一个虚拟意义上的“10” (10==1×2的3次方+0X2的2次方+1X2的2次方+0X2的1次方)。
3) 然后,这个虚拟意义上的“10”将除以16,再乘上一个参考电压(假设为16V),最终出来的结果是(10/16)*16=10V
4) 同时DA必须巧妙的搞定下面这件事: 因为位移寄存器读取连续的数码脉冲的时候会产生大量的无意义的输出(很惊讶吧,先别玩人身,我会讲给你听的,同时画给你看的),所以一个完善的DA电路必须学会如何改正这个错误。
5) 要如此巧妙地执行这些操作,必须有一只无形的手在控制着这一切,那只手叫做时钟脉冲。 而且我会清清楚楚地让你们看到,这只手如何在控制。
放心,我何等人也,即使你目前可能不能完全理解上面这5步,在下面的5天里,我也会慢慢让你理解的!
根据上面的这5个步骤,现在你们应该可以很清楚的理解下面这张逻辑图。
累了,歇一下。几个名词也逐渐出来了,比如位移寄存器。 (不懂不要紧,我慢慢讲)
记住:今天我会讲完第一步,讲完串行转并行和位移寄存器的电路原理。
抽完烟了,继续讲解。
在讲解串行转并行和位移寄存器之前,我必须引入另一个新的名词:“触发器”。我很讨厌那些装B的人,引入一个名词,然后不做任何解释的放在那里; 当然,我也很讨厌那些新名词,我肯定要把它用你们能够理解的话解释一遍。
我尽量不引入名词,但是“触发器”这东西,对于位移寄存器来说,非常关键,所以我不得不引入它,然后做个解释。
触发器有很多种类,我现在要讲解的,是最基本的一种触发器:边沿触发器。
请看下图:
它有两个输入口(输入电压,控制脉冲)和一个输出口(输出电压)。它的工作原理相当于一个开关。 当控制脉冲(也就是时钟脉冲)到达的时候,触发器就会把当时瞬间的输入电压直接传输到输出电压口上,并且,保持这个输出电压不变(一直等于当时瞬间的输入电压),一直等到下一次时钟脉冲的到来。 从这个时钟脉冲到下个时钟脉冲之间的那个间隔1秒内,不管输入电压怎么变化,输出电压不变。
似乎说得乱七八糟而且看起来没什么作用, 但是当你把4个触发器象我这样连接起来的时候----位移寄存器诞生了!
下面,我就要来讲解这个位移寄存器的工作原理。
很枯燥的过程,麻烦你别看错了。
还是以从最右边输入1010这组数字来解释:
第0秒钟:啥都没有,所以这个位移寄存器的输出位(第一位到第四位,看到没?在最上头啊,每个触发器出一个)都是0。
第1秒:哈哈,事情发生了。时钟脉冲来了,啪的一下,最右边那个触发器打通了了,刚好此时输入的数字脉冲1010的第一位1到达最右边那个触发器的输入口!于是最右边那个触发器的输出口也变成了高电压1。此时你去读第一位~第4位,哈哈,你可以读到了0001。
第2 秒:因为最右边那个触发器的输出口接到了右边倒数第二个触发器的输入口,所以第二个脉冲过来的时候,呵呵,输入到最右边那个触发器的是1010中的第二位 0—因此此时最右边那个触发器的输出变成了0;输入到右边倒数第二个触发器的则是来自上一个时钟脉冲时刻的最右边那个触发器的输出1,所以此时右边倒数第二个触发器的输出为1。所以,此时你去读第一位 ~第4位,哈哈,你可以读到了0010。
第三秒:依次类推,否则还以为我在偏稿费哈。 此时,你应该读到0101。
第四秒: 欧米托佛,终于读到了完整的1010, 哈哈哈哈,终于实现了第一位~第4位这4个输出位并排排成了1010—这就是一连串的1010变成一整排的1010的过程。
恍然大悟了么?
时序图我就懒得画了,有兴趣的朋友自己去画出来,只是别骂我不会画即可。
我接下来要讨论的是一个比较深奥的东西:
第1, 2,3,4秒,我们分别读了4次位移寄存器的输出位,分别是0001,0010,0101,1010,实际上前三秒读出来的都是错误的,仅仅第4秒读出来的是正确的。 那怎么办?!那怎么办?!寄存器在3/4的时间里给出来的结果都是错误的啊!那核心DA运算电路根据寄存器提供给他的输入(4位一排的数字),肯定有三分之四的时间里只能得出错误的结果啊。
不错,你发现这个存在大量错误的现象,是因为你大脑牛B!电路不是你大脑,他根本不懂得什么0还是1,所以他根本不知道自己的错误。
但是!此刻,时间脉冲起到了作用 (别告诉我时间脉冲发生器能这么牛B,能象你大脑那样能判断错误),人类设计了一类巧妙的电路,使得DA电路克服了这个错误----听起来很神奇,我当然会讲解的,只不过在比较后面的地方讲)。。
反正,现在已经解决了“DA首先要把一个连续的数码脉冲101000000001 很“巧妙”的解读出第一组4位的二进制数字1010 ”这个问题,虽然他还不是很完善,只会在25%的时间内正确。。
同意我么,朋友。??
今天的讲解到此结束,明天我继续讲解DA核心运算电路:“T网”,它是如何根据这个寄存器给他的一排的4位数字(先不管这4位数字是对还是错)来推算出一个模拟电流输出的。
==========================================================
算了,乘现在有空,继续讲讲吧(明天我休息下,处理下单位里的事情,后天最终给帖子结尾)。
DA运算电路很多种类,今天我就取X水一瓢讲讲吧,讲就讲现在应用范围最最广泛的T型DA电路吧 (或者称他为倒T型电路)。 赫赫,为什么称它为T型电路,我也不知道,只不过它的样子确实像T。 (T型电路是高中物理奥赛的基本题目,真是太基本的…..只不过那时候老师没有告诉你他能做DA,哈哈):
还是严肃一点,这一部分涉及到基本的电路知识,懂的朋友可以一目了然,不懂的朋友,我就很难保证了。。 U=I*R,这个总得懂吧?2个R电阻并联后变成R/2的等效电阻,这个总得懂吧?
下面我画的这张两张图,你,看懂了么? 诚实点!大声点!看懂了么?别告诉我你不知道下图实际上是上图的等效图。。。(什么?看不明白?! 喂!同学,哪儿毕业的?)
继续解说下去,从等效图上,我们可以非常清楚的看出来,16V的参考电压恒定的情况下,总路上的电流I也是恒定的(废话:I=16V / R)。
OK,那我现在再继续画下去,画出一个详细的带有电流I分流情况的图 (这个有电路经验的朋友应该可以一眼看明白的。其他朋友实在看不明白的……… 那只能算了。)
现在,各位看好了。 人类的思维就在于其创造性,T电路的精髓在于我可以非常巧妙的选择输出电流,而所要增加的就是另外一条地线。看下图红色的那条地线,从右向左数,第2和第4个2R的电阻搭在了这条红线上面,分流了5/16 的电流I,看到了么?
下面的事情,呵呵,很好办了,我们假设下面这个第一位到第四位刚好对应位移寄存器的第一位到第四位的输出端,而且能够做到 如果来自每一位的电压为高(“1”),那么这个位置的2R电阻就接在红色的地线上;如果来自每一位的电压为低(“0”),那么这个位置的2R电阻就接在蓝色的地线上。像下图所示,就是第一位到第4位的分别是0101, 所以第一位和第三位的2R电阻接在黑色地线上,第二位和第四位的2R电阻接在红色地上。
此时,红色线上的电流为(5/16)I!
呵呵,如果你还记得我上面所写的I=16V/R。
那么,只要这条红线接在等效阻值为R的反馈电阻上(而不是地线上),那么此时的输出电压= (5/16)I*R= (5/16)*(16V/R)*R= 5V
呵呵,请问0101代表的10进制是什么?是5V。
看到了么?各位朋友。看到一个电路是如何把0101还原成5V的输出了么?!
怎么,你还没有醒悟?!还需要我继续解说下去么?好吧,我把图画全了。(为了画图走线方便,我把寄存器的左右次序反过来画,别又说看不懂了)
现在理解了么? 位移寄存器把0101发送到T电路的4个继电器上,继电器相当于一个开关,当1输入到继电器,那么继电器开关就偏向右,把2R电阻接在红线上。否则,继电器的开关一直在左边和黑线连着。
呵呵,这里面是有数学原理的,看看那些分流的电流,I/16, I/8,I/4,I/2,你们清楚了为什么这个T电路能够很好的执行4位的DA任务了么?
我不是不想写一个证明,这对我来说太EASY了,只是,电脑打字不好打公式,hoho。。。。。
你也可以自己推算下来证明这个电路:
如果输入的时钟脉冲是1010 (换成10进制应该是10),那么红线上的电流是:I/2+I/8=(10/16)I,此时输出电压=(10/16)I*R=(10/16)*(16V/R)*R=10V。
如果输入的时钟脉冲式1011((换成10进制应该是11),那么红线上的电流是:I/2+I/8+I/16=(11/16)I,此时输出电压=(11/16)I*R=(11/16)*(16V/R)*R=11V。
反正从0000到1111,最多也就16种输入的脉冲流,所以你有兴趣全部试一遍也没多少时间,
只不过,现在你们看到了吧,T电路准确无误的执行了DA任务!!
后天继续了。。。。 下面还有精彩的。。DA漫漫路走了快2/3了,呵呵。
后天我就要讲解,一个完整的4位DA电路是如何处理3/4时间里的错误输出的。
================== 最后一天的课程=======================
今天是扫尾阶段,我们将要讲述一个遗留的问题:一个完整的4位DA电路是如何处理3/4时间里的错误输出的。
为何把这个问题放到最后讲,实际上是因为我愚蠢的大脑固化思维所导致的一个错误。 我一直认为这个由位移寄存器所带来的3/4时间内的错误如果放在最后的环节来解决是最方便的,没必要在电路初始阶段关注这个错误。
116楼的朋友曾提及了在开始阶段就可以消除这个错误(虽然他说得不对,他认为是1/8的时钟脉冲即可),可是我还是非常固执的否定了这个想法,实际上,是我错了。
今天中午吃饭的时候,我突然意识到要解决这个问题简直是易如反掌。
实际上,把位移寄存器的每个输出位和T电路输入位之间接一个触发器,再用4倍(或者称之为1/4频率)也就是4秒为单位的时钟脉冲来推动,即可解决这个问题了。加上如下图紫色部分的这4个触发器和一个4倍的时钟脉冲后,这个纠错电路的输出就能做到一直输出正确的4位数字,同时保持4秒钟。 于是,到达T电路前的4位数字将会没有任何错误存在。
这个纠错电路的时序图我不想画了,想想也应该清楚。
4倍时钟脉冲电路(或者说是1/4变频电路)我也不去画了,一个类似与2位计数器的基本电路,时序如下第一秒00,第二秒01,第三秒10,第四秒11 ,第四秒的这个时刻,这两个“1”“1”做"与"运算,输出一个脉冲“1”。理解?
OK,废话不说了,最终图放上。
希望认真看完此文的朋友们,能够很清楚的知道一个最简单的4位的DA电路的原理所在。
感慨: 有时候,思维的固化是最可怕的敌人。我就是这类人。
实际上,做硬件的工程师,是根本没有必要去解剖一个一个芯片的,文章的真正目的是,通过分析DA的电路:
1)让你真正体会到数电/模电的精神
2)让你欣赏到一个成熟电路所蕴含的人类的智慧的魅力。
===========全文到此结束================================ |