|
最近几天看了挺多的论坛,也发现很多人在博客或者论坛中,开始着自己的学习,然后记录下这些进步和过程。于是,我也想借助于这种形式,记录学习的步骤,以及收获的点滴,督促自己可以好好学下去。
首先介绍一下自己的情况。我现在研一,差不多从大二开始接触电子设计方面的东西,一开始学习了单片机,最初的入门还是从郭天祥老师的教程开始的(郭老师真是楷模,他的教程让一个个热爱电子的我们有了最开始的认知和基础),之后参加了各种比赛,也获得了不少荣誉,但更多的是认识了一批优秀的学长、学姐。之后学习了AVR和自己DIY开发板,用一些最简单的设备来制作电路板(熨斗、三氯化铁,铜板、自己做的小电钻…)。一开始学起来确实很吃力,但还是坚持了下来。后来随着一些后续如单片机、电路、模电、数电,DSP,可编程逻辑器件等课程的学习,对自己掌握的知识有了更深入的理解。现在研一快结束了,很遗憾自己找了一个纯做雷达数据处理算法的老师,这一年来,基本是在上课,看论文,做matlab仿真,硬件的东西都是零散着学,学的不系统。虽然上学期自己总是泡图书馆,看各种硬件设计书籍,但理论终究是理论,并没有带来实质性的提高。直到最近看了阿莫论坛中静静的ARM学习笔记,突然醒悟,觉得自己不能就这样过完研究生生活,毕竟自己以后还是希望以硬件研发为职业的。记得看过这样一句话:找工作一定要找一个自己喜欢的,这样一整天的生活都是快乐的。在这里,我挺想对前辈们说,你们其实是挺幸福的,每天为了自己喜欢的事业而努力的日子是充实的。似乎是有点跑题了,毕竟第一次这么写东西,感觉还是有些拘谨~下面步入正题:
之所以命名为从头学起FPGA,是因为自己在本科时已经接触了它,而且毕业设计做的也是关于FPGA的,其中时许约束、状态机等都没有涉及到,自己对它不是很满意,总之还是忽略了它吧。首先还是学习一些FPGA的基本概念吧:
1. FPGA介绍(部分参考百度百科O(∩_∩)O)
FPGA是英文Field
Programmable Gate Array(现场可编程门阵列)的缩写,它是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物,是专用集成电路(ASIC)中集成度最高的一种。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable
Logic Block)、输出输入模块IOB(Input Output
Block)和内部连线(Interconnect)三个部分。用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。作为专用集成电路(ASIC)领域中的一种半定制电路,FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可以毫不夸张的讲,FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA来实现。
FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积(最开始还是从郭老师的书中得知的),提高系统的可靠性。
2 Altera与Xilinx
现在市场FPGA主流供应商是这两家公司,个人感觉两家的产品差不多,一般这家公司推出新的产品,另一家必定会有与之对应的产品。Altera在国内的公司应用特别广泛,而Xilinx在高校和研究所中露脸机会较多。记得上课老师解释这种现象时说,Xilinx做的产品比Altera更稳定,更符合军方的要求和适用条件。这两家公司的产品我都用过,但接触更多的还是A,个人感觉,A做的软件Quartus比ISE好用多了,更符合国人的习惯~有一次要做实验,老师实验指导书中都是基于ISE的,我一开始是用的ISE,后来觉得不舒服,还是换做Quartus完成的作业,也许这就叫先入为主的,O(∩_∩)O。还记得,当时一开始学习FPGA时,用的就是X家的,我画了接近一周多,才有点弄明白建工程啥的…囧。对于刚开始学习FPGA时,我的建议是学习Altera的,不是打广告,前辈们口下留情~
3 Verilog or VHDL
两者都是硬件描述语言,具体渊源大家可以自行问度娘,其中VHDL是军方出品,所以在语法等方面会更严格些,在很多高校都是教授的VHDL,至少我们学校时这样的;verilog跟c语言很相近(我现在觉得好多编程语言都是大同小异的吧),在公司中比较流行。我一开始接触的是VHDL,感觉网上对verilog的资料会更多一些,因此我决定开始学习verilog,这个笔记也将用verilog来作为编程语言(不过,这段时间确实有点不适应,总是想用vhdl来写…)。
第一部分就写这么多了,软件开发平台和语言都有了,剩下的就是开始学习如何使用啦!那也是下面的一节将要一起学习的内容~
第一次这么正式的写学习笔记,很多方面会有错误,还请各位前辈指出来,小弟在此先谢过啦O(∩_∩)O
最后的最后,送上一句最近迷上的话:
人一切的痛苦,本质上都是对自己的无能的愤怒。