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

一个工程优化的问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我用的是xilinx-TQ144芯片,现在碰到工程占用资源过大的问题,导致程序不能Fit,结果发现是因为一个进程中case语句占用了整个芯片资源的40%左右,看了吓一跳.case语句是这样的, case cnt is
0 ]+ P' ?0 F* k) V7 g/ |                                     when 0=>............;
. j/ ]0 \# r1 L1 N& e                                     when 1=>............;
  G1 i+ O6 ?* N7 i  f                                     when 2=>rsdout<=reg(2);
& e% l% O* Q# c+ N                                       .2 Y5 x8 K+ x4 Y- b6 K; X3 x( m8 p/ R
                                       .; `, p* Y9 p) P) t* S4 h
                                       .
' L' G8 e/ i- e0 B, f, F& D                                     when others=>rsdout<='1';
8 ~! R3 l  [- f# [; `                             end case;
/ w; i9 `' Y6 _                             cnt就只有0 to 20 而已;
$ t. R6 S& W1 F8 ~. g! k6 X( ~                             为什么case这么简单的20个赋值语句会占了这么大的资源呢;
, f  e: a, F* X. X  Z/ X还请高手指点啊,谢谢

该用户从未签到

2#
 楼主| 发表于 2009-7-14 09:36 | 只看该作者
本帖最后由 chenqinte 于 2009-7-14 09:44 编辑 ( [8 v# r; [( T- h! }; x2 n
: \; d' _+ ?) Q( |$ _1 P0 N
找到原因了,不是语句的问题,是case语句里还包含了其他模块,但如何解决工程优化问题,我还是不是很了解,请大家帮忙了

该用户从未签到

3#
 楼主| 发表于 2009-7-14 10:51 | 只看该作者
现在发现了一个问题就是一个分频进程占用了蛮多的资源
) V1 @) f% H) L! M  v2 h) _: |PROCESS(CLKIN)  --1302分频,产生约9.6K时钟
6 ~4 I  H7 J. J, u9 ~" dBEGIN+ k  @2 ^$ a7 C; S5 T8 z) C
    IF CLKIN'EVENT AND CLKIN = '1' THEN% [) L4 S9 \5 g. ~) I
             IF CNT_IDLE = IDLE_TIME THEN# m# Y: ~9 b7 @' L
                      CNTA <= 0;) y) Q0 T0 U( r5 f; K" f
                  ELSIF RSDIN = '0' AND CNTA < RS_CLK_DIV_HALF THEN
- E/ C( Q7 K0 M5 F+ q                      CNTA <= CNTA + 1;
# n0 F! R3 P/ j) F! ]0 k  D8 L; h                  END IF;9 i% q) \9 [8 d$ v) C
                  : p4 l6 }7 N! z5 }
                  IF CNTA = RS_CLK_DIV_HALF2 OR CNTB = RS_CLK_DIV THEN8 c4 b) j& o# i. A' {* p8 t
                      CNTB <= 0;
- M% W% B( _6 ^                  ELSE " n# b; b2 Z7 W; z. _+ |7 p
                      CNTB <= CNTB + 1;1 j- C& n/ `% m, b5 ^
                  END IF;
- j$ ]2 D% [+ ~  r                  5 o5 P8 B' x( ]6 _# |
                  IF CNTB < RS_CLK_DIV_HALF THEN5 u9 e3 e3 ^* G! q% F3 k% H7 d$ N/ }$ M
                      CLK_RS <= '1'; 3 z- \& Z0 V: }1 Z
                  ELSE
. @! C6 w" s) v; S1 r                      CLK_RS <= '0';
; Q# U6 {: u  l! K9 L, f                  END IF;. g# T7 i8 G; K
         END IF;
  Y; p) o5 G5 g; VEND PROCESS;
" k1 m* O8 f8 F  z# f5 i这分频可以改变一下,使它占用的资源降低吗

该用户从未签到

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 | 只看该作者
又碰到了一个问题,还请大家帮我看看.
, H, A9 r$ U- k5 A! c                  REG(5 DOWNTO 1) <= REG(4 DOWNTO 0);
+ y! V5 S0 G$ m3 Q, y3 N; l$ f; m                  REG(0) <= RSDIN;
/ b) Z6 A/ K9 {0 G; Q5 A( f" c' d! X这样的移位程序让我很是头疼;
9 R! m9 w9 y8 k* m- y/ X. S                  REG(4 DOWNTO 1) <= REG(3 DOWNTO 0);1 L; Y1 ?7 F# A, }9 G) a
                  REG(0) <= RSDIN;
2 {2 m7 F( Y& W. l- o* v2个移位语句只不过是下面一个比上面一个少移一位,资源的占用却完全不一样;% @6 p8 x  J: \7 r
上面的语句资源占用比下面的高多了,这是为什么;
, Z* ~' ~; i) U) C7 G5 _移位语句也会占用很大的资源吗

该用户从未签到

11#
发表于 2009-7-20 17:13 | 只看该作者
这个你要看芯片的结构才能从根本上弄清楚原因。
3 X" c$ o! \" F: e6 h7 @不过你可以先看 Technology Report,看一下综合出来的结果,然后再去看芯片的datasheet,找到为什么这样综合的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-19 09:46 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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