FPGA开发三篇

2024-09-12

FPGA开发 篇1

关键词:FPGA,FPGA开发,IP核,SystemGeneraotr,SOPC

0 引言

FPGA(Field Programmable Gate Array)是一类高度集成的可编程逻辑器件,它起源于美国的XILINX公司,该公司于1985年推出了世界上第一块FPGA芯片。在这二十多年的发展过程中,FPGA的硬件体系结构和软件开发工具都在不断地完善且日趋成熟。从最初的1200个可用门,到20世纪90年代时及十万个可用门,到目前数百万至上千万门的单片FPGA芯片,XILINX、Altera等世界FPGA顶级厂商已经将FPGA器件的集成度提高到一个新的水平。FPGA技术结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需要逻辑功能的设计。与专用集成电路ASIC(Application Specific Integrated Circuit)相比,FPGA具有灵活性高、设计周期短、成本低、风险小等优势,因而得到了广泛应用,同时和FPGA相关的各项技术也迅速发展起来。

FPGA是现场可编程门阵列的简称。之所以赋予这个名字,一方面是因为FPGA可以用编写代码的方法实现复杂逻辑电路,另一方面是因为其内部是由规则的逻辑阵列所组成的,非常类似一个由逻辑门构成的阵列,而且这种结构很适合实现复杂设计并可重复编程。

目前主流的FPGA是基于查找表(Look Up Table,LUT)技术的,已经远远超出了先前版本的 基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬(ASIC型)块。如图1所示,FPGA芯片主要由7部分组成,分别为:可编程输入/输出单元(IOB)、可配置逻辑块(CLB)、数字时钟管理模块、嵌入式块RAM、丰富的布线资源、底层内嵌功能单元和内嵌专用硬核。

1 FPGA与数字信号处理器(DSP)的比较

DSP从根本上讲是适合串行算法的,多处理器系统是很昂贵而且只适合粗粒度的并行运算;FPGA可以在片内实现细粒度,高度并行的运算结构。FPGA和DSP两者各有所长。实现时,一般的配合是DSP做主处理器,利用FPGA的高度并行度和可重配置做FFT、FIR等协处理器。

传统的观点认为FPGA用来创建原型比较好,但是用于大规模的数字系统开发就过于昂贵而且功耗过大。目前,这一不足已有了明显改善,FPGA在成本和功耗上已经超越了DSP。例如,Xilinx公司2007年发布的Spartan-3A FPGA系列,它移入了高端Virtex-5系列的DSP性能,而卖价最高才30美元;Altera公司的Cyclone3系列的性能比Spartan-3A FPGA略低,部分芯片大批量价格仅4美元。而TI公司的C64x系列和AD公司的Blackfin系列处理器,其价格一般都在5到30美元之间。

新的趋势已经很明朗:新的FPGA已经能够以高价格来和主流的DSP竞争。此外,FPGA的计算能力比DSP的性能更加强大。例如,30美元的Spartan-3A FPGA性能可高达每秒200亿条乘法累加操作(GMACs),同样花30美元买一个600MHz的C64xDSP,每秒的累加操作仅仅是25亿条,后者在性能上差距了一个数量级。

2 FPGA设计流程

FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。FPGA的开发流程一般如图2所示,图2为FPGA的一般开发流程。包括以下主要步骤:

电路设计:在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。

设计输入:设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。

功能仿真:是在编译之前对用户所设计的电路进行逻辑验证和功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。

综合:所谓综合就是将较高级抽象层次的描述转换成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。

综合后仿真:综合后仿真检查综合结果是否和原来设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中,可估计门延时带来的影响。但这一步骤不能估计线后的实际情况还有一定的差距,并不十分准确。

实现与布局布线:实现是将综合生成的逻辑网表配置到具体的FPGA芯片,布局布线是其中最重要的过程。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件上,并且往往需要在速度最优和面积最优之间做出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理、正确地连接各个元件。

时序仿真与验证:时序仿真也称后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全也最精确,能较好的反映芯片的实际工作情况。

板级仿真与验证:板级仿真主要应用于告诉电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。

3 Xilinx FPGA的三种开发流程介绍

3.1 使用硬件描述语言

硬件描述语言(Hardware Description Language,HDL)是一种用形式化方法来描述数字电路和系统的语言,可以从上层到下层来逐层描述自己的设计思想,用一系列分层次的模块来表示复杂的数字系统,并逐层进行验证仿真,再把具体的模块组合由综合工具转化成门级网表。利用HDL开发流程如图3所示。

优点:针对具体功能编写代码,灵活小巧;开发人员可以完全掌握设计的实现和优化,以及速度和面积之间的权衡;开发人员对之间的代码比较了解,容易调试。

缺点:比较费事;不能任意配置综合工具;必须对算法有相当了解并用代码实现;必须熟悉综合工具以获得优化的结果;必须是FPGA方面的专家,熟悉芯片结构。

3.2 调用IP核

IP核,也称虚拟元件或宏单元。其英文全称为Intellectual-Property Core,即知识产权产品。IP核用于将集成电路(ASIC)或可编程逻辑器件(FPGA)制造成产品的逻辑模块和数据模块。将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器、SDRAM控制器、PCI接口等设计成可修改参数的模块,让其他用户可以直接调用这些模块,这样就大大减轻了工程师的负担,避免重复劳动。随着FPGA的规模越来越大、设计越来越复杂,使用IP核称为一个发展趋势。

优点:可快速获得现有IP核功能;对具有一定规格的类似功能模块不需要重复开发;IP核已针对特定结构进行了优化;

缺点:IP核并不总能满足设计要求;需要熟悉IP核的参数和信号,以达到设计要求;难以了解IP核究竟是如何实现相应功能的。

3.3 使用System Generator进行图形化设计

System Generator是Xilinx公司的一个模块集(Blockset),它是Simulink的一个插件,其中,设置了Xilinx公司特有的DSP功能的IP核,包括了基本DSP函数和逻辑算符,如FIR、FFT、存储器、数学函数、转换器、延时线等。这些预先定义好的模块保证了FPGA实现时的位(bit)和周期(cycle)的正确。使用它可以自动生成VHDL/Verilog语言、测试向量及可以使Modelsim仿真的“.do”文件。其设计流程如图5所示。

优点:系统级建模极大地提高工作效率;能够在系统级上对整个系统进行仿真;非常适合FPGA初学者使用;能够生成复杂设计的testbench测试代码,且功能强大;自动生成testbench测试代码和黄金数据(golden data);通过半实物仿真可迅速验证是否满足系统功能要求。

缺点:由System Generator获得的设计通常不是最优的,需要占用较多的硬件资源,因此需要对System Generator的设计结果作进一步的优化;用户可能对MATLAB/Simulink并不熟悉;并不非常适合进行多速率系统的开发;不支持双向总线。

4 FPGA技术发展趋势

随着FPGA性能的高速发展和设计人员自身能力的提高,FPGA将进一步扩大可编程芯片的领地,将复杂专用芯片挤向高端和超复杂应用。FPGA的发展趋势主要体现在以下几个方面:

1) 向更高密度、更大容量的千万门级系统级方向迈进;2) 向低成本、低电压、微功耗、微封装和环保型发展;3) IP资源复用理念将得到普遍认同并称为主要设计方式;4) MCU、DSP、MPU等嵌入式处理器IP将称为FPGA应用的核心。

随着处理器以IP的形式嵌入到FPGA中,ASIC和FPGA之间的界限将越来越模糊,未来的某些电路版上可能只有两部分电路:模拟部分(包括电源)和一块FPGA芯片,最多还有一些大容量的存储器。这一切表明,可编程片上系统(System on a Programmable Chip,SOPC)正在称为FPGA最为重要的发展方向。

5 结束语

近年来,FPGA技术的迅猛发展为其迎来了史无前例的繁荣时代,得到了越来越广的普及和应用。同时,电子产品市场的激烈竞争,迫切要求电子产品设计工程师缩短开发周期,加快产品的更新换代,设计出高可靠性、造价低、小体积、强功能的高性能电子产品来迎接市场挑战。因此,开发和设计出好的FPGA产品,需要广大FPGA爱好者的共同努力。

参考文献

[1]纪志成,高春能.FPGA数字信号处理设计教程[M].西安:西安电子科技大学出版社,2008.

[2]朱明程.Xilinx数字现场集成技术[M].南京:东南大学出版社,2001.

FPGA开发 篇2

摘要:基于FPGA的数据采集处理方案一般开发周期较长,在短周期任务流程中往往会给开发者带来较大的工作压力,本文论述了利用FPGA内嵌PPC嵌入式处理器进行数据处理的可行性,在保证数据处理速度及精度的前提下,缩短FPGA开发周期,降低设计复杂度,解放代码设计人员。

关键词:FPGA PPC440 嵌入式设计 快速开发

0 引言

在使用硬件描述语言(VHDL或Verilog)进行FPGA系统设计时,当系统原理或逻辑功能较为复杂时,模块数量将十分巨大,相互之间的链接、嵌套使得设计仿真相当困难。并且基于FPGA的数据采集处理方案一般开发周期较长,在短周期任务流程中往往会给开发者带来较大的工作压力,利用FPGA内嵌PowerPC嵌入式处理器进行数据处理的可行性,在保证数据处理速度及精度的前提下,缩短FPGA开发周期,降低设计复杂度,解放代码设计人员。

1 基于FPGA嵌入式开发简介

1.1 Microblaze嵌入式软核处理器概况

在某研究项目中,我们采用了一款Xilinx FPGA芯片VIRTEX-5 XC5VSX50T作为嵌入式系统开发硬件平台。在该芯片中,创建并优化设计了一个嵌入式Microblaze软核处理器,该处理器采用32位RISC(精简指令集)优化构架和哈佛结构,32位地址总线、独立的指令和数据缓存,并且有独立的数据(DPBL)和指令总线(IPBL)连接到IBM的OPB总线,使其能够很容易的与其他外设IP一起完成整体功能。

1.2 Microblaze处理器特点、优势

①工作特性

Microblaze的系统工作时钟频率可以在50Mhz-125

Mhz范围内快速设置,local memory可以在4k-64k字节范围内寻址,并且EDK提供了丰富的IO接口设备IP,包括EMC(SRAM),ETHERNET,GPIO,DMA,IIC,DDR,DDR2,RS232,PCI等,将之与软核配合,可以完成绝大部分工作。

②硬件设计软件化

嵌入式软核处理器的最大优势就是将原本需要用硬件描述语言来进行的FPGA设计变为搭建硬件平台,使用完全的C/C++语言进行编程,从而使得硬件设计实现了真正的软件化。采用C/C++语言进行编程的优势是显而易见的,设计过程中将不再需要考虑许多硬件描述语言的特有约束,比如“<=”和“=”的区别,另外在逻辑门的使用上也相对固定,对于总体布局布线的考虑很有帮助。

③在线软硬联调

EDK套件在进行完SDK软件设计之后,就可以对整个嵌入式系统进行在线调试了。调试的方法有很多种,比较高效的就是进行在线软硬联调,即在将bit文件通过JTAG链下载到FPGA之后,软核内是没有逻辑功能的,此时可以使用debug on hardware方式将软件下载到软核处理器内,之后便可以像任何一款C/C++开发环境一样对功能进行调试,断点、单步、内存状态监控、变量值监控等等,均可以一次完成。

2 软硬件联合设计方法

Microblaze的总线接口

Microblaze采用哈佛结构,配置了LMB总线和PLB总线。

LMB总线主要用于连接片上Block Ram,为了保证所有访问在一个周期内完成,LMB总线采用了最少的控制信号和最简单的协议方式。LMB总线支持单字节读写和数据流读写两种方式,并且可以实现BYTE、WORD、DWORD之间的自动转换,使得数据读写与转换十分方便并且高速!

PLB总线主要用于挂接数据和指令的片上外设,是各类外设连接处理器的主要方式。以上提及的各种IO接口设备的IP均需挂接到PLB总线上方能与处理器协同工作。

3 应用经验

在项目的实际操作中,对嵌入式的软核应用十分成功,大大的减少了编程工作量,使得FPGA设计更易于操作。

总结一下,在使用中的经验与问题,主要集中在以下几个方面:

3.1 自定义IP的仿真调试

某课题中,microblaze嵌入式设计的第一个设计要点,就是自定义IP的设计、调试。该课题自定义IP的主要功能集中在CPCI接口时序、数据存储、处理、转发等方面,因此,在自定义IP设计过程中,调试过程是十分重要的。幸运的是,在EDK套件中设计的自定义IP可以在Modelsim下进行仿真调试,这大大缩减了自定义IP的调试工作量。

3.2 堆栈的使用

堆栈在SDK软件设计中具有很重要的作用,SDK在调用通用IP或USER IP过程中,是通过事先设计的driver中的功能函数来进行调用的。对函数的操作,普遍使用“栈”来进行参数传递,而SDK中“栈”的大小默认为0x400,如果设计的driver中的功能函数所需进行传递和恢复的参数段过大的话,将会出现“栈”溢出错误,导致功能函数异常。更为严重的是“堆”,SDK中“堆”的大小默认为0,即不使用“堆”进行参数处理,而我们知道,在进行动态变量初始化时,“堆”是必不可少的,因此如果在driver中设计的功能函数,有动态变量的话,一定要记得手动设置“堆”的容量。

4 课题收益

在该课题的研发过程中,采用了一颗Xilinx Virtex5系列芯片,其中CPCI总线接口单元与OFDM收发器最初均采用硬件描述语言(Verilog)进行系统功能模块设计,占用系统资源较多,收发双向共占用35%左右的slice 和LUT,导致FPGA系统总体资源超过95%,编译布线不成功。

当采用EDK套件进行嵌入式系统研发设计之后,利用软核完成以上全部功能,编译实现后,系统总体资源占用80%左右,并且FPGA内部router方式固定,不会出现多次编译实现的结果不一致的情况。

硬件设计软件化使得系统的通用性更好,在后期调试过程中,获得了极大地便利性。

5 结束语

通过以上论述,基于PFGA的嵌入式开发方法可以大大降低系统复杂度,利用FPGA内嵌PPC嵌入式处理器进行数据处理具有工程可行性,在保证数据处理速度及精度的前提下,可以缩短FPGA开发周期,降低设计复杂度,解放代码设计人员,十分值得进行推广。

参考文献:

[1]Xilinx kernel Development Kit User Guide.

[2]WANG Zheng-jie. Implementation of VxWorks in autopilot for micro aerial vehicle based on PXA255 and FPGA [J].Journal of Beijing Institute of Technology,2011,1.

[3]郭锐靖.FPGA开发板设计与研究[D].华南理工大学,2013.

作者简介:

《FPGA开发实训》教学总结 篇3

一、课程基本信息 课程名称:FPGA开发实训 课程类别:实践教学课 学分:2 学时:32 授课教师:

二、课程的教学节点

第一部分:软件基础(8学时)

1、quartus II软件的安装和使用,掌握程序编译综合下载

2、modelsim和quartus II自带波形仿真软件的使用,实现验证设计是否正确

3、signaltap使用,用于开发板在线调试,定位查找错误 第二部分:设计基础(4学时)

1、计数器设计

2、ROM的IP核使用:掌握ROM IP核的配置过程及初始化方法,学会用MATLAB产生mif文件来初始化ROM。第三部分:项目训练(20学时)

1、基于FPGA的分频器设计

掌握1Hz信号频率信号的产生、指示灯显示按,完成FPGA设计项目的制作,包括定方案、设计电路、仿真、下载到FPGA开发板、调试。

2、基于FPGA的PWM控制器的设计与实现

掌握PWM 技术原理、按键控制及消抖实现,完成FPGA设计项目的制作,包括定方案、设计电路、仿真、下载到FPGA开发板、调试。

3、基于FPGA的多功能信号发生器的设计与实现

掌握sin、cos三角函数运算、各波形逻辑设计、ROM的存储和控制、液晶和数码管显示,独立完成FPGA设计项目的制作,包括定方案、设计电路、仿真、下载到FPGA开发板、调试,并写出实践报告。

三、课程的改革方案

1、传统FPGA实验,设计多停留在仿真模拟环节,该课程充分依托FPGA的Cyclone系列开发板,将FPGA设计的理论知识与实践结合,增加学生的实战调试经验。

2、设置有一定应用价值的实验项目,项目内容由深入浅,让学生自主完成,锻炼学生的自主学习能力,提高学生设计系统的能力,培养学生的工程意识。

3、考核依据学生的设计作品的基本功能和自主创新功能,并要求学生进行总结答辩和讨论,最终提交设计报告,提高学生的综合应用知识能力,激发其创新能力,提高总结表达能力。

四、相关或交叉的课程名称

1、数字逻辑电路

2、硬件描述语言基础VHDL/Verilog

3、EDA与数字系统设计

上一篇:农科高等院校学生下一篇:噪声提醒器设计论文