fpga学习
fpga学习方法
篇一:
FPGA学习方法
1.基础问题
1.基础问题 FPGA 的基础就是数字电路和 HDL 语言,想学好 FPGA 的人,建议床头都有一 本数字电路的书,不管是那个版本的,这个是基础,多了解也有助于形成硬件设 计的思想。在语言方面,建议初学者学习 Verilog 语言,VHDL 语言语法规范严格,调 试起来很慢, Verilog 语言容易上手, 而且, 一般大型企业都是用 Verilog 语言。2.EDA 工具问题 熟悉几个常用的就可以的,开发环境 QuartusII ,或 ISE 就可以了,这两 个基本是相通的,会了哪一个,另外的那个也就很 Easy 了。功能仿真建议使用 Modelsim , 如果你是做芯片的, 就可以学学别的仿真工具, FPGA 的, 做 Modelsim 就足够了。综合工具一般用 Synplify,初学先不用太关心这个,用 Quartus 综 合就 OK 了 3.硬件
思想问题 3.硬件设计思想问题 对于初学者,特别是从软件转过来的,设计的程序既费资源又速度慢,而且 很有可能综合不了,这就要求我们熟悉一些固定模块的写法,可综合的模块很多 书上都有,语言介绍上都有,不要想当然的用软件的思想去写硬件。4.学习习惯问题 4.学习习惯问题 FPGA 学习要多练习,多仿真,signaltapII 是很好的工具,可以看到每个信 号的真实值,建议初学者一定要自己多动手,光看书是没用的。关于英文文档问
Quartus II 的所有功能,只要看它的 handbook 就可以了, 很详题,如果要学会
细, 对于 IT 行业的人, 大部分知识来源都是英文文档, 一定要耐心看,会从中收获很多的。5.算法问题 5.算法问题 做 FPGA 的工程师,最后一般都是专攻算法了,这些基础知识都是顺手捏来 的,如果你没有做好搞理论的准备,学 FPGA 始终只能停留在初级阶段上。对于初学者,数字信号处理是基础,应该好好理解,往更深的方向,不用什 么都学,根据你以后从事的方向,比如说通信、图像处理,雷达、声纳、导航定 位等。
篇二:
如何学习FPGA学无止境,厚积薄发学习 FPGA 注意事项作者:
陈斌,全国大学生电子竞赛 A 题国家级一等奖获得者,分工:FPGA 设计。
1.1 理解 FPGA 与硬件描述语言的关系FPGA 的简称现场可编程门阵列,门阵列是代表 FPGA 是一种数字器件,数字器件少 不了要跟与门、非门和寄存器打交道。由于现代数字电路的规模越来越大,单纯的用与 门、非门和寄存器去画图来搭建一个数字电路变得不可能。硬件描述语言的出现顺利的 解决了这个问题,硬件描述语言可以描述数字电路的构成,也就是硬件的构成。我们知 道,C 语言描述处理器的工作过程,然后经过编译器之后转换成机器代码,机器代码在 处理器中按 C 语言描述的工作过程工作,以此达到你的目的。而硬件描述语言是描述数 字电路,数字电路按照描述的工作方式工作。硬件描述语言理论上可以描述所有的 C 语 言的工作过程,因为你使用的处理器就可以用硬件描述语言描述。上面说到了 FPGA 和硬件描述语言,硬件描述语言是用来描述数字电路构成的,而 FPGA 是可编程逻辑器件(可以通过编程实现数字电路功能的器件) 。而开发工具把这两 者结合起来, 你用硬件描述语言描述数字电路经过开发工作的各步骤后变成了适应 FPGA 的编程文件。一块没有下载任何程序的 FPGA 相当于一张白纸,当你把编程文件下载下 去之后, FPGA 立即变成一个数字器件, 它包含整个你在硬件描述语言里面描述出来的数 字电路。总之,FPGA 是数字电路实现的一
两者没有必然的关系,你也可以通个载体,而硬件描述语言是描述数字电路的,
过画原理图的方式来生成可供 FPGA 编程的文件,但 是这样在大规模的数字电路设计中变得不可能。硬件描述语言可以用人们容易理解的方 式来描述数字电路,所以它在 FPGA 开发中硬件描述语言的地位举足轻重。
1.2 学习硬件描述语言的过程硬件描述语言是描述数字电路的,所以你首先应该对数字电路有一定的了解,至少 要知道寄存器、各逻辑门的概念和特性。如果你数字电路学的太差劲,建议你回去看看 书再学硬件描述语言,这样在以后的学习中可以达到较高的深度。个人认为第二个具备 的条件最好是有一定的数字电路的实践,比如单片机等,但是这个不是必要条件。学习 Verillog 硬件描述语言的基本过程如图 1 所示,开始应该要看书去学习硬件 描述语言,包括语法、表达方式等,花一段时间基本了解书上的语言之后就可以开始实~1~
学无止境,厚积薄发践了。实践可以从简单的逻辑电路开始吧,一个简单的与门都行,体念第一次实践的乐 趣,并要相信“今天描述一个与门,几年之后你就可以描述一个处理器了” 。不要以为 小的进步而不是进步,慢慢积累,多多思考,不要放弃,总会成功的。硬件描述语言学习 思考 对比 总结 硬件描述语言的实践进步图 1 学习硬件描述语言的过程实践一段时间之后你总要总结的,与硬件描述语言一起总结吧,多看看 RTL 级的电 路,与你的硬件描述语言作对照,这样你就会知道你描述的硬件电路究竟是怎么样的, 久而久之就知道了其中的猫腻。到后来学到一段时间时候,发现使用的模块越来越多,这就需要自己根据设计去划 分模块, 而且那时候硬件描述语言应该掌握的很熟悉了。程序编写变成了一种基本技能, 这时
候你就要去培养自己的总体把握能力,在较复杂的设计中,模块划分是否合适关系 到项目的成败。所以设计前期一定要把模块划分清楚,不要求做到各模块的接口明晰, 但是至少要做到知道每个模块要完成的功能。
1.3 关于调试程序编写完后难免会有这样那样的错误,就算程序综合通过,程序还是有可能存在 功能上的错误。代码的语法错误的排除需要经验,首先看英文提示,并双击发现出现错 误的行,一般错误都显示在下面一行,所以你得去看看上面的几行。功能调试就 Altera 的器件而言,提供在线的调试功能,但是这需要在设计中加入相关的测试值,然后与原 来的设计综合,下载然后在软件中可以看到相关信号的变化值,找到关键点排除错误。另外,仿真也是很重要的,仿真一般用到
真,前仿真就是功能仿 真它不包括延时信息,后仿真是布线布的有前仿真和后仿
局后的仿真,仿真基本上是硬件电路工作时的状 态,要是后仿真能够很全面的通过,那么一般情况下运行起来是没什么问题的了。仿真~2~
学无止境,厚积薄发在 Quartus II 里面有波形编辑器,只要把输入的信号编辑,然后仿真就可以看到对应 输入的输出。另外业界用的较多的是 Modelsim, 它仿真起来比较快, 而且仿真比较严格, Modelsim 仿真很重要的一个方面是测试文件的编写,测试文件编写夏雨闻的那本 Verilog 教程有相关的例程,可以去研究下。
1.4 组合逻辑和时序逻辑举例首先来看看二进制到格雷码的转换, 描述的电路如图所示, 可见它是一个组合逻辑。输入的信号在经过组合逻辑的延时后立即输
出,前仿真中这个逻辑延时被忽略,输出没 有延时的随桌输入改变而改变。程序清单 1 二进制到格雷码转换的组合逻辑描述module
GrayAndBin( bin_input, gray_output, bin_output );input [3:0]
bin_input;output [3:0] gray_output; output [3:0] bin_output;/*由二进制码到格雷码的转换*/ assign gray_output[2:0]=bin_input[3:1]^bin_input[2:0]; assign gray_output[3]=bin_input[3]; //Gray[i]=Bin[i+1]^Bin[i]endmodule~3~
学无止境,厚积薄发图 2 格雷码组合逻辑我们用时序的方式来描述二进制到格雷码的转换,时序逻辑是包括时钟 clk 的,时 序电路必须有一个初始值,初始值用复位信号set re 来实现。描述的程序如程序清单 2 所示,描述的电路如图 3 所示,对比图 图2 和 3 发现描述仅仅多了一级 D 触发器,这 就是组合逻辑和时序逻辑描述的不同。每次的输入要等待到下一个时钟沿才会输出。程序清单 2 二进制到格雷码转换的时序逻辑描述module GrayAndBin1( reset, clk, bin_input, gray_output ); input input reset; clk;input [3:0] bin_input; output
[3:0] gray_output;reg[3:0] gray_output;always @(posedge reset or posedge clk) begin
if(reset) gray_output = 4 ~4~
学无止境,厚积薄发else begin /*由二进制码到格雷码的转换*/
gray_output[2:0] //Gray[i]=Bin[i+1]^Bin[i] gray_output[3] end end = bin_input[3];
= bin_input[3:1]^bin_input[2:0];endmodule图 3 二进制到格雷码转换时序电路~5~
篇三:
FPGA应该学什么回答 :
甲:
怎么不学 Verilog 呢,要比 VHDL 好学多了.还要学 FPGA,CPLD 的软件开发环境, 搞一块简单的开发板是必需的.要想学游泳,要跳到水里去. 乙:
第一步:
学习语言,最好是 Verilog,国内基本上都是用 Verilog 的; 第二步:
弄个 FPGA 开发板,不管是 Altera 的还是 Xilinx 的; 第三步: 根据开发板,如果是 Altera 的就学习 QuartusII 软件,如果是 Xilinx 的就学习一下 ISE 了; 第四步:
学习仿真软件,ModelSim 比较方便一些,呵呵; 第五步:
根据开发板和上面的软件工具,就可以进行 FPGA 开发和学习了。丙:
看好 Actel 的 FPGA,CPLD,在性能价格上看上去有竞争力,我看楼上推荐得挺好,虽然我以前没用 过.初学宜用较简易的板子,再加一个下载线就够了.(有的板子将下载线做在一起). 丁:
FPGA 只是一个实现数字电路的方法,内容更为重要,同时也要打好基础。你是成电的学生,如果读研的主攻方向是信号处理等的话,应该花更多的精力在数字信号处理 适合用 FPGA 来实现的算法上。语言上,Verilog HDL 比 VHDL 更流行,
Verilog HDL。由于通信类信号处理的逻辑规 模相对较大,仿真工具建议建议学习
用 NC-Verilog(前身为 Verilog XL),比 ModelSim 虽然使用起来 要复杂些,但是当逻辑规模很大的情况下,仿真速度上很有优势。综合工具可以选用 synplify pro,至于 Quartus II 和 ISE,建议只用它们来做后端,你的核心 设计不应该严重依赖于是 Xilinx 的芯片还是 Altera 的芯片。另外,对于用 FPGA 来做通信系统的信号处理来说,你除了要会 Verilog HDL,会用 NC-Verilog 仿真外,还应该会用 Matlab 来进行算法模拟,Agilent 公司的 systemVUE 也是一个比较好的系 统模拟软件。
篇四:
FPGA学习、发展方向---本人整理的。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 的 gecorenerate 和 Xilinx AccelDSP, 这些软件完成了算法描述到硬件状态逻辑处 理机的转换。这种开发方式现在还处于初始阶段,软件工具、开发习惯等都需要 我们有一个学习积累过程。现在越来越多的模块被集成到 FPGA 芯片上,微处理器、高速收发器、以太网控 制器、PCIE 端点控制器、DSP 处理单元、片内 RAM 等等,FPGA 不再是一个单 纯的编程逻辑器件,而是一个弹性很好的系统集成的平台,走出了 IC 原型验证 的范畴。是一个很现实并且有前途的选择。2. 学习和进阶 FPGA 在电子开发工作中已经上升到数字系统核心处理器, 尽快掌握 FPGA 开发 技术显得非常迫切。我们来自五湖四海,为着一个共同的目标走到一起来了,我 们中间可能有学生,学好一门技术追求好的发展,也可能已经是工程师,要寻求 好的解决方案。FPGA 开发对学习者的要求相对是比较高的,我们上一节所说的,FPGA 是一个 可以实现软硬件协同设计的平台,即需要硬件也需要软件,而且软件开发也比较 多,不同 FPGA 提供商提供各自的开发环境,还有第三方的软件工具。我们可以 按下面的几个方面开始 HDL 语言的学习 VHDL 和 Verilog HDL
FPGA 开发的基础,先掌握一门, 以后根据需要去理解掌握都可以,HDL 语言是
另一门会比较方便,两门都会是最好的,因为提供有关 代码资源的可能是你不熟悉的 HDL,有时我们还需要把这个语言实现的翻译成 另一个语言, 以便在开发环境上统一实现。如果你有 C 语言基础, 推荐学 Verilog HDL,因为语法上类似,需要注意的点是
a、 Verilog 是描述,而不是运行代码。代码综合以后是逻辑网表,而不是指令, 所以需要注意我们写的代码是否正确描述了需要实现的逻辑电路。
b、 除了逻辑功能,还要把描述中的时序给看出来,一开始的时候,可以根据代 码尝试着把波形画出来,尽管仿真软件也能做到这个,还是建议自己画以加强对 语言的理解,可以用仿真软件来验证你画的波形
c、 注意区分哪些是可综合的,哪些是不可综合的代码,这个对出学 Verilog 的 人会比较困惑,因为 C 只要语法正确,可以编译就能运行,而 Verilog 一些代码 只能在仿真环境中用,不能综合成实际的电路
d、 要多关注描述代码综合后的电路,不能象 C 语言那样写好了就行,Verilog 写好代码只能算做了一半工作,还要做仿真,如果时序不满足还可能调整程序代 码。
e、 多写多试,这个方法对学习任何事物都一样,如果有环境,即使没有老师指 导照样可以试出来。f、 多看代码,特别是原厂提供的代码,这些代码应该代表了比较高的 FPGA 设 计水平,从中我们可以学习两个方面的知识:
一是相对比较大规模的逻辑设计如 何组织模块结构,
二是局部应用处理,可以照搬,作为我们开发时的模板。熟读 唐诗三百首,不会作诗也会吟,看多了,就会习惯的学会他们的开发模式,我有 这样的体会, 看多了, 很多东西思想上已经把它当作是自己的理所当然的东西了, 实际一做,手生的很,遇到很多问题,解决这些问题,这个过程就通过了,学习 就需要这么个过程 Modelsim 仿真环境的使用 学习 HDL 需要有一个编译、验证环境,首推的就是
Modelsim 在各 家 FPGA 厂商的开发工具中都提供内置或外挂,这种共Modelsim,
性的工具自然是越多越 好。有很多数据介绍 Modelsim 的使用,网上有很多介绍资料,在此不在赘述。选择合适的开发板,熟悉一种器件 一款合适的开发板是学习进步的捷径。现在原厂和国内很多公司都提供 FPGA 学 习开发板,可以根据需要选购。在使用开发板前可以先看安装使用说明,明确开 发选用的芯片型号,以及外围配置,然后根据芯片型号去相关厂商公司下载该芯 片的数据手册,详细阅读一遍很有好处,现在 FPGA 芯片更新换代比较快,一般 2~3 年就换一代,所以要适应英文资料的阅读,而且大量应用文档也是以英文形 式提供的。
FPGA 厂商主要开发软件工具的使用 目前主要的 FPGA 厂商有
Altera、xilinx、lattice 都提供的了各自的 FPGA 开发环 境,分别是:Altera 的 Quartus II,Xilinx 的 ISE,Lattice 的 ispLever。我们可以选择 先熟悉一家公司的环境(或者根据开发板的具体芯片选择厂商环境),以后根据器 件选择需要,再去熟悉其他的环境,学习周期就可以短了。通用的步骤是:
建立 项目,设计输入(代码或原理图),功能仿真,引脚锁定和相关时钟约束,综合, 功能仿真,影射、布局、布线,时序仿真等等。这个过程需要一段时间去熟悉。如果你是单片机系统转过来学习软核系统的开发,也需要掌握这些工具,同时掌 握厂商提供的系统集成工具和软件开发工具,Altera 提供的集成环境是 SOPC Builder,软件开发环境是 NIOS II IDE。Xilinx 提供的集成环境是 Xilinx Platform Studio,软件开发环境是:
Xilinx Platform Studio SDK。分析和实现参考设计 一般开发环境会自带 example 目录,这些都是典型的开发范例,强烈建议分析这 些范例,并在自己的开发板环境中实现,这个过程可能需要我们修改一些设置和 环境,比较硬件的不同,但这是一个很好的锻炼机会。另外开发板也会随板提供 开发范例,分析这些范例,并常试修改他们也是很好的机会。遇到问题是很正常 的,我们的进步就是建立在遇到问题并解决问题基础上的。设计实现自己的应用系统 要明白一点,设计开发一个环境比使用一个环境要求要高很多,就象会使用计算 机和会设计制造计算机一
议学 习者设计一个自己的系样的差别。特别是自己去设计一个系统的时候,建
统,不论系统的大小。这样会遇到方方面面的需要考虑的 问题,能够把上述学习的知识做一个考核,顺利通过后就会在知识和能力上得到 及大的提升,特别是在开发信心上得到强化。建议把遇到或想到的问题都罗列记 录在笔记本上,并尝试逐个排查解决,这个过程中我们可能需要阅读很多原厂提 供的文档,或者网上搜索到的资料,把每一个疑问逐一解决,做到没有疑问,这 样我们设计的系统就会顺利达到目标。前不久我就实际体会了这个过程, 我们以前都是使用 Altera 的 FPGA 器件, 熟悉 他们的工具也熟悉他们的器件,但客户需要我们开发 Virtext 5 PCIE 系统,我们 从 4 月份开始着手,到 8 月份完成样板,用了 4 个月,熟悉开发环境,并阅读了
所有 Virtex5 的文档,很多测试代码,实际上在设计过程中已经写了并在 ISE 环 境下编译, 因为 FPGA 设计很重要的一点是规划 pin 和逻辑功能块在 FPGA 内的 分配, 所以需要在原理图设计过程中就做 FPGA 项目并在 ISE 软件中编译检查和 验证,这样在 PCB 设计时原理图基本是可行的,同时在 PCB 设计中做好板级仿 真,这样能减少了样板的反复修改,我们这样努力的结果是:
一次投板成功。良 好的开始是成功的一半,特别要在第一块板的设计制作过程中用尽心计,保证成 功,确保我们开发工作的信心。开卷有益,勤于实践,持续提高设计能力 FPGA 芯片技术和开发技术发展很快,学习任务重,另外罗马不是一天建成的, 需要我们在工作中不断的积累。FPGA 设计有点象围棋:
易学难精。需要我们不 断拓宽知识面,不厌其繁的去尝试,仔细去看编译综合
,时序分析报告,并 去尝试提升性能,从底层更深入的去理解硬件电路的设计,改进、尝试性能的提 高。很多单位有非常好的高级 FPGA 培训,这是个很好机会,可以和高手切磋技艺, 咨询开发中遇到的问题和解决办法,这个很令人期待。但很多人可能象我所处的 环境一样没有提供这样机会,我建议是开卷有益,多看书,现在 FPGA 方面的新 书出来的比较多, 一些开发高手, 或多或少的在他们的介绍中提供了提高的途径, 我都会仔细的阅读。另外网上有很多各个专题的文档也是很好的阅读对象。带着问题学习是最有效率的,如果一些问题捆绕着我们,我们就会对这些问题的 解决很关注,很多时候,不经意之间,我们所需要的信息来了:
别人的一句话, 资料上的一句提示,或者其他人开发的代码中等等,都会是我们提高的途径。就象大型数据库性能调整一样,时序性能的调整提高是 FPGA 开发能力的标志, 各个 FPGA 厂商都会提供很多解决方法, 学习者要注意去逐步的学习使用这些方 法。只要不断的努力,一定可以持续提高我们的 FPGA 设计能力。3. 目前的开发方法应用介绍 目前,在 FPGA 上有三种类型开发方法和应用方向:
a、逻辑类应用
b、软核类 应用
c、DSP 类应用。逻辑类应用我们接触的最早,也是 FPGA 最初的应用领域,大的应用上,一些数
字 IC 设计可以在 FPGA 做前期的功能验证,在通信领域,FPGA 做信号的编解 码等等,小的应用上我们做的最多的实际是 CPLD,完成信号的变换控制等等。软核应用是前几年才兴起,现在热门的开发应用方法,在原本需要 FPGA 结合 CPU 的地方有成本和灵活性优势。FPGA 的 DSP 应用是非常有潜力的,性能优势非常明显。开发方法是用 Matlab 的 simulink 中嵌入厂商的开发工具包,算法验证在 Matlab simulink 工具下完成, 在开发工具包的支持下生成 HDL 模块或者直接生成 FPGA 下载配置文件,这个 方向是 FPGA 应用最有挑战能力领域。Mathworks 公司不久前也推出了独立于 FPGA 厂商的 Simulink HDL Coder 工具,使的 Matlab 在数字系统设计领域迈出 了坚实的一步,把 Simulink 模型和 Stateflow 框图生成位真(Bit-Ture)、周期 精确(Cycle-Accurate)、可综合的 Verilog 和 VHDL 代码,为 Matlab simulink 用户提供了通往 FPGA 设计实现的直接通道。未来 FPGA 技术的发展趋势 FPGA 技术正处于高速发展时期,新型芯片的规模越来越大,成本也
越来越 高端的 FPGA 不断在争夺 ASIC 低, 低端的 FPGA 已逐步取代了传统的数字元件, 的市场份额。本节从 FPGA 软、硬件来展望未来的 FPGA 设计技术,给读者留 一个 FPGA 技术的宏观轮廓。1 未来可编程器件的发展趋势 先进的 ASIC 生产工艺已经被用于 FPGA 的生产,越来越丰富的处理器内核 被嵌入到高端的 FPGA 芯片中,基于 FPGA 的开发成为一项系统级设计工程。随着半导体制造工艺的不同提高, FPGA 的集成度将不断提高, 制造成本将不断 降低,其作为替ASIC 来实现电子系统的前景将日趋光明。 代
(1) 大容量、低电压、低功耗 FPGA 大容量 FPGA 是市场发展的焦点。FPGA 产业中的两大霸主:
Altera 和 Xilinx 在超大容量 FPGA 上展开了激烈的竞争。2017 年 Altera 推出了 65nm 工艺的 StratixIII 系列芯片,其容量为 67200 个 L E (Logic Element,逻辑单元),Xilinx 推出的 65nm 工艺的 VitexVI 系列芯片,其容量为 33792 个 Slices (一个 Slices 约 等于 2 个 L E)。采用深亚微米(DSM)的半导体工艺后,器件在性能提高的同时, 价格也在逐步降低。由于便携式应用产品的发展,对 FPGA 的低电压、低功耗 的要日益迫切。因此,无论那个厂家、哪种类型的产品,都在瞄准这个方向而努 力。
(2) 系统级高密度 FPGA 随着生产规模的提高,产品应用成本的下降, FPGA 的应用已经不是过去的仅 仅适用于系统接口部件的现场集成,而是将它灵活地应用于系统级(包括其核心 功能芯片)设计之中。在这样的背景下,国际主要 FPGA 厂家在系统级高密度 FPGA 的技术发展上, 主要强调了两个方面:
FPGA 的 IP( Intellec2tual Property , 知识产权)硬核和 IP 软核。当前具有 IP 内核的系统级 FPGA 的开发主要体现在 两个方面:
一方面是 FPGA 厂商将 IP 硬核(指完成版图设计的功能单元模块)嵌 入到 FPGA 器件中,另一方面是大力扩充优化的 IP 软核(指利用 HDL 语言设计 并经过综合验证的功能单元模块),用户可以直接利用这些预定义的、经过测试 和验证的 IP 核资源,有效地完成复杂的片上系统设计。
(3) FPGA 和 ASIC 出现相互融合 虽然标准逻辑 ASIC 芯片尺寸小、功能强、功耗低,但其设计复杂,并且有 批量要求。FPGA 价格较低廉,能在现场进行编程,但它们体积大、能力有限, 而且功耗比 ASIC 大。正因如此,FPGA 和 ASIC 正在互相融合,取长补短。随 着一些 ASIC 制造商提供具有可编程逻辑的标准单元, FPGA 制造商重新对标准 逻辑单元发生兴趣。
(4) 动态可重构 FPGA 动态可重构 FPGA 是指在一定条件下芯片不仅具有在系统重新配置电路功 能的特性, 而且还具有在系统动态重构电路逻辑的能力。对于数字时序逻辑系统, 动态可重构 FPGA 的意义在于其时序逻辑的发生不是通过调用
区域、 不同逻辑资源来组合而成,而是通过对 FPGA 进行局部的或全芯片内不同
局的芯片逻辑的 其内 动态重构而实现的。动态可重构 FPGA 在器件编程结构上具有专门的特征, 部逻辑块和内部连线的改变,可以通过读取不同的 SRAM 中的数据来直接实现 这样的逻辑重构, 时间往往在纳秒级, 有助于实现 FPGA 系统逻辑功能的动态重 构。2设计方 未来法 的发EDA 展趋势 电子产业瞬息万变, 随着新一
代 FPGA 芯片工艺和设计方法的进步及新的应 用领域和市场需求的变化, EDA 技术也有突飞猛进的发展,总的趋势可以概括 为:
跨越器件组,甚至公司界限,越来越人性化的设计,越来越高的优化水平, 越来越快的仿真速度,越来越高的仿真精度以及完备的分析验证手段。
(1) 一体化工具和 IP 是发展方向 一体化的工具使用户受益于一个统一的用户界面, 避免了在不同的工具间进 行数据转换等繁琐的操作。目前,各大 EDA 工具供应商分别推出了集成众多工 具在内的一体化设计工具, 同时也在分别推出各自的标准数据库,以进一步简化 设计流程。未来先进的 IC 设计平台, 将整合各个公司的许多工具, 覆盖了从设计 编译、布局编译、物理编译、DFT 编译以及硅片制造的全部流程, 同时还在内 部集成了向第三方开放的数据库, 将不同设计阶段中的数据、时序、计算以及种 种约束条件协调起来, 将集成新的模拟和混合信号设计工具,加强利用 EDA 工 具进行模拟电路设计的能力。IP 的合理应用是加速产品设计流程的一个有效途径。按照美国 EDA 联盟 (The EDA Consortium)的统计数据表明, IP 产品的销售额是全球 EDA 工业中增 加最快的一个领域。IP 应用是 IC 设计业中绝对的发展趋势。
(2) System Verilog 将成为下一代的描述语言 描述语言一直是 EDA 业中重要的一环, VHDL 和 Verilog 目前是中国的主流 设计语言。然而, 随着 IC 复杂度的不断提高,高级语言将成为 FPGA 开发的 利器,从更高层次入手对系统进行描述是描述语言未来的发展方向。“System Verilog 将最终取代 VHDL。”这是 Synopsys 公司对描述语言发展方向上的预测, 在进一步解释这一预测时, 还指出多年来 FPGA 设计中更关注的是仿真, 而目前 验证整个设计周期中已经占据了 60%甚至更多的时间, System Verilog 可以有 而 效地支持上述两者的需求,同时 System Verilog 是与 Verilog 完全兼容的。系统 级设计方法除了需要使用高级 HDL 语言外,更重要的是要得到系统级仿真、综 合工具的强力支持。目前 Verilog HDL 语言发展迅猛,并逐步完善。
(3) EsL 将撑起 EDA 产业大旗 ESL 指的是电子级系统设计。软件挑战是 ESL 身后的关键推动力。多处理器 系统级芯片必须并行编程,EsL 的目标是单一高级别模型的协同软硬件设计。未 来几年全球 ESL 工具营收将显著增长, 将与 RTL 工具持平。三种主要的 EsL 方 法学分别围绕算法、处理器与存储器、控制逻辑。它们均包含行为级与架构级设 计,分别面向不同的工具及供应商。
(4) Linux 提速进入 EDA 领域 随着 EDA 技术在全球范围内的飞速发展,业界都在翘首以待基于 Linux 环 境的 EDA 技术成为电路设计领域的主流。首先,由于 Linux 费用很低,源代码 开放,这使得 EDA 软件的前期开发费用很低,而且运
时大大方便了工程师的设计工作。Linux 工作站的费用也行维护的成本也很低,同
要比 Unix 工作站便 而 宜很多。此外,Linux 的成本大约是 Unix 以及 Windows 的 1/15~1/10,但是效能 并不比后者差,甚至运行速度要更快一些。现在业界普遍的看法就是预计在未来 的 5 年内,Linux 将成为 EDA 的主角。可以预见,Linux 的普及只是时间问题。
(5) 模块化、增量式设计成为主流 模块化设计适用于团队开发设计内部关系易于划分、模块间连接较少的项 目。模块化设计先进行整体设计,各模块使用黑盒子代替,只指明模块间的连接 (使用“伪逻辑”(pseudo logic)连接)和整体设计的外部端口,并约束各模块在 FPGA 芯片内部的区域位置和时序、外部端口引脚。之后并行的依据约束完成各 自的模块设计,最后提交到一起进行整体的组合(assemble)。增量式设计是一种 能在小范围改动情况下节约综合、实现时间并集成以往设计成果的设计手段。包 括增量综合和增量实现两个层次的含义。目前,Xilinx 公司和 Altera 公司的模块化、增量式设计已经逐步成熟,在实际 中开始得到应用,可以通过相关集成开发环境的 Help 菜单得到更详细的说明。FPGA 就业培训班FPGA 就业培训 目前,许多企业都在高薪聘请大量的 FPGA 工程师,除了中兴、华为、诺 基亚、爱立信等通信企业外,炬力、士兰、中星微、威盛等这些微电子行业的巨 头企业,以及中电集团 54 所、14 所、29 所,航天航空等许多研究所也是大量需
求 FPGA 工程师。培养目标 0
1、 了解 FPGA 工艺结构,掌握 FPGA 芯片选型原则与策略; 0
2、 精通 FPGA 设计相关软件的使用方法及技巧; 0
3、 精通 Verilog HDL 设计与仿真、针对 FPGA 器件代码优化
,建立 RTL 设计与电路实体的对应概念; 0
4、 掌握 FPGA 设计原则及常用 IP 模块的使用; 0
5、 精通 FPGA 四种常用操作技巧、静态时序分析技巧; 0
6、 掌握 FPGA 基于 MATLAB/Simulink、DSP Builder 等新型设计、验证工具的 设计方法及技巧; 0
7、 精通 FPGA 资源优化设计及低功耗设计; 0
8、 掌握基于 FPGA 的接口互联系统设计; 0
9、 FPGA+DSP 架构;
10、 掌握基于 FPGA 的图像视频处理设计;
11、 精通基于 FPGA 的 SoPC 设计方法; 课程大纲 第 一 阶 段 第 一 部 分 FPGA 设计流程 课 本课程主要介绍 FPGA 工艺结构、特点及 FPGA 芯片选型策略、原则;掌握 程 FPGA 设计从 RTL 设计、功能仿真、综合等,直到在 FPGA 开发板上进行下 目 载验证的设计流程;使学员掌握 FPGA 设计流程,对 FPGA 设计有一个宏观 标 认识。第 二 部 分 Verilog HDL 基础知识 课 本课程主要让学员掌握 Verilog
能够进行较简单的 RTL 设 程 计,同时,建立 HDL 中逻辑运算HDL 的基本语法,
符及 RTL 设计与电路实体的对应关系,深 目 刻理解存储器工作原理及其设计方法,及三态端口控制、双向控制等,为后 标 面的高级编程打好基础。第 三 部 分 FPGA 开发环境 本章主要学习 FPGA 开发工具的使用:
Modelsim、Debussy 仿真调试工具、 课 Synplify pro 综合工具及 FPGA 开发系统 Quartus 的使用方法及技巧,且在 程 Quartus 中集成调用 Modelsim、 Synplify 等工具的方法; 在上一章节完成 RTL 目 设计的基础上,完整进行 FPGA 设计所有流程,掌握 FPGA 开发板下载、调 标 试的方法和技巧。
第 四 部 分 系统时序分析及处理 课 本课程旨在让学员充分理解时序分析理论,能够解决在项目开发中所遇到的 程 时序问题;且能够对跨时钟设计做出合理处理;能够精通时序分析工具的使 目 用,使其能够设计出满足时序要求的逻辑电路。标 第 二 阶 段 第 一 部 分 Verilog 高级编码 课 本课程主要讲授 Verilog HDL 流水线设计、同步状态机设计及系统函数、任 程 务调用等高级编码知识,通过序列检测器、EEPROM 读写器及 RISC CPU 等 目 由易至难的实验安排;同时,强化 RTL 设计与电路实体的对应关系,及针对 标 FPGA 器件的代码优化,使学员逐步掌握独立完成复杂逻辑设计的能力。第 二 部 分 FPGA 设计常用 IP 模块使用 课 本章课程主要内容为 FPGA 设计中常用 IP 模块的使用(单/双口 RAM、 程 DPRAM、FIFO、ROM 及串行收发器等)的讲授,使学员在充分理解其结构 目 及工作原理、时序的基础上,能够在实际工程开发中精通其使用。标 第 三 部 分 FPGA 设计原则与技巧 本课程主要讲授 FPGA 设计的一些原则(面积与速度平衡互换原则、 硬件可实 课 现原则及同步设计原则、低功耗设计原则等)及操作技巧(乒乓操作、串并转 程 换、流水线操作及数据同步等),使学员能够将这些原则及技巧应用到实际工 目 程开发中;同时,本章将讲述加法器、乘法器、乘累加器、减法器及除法器 标 在工程应用中的设计方法,在此基础上让学员完成常系数 FIR 滤波器设计; 还要求学员掌握使用基于 IP 核的设计方法和流程。第 四 部 分 新型 FPGA 设计工具使用 课 本章课程主要基于讲 授M FATPGA LAB、 Simulink、 DSP Builder 等新型设
程 验证工具的设计方法及技巧,使学员能够利用这些新型开发工具更好地完计、
成 目 FPGA 设计。标 第 三 阶 段 第 一 部 分 基于 FPGA 的通信接口设计及外围接口设计 课 FPGA 设计应用最为广泛的领域之一为接口互联,本章课程主要让学员掌握 程 外设通信接口的设计方法:
在教员演示下完成一种通信接口的设计;在教员 目 指导下,独立完成其它通信接口设计,包括协议分析、完成设计文档、RTL 标 设计、FPGA 芯片选型等流程。第 二 部 分 FPGA+DSP 课 DSP 应用是展示 FPGA 优势的最有效场合。通过本次课的学习,可以帮助学 程 员掌握使用 FPGA 实现 DSP 的基本理论和实现方法。掌握针对 DSP 的 Verilog 目 编程方法,实现如 Cordic 算法、FFT IP Core 使用等经典内容。标 第 三 部 分 基于 FPGA 的图像视频处理 课 FPGA 设计应用最为广泛的领域之一为图像与视频处理,本章内容有:
图像 使学员能够实现色彩空间变换、 VGA 控制器、 JPEG 编 程 和视频处理基础知识, 目 码基础、2D-DCT 变换、视频处理体系及图像 FIR 滤波器设计与实现;视频 标 降噪算法设计与实现,基于 FPGA 的常用视频处理算法体系结构、边缘检测
算法等。第 四 阶 段 第 一 部 分 SoPC 系统设计与应用 课 本章课程使学员熟练掌握参数化库 LPM 模块的使用;精通 FPGA 中锁相环 精通 SoPCBuilder 的使用, 能够用 NiosII 软件集成 程 模块及 SignalTap 的使用; 目 开发环境 IDE 建立用户程序;掌握在 NiosII 系统中融入自己所设计 IP 的技 标 术。毕 毕业设计将设计并实现一个真实和完整 FPGA 项目的开发流程,涉及方向为 业 通信、数据采集、软件无线电、图像与视频处理等方面。要求学员将前面所 答 学知识融入运用到实际项
目开发中,培养学员的团队开发和协同工作能力, 辩 强化学员完成标准设计文档能力,为以后的工作打下坚实基础。FPGA 工程师的要求
1.Verilog 语言及其于硬件电路之间的关系。2.器件结构(最好熟练掌握
Spartan3,Vertix4 系列的器件结构,及其资源于 Verilog 行为描述方法的关系。)。3.开发工具(熟练掌握 Synplify,Quartus,ISE,Modelsim)。4.数字电路(组合电路,触发器,特别是 D 触发器构成分频器,奇数倍分频占空 比为 50%,时序电路,并且能用 Verilog 语言描叙。)。5.熟悉 FPGA 设计流程(仿真,综合,布局布线,时序分析)。6.熟练掌握资源估算(特别是 slice,lut,ram 等资源的估算)。7.同步设计原理。8.熟练掌握基本概念(如建立时间,保持时间,流量(即所做 FPGA 设计的波特 率)计算,延迟时间计算(所做 FPGA 设计),竞争冒险,消除毛刺的方法等等)。9.具备具体设计经验(对应届生而言如毕业设计)。10.良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考
FPGA 高级工程师培训班虑)。浙大
课程说明:以 ALTERA 公司的产品及集成开发环境为主线, 讲授 CPLD/FPGA 的设计 方法,程序设计,硬件设计和逻辑设计. 时间 内 容 时间 内 容 第一天(含晚上)CPLD/FPGA 基础知识
(1) CPLD/FPGA 的发展现状和发展趋势,各大厂商的 CPLD/FPGA 的异同. (2)Altera CPLD/FPGA 集成开发工具及第三工具介绍. (3)Altera CPLD 的基本结构及演变。MAX 7000,MAX 3000A,MAX II 器件.
(4) Altera FPGA 的基本结构及演变。Cyclone, Stratix, Cyclone II, Stratix II 器件.
(5) CPLD/FPGA 的设计流程简介,及其各个步骤之间的关系..
(6)CPLD/FPGA 的加载电路.JTAG/PS/AS 及 CPU 加载电路与时序要求. (7) CPLD 与 FPGA 的异同. (8) PLD/FPGA IO 电平兼容原则. 第二天 硬件描述语言(Verilog)
(1) Verilog 基本结构.
( Ver2)ilog 基本元素和常用语法.
(3) 触发器,计数器,寄存器的设计方法
(4) Verilog 与 RTL 电路
(5) 双向数据总线,双时钟问题,高阻问题
(6) 指导学员编程. (7)答疑 第三天(含晚上) 仿真,综合与布局布线 (1)设计输入方法.(原理图,HDL 语言,网表输入,宏模块,IP Core). (2)逻辑综合的原则,速度优化与面积优化.
(3)逻辑综合与 RTL 电路.
(4)布局布线规则.
(5)Chip Editor 查看技巧.
(6)LogicLock(逻辑锁定)技术. (7)Signaltap 在线逻辑分析仪调试技术. (8)实验与答疑. 硬件设计与逻辑设计
(1) Pin To Pin 兼容设计.
(2) PCB 布线的注意事项.
(3) 系统调试步骤.
(4) 分析工程实例.
(5) 基于 CPLD/FPGA 开发板实验. 第四天 NIOS II 设计
(1) SOPC Builder 环境介绍.
( NIO2)S II 硬件设计.
(3) NIOS II 硬件调试方法.
(4) NIOS II 软件设计,NIOS II IDE 的使用.
(5) NIOS II 软件调试.
(6) 用户自定义外设.
(7) 编程 Flash. (8) 实验演示. 数字电路设计
(1) 数字电路设计规则.
(2) 数字电路的基本参数.
(3) 模块划分原则.
(4) 同步数字电路设计.
(5) 接口电路的处理原则.
(6) 避免使用 Latch 电路. 第五天 接口电路功能与处理原则
( 接口处1)理电路使用的基本元素
(2) 输入接口电路
(3) 输出接口电路
(4) 双向接口电路
(5) 加法器/减法器/比较器
(6) 移位器/移位寄存器 (7) 数据流处理 同步电路设计
( 设计1)可靠性
(2) 时序分析基础
(3) 同步电路设计
(4) 置位/复位信号处理
(5) 时延电路处理
(6) 全局信号处理 (7) 时序设计可靠性的保障措施 (8) 时钟设计策略.
篇五:
FPGA学习、发展方向(适合自己)FPGA 的学习流程 FPGA 作为一个技术含量高的器件,让许多学单片机的人望而生畏,也有许多的初学者很 关心 FPGA 到底该怎样来学,下面发表一下本人的浅见,不对的地方还请各位大侠指点指点.我认为学习 FPGA 可分为以下三个步骤:第一步:
学好硬件描述语言。以夏宇闻那本书为教材,一般都要 2 到 3 个星期,有 C 语言基础入门更快,还要做一些 练习,巩固语法。第二步:
针对一款硬件来学习,这一步非常重要,一般需要 1~3 个月, 这个过程遇到的问题往往是最多的,因此要有恒心与耐力,遇到问题可以找老师或者上 论坛求教.第三步:
融会贯通。有了以上的基础, 这时候就要看一个人的知识背景了, 把你的专业与 FPGA 相结合, 如果你通信方面比较好,就可以做通信方面的东西,FPGA 学习、发展方向FPGA 只要逻辑资源允许,它内部也可以构建 n 处理模块,n 个软核 cpu。数字信号处 理应用是目前科技创新的一个前沿阵地,现在 FPGA 以其并行性和高 DSP 处理性能进入到 信号处理领域。目前 math works 公司的 MatLab 开发工具就是一个很好选择,拥有算法仿真 到 RTL CORE GENERATE,使得 FPGA 的 DSP 应用开发流程得以完整的实现,各个 FPGA1
厂商也提供了各自的 MatLab simulink 下的工具套件,比如 Altea 的 DSP Builder,这些软件完 成了算法描述到硬件状态逻辑处理机的转换。这种开发方式现在还处于初始阶段, 软件工具、 开发习惯等都需要我们有一个学习积累过程。现在越来越多的模块被集成到 FPGA 芯片上,微处理器、高速收发器、以太网控制器、PCIE 端点控制器、DSP 处理单元、片内 RAM 等等,FPGA 不再是一个单纯的编程逻辑器件,而 是一个弹性很好的系统集成的平台,走出了 IC 原型验证的范畴。是一个很现实并且有前途 的选择。2. 学习和进阶 FPGA 在电子开发工作中已经上升到数字系统核心处理器, 尽快掌握 FPGA 开发技术显得非 常迫切。我们来自五湖四海,为着一个共同的目标走到一起来了,我们中间可能有学生,学 好一门技术追
求好的发展,也可能已经是工程师,要寻求好的解决方案。FPGA 开发对学习者的要求相对是比较高的,我们上一节所说的,FPGA 是一个可以实现软 硬件协同设计的平台,即需要硬件也需要软件,而且软件开发也比较多,不同 FPGA 提供 商提供各自的开发环境,还有第三方的软件工具。我们可以按下面的几个方面开始 HDL 语言的学习 VHDL 和 Verilog HDL 都可以,HDL 语言是 FPGA 开发的基础,先掌握一门,以后根据需 要去理解掌握另一门会比较方便, 两门都会是最好的, 因为提供有关代码资源的可能是你不 熟悉的 HDL,有时我们还需要把这个语言实现的翻译成另一个语言,以便在开发环境上统 一实现。如果你有 C 语言基础,推荐学 Verilog HDL,因为语法上类似,需要注意的点是
a、 Verilog 是描述,而不是运行代码。代码综合以后是逻辑网表,而不是指令,
所以需要注意我们写的代码是否正确描述了需要实现的逻辑电路。b、 除了逻辑功能,还要把描述中的时序给看出来,一开始的时候,可以根据代码尝试着把 波形画出来,尽管仿真软件也能做到这个,还是建议自己画以加强对语言的理解,可以用仿 真软件来验证你画的波形
c、 注意区分哪些是可综合的,哪些是不可综合的代码,这个对出学 Verilog 的人会比较困 惑,因为 C 只要语法正确,可以编译就能运行,而 Verilog 一些代码只能在仿真环境中用, 不能综合成实际的电路
d、 要多关注描述代码综合后的电路,不能象 C 语言那样写好了就行,Verilog 写好代码只 能算做了一半工作,还要做仿真,如果时序不满足还可能调整程序代码。
e、 多写多试,这个方法对学习任何事物都一样,如果有环境,即使没有老师指导照样可以2
试出来。f、 多看代码,特别是原厂提供的代码,这些代码应该代表了比较高的 FPGA 设计水平,从 中我们可以学习两个方面的知识:
一是相对比较大规模的逻辑设计如何组织模块结构,
二是 局部应用处理,可以照搬,作为我们开发时的模板。熟读唐诗三百首,不会作诗也会吟,看 多了,就会习惯的学会他们的开发模式,我有这样的体会,看多了,很多东西思想上已经把 它当作是自己的理所当然的东西了,实际一做,手生的很,遇到很多问题,解决这些问题, 这个过程就通过了,学习就需要这么个过程 Modelsim 仿真环境的使用 学习 HDL 需要有一个编译、验证环境,首推的就是 Modelsim,Modelsim 在各家 FPGA 厂 商的开发工具中都提供内置或外挂,这种共性的工具自然是越多越好。有很多数据介绍 Modelsim 的使用,网上有很多介绍资料,在此不在赘述。选择合适的开发板,熟悉一种器件 一款合适的开发板是学习进步的捷径。现在原厂和国内很多公司都提供 FPGA 学习开发板, 可以根据需要选购。在使用开发板前可以先看安装使用说明,明确开发选用的芯片型号,以 及外围配置, 然后根据芯片型号去相关厂商公司下载该芯片的数据手册, 详细阅读一遍很有 好处,现在 FPGA 芯片更新换代比较快,一般 2~3 年就换一代,所以要适应英文资料的阅 读,而且大量应用文档也是以英文形式提供的。FPGA 厂商主要开发软件工具的使用 目前主要的 FPGA 厂商有 Altera、xilinx、lattice 都提供的了各自的 FPGA 开发环境,分别 是:Altera 的 Quartus II,Xilinx 的 ISE,Lattice 的
er。我们可以选择先熟悉一家公司的环 境(或者根据开发板的具体芯片选择ispLev
厂商环境),以后根据器件选择需要,再去熟悉其他的环 境,学习周期就可以短了。通用的步骤是:
建立项目,设计输入(代码或原理图),功能仿 真,引脚锁定和相关时钟约束,综合,功能仿真,影射、布局、布线,时序仿真等等。这个 过程需要一段时间去熟悉。如果你是单片机系统转过来学习软核系统的开发, 也需要掌握这些工具, 同时掌握厂商提供 的系统集成工具和软件开发工具,Altera 提供的集成环境是 SOPC Builder,软件开发环境是 NIOS II IDE。Xilinx 提供的集成环境是 Xilinx Platform Studio,软件开发环境是:
Xilinx Platform Studio SDK。分析和实现参考设计 一般开发环境会自带 example 目录,这些都是典型的开发范例,强烈建议分析这些范例,并3
在自己的开发板环境中实现, 这个过程可能需要我们修改一些设置和环境, 比较硬件的不同, 但这是一个很好的锻炼机会。另外开发板也会随板提供开发范例,分析这些范例,并常试修 改他们也是很好的机会。遇到问题是很正常的, 我们的进步就是建立在遇到问题并解决问题 基础上的。设计实现自己的应用系统 要明白一点, 设计开发一个环境比使用一个环境要求要高很多, 就象会使用计算机和会设计 制造计算机一样的差别。特别是自己去设计一个系统的时候, 建议学习者设计一个自己的系 统,不论系统的大小。这样会遇到方方面面的需要考虑的问题,能够把上述学习的知识做一 个考核,顺利通过后就会在知识和能力上得到及大的提升,特别是在开发信心上得到强化。建议把遇到或想到的问题都罗列记录在笔记本上, 并尝试逐个排查解决, 这个过程中我们可 能需要阅读很多原厂提供的文档,或者网上搜索到的资料,把每一个疑问逐一解决,做到没 有疑问,这样我们设计的系统就会顺利达到目标。前不久我就实际体会了这个过程,我们以前都是使用
Altera 的 FPGA 器件,熟悉他们的工 具也熟悉他们的器件,但客户需要我们开发 Virtext 5 PCIE 系统,我们从 4 月份开始着手, 到 8 月份完成样板,用了 4 个月,熟悉开发环境,并阅读了所有 Virtex5 的文档,很多测试 代码,实际上在设计过程中已经写了并在 ISE 环境下编译,因为 FPGA 设计很重要的一点 是规划 pin 和逻辑功能块在 FPGA 内的分配, 所以需要在原理图设计过程中就做 FPGA 项目 并在 ISE 软件中编译检查和验证,这样在 PCB 设计时原理图基本是可行的,同时PCB 设 计中做好板级仿真, 这样能减少了样板的反复修改, 我们这样努力的在
结果是:
一次投板成功。良好的开始是成功的一半,特别要在第一块板的设计制作过程中用尽心计,保证成功,确保 我们开发工作的信心。开卷有益,勤于实践,持续提高设计能力 FPGA 芯片技术和开发技术发展很快,学习任务重,另外罗马不是一天建成的,需要我们在 工作中不断的积累。FPGA 设计有点象围棋: 易学难精。需要我们不断拓宽知识面,不厌其 繁的去尝试,仔细去看编译综合报告,时序分析报告,并去尝试提升性能,从底层更深入的 去理解硬件电路的设计,改进、尝试性能的提高。很多单位有非常好的高级 FPGA 培训,这是个很好机会,可以和高手切磋技艺,咨询开发 中遇到的问题和解决办法, 这个很令人期待。但很多人可能象我所处的环境一样没有提供这 样机会,我建议是开卷有益,多看书,现在 FPGA 方面的新书出来的比较多,一些开发高 手,或多或少的在他们的介绍中提供了提高的途径,我都会仔细的阅读。另外网上有很多各4
个专题的文档也是很好的阅读对象。带着问题学习是最有效率的, 如果一些问题捆绕着我们, 我们就会对这些问题的解决很关注, 很多时候,不经意之间,我们所需要的信息来了:
别人的一句话,资料上的一句提示,或者 其他人开发的代码中等等,都会是我们提高的途径。就象大型数据库性能调整一样,时序性能的调整提高是 FPGA 开发能力的标志,各个 FPGA 厂商都会提供很多解决方法,学习者要注意去逐步的学习使用这些方法。只要不断的努力,一定可以持续提高我们的 FPGA 设计能力。3. 目前的开发方法应用介绍 目前,在 FPGA 上有三种类型开发方法和应用方向:
a、逻辑类应用
b、软核类应用
c、DSP 类应用。逻辑类应用我们接触的最早,也是 FPGA 最初的应用领域,大的应用上,一些数字 IC 设计 可以在 FPGA 做前期的功能验证,在通信领域,FPGA 做信号的编解码等等,小的应用上我 们做的最多的实际是 CPLD,完成信号的变换控制等等。软核应用是前几年才兴起,现在热门的开发应用方法,在原本需要 FPGA 结合 CPU 的地方 有成本和灵活性优势。FPGA 的 DSP 应用是非常有潜力的,性能优势非常明显。开发方法是用 Matlab 的 simulink 中嵌入厂商的开发工具包,算法验证在 Matlab simulink 工具下完成,在开发工具包的支持 下生成 HDL 模块或者直接生成 FPGA 下载配置文件,这个方向是 FPGA 应用最有挑战能领域。Mathworks 公司不久前也推出了独立于 FPGA 厂商的 Simulink HDL 力
Coder 工具, 使的 Matlab 在数字系统设计领域迈出了坚实的一步, Simulink 模型和 Stateflow 框图生成位真 把 (Bit-Ture) 周期精确 、 (Cycle-Accurate) 可综合的 Verilog 和 VHDL 代码, Matlab simulink 、 为 用户提供了通往 FPGA 设计实现的直接通道。未来 FPGA 技术的发展趋势FPGA 技术正处于高速发展时期,新型芯片的规模越来越大,成本也越来越低,低端的 FPGA 已逐步取代了传统的数字元件,高端的 FPGA 不断在争夺 ASIC 的市场份额。本节从 FPGA 软、硬件来展望未来的 FPGA 设计技术,给读者留一个 FPGA 技术的宏观轮廓。5
1 未来可编程器件的发展趋势 先进的 ASIC 生产工艺已经被用于 FPGA 的生产, 越来越丰富的处理器内核被嵌入到高 端的 FPGA 芯片中,基于 FPGA 的开发成为一项系统级设计工程。随着半导体制造工艺的 不同提高,FPGA 的集成度将不断提高,制造成本将不断降低,其作为替代 ASIC 来实现 电子系统的前景将日趋光明。
(1) 大容量、低电压、低功耗 FPGA 大容量 FPGA 是市场发展的焦点。FPGA 产业中的两大霸主:
Altera 和 Xilinx 在超大 容量 FPGA 上展开了激烈的竞争。2017 年 Altera 推出了 65nm 工艺的 StratixIII 系列芯片, 其容量为 67200 个 L E (Logic Element,逻辑单元),Xilinx 推出的 65nm 工艺的 VitexVI 系列 芯片, 其容量为 33792 个 Slices (一个 Slices 约等于 2 个 L E)。采用深亚微米(DSM)的半导体 工艺后,器件在性能提高的同时,价格也在逐步降低。由于便携式应用产品的发展,对 FPGA 的低电压、低功耗的要日益迫切。因此,无论那个厂家、哪种类型的产品,都在瞄准这个方 向而努力。
(2) 系统级高密度 FPGA 随着生产规模的提高,产品应用成本的下降,FPGA 的应用已经不是过去的仅仅适用于 系统接口部件的现场集成,而是将它灵活地应用于系统级(包括其核心功能芯片)设计之中。在这样的背景下,国际主要 FPGA 厂家在系统级高密度 FPGA 的技术发展上,主要强调了 两个方面:
IP( Intellec2tual Property ,知识产权)硬核和 IP 软核。当前具有 IP 内 核 FPGA 的
的系统级 FPGA 的开发主要体现在两个方面:
一方面是 FPGA 厂商将 IP 硬核(指完成版 图设计的功能单元模块)嵌入到 FPGA 器件中,另一方面是大力扩充优化的 IP 软核(指利用 HDL 语言设计并经过综合验证的功能单元模块),用户可以直接利用这些预定义的、经过测 试和验证的 IP 核资源,有效地完成复杂的片上系统设计。
(3) FPGA 和 ASIC 出现相互融合 虽然标准逻辑 ASIC 芯片尺寸小、功能强、功耗低,但其设计复杂,并且有批量要求。FPGA 价格较低廉,能在现场进行编程,但它们体积大、能力有限,而且功耗比 ASIC 大。正因如此,FPGA 和 ASIC 正在互相融合,取长补短。随着一些 ASIC 制造商提供具有可编 程逻辑的标准单元,FPGA 制造商重新对标准逻辑单元发生兴趣。
(4) 动态可重构 FPGA 动态可重构 FPGA 是指在一定条件下芯片不仅具有在系统重新配置电路功能的特性, 而且还具有在系统动态重构电路逻辑的能力。对于数字时序逻辑系统,动态可重构 FPGA 的意义在于其时序逻辑的发生不是通过调用芯片内不同区域、 不同逻辑资源来组合而成, 而 是通过对 FPGA 进行局部的或全局的芯片逻辑的动态重构而实现的。动态可重构 FPGA 在 器件编程结构上具有专门的特征,其内部逻辑块和内部连线的改变,可以通过读取不同的 SRAM 中的数据来直接实现这样的逻辑重构,时间往往在纳秒级,有助于实现 FPGA 系统 逻辑功能的动态重构。2 未来 EDA 设计方法的发展趋势 电子产业瞬息万变, 随着新一代 FPGA 芯片工艺和设计方法的进步及新的应用领域和 市场需求的变化, EDA 技术也有突飞猛进的发展,总的趋势可以概括为:
跨越器件组,甚至 公司界限,越来越人性化的设计,越来越高的优化水平,越来越快的仿真速度,越来越高的 仿真精度以及完备的分析验证手段。6
(1) 一体化工具和 IP 是发展方向 一体化的工具使用户受益于一个统一的用户界面, 避免了在不同的工具间进行数据转 换等繁琐的操作。目前,各大 EDA 工具供应商分别推出了集成众多工具在内的一体化设计 工具, 同时也在分别推出各自的标准数据库,以进一步简化设计流程。未来先进的 IC 设计平 台, 将整合各个公司的许多工具, 覆盖了从设计编译、布局编译、物理编译、DFT 编译以及 硅片制造的全部流程, 同时还在内部集成了向第三方开放的数据库, 将不同设计阶段中的数 据、时序、计算以及种种约束条件协调起来, 将集成新的模拟和混合信号设计工具,加强利 用 EDA 工具进行模拟电路设计的能力。IP 的合理应用是加速产品设计流程的一个有效途径。按照美国 EDA 联盟(The EDA Consortium)的统计数据表明, IP 产品的销售额是全球 EDA 工业中增加最快的一个领域。IP 应用是 IC 设计业中绝对的发展趋势。
(2) System Verilog 将成为下一代的描述语言 描述语言一直是 EDA 业中重要的一环,VHDL 和 Verilog 目前是中国的主流设计语言。然而, 随着 IC 复杂度的不断提高,高级语言将成为 FPGA 开发的利器,从更高层次入手 对系统进行描述是描述语言未来的发展方向。“System Verilog 将最终取代 VHDL。”这是 Synopsys 公司对描述语言发展方向上的预测, 在进一步解释这一预测时,还指出多年来 FPGA 设计中更关注的是仿真,而目前验证整个设计周期中已经占据了 60%甚至更多的时 间,而 System Verilog 可以有效地支持上述两者的需求,同时 System Verilog 是Verilog 完全兼容的。系统级设计方法除了需要使用高级 HDL 语言外,更重要与
的是要得到系统级仿 真、综合工具的强力支持。目前 Verilog HDL 语言发展迅猛,并逐步完善。
(3) EsL 将撑起 EDA 产业大旗 ESL 指的是电子级系统设计。软件挑战是 ESL 身后的关键推动力。多处理器系统级芯 片必须并行编程,EsL 的目标是单一高级别模型的协同软硬件设计。未来几年全球 ESL 工 具营收将显著增长,将与 RTL 工具持平。三种主要的 EsL 方法学分别围绕算法、处理器与 存储器、控制逻辑。它们均包含行为级与架构级设计,分别面向不同的工具及供应商。
(4) Linux 提速进入 EDA 领域 随着 EDA 技术在全球范围内的飞速发展,业界都在翘首以待基于 Linux 环境的 EDA 技术成为电路设计领域的主流。首先,由于 Linux 费用很低,源代(转载自:
.CDFDS.Com 池 锝范文 网:fpga学习方法)码开放,这使得 EDA 软 件的前期开发费用很低,而且运行维护的成本也很低,同时大大方便了工程师的设计工作。而 Linux 工作站的费用也要比 Unix 工作站便宜很多。此外, Linux 的成本大约是 Unix 以及 Windows 的 1/15~1/10,但是效能并不比后者差, 甚至运行速度要更快一些。现在业界普遍的 看法就是预计在未来的 5 年内,Linux 将成为 EDA 的主角。可以预见,Linux 的普及只是 时间问题。
(5) 模块化、增量式设计成为主流 模块化设计适用于团队开发设计内部关系易于划分、 模块间连接较少的项目。模块化设 计先进行整体设计,各模块使用黑盒子代替,只指明模块间的连接(使用“伪逻辑”(pseudo logic)连接)和整体设计的外部端口,并约束各模块在 FPGA 芯片内部的区域位置和时序、 外部端口引脚。之后并行的依据约束完成各自的模块设计, 最后提交到一起进行整体的组
合 (assemble)。增量式设计是一种能在小范围改动情况下节约综合、实现时间并集成以往设计 成果的设计手段。包括增量综合和增量实现两个层次的含义。目前,Xilinx 公司和 Altera 公司的模块化、增量式设计已经逐步成熟,在实际中开始得到 应用,可以通过相关集成开发环境的 Help 菜单得到更详细的说明。7
FPGA 就业培训班FPGA 就业培训 目前,许多企业都在高薪聘请大量的 FPGA 工程师,除了中兴、华为、诺基亚、爱立 信等通信企业外,炬力、士兰、中星微、威盛等这些微电子行业的巨头企业,以及中电集团 54 所、14 所、29 所,航天航空等许多研究所也是大量需求 FPGA 工程师。培养目标0
1、 了解 FPGA 工艺结构,掌握 FPGA 芯片选型原则与策略; 0
2、 精通 FPGA 设计相关软件的使用方法及技巧; 0
3、 精通 Verilog HDL 设计与仿真、针对 FPGA 器件代码优化规则,建立 RTL 设计与电路实体的对应概念; 0
4、 掌握 FPGA 设计原则及常用 IP 模块的使用; 0
5、 精通 FPGA 四种常用操作技巧、静态时序分析技巧; 0
6、 掌握 FPGA 基于 MATLAB/Simulink、DSP Builder 等新型设计、验证工具的 设计方法及技巧; 0
7、 精通 FPGA 资源优化设计及低功耗设计; 0
8、 掌握基于 FPGA 的接口互联系统设计; 0
9、G A+DFPSP 架构;
10、 掌握基于 FPGA 的图像视频处理设计;
11、 精通基于 FPGA 的 SoPC 设计方法;课程大纲 第 一 阶 段 第 一 部 分 FPGA 设计流程 课 本课程主要介绍 FPGA 工艺结构、特点及 FPGA 芯片选型策略、原
FPGA 设计 程 从 RTL 设计、功能仿真、综合等,直到在 FPGA 开发板则;掌握
上进行下载验证的设计流程; 目 使学员掌握 FPGA 设计流程,对 FPGA 设计有一个宏观认识。标 第 二 部 分 Verilog HDL 基础知识 课 本课程主要让学员掌握 Verilog HDL 的基本语法,能够进行较简单的 RTL 设计,同时, 程 建立 HDL 中逻辑运算符及 RTL 设计与电路实体的对应关系,深刻理解存储器工作原理8
目 及其设计方法,及三态端口控制、双向控制等,为后面的高级编程打好基础。标 第 三 部 分 FPGA 开发环境 课 本章主要学习 FPGA 开发工具的使用:
Modelsim、Debussy 仿真调试工具、Synplify pro 程 综合工具及 FPGA 开发系统 Quartus 的使用方法及技巧,且在 Quartus 中集成调用 目 Modelsim、 Synplify 等工具的方法; 在上一章节完成 RTL 设计的基础上, 完整进行 FPGA 标 设计所有流程,掌握 FPGA 开发板下载、调试的方法和技巧。第 四 部 分 系统时序分析及处理 课 本课程旨在让学员充分理解时序分析理论,能够解决在项目开发中所遇到的时序问题; 程 且能够对跨时钟设计做出合理处理;能够精通时序分析工具的使用,使其能够设计出满 目 足时序要求的逻辑电路。标 第 二 阶 段 第 一 部
分 Verilog 高级编码 课 本课程主要讲授 Verilog HDL 流水线设计、同步状态机设计及系统函数、任务调用等高 程 级编码知识,通过序列检测器、EEPROM 读写器及 RISC CPU 等由易至难的实验安排; 目 同时,强化 RTL 设计与电路实体的对应关
系,及针对 FPGA 器件的代码优化,使学员 标 逐步掌握独立完成复杂逻辑设计的能力。第 二 部 分 FPGA 设计常用 IP 模块使用 课 本章课程主要内容为 FPGA 设计中常用 IP 模块的使用(单/双口 RAM、DPRAM、FIFO、 程 ROM 及串行收发器等)的讲授,使学员在充分理解其结构及工作原理、时序的基础上, 目 能够在实际工程开发中精通其使用。标 第 三 部 分 FPGA 设计原则与技巧 本课程主要讲授 FPGA 设计的一些原则(面积与速度平衡互换原则、硬件可实现原则及 课 同步设计
、低功耗设计原则等)及操作技巧(乒乓操作、串并转换、流水线操作及数 程 原则
据同步等),使学员能够将这些原则及技巧应用到实际工程开发中;同时,本章将讲述加 目 法器、乘法器、乘累加器、减法器及除法器在工程应用中的设计方法,在此基础上让学 标 员完成常系数 FIR 滤波器设计;还要求学员掌握使用基于 IP 核的设计方法和流程。第 四 部 分 新型 FPGA 设计工具使用 课 程 本章课程主要讲授 FPGA 基于 MATLAB、Simulink、DSP Builder 等新型设计、验证工 目 具的设计方法及技巧,使学员能够利用这些新型开发工具更好地完成 FPGA 设计。标 第 三 阶 段 第 一 部 分 基于 FPGA 的通信接口设计及外围接口设计 课 FPGA 设计应用最为广泛的领域之一为接口互联,本章课程主要让学员掌握外设通信接 程 口的设计方法:
在教员演示下完成一种通信接口的设计;在教员指导下,独立完成其它 目 通信接口设计,包括协议分析、完成设计文档、RTL 设计、FPGA 芯片选型等流程。标 第 二 部 分 FPGA+DSP 课 DSP 应用是展示 FPGA 优势的最有效场合。通过本次课的学习,可以帮助学员掌握使用 程 FPGA 实现 DSP 的基本理论和实现方法。掌握针对 DSP 的 Verilog 编程方法,实现如 目 Cordic 算法、FFT IP Core 使用等经典内容。9
标 第 三 部 分 基于 FPGA 的图像视频处理 课 FPGA 设计应用最为广泛的领域之一为图像与视频处理,本章内容有:
图像和视频处理 程 基础知识,使学员能够实现色彩空间变换、VGA 控制器、JPEG 编码基础、2D-DCT 变 目 换、 视频处理体系及图像 FIR 滤波器设计与实现; 视频降噪算法设计与实现, 基于 FPGA 标 的常用视频处理算法体系结构、边缘检测算法等。第 四 阶 段 第 一 部 分 SoPC 系统设计与应用 课 本章课程使学员熟练掌握参数化库 LPM 模块的使用;精通 FPGA 中锁相环模块及 程 SignalTap 的使用; 精通 SoPCBuilder 的使用, 能够用 NiosII 软件集成开发环境 IDE 建立 目 用户程序;掌握在 NiosII 系统中融入自己所设计 IP 的技术。标 毕 毕业设计将设计并实现一个真实和完整 FPGA 项目的开发流程,涉及方向为通信、数据 业 采集、软件无线电、图像与视频处理等方面。要求学员将前面所学知识融入运用到实际 答 项目开发中,培养学员的团队开发和协同工作能力,强化学员完成标准设计文档能
力, 辩 为以后的工作打下坚实基础。FPGA 工程师的要求
1.Verilog 语言及其于硬件电路之间的关系。2.器件结构(最好熟练掌握 Spartan3,Vertix4 系列的器件结构,及其资源于 Verilog 行为 描述方法的关系。)。3.开发工具(熟练掌握 Synplify,Quartus,ISE,Modelsim)。4.数字电路(组合电路,触发器,特别是 D 触发器构成分频器,奇数倍分频占空比为 50%, 时序电路,并且能用 Verilog 语言描叙。)。5.熟悉 FPGA 设计流程(仿真,综合,布
熟练掌握资源估算(特别是 slice,lut,ram 等资源的估局布线,时序分析)。6.
算)。7.同步设计原理。8.熟练掌握基本概念(如建立时间,保持时间,流量(即所做GA FP设计的波特率)计算, 延迟时间计算(所做 FPGA 设计),竞争冒险,消除毛刺的方法等等)。9.具备具体设计经验(对应届生而言如毕业设计)。10.良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考虑)。10
浙大G A FP高级工程师培训班 课程说明:以 ALTERA 公司的产品及集成开发环境为主线, 讲授 CPLD/FPGA 的设计方法, 程序 设计,硬件设计和逻辑设计. 时间 内 容 时间 内 容 第一天(含晚上)CPLD/FPGA 基础知识
(1) CPLD/FPGA 的发展现状和发展趋势,各大厂商的 CPLD/FPGA 的异同.
(2)Altera CPLD/FPGA 集成开发工具及第三工具介绍.
(3)Altera CPLD 的基本结构及演变。MAX 7000,MAX 3000A,MAX II 器件.
(4) Altera FPGA 的基本结构及演变。Cyclone, Stratix, Cyclone II, Stratix II 器件.
( CPL5)D/FPGA 的设计流程简介,及其各个步骤之间的关系..
(6)CPLD/FPGA 的加载电路.JTAG/PS/AS 及 CPU 加载电路与时序要求. (7) CPLD 与 FPGA 的异同. (8) PLD/FPGA IO 电平兼容原则. 第二天 硬件描述语言(Verilog)
(1) Verilog 基本结构.
(2) Verilog 基本元素和常用语法.
(3) 触发器,计数器,寄存器的设计方法
(4) Verilog 与 RTL 电路
(5) 双向数据总线,双时钟问题,高阻问题
(6) 指导学员编程. (7)答疑 第三天(含晚上) 仿真,综合与布局布线
(1)设计输入方法.(原理图,HDL 语言,网表输入,宏模块,IP Core).
逻辑综合的原则,速度优化与面积优化. (2)
(逻辑综合3)与 RTL 电路.
(布局布4)线规则.
(5)Chip Editor 查看技巧.
(6)LogicLock(逻辑锁定)技术. (7)Signaltap 在线逻辑分析仪调试技术. (8)实验与答疑. 硬件设计与逻辑设计
(1) Pin To Pin 兼容设计.
(2) PCB 布线的注意事项.
(3) 系统调试步骤.
(4) 分析工程实例.
(5) 基于 CPLD/FPGA 开发板实验. 第四天 NIOS II 设计 (1) SOPC Builder 环境介绍.
(2) NIOS II 硬件设计.
( NI3)OS II 硬件调试方法.
(4) NIOS II 软件设计,NIOS II IDE 的使用.
( NIO5)S II 软件调试.11
(6) 用户自定义外设. (7) 编程 Flash. (8) 实验演示. 数字电路设计
(1) 数字电路设计规则.
(2) 数字电路的基本参数.
(3) 模块划分原则.
(4) 同步数字电路设计.
(5) 接口电路的处理原则.
(6) 避免使用 Latch 电路. 第五天 接口电路功能与处理原则
(1) 接口处理电路使用的基本元素
(2) 输入接口电路
( 输出3)接口电路
(4) 双向接口电路
( 加法器5)/减法器/比较器
(6) 移位器/移位寄存器 (7) 数据流处理 同步电路设计
(1) 设计可靠性
(2) 时序分析基础
( 同步电3)路设计
(4) 置位/复位信号处理
(5) 时延电路处理
全局信号处理 (7) 时序设计可靠性的保障措施 (8) 时钟设计策略.12 (6)