11.5典型实例20:FPGA片上硬件乘法器的运用
11.5.1实例的内容及方针
1.实例的主要内容
在FPGA+DSP体系规划体系中,FPGA常常作为DSP的协处理器来辅佐完结一些核算使命。而这些核算作业中最耗费时刻的便是乘法运算,因而本实例的主要内容便是协助读者学会调用硬件乘法IP核。
2.实例方针
经过本实例,读者应到达以下方针。
·了解硬件乘法器对算法的加速效果。
·把握FPGA片上硬件乘法器IP的调用办法。
11.5.2硬件乘法IP的运用办法
1.生成硬件乘法器
如图11.12所示,在“NewSource”里边挑选“IP(CoreGenArchitectureWizard)”,在右边的文件名里边输入“multiply”,单击“Next”按钮,翻开如图11.13所示的IP核类型挑选对话框。
图11.12新建IP核文件
图11.13新建乘法器IP核
在IP核类型挑选界面里边挑选MathFunctions→Multipliers→Multiplierv7.0,单击“Next”按钮,翻开乘法器IP核生成导游,如图11.14所示。
图11.14乘法器生成导游
在上面对话框里,“ComponentName”是要生成的模块的称号。“Parallel”和“Sequential”两个选项是用来挑选乘法器方式的,挑选并行结构能够加速乘法器的速度,可是一起要多占用一些资源。挑选“Constant”选项咱们会发现乘法器的B输入端口被屏蔽掉了,这时B将作为一个固定输入。
假如不挑选“Constant”选项,能够鄙人面的乘法器结构框里边挑选乘法器运用的资源品种,挑选“UseLUTs”将运用片上存储器资源,挑选“Use18*18MultiplierBlocks”将运用FPGA自带的DSP模块。“Virtex-IIMultiplierOptimization”框里边的选项只要在运用Virtex-II族器材的时分才干运用。
前面挑选了Constant选项,在这个对话框里边就要对乘法器的B输入进行设置,在ConstantValue后边输入B端口输入的数值(十进制),如图11.15所示。
在如图11.16所示的对话框里边设置输进口A的位宽和方式。
在如图11.17所示的对话框里边设置输出口的位宽和是否运用寄存器(运用输出寄存器的时分由Q口输出,不运用输出寄存器的时分由O口输出)。
在如图11.18所示的对话框里边挑选“MinimumPipelining”能够看见在最下面的“Information”框里边的输出推迟到达最小为1。在“RegisterOption”栏里边能够设置同步复位,异步复位和时钟使能。
图11.15设置端口B参数
图11.16设置端口A参数
图11.17设置输出端口
图11.18其他参数设置
装备完结今后单击“Generate”按钮就能够生成乘法器了。
2.运用硬件乘法器
本实例以一个IIR数字滤波的规划为例来演示硬件乘法器的运用办法。直接翻开实例的工程文件,如图11.19所示。其间IIR.v是IIR滤波器的规划文件,test.tbw为测验文件。
图11.19IIR数字滤波器工程目录
在IIR.v的文件中,能够看到硬件乘法器的调用办法。
reg[12:0]x1,x2,x3;//界说乘数a
reg[12:0]y1,y2,y3;
reg[12:0]q1,q2,q3;
wire[25:0]mul[10:1];//界说乘法的输出成果
multiplym0(.clk(clk),.a(x1),.o(mul[1]));//乘法器的调用,输入为a,输出为o
multiplym1(.clk(clk),.a(x2),.o(mul[2]));
multiplym2(.clk(clk),.a(x3),.o(mul[3]));
multiplym3(.clk(clk),.a(y1),.o(mul[4]));
multiplym4(.clk(clk),.a(y2),.o(mul[5]));
multiplym5(.clk(clk),.a(y1),.o(mul[6]));
multiplym6(.clk(clk),.a(y2),.o(mul[7]));
multiplym7(.clk(clk),.a(y3),.o(mul[8]));
multiplym8(.clk(clk),.a(q1),.o(mul[9]));
multiplym9(.clk(clk),.a(q2),.o(mul[10]));
运转仿真后,能够得到输出成果如图11.20所示。
图11.20IIR数字滤波器仿真成果
11.5.3小结
本节对生成和运用FPGA的片上硬件乘法器IP核的办法做了介绍,并经过编译下载在赤色飓风的开发板上完成了预订功用。