胡世昌
(沈阳师范大学,辽宁沈阳 110034)
在逻辑电路课程讲解触发器特性的过程中,有一部分题目是直接给出时钟波形和输入波形,要求画出输出波形〔1〕,为演示和验证这类题目,就需要能够产生任意时序关系的脉冲发生器。而常见的脉冲发生器,通常要求首先掌握触发器的原理〔2〕,甚至用到单片机〔3〕、CPLD、FPGA等更复杂器件〔4〕,复杂度使其不易掌握,决定了它们不适合作为教学工具。同时,这些脉冲发生器的输出都是有规律的脉冲序列,功能上也不符合器件功能验证的需求。作为器件功能验证使用的脉冲发生器,要能产生任意时序关系的多路脉冲,所需学习时间不宜过长。根据存储器的性质,笔者找到了一个使用存储器产生任意时序的多路脉冲发生器的方法,并用软件进行了仿真。该方法可以满足逻辑电路课程讲解中的演示和验证。
首先在存储器中存储连续的0或1,再用一个计数器产生存储器的连续递增的地址信号,即可存储器的数据输出端产生相应的逻辑信号波形,存储器中的1位对应高电平,0位对应低电平。
例如,如果在一位存储器中的每一位,分别存储下列连续的0和1,在顺序递增的地址信号作用下,即可在数据输出端产生连续的五个方波,每段高电平对应两个连续的1,每段低电平对应两个连续的0。这个方波可以作为触发器的时钟信号CP,通过在不同的比特位设置相应的0和1,可以产生不同时间关系的数字信号(如图1所示)。
把上述连续的位序列,分别存储到3个1位宽的存储器中,并用一个模21(十六进制15H)的加法计数器作为该存储器地址信号的发生器,即可产生相应的3个波形:由计数器和三个1位存储器构成的3路脉冲发生器。图2是对应的logisim-evolution仿真电路。
如果采用四位存储器,可灵活选用每个半字节中的三位作为波形存储位,例如用0位产生CP,1位产生J,2位产生K,未使用的3位置零,则第一个半字节应存储0000,第二个半字节应存储0000,第三个半字节应存储0001,依此类推,可知对应的32个存储单元的内容(0013 2677 6011 0237 6675 0000 0000 0000),对应的脉冲发生器电路如图3所示。
初学者可以采用多个一位存储器来分别实现每一路脉冲;熟练者则可以采用四位或八位存储器来构建多路脉冲。
脉冲发生器构建完毕之后,就可以把它作为一个独立的模块使用来验证或演示逻辑电路的功能。构建这个脉冲发生器,只需确定计数次数、存储位序即可,简单易学。
图1 连续位0和1及其对应的波形信号
图2 计数器和3个一位存储器构成的3路脉冲发生器
图3 计数器和1个四位存储器构成的3路脉冲发生器
图4 用多路脉冲发生器验证JK触发器的功能特性
图5 用多路脉冲发生器验证JK触发器功能特性的输出波形
以验证JK触发器功能为例,把上述波形发生器接入JK触发器,即可分别验证JK触发器的置0、置1、保持、翻转功能。如图4所示,其中模块wavGen是前面所实现的脉冲发生器,它的输出信号被接入一个下降沿触发的JK触发器的输入端。
仿真结果如图5所示,在CP的前4个下降沿中,第一个验证了置1功能,第二个验证了置0功能,第三个验证了保持功能,第四个验证了翻转功能。
调整存储器中所保存的0或1,即可调整个输入波形之间的时序关系,非常方便。
需要注意的是图5中CP波形的第5个下降沿,设计这个时序关系的目的是要验证“时钟有效沿之后的状态,取决于时钟有效沿前一瞬间的输入”这个功能特性。但是很遗憾,所得到的输出波形是错误的,因为在第5个下降沿之前,J=1,K=1,应该翻转;下降沿之后,J=0,K=0,应该保持。根据 “触发器在时钟有效沿之后的状态,取决于时钟有效沿前一瞬间的输入”这个功能特性,输出Q本应根据下降沿之前的输入(J=1,K=1)而翻转,但从输出波形来看,它没有翻转,而是依照下降沿之后的输入(J=0,K=0)而保持。
改用D触发器,使用存储器构建的脉冲发生器,让数据输入端D在触发脉冲有效沿跳变的瞬间同步改变,用Logisim-Evolution仿真的结果表明,下降沿后的输出信号Q也是依据触发脉冲有效跳变后的瞬间输入来确定的。这进一步印证了Logisim-Evolution在跳变沿前后瞬间的输入采样处理方面的错误。
Logisim-Evolution软件“使用触发脉冲跳变沿后的数据输入,来确定触发器的数据输出”这一做法,与真实的硬件行为不同,在应用时必须加以注意。
利用存储器的存储位元来实现任意波形数字信号发生器,具有方便、直观、易于掌握的优点,是数字电路设计和学习中值得推广的好方法。它可以构建任意时间关系的多路 波形,在时序逻辑电路功能的学习和验证中简单易用。但要注意,Logisim-Evolution这个软件,在边沿触发器的仿真上,没有实现“时钟有效沿之后的状态,取决于时钟有效沿前一瞬间的输入”这一特性,而是选择了“根据时钟有效沿之后的瞬间输入,改变输出状态”这个做法。该方法不符合硬件本身的逻辑,在应用中必须加以注意。