微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > bdf中连一根线,Total Logic Elements突然增加很多

bdf中连一根线,Total Logic Elements突然增加很多

时间:10-02 整理:3721RD 点击:
module getValue1(input clk,
                                        input [7:0]datinB,
                                        input ntrig,
                                        input rdclk,
                                        input [2:0] type1,
                                        input type_en,
                                        input req,
                                        output reg [7:0] datout,
                                        output reg [11:0]rdaddr,
                                        output reg busy,
                                        output reg RDY=0,
                                        output reg [11:0] wraddr
                                        );
                                       
        reg [2:0] TYPE=4;                                
        reg ntrig_next,busy_next,req_next,startWr;        //用于判断边沿,start标识边沿后持续时间段(标识一帧)
        reg [2:0] startRd;
        reg [7:0] datinB_next;  //datinA_next,用于判断过零点
        reg [15:0] zeroB[50:0];        //起/始像素点(过零点 pixel)
        reg [7:0] averB[25:0];//
        reg [7:0] memB[4095:0];
       
        reg [7:0]index_Bz,index_Bs ;//过零点 pixel 数组下标
        reg [7:0] index_Bv;//过零点 pixel 数组下标
        reg [15:0]index_Bm;//非零像素数组下标
       
        reg startBz;//非零区段标识
        reg [7:0] widthB;//
       
        reg [31:0] sumB;//sumA,
       
        reg [15:0]len_memB,len_Rd,len_zeroB;//
        reg [7:0] len_averB;//
       
always @(posedge clk)
begin
                       
//下降沿触发延时,延时一帧处理
                ntrig_next 0)) //起始点
                        begin
                                startBz 0)&&(datinB==0))//终了点
                        begin
                                startBz 0)&&((wraddr-zeroB[index_Bs]) 2)&&(widthB 0)&&(widthB 0)
                        begin
                                memB[index_Bm]=datinB;//自memA[2]开始存数据,[0:1]用于存长度
                                index_Bm =3647))
                begin                       
                        startWr 0)//
        begin
                datout >1][15:8];
                                if(rdaddr[0]==1)        datout >1][7:0];
                        end       
                        3'h5://读取平均值数组B
                                        datout =len_Rd)&&(rdaddr!=0))//if(rdaddr>=len_Rd)//
        begin
                startRd<=0;       
                RDY<=0;
                rdaddr<=0;
                len_Rd<=0;
        end       
       
end
endmodule
主要占用资源的是以上模块,加上后Total Logic Elements由10%直接增加到94%,芯片型号是cyclone 4 E系列。
图中,如果不把typeA[2..0]连接到getvalue1,Total Logic Elements只用了10%,连接上后,Total Logic Elements直接飙到了94%,请问是哪里出了问题,还是getvalue1模块的问题,getvalue1中的代码有什么优化的方法可以减少Total Logic Elements的使用。





模块连线与资源使用情况在附件图中。

小编,你好!我也遇到了类似的问题,不知道你解决了吗,想问一下为什么。我邮箱sdxuliming@126.com.谢谢啊,有问题多交流!

typeA是不是就是代码里的type? 然后代码里clk和rdclk分别是多少M?如果是高频的时钟频率你的代码有异步时钟域之间的信号交互情况,例如len_zeroB,这样很容易引入不稳定状态;但是不是会造成资源消耗增加就不好说了,

程序我没有细看,我猜想你是不是之前的程序很多倍综合了,加了一根线后才是正常的?我之前遇到过,找到的原因是这个

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top