BRAM和DSP间的纠缠(一)

2017-1-11 15:22 527 0

Xilinx公司的FPGA中不仅有“成吨”的逻辑资源(slice),另外存储器、I/O、时钟和集成式IP资源也非常丰富,笔者在设计中经常使用Block RAM(BRAM)、DSP资源,灵活运用BRAM和DSP能为设计的速度和面积都带来一定的提升,可谓是鱼和熊掌兼得。


以Kintex-7系列为例,如图1所示为kintex-7各芯片资源表,其中Block RAM/FIFO w/ ECC (36 Kb each)和DSP48 Slices栏分别是BRAM和DSP资源数量,在FPGA项目初期,芯片选型时,需要参考此表进行资源评估。


图1


下面分别介绍一下Kintex-7系列FPGA中BRAM和DSP资源的使用:



  1. BRAM


Kintex-7中BRAM块大小为36Kbit,也可以配置成两块18Kbit RAM,如FPGA设计中不同模块分别使用了一块18Kbit RAM,vivado软件会将这部分在一块BRAM中实现。


在FPGA设计中可采用多种方式调用BRAM,最常用的就是Core Generater工具,而笔者习惯于使用BRAM原语,将其根据需求自定义封装,最终在设计中类似以IP Core的形式例化BRAM,此方法的好处就是BRAM可以根据设计者的需求灵活配置。如图2、3所示,打开vivado的代码编辑器,在Language Templates中可以找到BRAM的原语,封装时只需拷贝出来即可。


图2


图3


如代码见附件,笔者将BRAM原语封装后,经过vivado软件综合实现,在FPGA芯片中的布局实现如图4所示,BRAM、DSP在FPGA芯片中是按列布局的,其中红色列为BRAM,绿色列为DSP。


图4



  1. DSP


不仅Kintex-7,全7系列FPGA(Artix、Kintex、Virtex)中带有的DSP资源都是DSP48E1,其基本结构如图5所示,主要由预加器(Pre-adder)、乘法器(Multiplier)、累加器/逻辑单元(Accumulator/Logic Unit)和模式检测器(Pattern Detector),


图5


内部的详细结构如图6所示,其中预加器输入来自输入端口A(30-Bit)和D(25-Bit);乘法器的输入来自输入端口B(18-Bit)和预加器结果(25-Bit),支持25-Bit X 18-Bit的运算;累加器/逻辑单元的输入来自乘法器结果和输入端口C(48-Bit),输入的模式组合由控制字OPMODE决定,运算模式由控制字ALUMODE决定。


图6


与BRAM类似,笔者通常采用封装原语的方式使用DSP48E1,在Language Template中选择48-bit Multi-Functional Arithmetic Block,然后根据需求配置参数,如需得到P=(A+D) x B + C,其中各参数配置需要根据DSP48E1的datasheet进行配置:


如图7红框中配置,OPMODE=7‘b0110101


图7


如图8红框中配置,INMODE=4’b0101


图8


如图9红框中配置,ALUMODE=4‘b0000


图9


封装代码见附件,经过vivado软件综合实现后,类似于图4,布局在DSP列中。


广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
Hoki 2017-01-11 17:35
LX9开发板呼吸灯实现
对LX9开发板硬件评测后,从这一节开始真正进入FPGA开发的世界。很多开发板的例程中必有跑马灯实验,老跑马也没意思,咱来把新潮的,整一个呼吸灯。 呼吸灯最初是出现在apple公司的笔记本产品中,当合上...
Hoki 2017-01-11 16:47
LX9的microblaze配置
虽然XC6SLX9芯片资源比较少,但是嵌一个microblaze还是搓搓有余的,这一节就来评测一下在XC6SLX9上microblaze的配置。 有两种方法配置microblaze,一是在ISE软件中...
Hoki 2017-01-11 16:32
zynq评测
Zynq芯片是业界第一款在FPGA中集成ARM核的芯片,由FPGA的发明者xilinx公司推出的。Zynq严格来说不能以FPGA来定义它,因为其是以处理器为中心的平台,能够在单芯片上提供软、硬件和 I...
Hoki 2017-01-11 16:19
u-boot
Zyny芯片启动加载分为3步: 1. 芯片上电启动,首先读取BootROM中的程序,初始化一些必要的外设,然后根据专用引脚电平判断该从何处启动first stage Bootloader(FSBL),...
Hoki 2017-01-11 16:09
基于zynq的交叉编译平台
Zynq芯片的最大特点是其集成了双ARM Cortex-A9处理器,因此zynq的应用基本是以这个ARM核为核心,再配合FPGA逻辑作为协处理器,几乎能实现所有较复杂的应用。并且在ARM上可以跑操作系...
Hoki 2017-01-11 15:54
u-boot image生成
这节介绍一下如何生成u-boot image文件,在SDK软件中点击Xilinx Tools→Create Boot Image工具即可生成,但是生成image文件需要首先集齐3个文件:u-boot....
我要评论
0
0
广告