分享

内存被记录在时序逻辑电路中

 昵称48979411 2022-03-12

无聊的时候喜欢琢磨问题,比如关于芯片的问题,想搞清楚各种概念的关系,内存,指令,BootLoader,寄存器,存储器,程序,数据,抽象与映射,读与写的操作,中断的响应,诸如此类。

有时候又回过头来看看学过的知识,比如数字电路和模拟电路。想着他们和其它知识之间的关系,不知不觉就会想到很多东西,冯诺依曼的架构,并行计算,当时搞算法的时候非常深入地研究了一些数学原理,用到了矩阵的求逆和有限元的计算。心想着,计算机技术是不是也可以深入地想一想,寻找一些本质的东西。然后我就想计算机为什么能够存储数据,然后就想到了时序逻辑电路,当前的状态不仅取决于输入还取决于之前的状态,这样的特点让逻辑电路有了记忆的功能。再对逻辑电路追问下去,我想到了与或非三种基本门电路,与门和或门可以用两个二极管实现,但是非门却不得不借助于三极管。但是如果我们对三极管追问下去,会想起来它是由两个PN节组成的,而一个PN节就是一个二极管,正向导通,反向截止。至此,可以说这一切的一切都是因为半导体的出现而产生,没有那个看似不起眼的PN结,可能就没有如今的个人电脑,没有手机,也没有所谓的存储与通信技术。但是这些基本的技术其实也很简单,之所以让人觉得高端触不可及,是因为应用场景对容量和计算速度的不断要求,才发展成现在这么复杂的体系。可能最初的时候,也就是一个普通的晶体管,其导电的特性不同于常见的金属材料。

时间允许,那我就展开慢慢说吧,先说与或非。

如图,为二极管与门电路,Vcc=10v。假设3v及以上代表高电平,0.7及以下代表低电平。面根据图中情况具体分析一下:

1.Ua=Ub=0v时,D1,D2正偏,两个二极管均会导通,此时Uy点电压即为二极管导通电压,也就是D1,D2导通电压0.7v.

2.当Ua,Ub一高一低时,不妨假设Ua=3v,Ub=0v,这时我们不妨先从D2开始分析,D2会导通,导通后D2压降将会被限制在0.7v,那么D1由于右边是0.7v左边是3v所以会反偏截止,因此最后Uy为0.7v,这里也可以从D1开始分析,如果D1导通,那么Uy应当为3.7v,此时D2将导通,那么D2导通,压降又会变回0.7,D1的状态由导通变为截止,最终状态Uy仍然是0.7v.

3.Va=Vb=3v,这个情况很好理解,D1,D2都会正偏,Uy被限定在3.7V.

总结(借用个定义):通常二极管导通之后,如果其阴极电位是不变的,那么就把它的阳极电位固定在比阴极高0.7V的电位上;如果其阳极电位是不变的,那么就把它的阴极电位固定在比阳极低0.7V的电位上,人们把导通后二极管的这种作用叫做钳位。

如图,这里取Vss=0v,不取-10v

1、当Ua=Ub=0v时,D1,D2都截,那么y点为0v.

2、当Ua=3v,Ub=0v时,此时D1导通,Uy=3-0.7=2.3v,D2则截至

同理Ua=0v,Ub=3v时,D2导通,D1截,Uy=2.3v.

3、当Ua=Ub=3v时,此时D1,D2都导通,Uy=3-0.7=2.3v.

从4kΩ电阻到T1的“集电结”,到T2的发射结,再到1kΩ电阻,实际是两只电阻、两只pn结组成的串联分压电路,在这个回路中,越往下电位就越低。所以T1的基极电位总是高于集电极0.7V的。

pn结正向压降0.7V,两只pn结正向压降1.4V,那么两只电阻压降为(5-1.4)V=3.6V,4kΩ电阻压降为[4/(4+1)]×3.6V≈2.9V,故T1集电极电压为5-2.9-0.7=1.4V。

水向低处流,电流也是向低处流。

A端输入3.6V以上高电平电压时,T1集电极1.4V电压低于发射极电压,4kΩ电阻电流经T1集点结流向T2发射结,使T2饱和,T4饱和,电路输出低电平。

A端输入1V以下低电平电压时,T1发射极电压低于集电极1.4V电压,4kΩ电阻电流经T1发射结流向低电平输入端A,T2得不到电流而截止,T4截止,Ucc经R2使T3饱和导通,电路输出高电平,实现非逻辑关系。

以上与或非门都是组合逻辑电路,下面说一个时序逻辑电路中一个非常典型的电路结构,RS触发器。分析方法是简单的逻辑电路的分析方法,最终可以画出其真值表,以及状态转移图,方便理解。

有两个输入,分别可以取0和1两种状态,组合起来就是四种情况。每种情况下,假设Q的取值即可以总结出规律。这里可以看到当两个输入的状态都是0的时候,输出都是1,违反了两个输出之间互补的关系。

下图是状态转移的过程,可以看到在1状态下,R为1是一个稳态,不会发生跳转,在0状态下,S为1也是一个稳态,不会发生跳转。

基于以上的电路知识,我们就可以介绍冯诺依曼结构了,他给出五个功能定义,运算器,控制器,存储器,以及输入设备和输出设备,至今被广泛采用。和冯诺依曼结构相对应的是哈佛结构,两者的区别就是,冯诺依曼结构把指令和数据放在一起了,采用同一个总线进行读写,分时间段共用。而哈佛结构把指令和数据分开存储,有两套总线来进行读写。

在这个基础上,为了提高算力,人们又提出了并行计算,从计算机处理器的结构上讲就是一核变成了多核。

这是内存共享的

这是内存不共享的,有点像现在说的云计算。我当初也搞过这个,但是一是对底层架构了解不多,也就会使用Linux操作系统的程度,另一个就是对于通信的原理以及各种protocol没有系统学习过,只会简单调用MPC库里面给出的接口函数。

现在的系统越来越复杂,知识点越来越细,很多底层的硬件结构对于软件开发人员其实是被抽象了的。往上说到应用层更是如此,那个层次的开发人员不需要关心文件的读取和写入的方式。而做软件底层的人,也不需要了解硬件的逻辑电路,而设计硬件电路的人也没精力去关心单晶硅的切片和刻蚀。这就是我们社会现在的分工合作,每个人在自己的位子上做好自己的事情,不知道是好是坏呢。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多