一题多解!一个案例,给加加讲清楚“硬”电路和“软”电路的区别
加加最近迷上了芯片设计。非常好,毕竟数字逻辑/数字电路……这一系列课程,哥当年,是最喜欢的了,又有动手的乐趣,也有大脑逻辑体操的乐趣,还有数学思维的乐趣,没办法让人不喜欢。
“硬件设计,到了更高层次,一样是编程思维,一样是算法和数据结构,一样是数学。”
为了给加加讲这个道理。我举了一个简单的案例:
一个房间里,我们进门的时候,门口有一个开关,打开了灯。但是,我们躺在了床上之后,就不想再起床去门口开关哪里关灯了,我们想躺在床上,伸手用床边的开关控制电灯。
这个需求,简单抽象就是:请设计一个电路,用两个开关,控制一个灯。
丢人了,当年这些电路,我初中就会。但昨天我忘了,于是……
加加理解了这个硬件电路之后。我说,一题多解,还有一种“软”电路思维,把每个开关和灯的亮与灭,都抽象成一个bit数据。那就是,当任何一个开关,数据发生变化,从0变成1,或者从1变成0,那么,对应的,灯的数据,也取一次反——也就是改变一下数据状态,是0,就变成1,是1,就变成0。这个时候,其实就是编程了啊:
if(开关1发生数据变化),灯的数据,取一次反,再写回。
if(开关2发生数据变化),灯的数据,取一次反,再写回。
具体工程实现的时候,可以把开关1和开关2变成中断,来一个中断,我们改变一次灯的状态。
那,这种解题方法的好处是什么呢?
当你需要3个开关控制一盏灯的时候,当你需要4个开关控制一盏灯的时候,当你需要5个开关控制一盏灯的时候……纯硬电路就比较复杂了,但这个,依然很简单的。可扩展性还特别好。
关键是,当你学会了用这些“软”电路方法来解决问题之后,你回发现,以前很多复杂的电路,就变得简单了。
你可以解决更加复杂的问题了。
最后,我请加加总结今天我们讨论的内容呢。结果,加加说了一次,我觉得很好。等收拾纸笔,结束今日交流的时候,老父亲给忘了,请加加再重复了一次。
但是现在,我来记录的时候,我又忘了。最后我们讨论,觉得更高层次抽象梳理之后,这句话是:“输入输出数据化,后面就可以用上可编程的逻辑,就可以软件化了。”
#等式的奥秘#
发布于 北京
