|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
10年前,我用了三个月时间学习了VHDL语言,并在FPGA和IC上得到了验证,那时对数字的理解是完全数学式的,对编译器并不关注。后来发表了一篇感想,引起了一些朋友的关注。05年后我有改行,做模拟电路,从头来。
现在的模拟电路有很多需要数字电路支持,而很多Process是没有Library的,需要用Schematic方式输入,再用Hspice Simulation,这样用模拟电路方法设计数字电路,无疑是极大的挑战,特别是状态一多,你几乎无能为力。 但经过这次自己手动编译,也能大致了解编译器的原理了。
我的项目是一通讯协议,如果是用VHDL,很快就可以完成,但用原理图, 就不知从何下手了,特别是协议中的状态变量多的时候,电路复杂程度是几何级数上升。但越复杂才越是有意思,既然机器能实现,人工更能实现,而且还能更简洁。于是开始对语言结构进行再学习。之前也学习了各种软件语言,特别是汇编语言, 与硬件语言已很接近了。 软件语言特点是Step by Step, 一步一步,很清晰,只要能画出框图就能写出程序;而硬件语言是并行语言,变量变化就没有软件语言那么清晰,因此需要对Process()动作过程需要详细描述。
我的经验是:状态机可以实现一切,这一点与语言设计一致的。 把状态图画出来,分析状态之间的关系,将整个Process()用三句话来解决问题:状态/条件/执行,其它的就是数字电路的基本功了。现在的IC也回来了,协议虽然有点复杂,实现电路逻辑大概8K个反相器,IC测试功能正常了。经过这次尝试,对编译器有了些理解,因时间关系,今天写到这里, 有兴趣的朋友可以和我继续交流。 |
|