FPGA内部资源(一)DSP48E1

打印 上一主题 下一主题

主题 901|帖子 901|积分 2703

一、 实验过程中发现的问题

利用ISE举行项目标实现时出现以下错误。


意思很简朴,就是利用DSP48E1的数量超出限定,由于没有接触过DSP48E1,所以尝试了很多错误的方法后,我找到项目下的.mrp文件,内里有一行显示  Number of DSP48E1s:  496 out of     480   103%,也就是说我利用的 XC6V1x130t 型号FPGA只有480个DSP48E1,但是我利用了496个。
我的项目中用到了4个fir滤波器,都是160阶的,而且其中两个系数对称,别的两个系数不对称,我在代码中尝试添加其中的某个滤波器,发现系数对称的滤波器会占用80个DSP48E1,系数不对称的fir滤波器会占用160个DSP48E1,并且结合查阅到的资料,DSP48E1主要是用来做乘法器利用的,这就非常公道了。
于是,我适当减少了fir滤波器的系数个数,最终可以乐成实现。
二、学习DSP48E1


图中带*号的信号是级联专用信号,只在级联时利用,用户逻辑访问不了。我们只需要关注A、B、C、D、P、INMODE、OPMODE、ALUMODE这几个信号的利用即可。
INMODE


上图主要反映了INMODE与打拍寄存器的关系,可以用下面两个表概括,INMODE一般配置为7'b0000101,做乘法器利用。


OPMODE

X、Y、Z输出与OPMODE的关系如下表所示。


ALUMODE

最终P端口输出与ALUMODE的关系如下所示,其中的CIN就是48位输入信号C。

例程

[code]`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2024/06/19 16:58:05// Design Name: // Module Name: tb_DSP48E1// Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision:// Revision 0.01 - File Created// Additional Comments:// //////////////////////////////////////////////////////////////////////////////////module tb_DSP48E1();    reg R_clk;    reg R_reset;    reg[29:0] R_A;    reg[24:0] R_D;    reg[47:0] R_C;    reg[17:0] R_B;    wire[47:0] W_P;    wire[47:0] W_PCIN;    reg[4:0] INMODE;    reg[6:0] OPMODE;    reg[3:0] ALUMODE;    reg[3:0] R_num;    initial begin        R_clk = 1'b0;        R_reset = 1'b1;        R_A = 30'd100;        R_B = 18'd2;        R_C = 48'd2000;        R_D = 25'd200;        R_num = 4'd0;        OPMODE = 7'b0000101;        // X-M  Y-M  Z-0        INMODE = 5'b00101;          // (D+A1) * B2      这三个输出刚好对齐,第三拍得到运算效果        ALUMODE = 4'b0000;          // X+Y+Z+C        #100 R_reset = 1'b0;    end    always#5 R_clk = ~R_clk;    always @(posedge R_clk) begin        if(R_reset)begin            R_A

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表