爱游戏-FPGA开发全攻略——IP核

FPGA开辟全攻略——IP核 时候:2024-12-19 18:29:41 手机看文章

扫描二维码随时随地手机看文章

 

FPGA设计的IP和算法利用

基在IP的设计已成为今朝FPGA设计的主流方式之一,本章起首给出IP的界说,然后以FFT IP核为例,介绍赛灵思IP核的利用。

IP核综述

IP(Intelligent Property) 核是具有常识产权核的集成电路芯核总称,是颠末频频验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到分歧的半导体工艺中。到了SOC 阶段,IP核设计已成为ASIC电路设计公司和FPGA供给商的主要使命,也是其实力表现。对FPGA 开辟软件,其供给的IP核越丰硕,用户的设计就越便利,其市场占用率就越高。今朝,IP核已酿成系统设计的根基单位,并作为自力设计功效被互换、让渡和发卖。

从IP核的供给体例上,凡是将其分为软核、硬核和固核这3类。从完成IP核所破费的本钱来说,硬核价格最年夜;从利用矫捷性来说,软核的可复用利用性最高。( 这部门内容前面已论述,这里再重申一下)

软核(Soft IP Core)

软核在EDA设计范畴指的是综合之前的寄放器传输级(RTL) 模子;具体在FPGA设计中指的是对电路的硬件说话描写,包罗逻辑描写、网表和帮忙文档等。软核只颠末功能仿真,需要颠末综合和结构布线才能利用。其长处是矫捷性高、可移植性强,答应用户自设置装备摆设;错误谬误是对模块的猜测性较低,在后续设计中存在产生毛病的可能性,有必然的设计风险。软核是IP 核利用最普遍的情势。

固核(Firm IP Core)

固核在EDA设计范畴指的是带有平面计划信息的网表;具体在FPGA设计中可以看作带有结构计划的软核,凡是以RTL 代码和对应具体工艺网表的夹杂情势供给。将RTL描写连系具体尺度单位库进行综合优化设计,构成门级网表,再经由过程结构布线东西便可利用。和软核比拟,固核的设计矫捷性稍差,但在靠得住性上有较年夜提高。今朝,固核也是IP核的主流情势之一。

硬核(Hard IP Core)

硬核在EDA 设计范畴指颠末验证的设计邦畿;具体在FPGA 设计中指结构和工艺固定、颠末前端和后端验证的设计,设计人员不克不及对其点窜。不克不及点窜的缘由有两个:起首是系统设计对各个模块的时序要求很严酷,不答应打乱已有的物理邦畿;其次是庇护常识产权的要求,不答应设计人员对其有任何改动。IP 硬核的不准点窜特点使其复用有必然的坚苦,是以只能用在某些特定利用,利用规模较窄。

IP Core生成器(Core Generator) 是Xilinx FPGA设计中的一个主要设计东西,供给了年夜量成熟的、高效的IP Core为用户所用,涵盖了汽车工业、根基单位、通讯和收集、数字旌旗灯号处置、FPGA特点和设计、数学函数、记忆和存储单位、尺度总线接口等8 年夜类,从简单的根基设计模块到复杂的处置器一应俱全。共同赛灵思网站的IP中间利用,可以或许年夜幅度减轻设计人员的工作量,提高设计靠得住性。

Core Generator最主要的设置装备摆设文件的后缀是xco,既可所以输出文件又可所以输入文件,包括了当前工程的属性和IP Core的参数信息。

5.7.2 FFT IP核利用示例

ISE供给了FFT/IFFT的IP Core,可以完成实数、复数旌旗灯号的FFT和IFFT运算。FFT的IP Core供给三种布局,别离为:

(1) 流水线,Streaming I/O布局:答应持续的数据处置;

(2) 基4,Burst I/O布局:供给数据导入/导出阶段和处置阶段。此布局具有较小的布局,但转换时候较长;

(3) 基2,Burst I/O布局:利用起码的逻辑资本,同Radix-4不异,供给两阶段的进程。其设置装备摆设界面有3页,第一页如图5-57所示,首要用在设置装备摆设实现布局;第二页设置装备摆设数据位宽和数据处置操作;第三页设置装备摆设数据缓存空间。

图5-57 FFT IP core的用户界面

在现实硬件操作中,模块的履行速度是很主要的参数,所以本文阐发第一种布局,即流水线Streaming I/O布局,以进行持续的数据处置。在进行当前帧的N点数据时,可加载下一帧的N点数据,同时输出前一帧的N点数据。此布局由多个基2的蝶形处置单位组成,每一个单位都有本身的存储单位来存储输入和中心处置的数据,其布局如图5-58所示。

图5-58 FFT模块的流水线,Streaming I/O布局

FFT的计较单位具有丰硕的节制旌旗灯号,其具体申明见下文。

XN_RE、XN_IM :输入操作数,别离为实部和虚部,以2 的补码输入。在利用时该当肯定其位宽。

START :FFT最先旌旗灯号,高有用。当此旌旗灯号变高时,最先输入数据,随后直接进行FFT 转换操作和数据输出。一个START脉冲,答应对一帧进行FFT 转换。假如每N 个时钟有一个START脉冲或START始终为高,,则都可以持续进行FFT。假如在最初的START前,还没有NFFT_WE,FWD_INV_WE,SCALE_SCH_WE旌旗灯号,则START变高后就利用这些旌旗灯号的默许值。因为此IP Core撑持非持续的数据流,是以在任什么时候间输入START,便可最先数据的加载。当加载N个数据竣事后,就最先FFT转换运算。

UNLOAD :对Burst I/O布局,此旌旗灯号将最先输出处置的成果。对流水线布局和比特逆序输出的环境,此端口不是需要的。

NFFT :此端口只对及时可设置装备摆设利用时有效。

NFFT_WE :此端口是NFFT 端口的使能旌旗灯号。

FWD_INV :用以唆使IP Core为FFT仍是IFFT,其等在1时IP Core进行FFT运算,不然进行IFFT 运算。至在采取哪一种转换运算是可以逐帧转变的。这一端口给FFT的利用供给了很年夜的便利。

FWD_INV_WE :作为FWD_INV端口的使能旌旗灯号。

SCALE_SCH:(1) 在IP Core设计时,假如选择在计较进程中进行中心数据的缩减,那末此旌旗灯号才可起感化;(2) 输入的位宽等在2*ceil(NFFT/2),此中NFFT = log2(point size)。(3) 流水线布局中,将每一个基2的蝶形处置单位视为一个阶段,每一个阶段进行一次数据的缩减,缩减的比例以此输入中对应阶段的两比特暗示。(4) 每阶段的两比特数可所以3,2,1或0 :它们暗示了数据所需要移动的比特数。

SCALE_SCH_WE :作为SCALE_SCH的使能旌旗灯号。

SCLR :可选端口。

Reset :重置旌旗灯号端口。Reset=1时,所有工作都住手且初始化。但内部的帧缓存保存其内容。

CE :可选端口。

CLK :输入时钟。

XK_RE,XK_IM :输出数据总线,以2 的补码输出。SCALE_SCH_WE有用时,输出位宽等在输入;不然,输出位宽= 输入位宽+NFFT+1。

XN_INDEX :位宽等在log2(point size),输入数据的下标。

XK_INDEX :位宽等在log2(point size),输出数据的下标。

RFD :数据有用旌旗灯号,高有用,在加载数据时为高电平。

BUSY :IP Core 工作状况的唆使旌旗灯号,在计较FFT 转换时为高电平。

DV :数据有用唆使旌旗灯号,当输出端口存在有用数据时变高。

EDONE :高有用。在DONE 旌旗灯号变高的前一个时钟变成高电平。

DONE :高有用。在FFT 完成后变高,且只存在一个时钟。在DONE 变高后,IP Core最先输出计较成果。

BLK_EXP :当利用Burst I/O 布局时可用,若选择流水线,则此端口无效

OVFLO :算法溢出唆使。在数据输出时,如每帧有溢出,此旌旗灯号变高。在每帧最先处,此旌旗灯号重置。

例5.7.1利用IP Core实例化一个16点、位宽为16位的FFT 模块。IP Core 直接生成的乘法器的Verilog 模块接口为:

modulefft16(sclr,fwd_inv_we,rfd,start,fwd_inv,dv,scale_sch_we, done,clk,busy,edone,scale_sch,xn_re,xk_im,xn_index,xk_re,xn_im,xk_index);inputsclr,fwd_inv_we,start,fwd_inv,scale_sch_we,clk;input[3:0]scale_sch;input[15:0]xn_re;outputrfd,dv, done,busy,edone;output[15:0]xk_im;output[3:0]xn_index;output[15:0]xk_re;input[15:0]xn_im;output[3:0]xk_index;……endmodule

在利用时,直接挪用multiply 模块便可,如

modulefft16(sclr,fwd_inv_we,rfd,start,fwd_inv,dv,scale_sch_we, done,clk,busy,edone,scale_sch,xn_re,xk_im,xn_index,xk_re,xn_im,xk_index);inputsclr,fwd_inv_we,start,fwd_inv,scale_sch_we,clk;input[3:0]scale_sch;input[15:0]xn_re;outputrfd,dv, done,busy,edone;output[15:0]xk_im;output[3:0]xn_index;output[15:0]xk_re;input[15:0]xn_im;output[3:0]xk_index;fftfft1(//挪用FFT的IPCore.sclr(sclr),.fwd_inv_we(fwd_inv_we),.rfd(rfd),.start(start),.fwd_inv(fwd_inv),.dv(dv),.scale_sch_we(scale_sch_we),.done(done),.clk(clk),.busy(busy),.edone(edone),.scale_sch(scale_sch),.xn_re(xn_re),.xk_im(xk_im),.xn_index(xn_index),.xk_re(xk_re),.xn_im(xn_im),.xk_index(xk_index));endmodule

颠末仿真测试获得的功能波形图如图5-59所示:

图5-59 FFT的IP core仿真波形。

欲知详情,请下载word文档 下载文档

上一篇:爱游戏-提出不到两年:Intel终止纯64位架构x86S计划! 下一篇:爱游戏-TrendForce集邦咨询: Vision Pro重塑VR/MR市场格局,应用领域从视听娱乐向多元生产力工具拓展