百科问答小站 logo
百科问答小站 font logo



在硬件层级,地址总线是如何根据地址电信号,从多个触发器中找到指定的触发器的呢? 第1页

  

user avatar   s.invalid 网友的相关建议: 
      

别拉扯那么多,尽量从实现者/掌控者的角度思考问题——多问自己“如果我想做到什么什么,应该怎么办”,不要问“别人是怎么实现的”,更不要问“电子元件怎么知道”。三者一个比一个离答案更远。


对这个问题,如果你问“如果我想和某个寄存器联系、同时又排除其他寄存器的干扰,我该怎么办”,那么问题就好回答了。


还记得逻辑门吗?

假设地址线有二十位,那么对于地址01101010101110011010,问题就转换为:设计一组逻辑门,使得输入只有满足“第一位是0且第二位是1且第三位是1且……第二十位是0”时,这组逻辑门才会输出1;否则输出0。


这很简单,对吧?

只要我们把0对应的那些位先送进一个“非门”,就能完成“逻辑翻转”——输入0非门输出1,输入1非门输出0,对吧?

然后,把这20位信息输入一个有20个输入端的“与”门,那么只要有一位是0,与门就会输出0,对吧?

这就相当于我们完成了“这个地址与我无关,所以我输出0”这个“地址识别”动作。

类似的,当20位信息都是1时,这组与门就会输出1——是的是的,这是我的地址!

这就是“地址识别逻辑电路”。


我们知道,数字集成电路往往有一根特殊的引脚叫做“片选”;只有给片选脚高电平,这个电路才会动作;否则它就不工作甚至不耗电。

实质上,我们同样可以给寄存器一个“片选输入”,只有这个输入得到了高电平,寄存器才在线。


现在,把前面那个“地址识别逻辑电路”的输出接到寄存器“片选”上,会发生什么?

如果把一大堆寄存器通过不同的“地址识别逻辑电路”接到总线上呢?


现在,CPU给地址总线送去一个信号,比如“01101010101110011010”(相当于跑讲台上大喊“李蕾!输出你的值/记住这个数字”);那么一大堆寄存器(或者内存或其他硬件)的“地址识别逻辑电路”就会得到一组高低电平,只有地址为“01101010101110011010”的那个寄存器的“地址识别逻辑”才会输出1,其它都输出0(相当于做了个“我是不是李蕾”的判断)——于是,其它寄存器全都“沉默”了,只有正确的那个才会活跃起来、和地址总线交换数据。


你看,这是不是就达到了“CPU想找谁,就能找到谁”这个目的呢?


这个问题就是这么简单;但前提是,你必须学会以设计者的视角思考问题。

依靠公式、规则,依靠做题套路,你就是永远掌握不了这个——这么简单的都掌握不了,复杂的……

但一旦反过来,你真正理解了、真正学会自己设计了——整本数字电路是不是也没啥东西?


这就是我一直强调的,学东西一定要学根本,一定要理解。

理解了根本,你就能有百倍千倍的学习效率;如果不理解,你看,就这么简单个问题,背上十年能背会吗?




  

相关话题

  神经元输出的电子是从哪里源源不断获取的? 
  低功耗CPU是怎么做到的? 
  如果想测量一个号称采用0.1ppm误差晶振的spdif信号的质量(抖动),需要多好的示波器? 
  设计一个同步21进制计数器,需要 几个触发器。? 
  为什么电脑还沿用冯·诺伊曼结构而不使用哈佛结构? 
  低功耗CPU是怎么做到的? 
  CMOS、VHDL、VLIW 等英文缩写为什么一般没人用汉字表达? 
  神经元输出的电子是从哪里源源不断获取的? 
  为什么大部分中央处理器(CPU)不能直接对内存中的数据进行运算? 
  在硬件层级,地址总线是如何根据地址电信号,从多个触发器中找到指定的触发器的呢? 

前一个讨论
如何看待b站up主都市丽人菜自称“跨性别者“在视频中表示自己女装会直接上女厕所?
下一个讨论
和男朋友因为工资卡给谁的问题,冷战一周了,怎么办呢?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利