找回密码
 注册
关于网站域名变更的通知
查看: 1472|回复: 2
打印 上一主题 下一主题

一个被工程师们用 “V” 表示的器件符号究竟是啥?

[复制链接]
  • TA的每日心情
    开心
    2023-5-19 15:05
  • 签到天数: 339 天

    [LV.8]以坛为家I

    跳转到指定楼层
    1#
    发表于 2020-6-16 17:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 alexwang 于 2020-6-16 17:39 编辑 " Q) P) i9 @' Y$ y$ M7 b/ F" X
    3 L( l( l3 T5 S$ o9 \. J3 @+ P# N; [
    一个被工程师们用 “V” 表示的器件符号究竟是啥?
    & P! P3 B  h8 l0 t, h
    EDA365原创   作者: 巢影字幕组
    ! F: M( T! K$ ~9 t  {

    " K; }4 s  ]# Z( f

    计算机用二进制存储数字的目的是为了计算,而计算的过程是由“算术逻辑单元”来完成的。

    3 D% V9 e. ~2 d

    那什么是算术逻辑单元?


    # [4 a/ q7 n3 `0 s. a' d0 i

    算术逻辑单元(Arithmetic and Logic Unit)简称ALU,就是负责实现计算机里的多组算术运算和逻辑运算的组合逻辑电路。

    : H  `( l0 N3 {3 ]$ h# d* D
    4 s" K% W+ z# H% _' |3 @) O7 q
    ) E5 y7 P: y/ J7 h+ j- G5 g2 h
    8 t6 _2 |5 K5 d7 c( j* f' Q" z

    看看上面这个实物,图片中是最著名的ALU——英特尔74181,1970年发布,当时它是第一个完全被封装在单个芯片里的完整ALU,对人们来说这是一个惊人的工程。

    6 F4 J* t9 x' I! D5 \

    今天,让我们一起用布尔逻辑门来构建一个简单的与74181功能相同的ALU电路吧。


    , \+ g7 T4 {1 H, y2 C7 D

    在构建ALU之前,我们要知道ALU电路包含2个单元,一个是算术单元和一个是逻辑单元。

    ( M' G( G7 T3 _) g+ f6 e' A& K' j

    我们先从算术单元开始,算术单元负责计算机中所有的数字操作,比如加减法,当然它还会做一些其他简单的事,比如给某个数字加1,这叫增量运算。


    ( n5 c/ _0 |$ p" V

    在算术单元中,我们会用到AND,OR,NOT和XOR逻辑门,最简单的加法电路,就是有2个二进制的输入:A和B,还有1个就是输出,即两个二进制数字的和。

    - M! L" G! ?! c: o" ?  h; M

    假设A和B都是只有一个bit,即0或1,那A和B的运算就只有下列四种可能的组合:


    - q& [9 }* }( E& d( e

    0+0=0

    1+0=1

    0+1=1

    1+1=10

    4 G% T0 ]% e& Z# W* V

    提醒一下,在二进制里,1代表true,0代表false,所以这组输入和输出的前三种可能与XOR门的逻辑关系是一样。

    # x" E* ]) Y/ J( {% }# R

    第四中输入组合,显然1+1≠2,因为在二进制里是没有2的,所以结果是0,将1进位到下一位,和为二进制的“10”,对于XOR门的输出,只对了一部分,即1加1,输出0,这个时候,我们只需要一根额外的线来代表进位,即只有当输入是1和1时,进位才是“true”。

    7 |* q. z+ ]/ j3 }, J( T
    3 Q9 \& q( ?' e0 h: E

    2 v$ \1 T$ Y/ y& d0 F* E8 m
      |( w  ~5 _$ J# z

    针对上面出现的问题,我们可以把AND门加到电路中,即当两个输入都为“true”时,输出才为“true”,这样就组成了“半加器”电路。

    ; Q+ H( c% A: Y1 u
    + d" P' n7 H* r

    2 [$ I. O6 ?3 x. G' u  T% {% ?; L3 D6 B* t' `3 ]

    如果你想处理大于1+1的情况,就需要“全加器”(full adder),全加器比半加器复杂点,它有3个bit的输入:A、B、C,所以最大可能输入为:1+1+1,总和1,进位1,因此需要两条输出线,即进位线与总和线。

    / b% ?+ {8 ]) I1 W
    . n/ a3 r9 [) p! n9 E3 v0 i5 z& o0 z
    % z- s* |! Z- T$ N% O& K) @2 g( ^% G

    : S: O3 O' f" |6 a9 @" |; ^

    其实,我们也可以用半加器来实现全加器的功能,先用半加器将A和B相加,然后把C输入到第二个半加器中,最后用一个OR门检查进位是不是true就可以了。

    ; l( m  \( y/ r% Y

    ) \2 G" Z7 x( u5 Y, C9 q# `2 r% t) |2 {( g  {! e

    0 c" P; r# G7 i) u5 Z: H) h

    现在,我们可以做一个两个8 Bit进行相加的电路,这两个8 bit分别为A和B,看下图:


    & @0 ^" c0 M- F- f7 }9 T
    2 H; l& R: H1 O% C; |1 B
    * H9 a% X, Z3 J/ c: |* O
    / s4 Y1 k% t  R- O

    我们从A和B的第一位开始相加,第一位分别称为A0和B0,因为只有2个数,所以用一个半加器就可以,我们将它俩的和称为Sum0,考虑到A1和B1相加的时候可能会有A0和B0相加的进位,就会有3个数,所以从A1和B1相加开始就得用全加器,然后依次类推,搞定8个bit的相加,这叫 "8位脉动进位加法器"。

    % M, s/ n" m. a0 C$ y! U: N4 r

    请注意:A7和B7的全加器有“进位”输出,如果它俩相加有输出进位,代表数字A和B相加,和超过了8位,这叫“溢出”(oveRFlow)。如果想避免溢出,就得加更多全加器,然后相加16或32位数字,这就会让溢出更难发生,但缺点是每次进位都要一点时间向前移动。

    7 L9 E7 B: |0 g' {. T( H

    简单的ALU没有专门的电路去处理乘法和除法,而是用多次加法实现乘法运算,比如:可以将12加5次来实现12乘以5。


      a! ]8 v) x" P6 \4 i6 m

    当然,不用去担心我们现在的笔记本和手机,因为他们有更好的处理器,可以专门做乘法的算术单元哦。


    ' @6 N9 J9 G9 `/ c9 t

    关于算术单元我们说的很多了,现在,我们来说一下ALU的另一半:逻辑单元。逻辑单元执行的是逻辑操作,像之前讨论过的AND,OR和NOT操作,当然也可以执行简单的数值测试,比如检查数字的正负。

    9 D- _% h' D: z& e, Q! e9 k1 w
    $ h% z, m+ H# n1 p2 m* x$ j
    + m# E; R: A2 M% U- H( f
    7 H  E9 @  _0 k

    上图是检查ALU的输出是否为0的电路,用了一堆OR门来检查其中一位是否为1,哪怕只有一个Bit (位)是1,我们就可以肯定那个数字肯定不是0,然后用一个NOT门取反,所以只有输入的数字为0时,输出才为1。


    " K. \' q! R3 |4 z4 N

    到此,我们已经对ALU进行了一个高层次的概括,甚至做了几个主要组件,比如脉动进位加法器,虽然只是巧妙的将一大堆逻辑门连在了一起。我们再回到开始时说的ALU,英特尔74181,它只有4位输入,而我们刚才介绍的是8位输入,是74181的两倍哦!

    9 Z1 e3 U$ W% b/ X3 C, o

    虽然我们没有做出ALU实物,但是我们应该已经对ALU有了整体的概念,它的诞生打开了通向更强大电脑的大门。

    0 v  r, n8 U, V, c. s% G4 T4 ~

    由于ALU在市面的应用越来越多,工程师们为了方便,就用了一个看起来很像大“V”的符号来代表它,看下图,是不是很像“V”啊?


    / z+ m5 m% o# r+ B$ p
    9 d, U* ~. U; V
      `  L# l3 G# _+ Y8 d9 \& q3 I

    5 h5 H0 X, c/ u' Q/ ]% q/ K

    一个4位的ALU需要很多逻辑门,一个8位的ALU需要的逻辑门肯定更多,我们工程师肯定不想在这里浪费很多时间,那就出现了一种便于ALU执行所需要的操作代码,这个后面有机会再详细介绍给大家。

    8 W8 Z$ u8 Y4 c6 B7 x

    , |3 f3 b2 j& ]' V1 E7 P4 G: {
    - E4 ]& O& N) H8 r) P5 T7 w4 s, R  Y8 L' g

    ALU除了输出计算结果外,还会输出一系列标志(Flag),这个标志代表特定状态的1位(bit)输出,例如,如果我们相减两个数字,结果为0,我们的零测试电路就会将零标志设为True(1),这在确定两个数字是否相等时是非常有用的。


    ; B6 c) ~- `7 l' q) n0 p% w/ O

    当然这个标志位也可以用来判断数字的大小和是否出现溢出等,如果使用的ALU越好,它的标志也会更多,但刚说的这3个标志是ALU普遍会用到的。

    ' T7 E4 q8 l8 [# N% e! s4 V+ Q

    关于算术逻辑就给大家介绍这么多,但是这个被工程师们用“V”表示的器件大家知道了吗?可以下方留言告诉我哦!


    ! Q; ~% \* r' c1 X. t( N0 @8 M

    * x6 P, L/ N% C/ o# U9 U; Z0 @

    出品丨EDA365
    作者丨巢影字幕组
    排版编辑 | momo
    9 w- D" A  E$ T: |/ e; T& _3 E9 `8 j7 B' y2 C" j; S" g* ]  Y7 ~/ V  t% C' v  c7 x6 N0 f8 ^* {: K# N: n! w' e' F8 u3 w& Z' ?1 H3 I* K
    注:本文为EDA365电子论坛原创文章,未经允许,不得转载。
    - B: j% f" u% u: Y. ~
  • TA的每日心情
    开心
    2025-11-24 15:05
  • 签到天数: 1278 天

    [LV.10]以坛为家III

    3#
    发表于 2020-11-11 06:35 | 只看该作者
    谢谢分享

    “来自电巢APP”

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-25 00:42 , Processed in 0.171875 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表