首页 » 智能 » FPGA开拓全攻略——IP核_暗记_旗子

FPGA开拓全攻略——IP核_暗记_旗子

神尊大人 2024-11-03 10:54:44 0

扫一扫用手机浏览

文章目录 [+]

基于IP的设计已成为目前FPGA设计的主流方法之一,本章首先给出IP的定义,然后以FFT IP核为例,先容赛灵思IP核的运用。

5.7.1 IP核综述

FPGA开拓全攻略——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) 输入的位宽即是2ceil(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 模块接口为:

module fft16(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);

input sclr , fwd_inv_we, start, fwd_inv, scale_sch_we, clk;

input [3 : 0] scale_sch;

input [15 : 0] xn_re;

output rfd, 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 模块即可,如

module fft16(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);

input sclr , fwd_inv_we, start, fwd_inv, scale_sch_we, clk;

input [3 : 0] scale_sch;

input [15 : 0] xn_re;

output rfd, 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;

fft fft1( // 调用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仿真波形

标签:

相关文章

多国语言刷机,技术融合下的全球化趋势

随着科技的飞速发展,智能手机已成为人们日常生活中不可或缺的一部分。刷机,作为手机系统更新与优化的重要手段,已经深入到每个用户的日常...

智能 2025-01-04 阅读0 评论0