原创 【博客大赛】BRAM和DSP间的纠缠(一)

2014-3-7 15:42 2427 17 18 分类: FPGA/CPLD 文集: xilinx FPGA

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

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

20140307154047272001.jpg

1

         下面分别介绍一下Kintex-7系列FPGABRAMDSP资源的使用:

1. BRAM

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

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

20140307154056413002.jpg

2

20140307154104454003.jpg

3

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

20140307154110501004.jpg

4

2. DSP

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

20140307154117963005.png

5

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

20140307154123207006.png

6

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

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

20140307154129139007.jpg

7

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

20140307154137458008.jpg

8

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

20140307154144274009.jpg

9

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

文章评论1条评论)

登录后参与讨论

用户1017176 2014-3-23 04:48

学习了,一直对fpga中的dsp感兴趣,只是项目关系一直涉及不到,感觉非常有前途。
相关推荐阅读
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....
我要评论
1
17
关闭 站长推荐上一条 /2 下一条