基于FPGA的专用软件硬件化技术探讨

2015-03-20 06:58刘学明南京晓庄学院物理与电子工程学院江苏南京211171
赤峰学院学报·自然科学版 2015年13期

刘 明,刘学明(南京晓庄学院 物理与电子工程学院,江苏 南京 211171)

基于FPGA的专用软件硬件化技术探讨

刘明,刘学明
(南京晓庄学院物理与电子工程学院,江苏南京211171)

摘要:随着科学技术的不断发展,对以FPG为基础的软件硬件化技术也成为许多学者关注的重要内容.尤其在可编程门列阵方法的引入下使数据的处理与传输得以实现.设计过程中FPGA所选用的开发语言主要以C语言为基础所形成的Handel-C为主,其能够融合其他开发语言如VHDL等,使系统涉及得以优化.本文主要对以FPGA为基础的数据传输与处理系统结构分析、Handel-C语言的基本概述、以FPGA为基础的软件硬件化技术技术算法设计、UART与RAM的实现以及系统集成功能的强化等进行探析.

关键词:FPGA;软件硬件化技术;Handel-C;VHDL

传统控制器选用的主要以单片机作为核心,其对相关的控制软件以及外围器件具有一定的数量要求,而且受其自身体积较大等特点影响,相比集成度较高的全硬件控制器,无论在可靠性或抗干扰能力方面都表现出一定的不足.对此现状在长期实践研究中发现以单片的专用集成电路取代原有的以微控制器为主的系统能够解决传统控制器存在的弊端,特别在控制器要求较高的可靠性时该技术方式更为适用.因此对以FPGA为基础的专用软硬件技术分析具有十分重要的意义.

1 数据传输与处理系统的结构分析

在可编程逻辑器件基础上,为实现对硬件设计技术的掌握,要求对数据传输与处理系统进行全硬件化的涉及.在其结构中通过以硬件取代原有CPU并进行软硬件结合的方式进行设计,其中设计的难点主要集中在针对专用软件功能,如何进行硬件的描述.因此以FPGA为基础将系统中融入RAM、UART、多项式计算与积分算法模块等,并保证RAM能够接收经由UART的系统参数.这样在利用多项式计算以及积分算法模块便可得出输出结果.以往用于数据传输与处理的系统,在结构上主要以单片机为核心,并通过相关的控制软件以及外围电路共同组成,但其自身较大的体积很难满足系统小型化的基本要求.同时,软件运行过程中若处于环境较为恶劣的条件下,其引用的储存器如ROM或RAM等将难以实现较高的抗干扰能力.所以需采用“软件硬化”方式,具体通过在系统中引入VHDL与Handel-C语言实现,其中的VHDL主要指在电路设计过程中所采用的高级语言.经过“软件硬化”方案应用下的系统将在结构上由多种模块共同组成,如加法多项式、乘法多项式以及UART设备、RAM等.其中所应用的RAM与UART要求时序需达到一定标准,在多样式算法中主要考虑的为数值算法问题.对此在设计过程中对各个结构部分可采取相应的手段,如将Handel-C语言编程应用于多项式算法模块中,并利用VHDL语言满足RAM与UART对时序的要求[1].

2 Handel-C语言的基本概述

以往进行系统功能、结构以及行为等方面描述中所引用的语言主要为VHDL等,但在算法设计较为复杂的情况下,这种方式将难以发挥足够的支撑作用.但随着数字系统设计过程中相关的建模以及算法描述等逐渐增多,用于硬件描述的C语言或C++语言也得以形成.而以C语言为基础形成的Handel-C语言在目前应用过程中属于较为成熟的硬件描述语言.其主要以C语言以及C++语言为依据,进行一定程度上的语言与语法改进与扩充.实际应用过程中,系统设计人员无需进行C语言向VHDL或Verilog语言进行转换,避免系统错误或风险的出现.通过Handle-C语言,能够对算法直接描述,使编译加载于硬件中,促进编程时间与效率的改善,其具备的功能在Celoxica DK1中都有所体现.在系统应用过程中,尽管与VHDL语言在编程语法规则上表现出一定的差异,但从编程根本目的上基本保持一致,主要为实现算法思想的硬件化并通过在可编程芯片中的加载以便于应用.一般情况下,VHDL语言编写的基本流程可使模块化编程较为容易,设计人员会采用分块的方式以实现其on功能.而Handle-C由于以C语言体系为基础,在编程时可直接进行算法的描述,具有较高的编程效率.但Handle-C在系统设计过程中还需考虑到具体的编译环境,其常用的编译环境软件DK1.1需能够满足C语言或C++语言环境的基本要求,所安装的编译器可选择如Borland C++5.5或更高版本[2].

3以FPGA为基础的软件硬件化技术算法设计

3.1系统设计算法分析

系统设计过程中为满足精度要求,通常引用单精度Newton-Cotes公式进行计算,能够适用于硬件设计需求.但需注意精度计算过程中应将计时的起点、重点、实时采样值以及采样的间隔做出分析.同时,系统中算法部分的编写由于使用Handle-C语言,其主要以ISO/ANSI-C为基础,要求在不考虑硬件设计的前提下,系统各部分在语法形式上比较接近,因此程序计算过程中可采用:q=0;do {par{input?y; fx=y;q=q+h*(f+fx)/2;f=fx}while(y!=0)}.从该算法中不难发现,仅有{input?y;}与par{}有所不同,而其余部分与ISO/ANSI-C基本保持接近.其中的{input?y;}语句主要用于软件进行仿真的阶段,通过y值的输入便可实现在文件中的读取过程,为程序调试以及仿真带来极大便利.而作为Handel-C语言中极具硬件特色的par{}语句,能够满足硬件并行特征要求.但需要注意的是无论哪种语句在实际执行过程中需以一个时钟为根据,可将每条语句在各时钟节拍内执行,尤其同一时钟内若需利用较多语句,应采用par{}语句形式[3].

3.2定义接口要求

由于集成开发环境DK中算法部分主要以Handel-C语言为主,为使其能够在设计过程中与VHDL语言模块相互作用,要求进行定义接口,保证其能够在VHDL程序中以component的形式存在,进而使端口映射的目标得以实现.具体接口定义过程可描述为:interface port-in(unsigned 1 clk with{clockport=1})ClokcPort();interface port-in(unsigned 1 rst) ResetPort();interface port-in(int 16 data)pin()with {std-logic-vector=1};interface port-out()Outputport(int 16 output=td)with{std-logic-vector=1}.可推出set clock=internal ClockPort.clk;set reset=internal ResetPort.rst.在该接口定义过程中能够表示复位与时钟信号接口的主要为ResetPort.rst 与ClockPort.clk.而能够将顶层模块中接口定义的主要为interface port-in(int 16 data)pin()with{std-logic-vector=1}以及interface port-in(int 16 data)pin()with{std-logic-vector=1}.根据接口类型与计算得出的数据宽度能够完成端口映射以及VHDL模块器件声明等过程.具体端口映射情况以及VHDL器件声明可通过以下描述实现,即:COMPONENT pronew-top PORT(clk:IN std-logic;data:IN std-logic-vector (15 DOWNTO 0);Output:Out std-logic-vector(15 DOWNTO 0);rst:IN std-logic);END COMPONENT PORT MAP(clk=>clk. ;data=>spo-data.;Output=>OPEN.;rst=>reser).由此可推出VHDL与Handle-C语言所表现的接口对应关系.在完成定义接口过程中,需在集成开发环境DK中利用Handel-C语言进行VHDL文件的编译,通过其生成的文件与其他相关的模块结合做好仿真工作[4].

4 UART与RAM的实现

4.1从UART与RAM实现角度

系统设计中UART的实现主要得益于HDL硬件描述语言.一般UART中的HDL模块会以发送与接收两个独立的模块存在.因为以FPGA为基础的系统设计具有专用性的提点,所以可将设计重点集中在UART接收部分方面即可,确保接收模块的功能得以实现.设计过程中可选用宽度为8bit的数据总线,这样系统会通过rsr,即接收移位寄存器接收串行数据.数据接收后会向保存寄存器rhr中完成存储,并以并行数据的形式存在,为模块的读取带来极大的便利.此时可根据系统设计的基本要求,进行仿真波形图形的绘制,从仿真波形中便可分析时钟上升过程中,串行数据能够向rsr传输,当完成所有接收工作后,会在rhr中进行保存.另外,在RAM方面,该系统设计要求具有较高的数据实时性,所以为实现系统的实时采样、计算与存储,可利用双口RAM进行相关数据的存储,其中数据与地址的输入口应满足基本设计要求[5].

4.2从系统集成角度

系统集成主要指利用计算机网络技术以及经过结构化的综合布线系统,使处于独立状态的系统功能、设备以及相关信息能够进行集成,确保资源能够实现共享并便于管理. 以FPGA为基础的系统设计过程中在设计输入方面选用DK1以及FPGA Advantage5.3为主,并通过Lenoardo Spectrum实现综合.而以Design Manager作为基本的Xilinx布线工具,能够生成相应的bit流文件.另外,系统中引用的Xinlinx Sparten2E下的FPGA XC2S300E,在Block RAM方面表现为64k,能够支持较多用户使用,使系统功能得到最大程度的发挥.这样可保证系统以FPGA为基础的软件硬化化系统设计的相关功能以及集成的实现,促进系统功能的强化.通过对系统的设计实验也证明专用软件实现硬件化中FPGA具有不可替代的优势,实现了减小系统体积的目标.同时,因为系统设计主要以FPGA为基础,能够解决了传统系统中CPU需利用过多外围电路等问题,为系统可靠运行与抗干扰能力的提高提供了保障.也因这种“软件硬化”的方案,应用过程中硬件同步性能与并行性特点等也充分发挥出来[6].

5 结论

以FPGA为基础的软件硬化技术在未来发展中将区域完善并渗透到各领域中.在实际设计过程中要求对数据传输与处理系统的结构进行分析,熟练掌握Handel-C语言的应用,并在算法设计时注重相应语句如{input?y;}与par{}等的使用,确保定义接口能够满足系统设计的基本要求.此外,为使系统嫩巩固可靠运行并提高抗干扰能力,还需保证UART 与RAM的实现以及系统集成过程,这样才可促进FPGA应用中更具优越性.

参考文献:

〔1〕郭晏强,杨战平.基于FPGA的专用软件硬件化技术[J].电子工程师,2010(11):13-15.

〔2〕吴春英.基于FPGA的遗传算法硬件化技术的研究[D].南京航空航天大学,2010.

〔3〕王广辉.基于FPGA的实时操作系统互斥锁硬件化技术研究[D].浙江大学,2013.

〔4〕崔辰鹏.基于FPGA的AGV视觉导引算法研究及硬件化实现[D].南京航空航天大学,2011.

〔5〕赵尉清.基于FPGA的遗传算法的硬件实现技术研究[D].南京理工大学,2010.

〔6〕葛利.基于Handel-C的MPEG-4视频压缩算法硬件化设计[D].西安电子科技大学,2014.

中图分类号:TP319

文献标识码:A

文章编号:1673-260X(2015)07-0038-02