资源占用方面的问题!!知道的大神请进来看看

2019-03-25 08:38发布

我最近写的程序里,做了一个计数寄存器,当定义该寄存器为13位时,占用的总的LE资源为28%,当定义为14位时,资源占用就达到了94%,我想请教您这是怎么回事?占用大资源差别会这么大?还有,资源占用率超过了90%会不会造成不稳定等的影响呢?有知道的童鞋么?指导一下,谢谢啦 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
00750
1楼-- · 2019-03-25 12:09
 精彩回答 2  元偷偷看……
织染
2楼-- · 2019-03-25 12:59
用于计数的寄存器,我没说清楚。
00750
3楼-- · 2019-03-25 14:17
你不妨仔细想一想,计数器增加一位,触发器肯定要增加一个,但是与之相关的组合逻辑需要增加多少呢?想通这个,你的问题就有答案了。
织染
4楼-- · 2019-03-25 18:08
原帖由 00750 于 2013-1-22 19:08 发表
你不妨仔细想一想,计数器增加一位,触发器肯定要增加一个,但是与之相关的组合逻辑需要增加多少呢?想通这个,你的问题就有答案了。

  我明白您的意思,但是我在同一个程序里还有另外一个计数的寄存器,16位的,它注销与否资源占用却不会变化多少,不知道这是什么原因呢。谢谢您的回答
eeleader
5楼-- · 2019-03-25 19:55
具体问题还许要你的程序贴出来让大家评论一下。
织染
6楼-- · 2019-03-25 21:54
原帖由 eeleader 于 2013-1-22 20:53 发表
具体问题还许要你的程序贴出来让大家评论一下。

好的。
第一个16位的计数器如下,将其注销与否对程序资源占用率没有太大影响
always @(posedge SYSCLK or negedge RST_B)
if (!RST_B) Half_period_CNT<=`UD 16'h0;
else  Half_period_CNT<=`UD Half_period_CNT_N;

always @(*)
begin
if (TX_finish_sin)
Half_period_CNT_N=Half_period_CNT+1'h1;
else if(TX_finish_sin==0)
Half_period_CNT_N=16'h0;
else  Half_period_CNT_N=Half_period_CNT;
end

我上面问题中的计数器,就是从13位到14位资源占用率变化很大的那个计数器如下:
always @(posedge SYSCLK or negedge RST_B)
if (!RST_B) Data_pack_cnt<=`UD 13'h1fff;  
  else Data_pack_cnt<=`UD Data_pack_cnt_N;

always @(*)
if(TR_CONTROL_CS==RX_FINISH)        
  Data_pack_cnt_N= 13'h1fff;
else if(TR_CONTROL_CS==RX_HEAD)
  Data_pack_cnt_N= 13'h0;
else if(HEAD_ERR_internal)      
Data_pack_cnt_N=Data_pack_cnt+1'h1;   
else  Data_pack_cnt_N=Data_pack_cnt;

谢谢各位了!!

一周热门 更多>