搜索
bottom↓
回复: 14

FIT过程提示宏单元不够,怎样减少宏单元?急

[复制链接]

出0入0汤圆

发表于 2011-7-26 16:42:52 | 显示全部楼层 |阅读模式
ERROR:Cpld:837 - Insufficient number of macrocells. The design needs at least 104 but only 36 left after allocating other resources.
Device 9536XL44VQ was disqualified.
ERROR:Cpld:868 - Cannot fit the design into any of the specified devices with the selected implementation options.

求助

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-7-26 18:09:26 | 显示全部楼层
在线等高手回答啊

出0入0汤圆

发表于 2011-7-26 18:12:00 | 显示全部楼层
减少各种意义上的状态机……

话说回来,需求104个,实有36个……楼主你要真是让别人帮忙改了韧件设计就能用的话,我觉得以你现有的水平,回校重修会比较好……

出0入0汤圆

 楼主| 发表于 2011-7-26 18:20:18 | 显示全部楼层
我没用到状态机,修改下面这段代码就不够用了,有没好办法优化下的  
process(clk,cmd,kout)
variable cnt_ain:std_logic_vector(7 downto 0):="00000000";
variable cnt_bin:std_logic_vector(7 downto 0):="00000110";
begin
   if cmd="00000000" then
        clkout_a<=clk_a;clkout_b<=clk_b;
       else
                     if (clk'event and clk='1') then
                        case kout is
                        when '1'=>cnt_ain:=cnt_ain+1;cnt_bin:=cnt_bin+1;
                                      if (cnt_ain<=(cnt_a)) then clkout_a<='1';            
                          else  clkout_a<='0';
                                                      if (cnt_ain>=(cnt_b)) then cnt_ain:="00000000";
                                                                end if;
                                                                end if;
                                       if (cnt_bin<=(cnt_a)) then clkout_b<='1';            
                           else clkout_b<='0';
                                                      if (cnt_bin>=(cnt_b)) then cnt_bin:="00000000";
                                                                end if;
                        end if;
                        when '0'=>cnt_ain:=cnt_ain-1;cnt_bin:=cnt_bin-1;
                                       if (cnt_ain>(cnt_b-1)) then cnt_ain:=cnt_b-1;clkout_a<='1';            
                           else
                                                                     if (cnt_ain>=(cnt_a)) then clkout_a<='1';
                                                                          else clkout_a<='0';
                                                                end if;
                                                                end if;
                        if (cnt_bin>(cnt_b-1)) then cnt_bin:=cnt_b-1;clkout_b<='1';            
                           else
                                                                     if (cnt_bin>=(cnt_a)) then clkout_b<='1';
                                                                          else clkout_b<='0';
                                                                end if;
                                                                end if;               
                        when others=>clkout_b<='0';clkout_a<='0';
                        end case;
                        end if;
    end if;
end process;

出0入0汤圆

 楼主| 发表于 2011-7-26 18:23:22 | 显示全部楼层
删除掉关于计数器cnt_bin的代码能减少40多个宏单元

出0入0汤圆

发表于 2011-7-26 18:31:13 | 显示全部楼层
哦,已经有人说了些了

总之,楼主还是讲讲设计目标吧

出0入0汤圆

 楼主| 发表于 2011-7-26 18:41:53 | 显示全部楼层
根据给定的8位拨码开关状态,对编码器输出的2路正交脉冲进行分频,分频后的脉冲也需要正交

出0入0汤圆

发表于 2011-7-26 19:42:31 | 显示全部楼层
VHDL 看着已经很生疏了,而且手头也没仿真工具,虽然应该看出一些问题,不过,索性还是你自己先说说你自己的实现思路吧

出0入0汤圆

发表于 2011-7-26 22:14:58 | 显示全部楼层
回复【6楼】scfor
根据给定的8位拨码开关状态,对编码器输出的2路正交脉冲进行分频,分频后的脉冲也需要正交
-----------------------------------------------------------------------

不就是个编码器,能有多高的速度?10K?总上不到100K吧?
用单片机实现你的方案,比CPLD好。
你想想,你输入是8位编码开关,那至少是129种或以上的分频方案,才需要8位开关吧。
你怎么个CPLD呢!
你为什么要用CPLD呢?

出0入0汤圆

发表于 2011-7-26 22:25:42 | 显示全部楼层
回复【8楼】Cliff  
回复【6楼】scfor
根据给定的8位拨码开关状态,对编码器输出的2路正交脉冲进行分频,分频后的脉冲也需要正交
-----------------------------------------------------------------------
不就是个编码器,能有多高的速度?10k?总上不到100k吧?
用单片机实现你的方案,比cpld好。
你想想,你输入是8位编码开关,那至少是129种或以上的分频方案,才需要8位开关吧。
你怎么个cpld呢!
你为什么要用cpld呢?
-----------------------------------------------------------------------

楼主已经消失了……

出0入0汤圆

 楼主| 发表于 2011-7-27 11:18:06 | 显示全部楼层
现在够用了,真不知道这些macrocells,product terms是怎么占用的

出0入0汤圆

发表于 2011-7-27 11:27:35 | 显示全部楼层
回复【10楼】scfor  
现在够用了,真不知道这些macrocells,product terms是怎么占用的  
-----------------------------------------------------------------------

你拿前后程序对比下不就好了

出0入0汤圆

 楼主| 发表于 2011-7-27 11:30:56 | 显示全部楼层
完全不一样怎么对比,有时删掉一条语句,资源占用还要多,无法理解

出0入0汤圆

发表于 2011-7-27 17:45:37 | 显示全部楼层
楼主可以这样理解,一个宏单元对应一个D触发器,做一个32位的计数器需要32个宏单元

出0入0汤圆

发表于 2011-7-27 19:47:02 | 显示全部楼层
我大概明白了……你其实是在以标准C语言的思路去考虑HDL……

建议还是先重新从头学学HDL吧……HDL拿来做流程控制,那是迫不得已中的迫不得已才可以稍微考虑的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 13:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表