原地址:http://www.cnblogs.com/jacob1934/p/6811974.htmlhtml
本人也入门不久,但愿我不会误人子弟哈。python
1.没必要着急买开发板。web
2.在学习FPGA以前,先去学习一下数字电路,不要求精通,最起码要有基本的电平标准、单端/差分、时钟、触发器、门电路概念。编程
3.了解FPGA。
【3.1】FPGA的内部以查找表为主,辅助以PLL、高速触发器、静态存储器等。
数字电路在必定的输入下,会有肯定的输出;当全部的输入输出对应关系都被计算出来,而且经过查找这种对应关系,而在必定输入下产生对应的输出,基本能够认为咱们等价地实现了该数字电路。 查找表就是这样的电路,当一个查找表单元不够实现目标数字电路时,可使用多个查找表联合,以及使用FPGA上的其余资源。
FPGA配置文件包括各个查找表的内容、内部连线等等。FPGA内部会以SRAM、NOR FLASH的方式保存配置文件,SRAM方式掉电后数据消失,须要在每次上电时从外部的SPI FLASH加载配置文件;NOR FLASH方式则不须要外部SPI FLASH,上电后很迅速的进入工做状态。架构
主要的FPGA厂家有xilinx、altera(现属于intel)、actel(现属于microsim)、lattice。这四家公司全是美国的,国内也有几家,但如今还比不上国外。前二者的销量最大,xilinx目前的主流低端产品是spartan6,altera的主流低端产品是cyclone IV。spartan6和cyclone IV都是SRAM架构的FPGA,altera的max 10是NOR FLASH架构的FPGA(也被altera定义为CPLD)。编程语言
【3.2】CPLD主要以宏单元和乘积项为基本结构,也就是经过改变逻辑门和触发器等的连线的方式实现数字电路,容量通常作不大。通常都是使用芯片内EEPROM或NOR FLASH保存配置信息。工具
【3.3】相比之下,FPGA更适合时序逻辑,CPLD更适合组合逻辑。CPLD的信号延时较为固定、可预测,而FPGA的延时抖动较大。FPGA的容量较大、价格较高。学习
【4】学习一种硬件描述语言(HDL)的基本语法。
HDL是对数字电路的描述,经过编译器synthesize(综合)成网表,再implement(translate----map----place&route),最后生成对应器件的配置文件。
常见的HDL是verilog和VHDL,我我的用verilog。开发工具
到网上找一篇语法教程,通读二、3遍便可。测试
对于verilog初学者,有几点常见注意点:
【4.1】每一个寄存器都只能在一个always里被赋值。
【4.2】时序逻辑,例如
reg a,in; always @(posedge clk) begin a <= in; end
中,只使用<=(也叫非阻塞赋值)
【4.3】组合逻辑,例如
reg a,b,c; always @(*) begin c = a + b; end
只使用=(也叫阻塞赋值)。组合逻辑中,虽然定义了reg(必须定义成reg),但会在综合的时候被优化成wire。
【4.4】always里的语句实际上都是“并行执行”的,除了testbench。
其实说并行执行也不全对,GPU里几千个核同时运算,也叫并行执行。FPGA里全部的查找表都是只管本身的输入的,把testbench外的verilog当作数字电路的描述便可(原本就是HDL)。
【5】FPGA型号基本了解。
我推荐新手先从spartan6或cyclone IV开始,这两个系列都有QFP封装,容易焊接、成本低(便宜的只有二十元)、结构相对高端型号较为简单。
查阅官网,简单了解器件的基本特性便可,好比容量、封装、IO电压、速度等级、工做温度等等。
网上也有对各厂家和系列的对比文章,能够看一下。
以便稍后选择相应的开发环境和器件。
【6】经过仿真进一步学习HDL。
仿真的工具能够是modelsim等,也能够是FPGA厂家的开发环境中自带的。我推荐先用后者。
xilinx的低端开发工具是ISE 14.7(最高版本,再也不更新),高端开发工具是vivado。
altera的开发工具是quartus II。
其余厂家的产品我我的没有使用过。
X和A的开发环境都有web版,高端功能和器件受限,免费。网上有完整版的破解(就是X和A的代理发出来的……)。
我是先用ISE 14.7自带的ISIM仿真的,ISIM的功能比modelsim弱,但对新手和小项目足够了。ISIM包含在ISE中,能够更早、更快的熟悉开发环境。另外对新手而言,modelsim有点复杂。
使用ISE、quartus等仿真,须要选择具体FPGA型号,选择较小的型号便可,好比XC6SLX9-2TQG144C和EP4CE6E22C8n,由于这阶段的代码量都很小,并且通常跟具体硬件无关。
有不少的实例书籍和教程,对照着实现并仿真。
仿真要写testbench,就是向你写的verilog模块给测试信号的代码。verilog中有一些语句是只能用在仿真中的!好比$display、event。for可综合但不推荐在 generate 或 testbench 外使用。
暂时忘掉C/C++等语言。大多数人在学习HDL以前就已经学习了C/C++等等运行在CPU上的编程语言,而后在学习HDL的时候会不自觉的将C/C++等语言的语法、习惯、理念带入到HDL中,并且有时候根深蒂固。请记住:HDL是对硬件的描述,在编写HDL时,要想着这段语句会被综合成什么样的等效逻辑电路,每次编写完后都要看看综合出的RTL图和预期的有多少差距,而后再仿真看下时序是否符合预期,有差异固然要改喽。
在仿真中,会出现不少warning和error,必定要经过搜索引擎弄明白warning和error出现的缘由和解决办法,尝试将全部warning都去掉。
尝试同一个功能的不一样实现方式----要速度仍是面积?这就是经验。
【7】HDL进阶。
好比verilog 2001。
好比两段式、三段式状态机的写法。
【8】FPGA进阶了解
了解更多的FPGA知识,开拓下知识面,看到琳琅满目的开发板也能知道如何选择。
ip core,具体芯片和开发环境下都有哪些IP core,如何使用。
好比 什么是软核、固核、硬核。好比全部BGA封装的spartan6都带DDR3硬核,-3等级的能够跑到DDR3-800;而cyclone IV系列都只有DDR3软核。
好比 X和A的各类原语,好比xilinx的serdes原语能够实现1gbit/s的串并转换。
好比 spartan6的LVDS输出只能在BANK0和BANK2(官方手册有写)。
好比FPGA的特殊管脚,GCLK、VREF、差分对、VCCIO。使用各类电平标准时的VCCIO和VREF需求(官网有文档)。
好比主动配置和被动配置。
spartan6带T的和CYCLONE IV的GX型号均可以用来作什么,PCIE、SATA等等。
如何经过JTAG下载配置文件,xilinx的chipscope、altera的signaltap。
【9】买开发板或本身打板
对于新手,买便宜的甚至是二手的开发板就好了,通常100-300元就够了。能够买核心板+外设子板,也能够是一整块板。
买开发板的好处,一是电路设计出错的可能很小,二是附带的教程。
不过若是你有足够的阅读量和画板能力的话,我推荐本身画板。QFP144封装(x和a都有)的FPGA价格仍是挺便宜的,低速应用只要2层板就能搞定,比买一样配置的开发板还要省钱,并且也容易焊接。
根据开发板的教程学习实践,或者给本身定个小的项目作作。
【10】更多进阶
好比implement后的仿真。
好比PCIE、DDR3内存。
如何开发本身的ip core。
好比软核CPU。
好比ZYNQ系列、cyclone V soc系列。
【11】学习TCL脚本
FPGA的编译和仿真中,通常都会使用预约义的tcl脚原本完成任务,学习TCL脚本能够在必定程度上提升工做效率。
【12】相关技能和行业知识
好比PC上的软件、python之类的脚本语言、matlab、Linux、单片机、高速PCB的设计,看你的需求和兴趣。
实际的FPGA应用都是在具体行业具体的项目里的,好比数字信号处理、图像处理等等,初学者能够给本身定一个方向,而后多多get相关技能。