这一节来介绍基本的寄存器和存储器的实现,首先看时序逻辑电路的动力时钟,时钟可以周期性的去输出0或者是1。
继电器时钟
时钟可以通过继电器来实现,比如上面的电路,v是电源高电压,所以开始的时候它输出out是1,当开关闭合的时候,电磁铁会充电,那么它会把弹片拉下来,输出out就变成0,弹片拉下来以后,电磁铁它就会断电,那么它就会失去磁性,这时候弹片又会被弹回去,输出又变成1,然后电磁铁又通电,又把弹片给拉下来,这时候输出又变成0,就这样的交替往复输出1跟0。
时钟周期
在每一个上升沿之间的间隙就称为一个时钟周期,比如上图它的时钟周期就是0.05,而时钟周期的倒数被称为时钟频率,就是说在一秒钟之内有多少个时钟周期,比如如果时钟周期它是0.05的话,那么时钟频率就是1/0.05=20HZ,单位是赫兹,现在的计算机通常使用晶振来产生时钟,频率也很高,可以达到100M到4G赫兹。
晶振
时钟的作用第一个是同步的作用,可以让多个元件在相同的时刻进行状态的改变,第二个可以起到控制的作用,可以让电路在特定的时间间隔内去执行特定的操作,第三个是时序控制,可以让电路按照特定的时序进行电路操作,第四个是时钟频率决定了电路的工作速度,时钟频率越高那么CPU的运行速度就越快。
实现存储器之前我们先看基本的多路选择器和多路复用器的实现,入下图多路选择器它有两个输入a,b一个输出out,从多路输入里面选择一个作为输出,它有一个select做控制,当select等于0的时候就选择a作为输出,当select等于1的时候选择b作为输出,
多路选择器
上图是它的符号和verilog实现,我们来推导一下,当sel等于0的时候,nsel是等于1的,那么1跟a作与操作输出o1就是a,0跟b作与操作输出o2是0,那么a再跟0做或操作输出out就是a,当sel等于1的时候也是一样的,当sel等于1,nsel它就是0,那么输出o1是0,输出o2是b,b跟0做或操作输出out就是b。
Mux16
我们再把16个mux组合起来,就构成一个16位的多路选择器如上图,它的输入跟输出都变成16位的,因为我们后面设计的CPU它是16位的,所以我们设计的加法器,存储器,寄存器,它的输入输出都是16位的。