CMOS逻辑电路,分两部分,上拉部分,下拉部分。上拉部分由PMOS管电路构成,下拉部分由NMOS管电路组成,如下。上下拉,形成互补。 2d40e7fbda2749fcba5fb1f7a38461fd?from=pc.jpg
由前面的基础可知,CMOS只能实现基本逻辑的非,比如或逻辑,与逻辑,如果不加反相器,CMOS只能实现或非,与非逻辑。原因就是上拉逻辑只能用PMOS实现,下拉逻辑只能由NMOS实现,而PMOS的导通需要输入信号为0,NMOS导通需要输入信号为1。

既然如此,我们在用CMOS实现逻辑电路时,一般可以照如下顺序去做:
1. 可以先将其整体先加上一个非,作相应的逻辑转化。
2. 上拉逻辑中各个PMOS,与操作为并联,或操作为串联。
3. 下拉逻辑中各个NMOS,与操作为串联,或操作为并联。

比如我们想从CMOS层去实现逻辑 OUT = D+A*(B+C) (减号“-”表示取反(非)操作,“+”表示或,*表示与)。

设计过程如下:
1. OUT = - ( -(D+A*(B+C)) )
2. OUT1 = -(D+A*(B+C))
3. OUT = -OUT1
对于OUT1 = -(D+A*(B+C)),正好是逻辑整体上带了个非。
故对于上拉逻辑:
或操作为串联,从而输入B,C接到的PMOS之间为串联。
ed7c8e84cc5c4b47b2f89495d7784230?from=pc.jpg
与操作为并联,故输入A接到的PMOS跟B,C或逻辑之间为并联。
e92bce98cf954ff492d2dc738c3231d3?from=pc.jpg
或操作为串联,故D与A*(B+C)的PMOS逻辑为串联。
60c8a8b9f3e74ec7b24ffab4c51e3308?from=pc.jpg
对于下拉逻辑与上拉逻辑正好相反:
或操作为并联,从而输入B,C接到的NMOS之间为并联。
8b4b150a36414bb69316220ed56c62a1?from=pc.jpg
与操作为串联,故输入A接到的NMOS跟B,C或逻辑之间为串联。
2e55c74e0a694167a89cf0fea78f2109?from=pc.jpg
或操作为并联,故D与A*(B+C)的NMOS逻辑为并联。
d0b885e3932444179705f0fdb589352c?from=pc.jpg
从而得到 OUT1 = -(D+A*(B+C)) 的CMOS实现如下:
b706241045d14a018bad0a20b84d47e3?from=pc.jpg
OUT = -OUT1,故得最终答案如下:
ef242c709fd54c0fa62994a6fb40d9f0?from=pc.jpg
当然,在MOS管级别还可以做一些优化,比如MOS管级别的逻辑优化,MOS管栅源共用,晶体管尺寸调整,重新安排各个输入的上下顺序等等,都可以在MOS管级别使得电路的时序与面积功耗等得到优化,但这不是我们的重点,一般对于全定制IC设计会从MOS管级开始考虑电路的实现。这里我们只是对其做一个了解。
该内容转载自小鱼学IC,仅供学习交流使用,如有侵权,请联系删除。