
任务
“如果只有两个反相器,并且元素数量不受限制,是否可以将三个信号反相”和“和”或“或”? 我们一对决定在研究所。 现在,她的决定甚至困扰着高级专家。 让我们看看geektimes社区如何处理它,同时尝试恢复其发生的历史记录...
该研究所的一位老师说,这类任务出现在电子管计算机时代。 但是我们没有足够的心态向平庸的学生询问细节,因为现在我们必须根据旧车的描述来恢复历史并有所思考。
第一台电子计算机建立在灯上。 因此,苏联的第一台(1950年)MESM计算机装有大约6000盏灯,借助于它们,实现了二进制计算机的逻辑功能“ AND”,“ OR”和“ NOT”。 图片中显示了经典阀门在灯上的实现。

逻辑功能“ AND”建立在单个灯上,输入数量由灯中的网格数量确定。 为了实现经典2IL阀的元件,需要两个灯。 尽管随后出现了所谓的紧凑型电子管,类似于在一个灯泡中组装几盏灯,但工程师仍然必须优化逻辑表达式,以便“ And”功能在其中占主导地位。 这些灯价格昂贵,不可靠(MTBF 750小时),会产生大量热量,但最重要的是它们很大。 1952年,国内出现了第一批半导体二极管,以取代低功率灯。 它们的出现标志着二极管逻辑的出现,从而大大减小了逻辑门的尺寸。 图中显示了二极管逻辑上“ AND”和“ OR”功能的实现。

但是实现逆变器仍然需要一盏灯。 半导体二极管已经用于制造BESM-2机器,该机器已经包含4000盏灯和5000颗半导体二极管。 “ AND”和“ OR”阀的尺寸和消耗的减少是显着的,因此有必要优化逻辑功能以减少电路中的逆变器数量。 那时可能是工程师第一次解决了这个问题。
1955年在我国开始批量生产晶体管,从而可以完全放弃灯管。 1959年,第一台
晶体管无
管计算机是Setun机,尽管它仍然有20盏灯。
但是,回到我们的任务。
如果有人知道解决方案,那么请不要为那些想自己解决的人带来乐趣。 注释中接受答案,请以C或Verilog中的条目形式填写。
变体{nA,nB,nC} <=!{A,B,C}; 不接受,这是三个逆变器。
UPD:
@eatmore的解决方案D =!((A&B)|(B&C)|(A&C))
E =!((D&(A | B | C))|(A&B&C))
nA =(D&E)|(D&(B | C))|(E&B&C)
nB =(D&E)|(D&(A | C))|(E&A&C)
nC =(D&E)|(D&(A | B))|(E&A&B)