FPGA学习手记(一) FPGA入门及建立FPGA开发环境
2012-11-28 10:48
423 查看
FPGA学习手记(一) FPGA入门及建立FPGA开发环境
一直没有勇气涉足FPGA领域,虽说在学院限选课里也学过大规模可编程逻辑器件,接触过Quartus II和VerilogHDL,但毕竟大学课程都是些理论与皮毛,大可不必当真。此后将目光投向ARM,并一直在学习或参与基于各种MCU的设计,学习CPLD/FPGA的设想就一直仅作为设想而搁置一旁。
后来临末之时,突然又起了兴趣。这一方面是将来必然要涉及更高速度的电路和数据处理,也因为手头还算宽裕。索性就淘宝了一款阿杜觊觎已久的FPGA核心板(后来大呼上当 >_<),开始试足于FPGA的深水中,但求小心徐行,不要被淹屎才好。
作手记,已备重拾只用。
欲善其事,先利其器。这个道理大家都懂,一套完整好用的开发工具是必须的。本人使用的是EP2C5T144核心板+专业版USB Blaster下载线(我不是卖板子的,品牌隐去),板上只有一片FPGA和配置芯片EPCS4。受了阿杜的蛊惑,买的仓促,后来才注意没有外部RAM(没法做大量数据的处理了),既然已经买了,暂且用着。另外自己焊了一块MCU入门外设板,包括LED、按键、AD、蜂鸣器和简易RS232串口。如下:
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181909001.jpg)
丑了点,不过很好用。 关键是可以省钱 ^_^,无论核心板还是外设板都能够重复利用,总觉得买个功能简陋的外设板不划算,如果没有条件自己搭设的童鞋可以买一块带外设的开发板,当然要买就买个齐全一些的,只有些小灯数码管EEPROM什么的就算了吧。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181910002.jpg)
HDL语言采用VerilogHDL,听老师说如果不做系统级设计Verilog和VHDL是差不多的,而VHDL或稍逊色一些。开发环境Quartus II 9.1,Altera路线,要走Xilinx路线的可绕道。
如果作为入门,可以选一本书或者看视频(比如特权同学的)。看视频当然更易于入门,不过稍显繁琐了,书本一般比较简要,急性子的人可以通过视频快速上手以后,转而通过专业书学习。不过不管再怎么学,不动手做些东西是不行的,做个小项目或者DIY可以使你摆脱四脚书橱的命运。好了,不说废话了……
EP2C5T144的最小系统包括电源稳压、配置芯片、晶振、JTAG/ASP接口和I/O接口等。上原理图:
![](http://space.ednchina.com/ewebeditor/sysimage/icon16/pdf.gif)
EP2C5Core.pdf
运行Quartus II,通过New Project Wizard
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181911003.jpg)
建立工程,设置工程路径、名称以及顶层实例的名称。这里都是HelloFPGA。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181912004.jpg)
之后添加文件,如果有已完成的文件,可以添加尽力啊,这里将在稍后新建文件,直接跳过。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181913005.jpg)
选择芯片,这里是Cyclone II系列的EP2C5T144C8。Cyclone是Altera的低成本产品系列,更高性能的可以选择Stratix系列。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181915006.jpg)
设置其他工具接口,根据已安装的第三方工具设置,如仿真工具中常用的ModelSim,此处不进行仿真,Next跳过,建立工程。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181916007.jpg)
工程建好后,通过File -> New新建Verilog文件,保存为HelloFPGA.v
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181917008.jpg)
这里写一个按键控制小灯的程序,实现按下按键点亮板载LED。用过MCU的童鞋都知道按键是需要消抖的,FPGA的按键消抖常采用边缘检测+延时的方法,这里只是演示……代码如下:
module HelloFPGA(Key, LED);
input Key;
output LED;
wire LED=~Key;
endmodule
其中module HelloFPGA(Key, LED); 声明了名为HelloFPGA的模块和端口(注意后面的分号),建议模块名称与文件名相同。Key和LED分别定义为输入和输出信号,在不声明的情况下,信号默认为wire型。
wire LED=~Key; 一句相当于:
wire LED;
assign LED=~Key;
由于核心板上LED高电平点亮,因而对按键输入信号取反。然后按
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181918009.jpg)
进行分析、综合。完成后会提示错误和警告数。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181919010.jpg)
再点击
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181920011.jpg)
分配引脚,FPGA可以灵活分配引脚,极大地方便了PCB布线和后续设计。这里根据原理图上LED的位置和按键插线位置设置引脚,以及电平标准。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181921012.jpg)
完成配置后,点击
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181922013.jpg)
编译工程,这样就生成了可以下载到FPGA和配置芯片的文件。在编译之前,还需要进行一些设置,在Settings中选择Device,再选择Device and Pin Options。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181923014.jpg)
在中将不用的管脚设置为三态输入:
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181924015.jpg)
在配置选项卡里选择配置芯片,超出配置芯片容量的代码会得到提示。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181925016.jpg)
点击进行下载,请确保正确安装了下载线驱动。点击Hardware Setup配置下载线,选择识别到的USB-Blaster,如果没有识别,请检查硬件连接和驱动。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181926017.jpg)
JTAG模式可下载到FPGA中,掉电后会丢失,AS方式可下载到EPCS4配置芯片里(非易失),再次上电时配置芯片会对FPGA进行配置。通过Add File打开HelloFPGA.sof文件,选择Program/Configure,按Start下载。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181928018.jpg)
结果如下,未按按键时小灯熄灭。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181929019.jpg)
点亮!
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181930020.jpg)
如果采用AS方式,载入HelloFPGA.pof文件,设置如下:
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181931021.jpg)
断电后拔掉下载线,重新上电,没有产生想要的效果,可以更改这里的设置,就是前面配置EPCS芯片的地方。貌似是个BUG呀 >_<。
一直没有勇气涉足FPGA领域,虽说在学院限选课里也学过大规模可编程逻辑器件,接触过Quartus II和VerilogHDL,但毕竟大学课程都是些理论与皮毛,大可不必当真。此后将目光投向ARM,并一直在学习或参与基于各种MCU的设计,学习CPLD/FPGA的设想就一直仅作为设想而搁置一旁。
后来临末之时,突然又起了兴趣。这一方面是将来必然要涉及更高速度的电路和数据处理,也因为手头还算宽裕。索性就淘宝了一款阿杜觊觎已久的FPGA核心板(后来大呼上当 >_<),开始试足于FPGA的深水中,但求小心徐行,不要被淹屎才好。
作手记,已备重拾只用。
欲善其事,先利其器。这个道理大家都懂,一套完整好用的开发工具是必须的。本人使用的是EP2C5T144核心板+专业版USB Blaster下载线(我不是卖板子的,品牌隐去),板上只有一片FPGA和配置芯片EPCS4。受了阿杜的蛊惑,买的仓促,后来才注意没有外部RAM(没法做大量数据的处理了),既然已经买了,暂且用着。另外自己焊了一块MCU入门外设板,包括LED、按键、AD、蜂鸣器和简易RS232串口。如下:
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181909001.jpg)
丑了点,不过很好用。 关键是可以省钱 ^_^,无论核心板还是外设板都能够重复利用,总觉得买个功能简陋的外设板不划算,如果没有条件自己搭设的童鞋可以买一块带外设的开发板,当然要买就买个齐全一些的,只有些小灯数码管EEPROM什么的就算了吧。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181910002.jpg)
HDL语言采用VerilogHDL,听老师说如果不做系统级设计Verilog和VHDL是差不多的,而VHDL或稍逊色一些。开发环境Quartus II 9.1,Altera路线,要走Xilinx路线的可绕道。
如果作为入门,可以选一本书或者看视频(比如特权同学的)。看视频当然更易于入门,不过稍显繁琐了,书本一般比较简要,急性子的人可以通过视频快速上手以后,转而通过专业书学习。不过不管再怎么学,不动手做些东西是不行的,做个小项目或者DIY可以使你摆脱四脚书橱的命运。好了,不说废话了……
EP2C5T144的最小系统包括电源稳压、配置芯片、晶振、JTAG/ASP接口和I/O接口等。上原理图:
![](http://space.ednchina.com/ewebeditor/sysimage/icon16/pdf.gif)
EP2C5Core.pdf
运行Quartus II,通过New Project Wizard
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181911003.jpg)
建立工程,设置工程路径、名称以及顶层实例的名称。这里都是HelloFPGA。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181912004.jpg)
之后添加文件,如果有已完成的文件,可以添加尽力啊,这里将在稍后新建文件,直接跳过。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181913005.jpg)
选择芯片,这里是Cyclone II系列的EP2C5T144C8。Cyclone是Altera的低成本产品系列,更高性能的可以选择Stratix系列。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181915006.jpg)
设置其他工具接口,根据已安装的第三方工具设置,如仿真工具中常用的ModelSim,此处不进行仿真,Next跳过,建立工程。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181916007.jpg)
工程建好后,通过File -> New新建Verilog文件,保存为HelloFPGA.v
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181917008.jpg)
这里写一个按键控制小灯的程序,实现按下按键点亮板载LED。用过MCU的童鞋都知道按键是需要消抖的,FPGA的按键消抖常采用边缘检测+延时的方法,这里只是演示……代码如下:
module HelloFPGA(Key, LED);
input Key;
output LED;
wire LED=~Key;
endmodule
其中module HelloFPGA(Key, LED); 声明了名为HelloFPGA的模块和端口(注意后面的分号),建议模块名称与文件名相同。Key和LED分别定义为输入和输出信号,在不声明的情况下,信号默认为wire型。
wire LED=~Key; 一句相当于:
wire LED;
assign LED=~Key;
由于核心板上LED高电平点亮,因而对按键输入信号取反。然后按
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181918009.jpg)
进行分析、综合。完成后会提示错误和警告数。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181919010.jpg)
再点击
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181920011.jpg)
分配引脚,FPGA可以灵活分配引脚,极大地方便了PCB布线和后续设计。这里根据原理图上LED的位置和按键插线位置设置引脚,以及电平标准。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181921012.jpg)
完成配置后,点击
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181922013.jpg)
编译工程,这样就生成了可以下载到FPGA和配置芯片的文件。在编译之前,还需要进行一些设置,在Settings中选择Device,再选择Device and Pin Options。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181923014.jpg)
在中将不用的管脚设置为三态输入:
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181924015.jpg)
在配置选项卡里选择配置芯片,超出配置芯片容量的代码会得到提示。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181925016.jpg)
点击进行下载,请确保正确安装了下载线驱动。点击Hardware Setup配置下载线,选择识别到的USB-Blaster,如果没有识别,请检查硬件连接和驱动。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181926017.jpg)
JTAG模式可下载到FPGA中,掉电后会丢失,AS方式可下载到EPCS4配置芯片里(非易失),再次上电时配置芯片会对FPGA进行配置。通过Add File打开HelloFPGA.sof文件,选择Program/Configure,按Start下载。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181928018.jpg)
结果如下,未按按键时小灯熄灭。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181929019.jpg)
点亮!
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181930020.jpg)
如果采用AS方式,载入HelloFPGA.pof文件,设置如下:
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181931021.jpg)
断电后拔掉下载线,重新上电,没有产生想要的效果,可以更改这里的设置,就是前面配置EPCS芯片的地方。貌似是个BUG呀 >_<。
![](http://space.ednchina.com/ewebeditor/uploadfile/20110727181932022.jpg)
相关文章推荐
- 【搬家】FPGA学习手记(一) FPGA入门及建立FPGA开发环境
- 《华清远见学习手记》之 嵌入式Linux开发环境的建立
- Angular 2 CLI 开发环境的建立与App应用开发入门
- 转帖-----我的WinCE5.0入门全过程,为了方便后来者,写了一天多,仅供大家参考!(开发环境建立+流驱动开发+相关资料)
- QT学习第一步 - 初步建立开发环境以及Hello
- TQ2440 学习笔记—— 1、Windows平台下开发工具安装与环境建立
- Linux入门-开发环境建立
- DocBook学习笔记 之 建立Docbook开发环境
- 学习心得:嵌入式linux开发环境的建立
- Symbian OS开发入门(二) :VS2003环境下Symbian工程的导入与建立
- Hololens开发手记入门学习阶段总结
- Symbian入门指南第二章:Symbian开发环境的建立以及目录结构的说明
- Symbian OS开发入门(二) :VS2003环境下Symbian工程的导入与建立
- Symbian入门指南第二章:开发环境的建立以及目录结构的说明
- JavaSE入门学习4:搭建Java开发环境(二)
- WinCE5.0入门全程导学!(开发环境建立+流驱动开发)
- amdroid源码学习系列之--建立android系统开发环境
- Python的入门学习及开发环境的搭建
- opencv入门学习之二:OpenCV 2.4.9+Visual Studio 2012开发环境新建工程再次配置问题的解决
- Zigbee开发环境的建立入门