找回密码
 注册
关于网站域名变更的通知
查看: 1663|回复: 10
打印 上一主题 下一主题

一个工程优化的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-7-14 08:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
我用的是xilinx-TQ144芯片,现在碰到工程占用资源过大的问题,导致程序不能Fit,结果发现是因为一个进程中case语句占用了整个芯片资源的40%左右,看了吓一跳.case语句是这样的, case cnt is
7 K3 S( T+ _3 j/ y" U                                     when 0=>............;: c: w% g+ \3 I5 d" X3 A  T0 P
                                     when 1=>............;
' I5 N' N3 U% N/ a# _" s3 a+ B4 U                                     when 2=>rsdout<=reg(2);4 [* O- \* F9 p- f
                                       .
1 [, h8 H) {) b1 Z                                       .
/ ^( Y# k/ f# N6 I* n  D' h/ \                                       .  X, A* m2 K% a( A: O8 T! i( c! E7 a
                                     when others=>rsdout<='1';/ [; x2 |1 p: w" S
                             end case;
% z$ H% d8 O0 A* U$ V# C                             cnt就只有0 to 20 而已;
% O  {1 f3 |# o+ j' _                             为什么case这么简单的20个赋值语句会占了这么大的资源呢;$ c, W! \. E3 {2 i& @
还请高手指点啊,谢谢

该用户从未签到

2#
 楼主| 发表于 2009-7-14 09:36 | 只看该作者
本帖最后由 chenqinte 于 2009-7-14 09:44 编辑
5 E5 |# B7 U3 T5 M8 j! w2 M7 C: y3 ^, k% I
找到原因了,不是语句的问题,是case语句里还包含了其他模块,但如何解决工程优化问题,我还是不是很了解,请大家帮忙了

该用户从未签到

3#
 楼主| 发表于 2009-7-14 10:51 | 只看该作者
现在发现了一个问题就是一个分频进程占用了蛮多的资源) i. ~* [% r1 ^7 R" U( S
PROCESS(CLKIN)  --1302分频,产生约9.6K时钟! y2 w% m  y4 _
BEGIN
3 G& o3 p7 ~' ]4 {' r5 ?    IF CLKIN'EVENT AND CLKIN = '1' THEN
6 T& S: ^3 r% m% M# s6 \             IF CNT_IDLE = IDLE_TIME THEN
* I, Z" a; z' F8 d1 _7 o                      CNTA <= 0;" |9 t; ]" \- N; w
                  ELSIF RSDIN = '0' AND CNTA < RS_CLK_DIV_HALF THEN5 m' ]% Z& C5 a: A( n% W) d. _9 d
                      CNTA <= CNTA + 1;
% V0 X$ p! V5 v+ ]+ {/ A1 [; V                  END IF;
( K$ R) ^4 _. J3 m                  
( x+ m2 i9 L6 ^% m, Z                  IF CNTA = RS_CLK_DIV_HALF2 OR CNTB = RS_CLK_DIV THEN
) k; g, ~5 C; l2 l- w                      CNTB <= 0;# H  y' {4 Z8 Z' `7 |
                  ELSE 1 ]0 G& p" M% }; d: _, T1 _
                      CNTB <= CNTB + 1;
6 W, S8 e$ S8 f; ^9 e2 T. A; s4 Z: ]                  END IF;
5 h$ V, v( {6 a# D9 K' I1 |+ q# b                  
  g  R3 j  Z7 Q$ |! J0 y                  IF CNTB < RS_CLK_DIV_HALF THEN
) f" F/ L6 K/ j$ _; J% d+ K                      CLK_RS <= '1'; ! U, k* F7 z7 `+ _# J8 _0 X
                  ELSE" e( f6 ~" |$ r+ r
                      CLK_RS <= '0';
& d5 J# }. Q- j( k5 R2 R. Y                  END IF;
3 l& ~! V: s( K/ M         END IF;% s1 a. q" }2 E) M
END PROCESS;
  E6 S8 e& `2 F9 z这分频可以改变一下,使它占用的资源降低吗

该用户从未签到

4#
发表于 2009-7-14 11:01 | 只看该作者
case语句里包含了其他模块,也就是说case语句和它里面的那个模块是串行工作的,你可以试试串并转换。将case语句中的其它模块提出来,让那个模块和case语句并行工作

该用户从未签到

5#
发表于 2009-7-14 11:06 | 只看该作者
分频进程必然会占用很多资源。所以如果还有多余的DCM资源的话,就用DCM做分屏吧

该用户从未签到

6#
 楼主| 发表于 2009-7-14 13:21 | 只看该作者
DCM是什么,如何用DCM来做分频呢

该用户从未签到

7#
发表于 2009-7-14 13:26 | 只看该作者
DCM是全局时钟资源,关于这个你可以看看书。

该用户从未签到

8#
 楼主| 发表于 2009-7-14 13:57 | 只看该作者
cpld也可以用全局时钟资源吗

该用户从未签到

9#
发表于 2009-7-14 16:00 | 只看该作者
不一定,有些芯片是没有DCM的。你要看芯片的datasheet

该用户从未签到

10#
 楼主| 发表于 2009-7-17 14:31 | 只看该作者
又碰到了一个问题,还请大家帮我看看.' ]. `5 y& P2 t! C* n
                  REG(5 DOWNTO 1) <= REG(4 DOWNTO 0);" q6 N4 j9 ]# K' i4 O7 R9 r/ f# C
                  REG(0) <= RSDIN;
8 W- H' I1 d& A, k, d这样的移位程序让我很是头疼;
; z6 ]' k8 s7 R                  REG(4 DOWNTO 1) <= REG(3 DOWNTO 0);# R0 ]; e9 F) m9 s: M
                  REG(0) <= RSDIN;5 `6 u* \- D0 A" F" v; L; I
2个移位语句只不过是下面一个比上面一个少移一位,资源的占用却完全不一样;& I9 ~6 G( R; [
上面的语句资源占用比下面的高多了,这是为什么;
1 `7 F' Y+ h9 |* t9 S  K' ]" ?) v* M移位语句也会占用很大的资源吗

该用户从未签到

11#
发表于 2009-7-20 17:13 | 只看该作者
这个你要看芯片的结构才能从根本上弄清楚原因。
/ x8 H# O9 g" a1 e1 s不过你可以先看 Technology Report,看一下综合出来的结果,然后再去看芯片的datasheet,找到为什么这样综合的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-5 03:18 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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