FPGA入门之我见入门之我见
1.写在前面
很早就想写这么篇短文,和大家交流学习的些许经验和心得。但一直有各种干扰,致使一拖再拖,这阵子赶上米国佬过圣诞,
咱也忙里偷闲,赶紧把这篇短文码掉。。嘿嘿。
2.为什么要写
群里时常有新人呈周期性的问诸如,“我该如何学HDL?”,“非阻塞和阻塞有啥区别?”之类的问题。在此,笔者扯两句自己的
学习体会,对这些问题一并予以回答。
3.English required
英文资料不一定能培养出优秀的FPGA工程师,但拒绝英文资料的工程师至多是个合格的工程师。
如图所示,纵轴代表综合水平,横轴代表时间,理论决定了由经验带动的水平提升的上限。而如果能经常参考英文资料,上限
可以适当提高,如图中的虚线。
在一开始便强调英文的重要性是因为学习FPGA第一手的资料是大量的官方资料,如tutorial,user guide,cock
book,handbook,application note,white paper等。
读者不能指望永远参考翻译的二手资料吧,何况很多还都严重脱节行业发展现状。
4.FPGA不是单片机
关于这点,很多人反复强调,但遗憾的是,把FPGA当单片机玩的人仍前赴后继。笔者琢磨着有可能是入门方法有误。
回想一下我们是咋学单片机的?买一本教材,了解一下IO口和控制字,然后开始画流程图,用C编程,做各种经典实验。
而当转到FPGA时,很自然的会借鉴“单片机模式”,买一本HDL的书,发现Verilog和C长还挺像,很轻松的啃完HDL,然后就
开始“编程序”。待编完后,一点按钮,一口气从综合做到PAR(ISE和QuartusII都能一个按钮跑整个flow),然后仿真。仿真
OK?皆大欢喜。不OK?改code。咋改?不清楚。
这个过程中最大的问题在于把FPGA最大的硬件本色当成黑盒处理:黑盒的输入是code,输出是仿真。
当把黑盒漂白成白盒,大致知道这盒子里有些啥,干了些啥,那在笔者看来才算是入门了。漂白粉是啥同志们应该猜到了:
FPGA的结构。
推荐阅读:
a) 采用Cyclone与Cyclone-II系列器件进行设计.pdf
b) altera: Cyclone II Device Handbook.volume1
c) xilinx: ug380~ug389(spartan6)
5.HDL不是C,结构决定HDL
上面说到FPGA的结构是漂白粉,这节承接上文继续:
时序逻辑的敏感列表为啥只能有时钟和复位?如下:
always@(posedge clk or negedge rst_n)
而不能再加个使能:
always@(posedge clk or negedge rst_n or posedge CE)
也不能双沿触发:
always@(posedge clk or negedge clk)
评论0
最新资源