FPGA/ASIC技术
FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法
第三部分:最偷懒的编程
可编程芯片的开发,很重要的环节就是对芯片的编程。编程,似乎是一个很复杂的问题,但我们打“穿插”时,只能找最偷懒的捷径,很多可编程芯片的厂家都提供的编程开发平台。对于FPGA/CPLD芯片,XILINX有ISE 11平台,Altera也有类似的平台,单片机芯片,如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有哪些潜力和发展空间。
(下篇: 展望篇)
FPGA入门学习网络讲座: “柏氏”7步FPGA快速入门学习法--第五部分:FPGA及实现技巧
借助FPGA技术实现的片上系统有以下几个特点:
1. 结构更紧凑,一个FPGA芯片就可以实现一个台式机主板加CPU的所有功能。
2. 扩充更方便,FPGA有独特的接口性能优势和管脚数量优势,特别是在高速接口方面,远远领先,而无论是单片机还是台式机,在接口和实时信号处理方面都还远远不够。
3. 可以运行开放软件系统平台LINUX,免费的优势不需多说,FPGA构建的系统可以在移动终端,信息处理,通讯和智能控制等方面,有广阔的开拓空间。
学习或应用FPGA技术,对很多人是一个实实在在的挑战。跨专业,跨平台,如何有效学习如何快速实施,需要有个清晰的思路。首先在系统架构上,要以存储部件为中心进行设计,而不是以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爱不释手。
全部0条评论
快来发表一下你的评论吧 !