FPGA学习手记(一) FPGA入门及建立FPGA开发环境

一直没有勇气涉足FPGA领域,虽说在学院限选课里也学过大规模可编程逻辑器件,接触过Quartus II和VerilogHDL,但毕竟大学课程都是些理论与皮毛,大可不必当真。此后将目光投向ARM,并一直在学习或参与基于各种MCU的设计,学习CPLD/FPGA的设想就一直仅作为设想而搁置一旁。

后来临末之时,突然又起了兴趣。这一方面是将来必然要涉及更高速度的电路和数据处理,也因为手头还算宽裕。索性就淘宝了一款阿杜觊觎已久的FPGA核心板(后来大呼上当 _),开始试足于FPGA的深水中,但求小心徐行,不要被淹屎才好。

作手记,已备重拾只用。

FPGA学习手记(一) FPGA入门及建立FPGA开发环境

一直没有勇气涉足FPGA领域,虽说在学院限选课里也学过大规模可编程逻辑器件,接触过Quartus II和VerilogHDL,但毕竟大学课程都是些理论与皮毛,大可不必当真。此后将目光投向ARM,并一直在学习或参与基于各种MCU的设计,学习CPLD/FPGA的设想就一直仅作为设想而搁置一旁。

后来临末之时,突然又起了兴趣。这一方面是将来必然要涉及更高速度的电路和数据处理,也因为手头还算宽裕。索性就淘宝了一款阿杜觊觎已久的FPGA核心板(后来大呼上当 >_<),开始试足于FPGA的深水中,但求小心徐行,不要被淹屎才好。

作手记,已备重拾只用。

欲善其事,先利其器。这个道理大家都懂,一套完整好用的开发工具是必须的。本人使用的是EP2C5T144核心板+专业版USB Blaster下载线(我不是卖板子的,品牌隐去),板上只有一片FPGA和配置芯片EPCS4。受了阿杜的蛊惑,买的仓促,后来才注意没有外部RAM(没法做大量数据的处理了),既然已经买了,暂且用着。另外自己焊了一块MCU入门外设板,包括LED、按键、AD、蜂鸣器和简易RS232串口。如下:

丑了点,不过很好用。 关键是可以省钱 ^_^,无论核心板还是外设板都能够重复利用,总觉得买个功能简陋的外设板不划算,如果没有条件自己搭设的童鞋可以买一块带外设的开发板,当然要买就买个齐全一些的,只有些小灯数码管EEPROM什么的就算了吧。

HDL语言采用VerilogHDL,听老师说如果不做系统级设计Verilog和VHDL是差不多的,而VHDL或稍逊色一些。开发环境Quartus II 9.1,Altera路线,要走Xilinx路线的可绕道。

如果作为入门,可以选一本书或者看视频(比如特权同学的)。看视频当然更易于入门,不过稍显繁琐了,书本一般比较简要,急性子的人可以通过视频快速上手以后,转而通过专业书学习。不过不管再怎么学,不动手做些东西是不行的,做个小项目或者DIY可以使你摆脱四脚书橱的命运。好了,不说废话了……

EP2C5T144的最小系统包括电源稳压、配置芯片、晶振、JTAG/ASP接口和I/O接口等。上原理图:EP2C5Core.pdf

运行Quartus II,通过New Project Wizard 建立工程,设置工程路径、名称以及顶层实例的名称。这里都是HelloFPGA。

之后添加文件,如果有已完成的文件,可以添加尽力啊,这里将在稍后新建文件,直接跳过。

选择芯片,这里是Cyclone II系列的EP2C5T144C8。Cyclone是Altera的低成本产品系列,更高性能的可以选择Stratix系列。

设置其他工具接口,根据已安装的第三方工具设置,如仿真工具中常用的ModelSim,此处不进行仿真,Next跳过,建立工程。

工程建好后,通过File -> New新建Verilog文件,保存为HelloFPGA.v

这里写一个按键控制小灯的程序,实现按下按键点亮板载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高电平点亮,因而对按键输入信号取反。然后按 进行分析、综合。完成后会提示错误和警告数。

再点击 分配引脚,FPGA可以灵活分配引脚,极大地方便了PCB布线和后续设计。这里根据原理图上LED的位置和按键插线位置设置引脚,以及电平标准。

完成配置后,点击 编译工程,这样就生成了可以下载到FPGA和配置芯片的文件。在编译之前,还需要进行一些设置,在Settings中选择Device,再选择Device and Pin Options。

在中将不用的管脚设置为三态输入:

在配置选项卡里选择配置芯片,超出配置芯片容量的代码会得到提示。

点击进行下载,请确保正确安装了下载线驱动。点击Hardware Setup配置下载线,选择识别到的USB-Blaster,如果没有识别,请检查硬件连接和驱动。

JTAG模式可下载到FPGA中,掉电后会丢失,AS方式可下载到EPCS4配置芯片里(非易失),再次上电时配置芯片会对FPGA进行配置。通过Add File打开HelloFPGA.sof文件,选择Program/Configure,按Start下载。

结果如下,未按按键时小灯熄灭。

点亮!

如果采用AS方式,载入HelloFPGA.pof文件,设置如下:

断电后拔掉下载线,重新上电,没有产生想要的效果,可以更改这里的设置,就是前面配置EPCS芯片的地方。貌似是个BUG呀 >_<。

版权声明:本文为elect-fans原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/elect-fans/archive/2012/11/28/2792135.html