原创 FPGA快速入门(转载)

2011-2-26 18:43 2865 10 10 分类: FPGA/CPLD
怎样实现单片机/FPGA的快速入门  

 
网络培训: “柏氏” 7步FPGA快速入门学习法

 

有很多年轻人,被割裂了历史,被荒废了未来

迷茫, 迷茫到几乎绝望

 

不过,他们还年轻,青春尚存,还有创造力,还有奋斗的资本

其中不乏不甘心被抛弃,被覆盖之人。

他们还在努力,希望把自己未来的主动权更多地掌握在自己手上

 

学习和创造是一条和平的成功之路

但是,学什么,怎么学,怎么用,何处用 ?

 

 

有一个领域,很多人,特别是曾学习过单片机的年轻人很感兴趣

这就是 FPGA芯片的开发应用

但面对FPGA技术所涉及的繁杂技术

大家普遍又感觉到学起来很难,无从下手,无从突破,前景不明,缺乏信心

 

本帖针对FPGA或单片机的快速入门学习,介绍了一种方法:

“柏氏”7步FPGA快速入门学习法

供大家参考。

 

“柏氏”学习法要达到两个主要目的:

1.    让初学者轻松、快速地入门

2.    与学习者探讨FPGA相关的应用和市场前景

 

为实现第一个目的,我们将采用“打穿插”的学习技巧

为实现第二个目的,我们与学习者漫谈又哪些可以抢先占领的行业“制高点”

 

“柏氏”7步FPGA快速入门学习法共分7部分

第一到第四部分为“穿插式”入门学习部分

是为了让初学者以最短的时间实现知识、概念和心理的快速入门。

这4个部分,对于FPGA和单片机的学习都适用。

 

第五部分至第七部分是“沙盘谈兵”式的介绍

告诉学员FPGA的特有技术优势、实现技巧和市场前景。

 

这七个部分分别是:

第一部分:了解下载线和JTAG

第二部分:制作最简易的开发板

第三部分:最偷懒的编程

第四部分:检验入门成果

第五部分:SOPC及实现技巧

第六部分:专业产品的开发

第七部分:个人奋斗 — 特定IP的开发

 

 

 (上部: 入门篇)

 

FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法

第一部分:了解下载线与JTAG

 

很多人觉着学习FPGA或单片机很困难,为什么?内容太多,头绪太乱!

我们第一步的任务就是:分解和简化问题。

 

无论是FPGA还是单片机的开发,都要涉及到三个部分组成

 

开发平台(计算机),下载线, 开发板(学习板)

 

 

其中

1.    开发平台在开发初期并不需要下载线和开发板的支持就能立运行。

2.    下载线只是在目标代码下载或运行调试时才用到

3.    开发板在下载完毕后自己能够独立运行

 

根据以上特点,我们采用各个击破的策略去学习和分析这几个部分。

 

首先是最简单的下载线部分。

 

每个厂家的开发模式都是类似的,都有一条下载线(有些还声称带调试功能)

在外观上,这些下载线很类似

事实上,它们采用的技术也确实是一样的,都是 JTAG接口。

 

各个厂家下载线之间的区别,主要是接线位置和顺序上有所不同。

 

JTAG(Joint Test Action Group)

 

从字面上就可以看出来,这个接口本来是为了方便电路板芯片之间的连接测试而搞的一套标准,现在却被广泛地用来做下载线接口。

当然,电子产品的自动自我检测设计也将会是一个非常巨大的市场,我们这里先不讨论。

 

下载线,一般都采用10芯或14芯电缆和相应的插头(也有5芯接头)

实际上,除了电源线和地线外,JTAG有四根有效信号线

 

这4个信号线是: TCK,TMS,TDI和TDO

 

其中

TCK是时钟线,为其它信号线提供操作节拍信号

TMS是状态控制线,通过这条线来控制芯片接收或读出数据的状态及状态转变

TDI,可以按照TCK的时钟节奏向芯片内输入数据

TDO,在需要时,按照TCK的时钟节奏从芯片内读出数据

 

JTAG接口标准中,TMS涉及到一个“状态机”的概念,有些学员可能理解起来一时有困难,不用强求,先跳过。

学员只要明白在下载或运行调试时,下载线是开发平台和开发板之间的数据通道,这个通道开发平台的控制下工作,就够了,至于如何传输数据和传输的具体内容,可先不去管它。

 

这就是所谓的“穿插式”学习的特点。

 

对于下载线,了解即可

了解了下载线,开发系统三部分之间的关系和相互作用也就清楚了。

 

不多罗嗦,进入下一步:开始动手制作开发板。

 

FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法

第二部分:制作最简易的开发板

 

自己开始就制作开发板,不是玩笑吧?

要让学员学会一种方法,抓新技术的“关键点”

 

FPGA芯片和单片机芯片,都是可编程的单芯片系统

这些芯片的运行或实现功能需要两个最基本的条件:

1. 电源

2. 已装载的代码

 

给芯片提供电源是每个电子产品共有的问题。

至于目标代码的下载和运行调试控制通道,FPGA和单片机芯片都采用的是JTAG接口

 

要制作开发板并让其工作,就要做两方面的工作,一方面,把芯片JTAG接口的各个信号线与下载线的相应信号线相连,建立代码下载通道;另一方面,给芯片的相应的电源管脚提供所需的电

源。

原则上,我们只去满足开发板的最基本要求。

 

实际要制作开发板,有三个主要环节

1.    PCB板,空电路板

现在的芯片一般都是贴片封装,需要一个相应的电路板来贴装芯片。

这个实验电路板可以采用市场上销售的通用实验板,也可以自己制作,或由培训单位提供。培训时,要给学员介绍PCB线路板设计制作的主要工具软件及加工流程。

 

2.    电源部分

有些单片机芯片的下载线可以给芯片供电。但为了学员学习,理解和掌握,我们选择在开发板上用三端稳压块为芯片供电。

关于电源的设计,模拟电源和数字电源的分离问题,接地问题,功耗等等问题。

是将来电子产品设计的基础,培训时一定要让学员掌握电源的设计原则和要领,因为他们可能很少有机会学习这方面的内容。限于篇幅,本帖不展开详细说明。

 

3.    下载和控制通道

设置一个与下载线配套的插座,把芯片JTAG接口的四个信号线TCK,TMS,TDI,TDO与下载线的相应信号线连接,同时,根据需要,把下载线与开发板的电源和地线的连接。

 

 

完成以上工作后,一个简单的开发板就制作完成了。

 

需要说明的是,对于FPGA来讲,其中的代码,是用RAM方式存储的,掉电后就会消失。所以,除了可以通过JTGA连线下载外,FPGA的目标代码,还可以在上电后从外部存储芯片上载到FPGA芯片

中。FPGA芯片设计有专门的上载电路。

 

为了简化设计,我们的开发板,采用的是CPLD芯片,CPLD芯片的开发方法和主要功能与FPGA相同,只是其功能简单一些(不能内嵌CPU等),但其目标代码可以存储在芯片内,方便直观。

 

虽然“山寨”风格的开发板很简单,但在学习的内容上,关于电源,PCB,FPGA/CPLD的异同和应用侧重等方面,教学不要漏项。

记住,我们提倡的打“穿插”,是不要纠缠非关键问题,但不是说完全不理睬这些问题。

所有的知识,都可以回头逐步补齐。

 

 

FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法

第三部分:最偷懒的编程

 

可编程芯片的开发,很重要的环节就是对芯片的编程。

 

编程,似乎是一个很复杂的问题,但我们打“穿插”时,只能找最偷懒的捷径

 

很多可编程芯片的厂家都提供的编程开发平台

对于FPGA/CPLD芯片

ALTERA有QuartusII 9.1平台,XILINX有ISE 11平台

单片机芯片,如MSP430和AVR等,用IAR平台的也不少

 

这些平台现在都已经很成熟,很完善,使用很方便。

 

它们操作的很多步骤是类似的:

 

1.       创建项目并选择芯片,平台会根据你选择的芯片设置相应的参数

2.       选择相应的开发语言,单片机可以选C语言,FPGA/CPLD可以选Verlog HDL语言。

3.       编程,编程的内容是越简单越好,没有编程基础的FPGA/CPLD学员可以先选用XILINX的ISE平台,这个平台会给编程人员创造最简单的环境,而且对于简化的程序系统会在后续的操作

中自动做一些内部调整。

当然,FPGA的开发平台用来输入设计内容的方法很多,语言编程只是方法之一。

编程的内容要简单

如果是FPGA/CPLD的编程,可以只做两个赋值语句,如C=A; D=B; 等等

如果是单片机的编程,直接用IN , OUT指令写两条输入输出语句就可以了

4.       编译,因为命令只有两行,编译一般很容易通过。

 

以上四个步骤对单片机和FPGA/CPLD都是类似的,以下5,6两步是FPGA/CPLD特有的

 

5.       指定管脚,设定编程时的变量A,B,C,D分别对应哪个管脚

6.       综合,把编译玩的代码在指定的管脚和特定的芯片形成最终目标代码

 

7.       下载,把最终代码通过下载线下载到芯片中

 

以上步骤中,编译和综合的操作,系统能够自动完成

 

 

能不能下载成功,主要看自制的开发板电源及JTAG的接线是否正确,也要看一看下载线在计算机一端的连接和设置。

 

这个学习环节似然叫编程,并不是单单是只学习编程,还涉及到其它要学习了解的内容,包括:开发平台的应用,开发环境的设计,设计手段的了解(编程只是其一),针对芯片的操作,编

译综合问题,下载和校验等等。

这诸多的环节,在入门阶段不一定展开讲述,但要潜移默化地把关键知识点告知学员。

 

编程的内容,越简单越好,更利于理解和验证。

 

另外要强调的一点是,要让学员对逻辑电路和时序电路的特点和区别有一个清楚的了解

这对以后的开发学习很重要。

 

 

 

FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法

第四部分:检验入门成果

 

下载完成后的,就可以检验“速成”的开发板是否按照设计正常工作了

 

检验很简单,只要把相应的输入端与电源或地相接,然后再查一下输出端的电位就可以了。

 

如果有人对直接把电源或地线连接到输入管脚有顾虑,可以串接一个1K左右的电阻,这样即使是学员把电源或地错接到其它管脚上,也不会造成芯片管脚的损坏。

 

因为编程的内容很简单,所以验证起来也会很容易

 

这个只有最简单功能的自制开发板,可以作为学员“穿插式”快速入门的“战利品”,也是最好的入门证书。

 

 

在入门学习阶段,学员可以得到两个方面的收获:

 

1.    明白流程,以后再深入学习各个环节会有所侧重

2.    建立自信,不会再存在担心学不会,也不再为学习安排的先后轻重问题担心

 

为了加强效果,学员可以多次地变化第三步的编程内容并通过第四步加以验证

 

学员还可以在这个开发板的基础上逐步增加各种外部信号或显示部件,如按键,发光二极管,液晶数码屏等等

 

当然,也可以对逻辑电路和时序电路的概念。展开循序渐进的学习。

 

以上四个步骤既适用于FPGA开发的学习,也适用于单片机的学习

能够为学员的下一步自学或培训学习打下基础。

包括知识上的基础和心理上的自信

 

 

下篇部分可以让学员们了解到,FPGA有哪些潜力和发展空间。

 
 

 
 
支持(0) 中立(0) 反对(0)  
digitv 小大  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC 

 

 

 加好友  发短信
 

 


等级:新手上路
 
帖子:5
 
积分:100
 
威望:0
 
精华:0
 
注册:2010-4-5 20:40:00
     Post By:2010-4-5 22:12:00

 
(下篇: 展望篇)

 

FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法

第五部分:SOPC及实现技巧

 

SOPC(可编程芯片上的系统)是ALTERA公司提供的一个开发工具,可以系统平台的。利用这个开发工具可以方便地在FPGA芯片上构建硬件系统平台和与应用软件的开发。

 

借助FPGA技术实现的片上系统有以下几个特点:

 

1.    结构更紧凑,一个FPGA芯片就可以实现一个台式机主板加CPU的所有功能。

2.    扩充更方便,FPGA有独特的接口性能优势和管脚数量优势,特别是在高速接口方面,远远领先,而无论是单片机还是台式机,在接口和实时信号处理方面都还远远不够。

3.    可以运行开放软件系统平台LINUX,免费的优势不需多说

 

SOPC构建的系统可以在移动终端,信息处理,通讯和智能控制等方面,有广阔的开拓空间。

 

学习或应用SOPC技术,对很多人是一个实实在在的挑战。跨专业,跨平台,如何有效学习如何快速实施,需要有个清晰的思路。

 

首先在系统架构上,要以存储部件为中心进行设计,而不是以CPU为中心。

 

在这点上,FPGA构成的系统与传统的台式机有所不同。

台式机的目标定位是运行程序,它自然选择了以CPU为核心

 

FPGA构成的系统是为了处理外来信息,CPU的作用是辅助性地管理或处理信息。

针对这些特点,可以以存储为中心来进行设计,多用BUFFER,FRAME的方式来组织和处理数据,这种思路对学习者以后的实际构建自己的系统会有帮助。

 

另外,要更充分地利用FPGA的很多特有优势。

如果你熟悉总线,就知道实际直连总线要比分时复用总线效率高,易管理。

FPGA丰富的布线资源,可以方便地建立多组专用总线

FPGA丰富的硬件资源(如数以万计的硬件乘法器等),可以为设计一些快速的硬件处理模块提供了有利的条件。这些硬件模块在设计上应该能有数据存储单元(Buffer或Frame)直接相连。

 

CPU是智能系统不可或缺的部件,与传统的计算机有所不同,在一个FPGA技术构成的系统中,CPU最大的优势是作为一个智能管理者的角色,在人机界面,处理策略,资源调配等方面,起重要

作用,而对信息的实际处理上,一些硬件或专用模块,可能会与依靠CPU的软件处理模块,并驾齐驱,甚至硬件模块更能出风头。

 

从一开始,就不要拘泥于传统的以CPU为中心的计算机架构里,这一点很重要。

 

还有一种信息,是大流量的实时数据流,传统计算机原来几乎完全来不及处理。

这种数据对象在FPGA系统中,被作为实时“流数据”(Stream)来对待,这些“流数据”往往包含着很多经过数字化的应用信息(如视频音频等),它们如同在生产线上正在被加工的产品,

在FPGA系统中被传输,控制,处理和存储。只有在被存储后,CPU和传统的软件模块才把它们作为数据进行处理,而这些传统的处理方式,效率往往并不是最高的。

 

有人知道互联网上很多内容也是以信息流的形式传输的,会占用大量的计算机处理能力。

 

举一个例子,在网络上传送视频,往往会被压缩,以减少数据传输量和处理量。

而很多以FPGA为核心实现的系统中,要求的不但是无压缩,而且要“过采样”

至于传输链路的带宽问题,利用FPGA技术来解决,更有优势。

现在的FPGA芯片,单个接口的速度就可以达到28Gbps,而FPGA本身就管脚多,通道多。

 

将来设计高带宽传输器件和系统,将成为FPGA行业的一大热门。

 

FPGA技术除了以上特定优势外,在传统的计算机能够实现的功能,也不逊色。

FPGA借助可以执行“缩减指令”的CPU,得以运行开放式平台LINUX系统。

本人认为,将来在LINUX平台上的软件,要比WINDOWS平台上更丰富。

 

WINDOWS就难以处理。

再举个例子:要设计一个可以处理10路实时信号输入,10路输出的交换矩阵

用传统的计算机来讲,它处理不了

而对于FPGA来讲,却是小菜一碟。

 

 

FPGA构成的系统,不但在应用覆盖范围上有优势,在整体系统成本上优势也很明显,本人接触过一个可以胜任WINDOW终端的FPGA产品,其硬件成本只有100元人民币左右。

 

功能的可扩充性,成本的优势,会让FPGA产品不断地蚕食,覆盖传统的计算机产品领域和信息产品领域,现在很多摄像机,数码相机的核心处理芯片都已经使用FPGA。

 

本节比较繁琐,重点是一个建议:要根据数据处理流程来构建FPGA系统!

 

 

 

FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法

第六部分:专业产品的开发

 

FPGA与专业的信号处理芯片结合,可以开发出很多专业产品,如广播电视,通讯,数据传输等很多领域,都是FPGA的用武之地。

 

用FPGA和专业芯片开发产品,关键是在接口环节,这包括几个方面:

1. 硬件信号接口

2. 数据接口

3. 信息数据格式接口

 

用FPGA开发专业产品,可以做三个层面的工作:

1.    利用专业接口芯片处理专业信号

2.    利用FPGA的处理能力替代专业芯片的功能

3.    设计专业接口IP

 

搞专业产品的开发,需要扎实的FPGA开发方面的基础,也还要有应用专业领域的相应知识,这虽然很难,但对那些原来就从事相关专业的人员,或者较早关注相关领域的FPGA开发人员,却是

一个难得的先机。

 

与民用消费品相比,专业产品的设计要求会高一些,不过竞争的人也可能会少一些。

 

专业产品开发,是一个巨大的,潜在的FPGA应用市场。

 

 

 

FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法

第七部分:个人奋斗 — 特定IP的开发

 

在FPGA的开发中,常用到一种称为IP 的模块,随着FPGA开发市场的逐步扩大,对各式各样的IP 的需求会越来越多,例如在视频压缩方面,MPEG II,H.264等IP就已经广泛应用。

一个优秀的开发工程师,可以根据自己的特长,开发一些有特色的IP。

 

开发IP 模块,不需要太苛刻的开发环境,不需要太多的市场资源,比较适合个人奋斗

特别是对于善于接受新事物的年轻人来讲,可以充分发挥敏锐度和爆发力方面的优势。

 

无论是个人奋斗,还是小型团体的合作,直至跨国公司的大师,大家的开发条件都是一样的,起点也是一样的,谁能胜出,只看创造力。

 

一个开发人员能有如此机会,当年的比尔盖茨和乔布斯也不过如此。

 

 

 

以上7部分,前四部分追求的是“跑得快,打得赢”,后三部分是“站得高,看得远”

这些学习方法与众不同,却是针对当代年轻人的性格特点量身定做。

 

同时也是为了悼念单片机领域门里门外众多的牺牲者和拯救那些茫然的挣扎者。

更给关注过这个帖子的年轻人留下点印象,也许几年后,你会想起:

 

曾经有个帖子,告诉你可以很快地学会FPGA的开发。

 

对于已能熟练开发单片机,但却时时为外围电路设计发愁的人来讲

需要两天时间,只需两天,就能让你的单片机如虎添翼(用CPLD)

而你,也将立即就对FPGA爱不释手。

 

 

资料来源:

http://bbs.zlgmcu.com/dispbbs.asp?boardid=40&id=13753


文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条