FPGA 的学习流程
FPGA 作为一个技术含量高的器件,让许多学单片机的人望而生畏,也有许多
的初学者很关心 FPGA 到底该怎样来学,下面发表一下本人的浅见,不对的地方还
请各位大侠指点指点.
我认为学习 FPGA 可分为以下三个步骤:
第一步:学好硬件描述语言。
以夏宇闻那本书为教材,一般都要 2 到 3 个星期,有 C 语言基础入门更快,
还要做一些练习,巩固语法。
第二步:针对一款硬件来学习,这一步非常重要,一般需要 1~3 个月,
这个过程遇到的问题往往是最多的,因此要有恒心与耐力,遇到问题可以找
老师或者上论坛求教.
第三步:融会贯通。
有了以上的基础,
这时候就要看一个人的知识背景了,
把你的专业与 FPGA 相结合,
如果你数学比较好,就可以去做算法
如果你通信方面比较好,就可以做通信方面的东西,
如果你高频比较好,就可以做射频方面的东西,等等。
FPGA 学习、发展方向
自从接触和认识 FPGA 以后,自由电子科技坚定的选择了 FPGA 器件作为
我们创新和实现自身价值的承载平台,对此,我想从以下几个方面介绍一下。
1. 对 FPGA 的认识,为什么要选择FPGA
现在的 FPGA 器件在电子行业中是一颗明星, 这是一种正在不断采用新的半导体
制造工艺,逻辑容量不断增加,应用领域不断拓展,器件成本不断下降的器件,
FPGA 厂商激烈的竞争使开发软件和方法不断的进步,是一个正在盘古开天时期
的事物。很多人对此的解释是 FPGA 拥有很大的灵活性,在半导体制造工艺的
NRE 不断增加、应用需求不断变更、品种要求多而数量要求少的现实情况下,
FPGA 是一个最佳选择,这正是现在 FPGA 厂商们宣传时耳目能详的陈词。我们
认为,FPGA 在电子产业和信息产业上的地位并不是这么简单。
实际上如果通过我们对计算机发展的历史、软件发展历史的认识,可以推断
FPGA 器件是一方向性的创新,几千年以前我国的祖先们感悟了蕴涵在简单的
阴、阳中的事理有了太极,阴阳可以生万物。一百多年前的布尔代数使我们从数
学上有了坚实的基础,从机械计算机到电子计算机的演变中,我们得到了冯.诺
依曼型的程序存储类的计算机体系,并在当代发展为及至,极大的推动了人类社
会的前进。冯.诺依曼计算机体系是在 CPU 硬件的基础上加上千变万化的软件,
软件的灵活性使计算机渗透到各行各业,在 20 世纪后半页演绎了气势恢弘的发
展过程,造就了象比尔.盖茨那样的天才和巨富。但我们要认识到在这个体系中,
由一部分人从事低层硬件,CPU 架构体系的设计,大部分应用工程师在相对固
定的硬件系统上从事开发,这种模式在现在依然拥有无与伦比的活力和现实作
用,在这里我提醒一点,在这个体系中,对大部分工程师来说,一半固定,硬件
CPU 是不可编程的,另一半灵活是可编程的(软件),很自然我们会想联想到
如果两个部分都是可编程的那会是怎么一种情况呢?很好,现在有一种器件来
了,这就是 FPGA,它代表的就是硬件的编程。这两部分都可编程的一个结合点
就是 FPGA 上的软核,在 Altera 提供的开发环境中提供的 SOPC 环境就是如此,
你可以象以往一样在生成硬件架构以后进行软件开发。 但令人瞩目的是它可以随
心所欲的定制外设,外设不再固定,更进一步它还支持增加自定义指令,从而改
变 CPU, 在软件上可以用 C2H 把原来属于软件运行的指令变换成 RTL 逻辑来完
成,极大的提高了效率,在这里要提醒的是,这样的事物才刚刚开始,是长江源
头佗佗河上那不起眼的涓涓溪流,它正在发展,正在完善,从历史的眼光看,我
们要有足够的耐心。
以上的文字就象是传教词一样令人心醉, 这些还是从比较现实角度看待 FPGA 这
个事物的, 在比较长时期的学习和思考过程中, 我还领悟到更深一个层次的含义,
在说这个之前,容我介绍一种类型的应用,我们知道 RAM 型 FPGA 在不上电的
时候,是一个半定制的 ASIC,拥有基础的逻辑,而不拥有功能性逻辑,所有功
能性逻辑是通过上电配置以后完成的, 已经有工程师在设计产品的时候使用了这
样的方案:把各种不同的电路功能编译成不同的配置文件,根据需要通过外部单
片机把合适的应用 bit 流写入到 FPGA 内,从而完成根据功能需要变更硬件,这
个需求很好理解吧。在软件领域可重构这个词出现的概率是非常多的,软件的发
展也是往这个方向前进,c++,java 支持下的接口、模板、对象重载等等,再到组
件、COM,无一不用可重构这个概念。在FPGA 领域,现在绝大部分器件只支
持整体配置,也就是整体重构,如果能支持局部电路重构,那么上面我们叙述的
应用就能够很自然的实现,而且切换速度会很快,实际上我们需要的是在接口不
变的情况下切换速度要非常快,快的让逻辑自身也不知道底层硬件已经重构,就
象没有变化一样。 为什么我们这么重视电路可重构呢?一个原因是我们在软件发
展的里程上看到的,我们可以在接口的支持下以相同的程序支持很大一类的应
用。另一个原因我认为:人类信息科技发展的一个必然趋势。为什么这么说呢?
需要从我们人本身身上认识开始,我们人类的大脑是亿万年来自然选择的结果,
是宇宙中最精致的事物之一,是物质运动的最高形式(这有些象哲学家的说辞
了),我们的大脑能形成条件反射,一个多次重复的思考过程,最后就形成的直
接的通路,这种变化能让我们以最快的速度去适应和处理信息,我们对计算机的
要求不也是这样嘛,可是,我们现在的计算机对多次重复的处理,能形成直接的
通路吗?不能,一个计算,再怎么重复和有规律,现在的计算机只要程序不变,
它永远重复,这就是人类能有直觉,而计算机不能的一个原因吧。说到这里,基
于 LUT 查找表的 FPGA 倒是有些这个思想的雏形,对于一些逻辑计算,我们通
过 EDA 软件的计算和优化,把输入和结果直接下载到 LUT 的 RAM 中,省略了
电路逻辑处理过程, 这也算是一个直接通路吧。 我们要使计算机的能力越来越强,
现在的一个方法是提高频率,这个方法很直接,可是现在材料和工艺在功率问题
上的制肘已经使这个方法走到尽头了(热衷于提高频率的 Intel 不是也放弃了这
个方法了嘛),于是新的方法是并行,用多核,Intel 和 Amd 现在都在这个阵地
上拼抢,说到并行,实际上 fpga 是一个很好并行处理平台,只要逻辑资源允许,
它内部也可以构建 n 处理模块,n 个软核 cpu。这些方法中前一个方法是靠工艺
取胜,后一个方法是靠体系取胜,体系取胜是最终的办法。人类大脑中的蛋白运
算并没有如此高的频率,神经传导速度也比不上电路和光纤,但它的处理能力、
容量和适应能力是惊人的。 选择 FPGA 的一个直接原因是它的并行和灵活, 但我
认为更重要的应该是它的可重构上, 特别是局部单元电路可重构的 FPGA 更能够
做到象人类大脑中信息处理机制一样, 也就是信息处理的过程中根据需要能够改
变物理联系通道(即底层硬件电路),局部单元可重构的 FPGA 能带来体系结构上
和实现算法上的革命性创新。这样的 FPGA 和相应的算**在体系结构上取胜,
能够在不远的将来构建软硬件更加协同的应用方案。这种类型的 FPGA 器件(或
以其他名字命名的器件)必然会出现。
数字信号处理应用是目前科技创新的一个前沿阵地, 现在 FPGA 以其并行性和高
DSP 处理性能进入到信号处理领域。 现代数字信号处理中, 以往很多时候我们选
择的都是带数字信号处理优化指令的 CPU,象 TI 和 ADI 公司就拥有很多 DSP
芯片, 在这些 DSP 芯片上实现算法处理, 一般用 C 描述算法 (关键处理用汇编) ,
编译以后以机器指令的方式在 DSP 芯片上运行,在一个芯片上这样 DSP 处理单
元是不多的, 需要软件做不断重复的叠代运算从而高效利用这些 DSP 指令单元,
重复的指令执行过程影响了 DSP 处理能力的提升,实际上一些 DSP 芯片集成了
ARM 处理器、 DSP 硬件运算加速器以后在性能上覆盖了大部分应用, 在高端 DSP
处理领域 FPGA 的并行优势得到很好的体现,特别是 FPGA 在逻辑、DSP 处理
块、片上 RAM 规模越来越大的情况下,这个优势会更多展现出来。我们知道不
管用什么途径实现, 在现代计算机中的任务或算法实现最终都要在严格的时序状
态机中完成,现代软件开发语言都是接近人类语言的方式描述处理过程,尽管有
一定的节拍和步骤, 但主要描述的是一个过程, 而非严格按时钟节拍的处理过程,
语言编译软件生成的指令和 CPU 硬件(或 DSP 处理器)已经为我们完成了这个
从语言算法描述空间到硬件状态机处理空间的转换。FPGA DSP 应用开发方面,
尽管拥有性能优势,但如果用 HDL 语言去开发 DSP 显的很局促,因为我们不能
同时考虑算法的实现,又同时满足严格的状态机时序,所以用 HDL 直接写 DSP
处理模块这种开发模式不容易被广大的工程师接受, 这就象 CPU 开发出来以后,
用机器码或汇编去开发应用一样,计算机和软件发展的历史使大家可以相信,这
个过程会很短暂,很快会有合适的开发工具来弥补这个空挡,目前 math works
公司的 MatLab 开发工具就是一个很好选择,拥有算法仿真到 RTL CORE
GENERATE,使得 FPGA 的 DSP 应用开发流程得以完整的实现, 各个 FPGA 厂商
也提供了各自的 MatLab simulink 下的工具套件, 比如 Altea 的 DSP Builder,xilinx
的 core generate 和 Xilinx AccelDSP, 这些软件完成了算法描述到硬件状态逻辑处
理机的转换。这种开发方式现在还处于初始阶段,软件工具、开发习惯等都需要
我们有一个学习积累过程。
现在越来越多的模块被集成到 FPGA 芯片上,微处理器、高速收发器、以太网控
制器、PCIE 端点控制器、DSP 处理单元、片内 RAM 等等,FPGA 不再是一个单
纯的编程逻辑器件,而是一个弹性很好的系统集成的平台,走出了 IC 原型验证
的范畴。是一个很现实并且有前途的选择。
2. 学习和进阶
FPGA 在电子开发工作中已经上升到数字系统核心处理器, 尽快掌握 FPGA 开发
技术显得非常迫切。我们来自五湖四海,为着一个共同的目标走到一起来了,我
们中间可能有学生,学好一门技术追求好的发展,也可能已经是工程师,要寻求
好的解决方案。
FPGA 开发对学习者的要求相对是比较高的,我们上一节所说的,FPGA 是一个
可以实现软硬件协同设计的平台,即需要硬件也需要软件,而且软件开发也比较
多,不同 FPGA 提供商提供各自的开发环境,还有第三方的软件工具。我们可以
按下面的几个方面开始
欢迎加入一四八一二四一二六本群,更多资源的分享每天会不定时更新》》》》》》》》》》》》》》》》》》》 |