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

2011-7-27 18:28 5489 11 13 分类: FPGA/CPLD

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

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

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

作手记,已备重拾只用。

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

20110727181909001.jpg

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

20110727181910002.jpg

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

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

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

 

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

20110727181912004.jpg

 

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

20110727181913005.jpg

 

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

20110727181915006.jpg

 

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

20110727181916007.jpg

 

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

20110727181917008.jpg

这里写一个按键控制小灯的程序,实现按下按键点亮板载LED。用过MCU的童鞋都知道按键是需要消抖的,FPGA的按键消抖常采用边缘检测+延时的方法,这里只是演示……代码如下:

module HelloFPGA(Key, LED);

input Key;

output LED;

wire LED=~Key;

endmodule

其中module HelloFPGA(Key, LED); 声明了名为HelloFPGA的模块和端口(注意后面的分号),建议模块名称与文件名相同。KeyLED分别定义为输入和输出信号,在不声明的情况下,信号默认为wire型。

wire LED=~Key; 一句相当于:

   wire LED;

assign LED=~Key;

由于核心板上LED高电平点亮,因而对按键输入信号取反。然后按 20110727181918009.jpg 进行分析、综合。完成后会提示错误和警告数。

20110727181919010.jpg

 

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

20110727181921012.jpg

 

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

20110727181923014.jpg

 

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

20110727181924015.jpg

 

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

20110727181925016.jpg

 

 

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

20110727181926017.jpg

 

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

20110727181928018.jpg

 

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

20110727181929019.jpg

 

点亮!

20110727181930020.jpg

 

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

20110727181931021.jpg

 

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

20110727181932022.jpg

 

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

zhujun74_602010376 2015-9-17 12:51

烧个IP核试试看

用户1559442 2011-12-15 09:18

顶一下 很好的入门教程
相关推荐阅读
用户412852 2011-10-20 19:41
VGA输出接口电路设计
不知道是在学校学的东西多还是走出来了学的多,据说楷哥就是嫌工作阻碍了自己的进步才回去读研的,而大多数人还是参加了工作才发现自己以前什么都不会的吧。总之知识离了实践便百无一用,作为多数派中的一员,还...
用户412852 2011-10-19 23:21
MSP430户外运动环境监测仪(含完整原理图、PCB工程及测试软件)
消失了好长时间了,回来写点东西。虽然兔子很懒还有些散漫,不过这段时间的消失绝不是在家睡大觉或打游戏度过的。8月份入职的时候没想到竟然要参加军训,于是被拉到昌平的山脚下封闭训练了二十多天。那是一段教官就...
用户412852 2011-08-05 11:26
VB.NET开发全功能串口调试助手 (含完整工程)
小记:VB.NET的串口通信用了很长时间了,也只用Write和Read这样的方法,以前都是用这种方式做上位机软件,如此足矣。而前几天研究GSM模块时对串口返回的数据总是把握不好,参考开发板附送的例...
用户412852 2011-08-05 11:07
生活小记 2011-08-05 再谈理想
生活小记 2011-08-05 再谈理想   近日突发的奇想,让我不得不开始由衷地敬佩老美。记得自己还是大学生的时候,对水中探测器布设产生了想法,于是了解到了声纳监听网络;前日忽然想到如果能够在台湾...
用户412852 2011-07-30 10:51
FPGA学习手记(二) 简单功能仿真及Verilog基础电路设计
FPGA学习手记(二) 简单功能仿真及Verilog基础电路设计 看了某兄的一篇文章,讲到学FPGA切不可急功近利,大概是受到STM32的C语言库快速入门的影响,在学习FPGA时,给自己制定了学习方...
EE直播间
更多
我要评论
2
11
关闭 站长推荐上一条 /3 下一条