经常看到关于FPGA入门的讨论,结合自己的理解,简单说说这个很难说清楚的话题。
先从现象说起,经常看到有人在很激烈地辩论状态机的几种写法孰优孰劣,也经常看到在板上调试了半天用尽力气无法解决问题后认定是软件有Bug,或者听到有人说出现了xxxxx问题马上就有人很肯定地说“时序问题”。。。
在我看来,很多貌似云山雾罩的问题根本就不是问题,根本原因在于设计者本人还没有入FPGA的门。怎么才叫入了FPGA的门呢?软件工具、HDL语言、FPGA硬件结构、数字系统的分析设计能力,这四项是评价FPGAer是否入门的标准,只有这几项都知其然,知其所以然才算是入了FPGA的门。
简单展开来看一下:
软件工具主要是指FPGA开发过程中在PC或服务器上跑的工具,利用这些工具,我们可以把基于HDL语言描写的设计变成真正FPGA芯片上可以真正按照设计意图运行的实际电路,软件工具可以帮我们处理语法问题、分析设计的组织架构、层次及依赖关系、把抽象的语言描述映射到具体的与架构有关的并体现设计意图的电路、根据特定策略进行不同层次的优化、把基于特定架构的电路描述映射成基于特定芯片的的电路并在具体芯片
上同时达到功能与性能的双重要求、在以上各环节中保持信息传递不会被破坏、验证并输出各环节的输入和输出、根据特定约束条件指导各个环节的运行等等等等;其中具体涉及到的工具包括但不仅限于:逻辑综合、物理综合、逻辑优化、低层次优化、map、pack、PAR、STA、simulation、debug、netlist viewer等等;
HDL语言主要是指VHDL和Verilog,常用的基本的语法知识及规范的命名体系、coding style、理解不同语言中各种设计要素的指向性(如reg和wire、signal和variable、各种operations等);
FPGA硬件结构包括IO Block和FPGA Fabric,IO Block作为FPGA与外界联系的纽带非常重要但被很多人忽视,各种电气特性及其DC、AC参数、输入输出架构、高速接口、IO Clock、Delay调节、片上终端的匹配等等;最容易得到关注的FPGA Fabric步进限于Logic Unit的架构,还有Memory的架构、Memory的布局、DSP块的架构、PLL、DLL、Global Buffer、routing resource、Clock Network等,还有一些很难注意到的象POR、片上OSC、动态时钟切换或控制、进位链等等;
数字系统的分析设计**要是指在上述三方面的基础上进行综合应用从而以一种很优雅的方式实现Spec的要求,不仅包括功能和性能指标,还有物料成本、人力成本、生产成本、运营成本等的考虑。
总之,就如我曾经讲过的,一个FPGA开发者,当他或她看到的不仅仅是一行行代码,而是一个生机勃勃、紧张有序、张弛有度、优雅而不奢华的电路系统时,恭喜你!你已经登堂入室了!
诚如某某所讲,FPGA芯片就是一堆沙子,希望所有喜欢FPGA、喜欢Xilinx的朋友能沙里淘金,玩出自己的精彩。
码字真心累啊:) |