作者:王天祺
来源:知乎
如何评价同济大学计组教学组的教学态度?
CS的同志们学习一下FPGA其实挺有帮助的,可以帮助理解底层硬件。著名课程CSAPP里面都有专门一章讲了如何硬件搭一个CPU。
CS的同志们对于FPGA的抵触也是可以理解的,毕竟RTL级的设计思想跟列位写软件时的那套分支、跳转、循环的思路有本质的区别,更坑的是Verilog长得还挺像C语言,带了实验室这几届师弟,感觉好多新人入坑时都被坑的挺惨的。大家都花了好大力气才把思路从软件那边扭到了硬件。
我一直觉得就是大家原先的软件思维造成了入坑FPGA时的不适。为此,当年我还做了一个实验,我姥爷做了一辈子电话交换机,从模拟时代和分立器件时代一路走来,但是从来没接触过FPGA,没接触过软件,没用过电脑。我发现教他Verilog和FPGA的时候就很容易(快九十岁的人,接受起来比实验室的小朋友都快),他表示Verilog跟画电路图是一样的嘛,不过就是用文字表述的电路图而已;FPGA这东西也就是块万用板,照着设计连线就好了。
所以后来再教小朋友学FPGA的时候,我都推荐他们先去把数字电路书的组合、时序和存储器三章看明白,而不是礽本语法书让他们啃,感觉大家接受度会好很多。
FPGA的实验其实被广大CS众抵触,一条最重要的原因还是在于综合实现太慢,debug效率低。大点儿的设计改根信号重跑一遍就俩小时过去了。。。然后发现改错了,然后又得搭上俩小时。(比如当你发现我开始在知乎上无聊地答题,就证明我在等综合)。哪里比得上写软件时秒编译的爽快。debug时对着满屏波形图看得眼睛疼,哪比得上软件打log看着清爽直观。以上这些就真的没办法了,目前EDA技术也就只能做到这个程度了。让CS的同学们体验一下EE的痛苦,就当体验生活了吧。综合、布局布线这类问题也算CS领域的经典课题,还望列位CS的同学在互联网浪潮之巅冲浪之余也能有人推进下EDA技术的发展,解救EE的同学们于水火。