很久没有捡起数字电路了,从今天开始认真好好复习一下。 本文内容均总结与《Verilog HDL高级数字设计》 1. Basic Knowledge 1.1 Harzard 1.1.1 Static harzard 逻辑表达式形如:f=ac'+bc会引发static harzard,简单理解: c经过非门时会有一定的延迟,所以在比如A=1,B=1时,C从1切换至0,由于延迟,ac'从0变成1的时间会滞后,所以会有一小短时间ac'=0,而bc同样等于0,所以此时逻辑电路的结果会短暂为0。 若表达式为长且复杂,则用K-map去看各表达式元素之间是否有接触,或者说是否有相邻的表达式,若有则会发生static harzard。 解决方法:将边缘覆盖,添加多余项,覆盖掉接触边缘。 1.1.2 1-harzard 和 0-harzard 前者为保持输出结果为1时突然有一小段时间跳变至0,后者正好相反。 解决0、1-harzard的方法:先解决其中一个,再用反表达式f’的K-map去执行1.1、1.2中提到的方法。 1.2 dynamic harzard dynamic harzard 可以简单理解为不止一次跳变的static harzard。 解决方法:将多级逻辑电路分解,消除每级的static harzard。 若电路中不存在static harzard,则电路中将没有dynamic harzard。 1.3 NAND NOR 在实际化简逻辑表达式中,运用NAND和NOR门能够将很复杂的乘法表达式化为几乎纯加法的表达式。 例如: f=D(B+C)(A+E+F')(A+G) =(D'+(B+C)'+(A+E+F')'+(A+G)')' 原本表达式需要3个OR和一个AND,而新表达式并不需要使用AND,四个NOR和一个非门即可解决问题。 1.4 Multiplexers Multiplexers(多路复用),一般可认为拥有多路输入,单路输出。 Demultiplexer