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

一个工程优化的问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我用的是xilinx-TQ144芯片,现在碰到工程占用资源过大的问题,导致程序不能Fit,结果发现是因为一个进程中case语句占用了整个芯片资源的40%左右,看了吓一跳.case语句是这样的, case cnt is! i9 B" q/ V6 n! s5 x* Y) C
                                     when 0=>............;
! L2 F# B; x. E4 u. e- g8 E% y                                     when 1=>............;
0 l/ F' z2 {5 o$ o. ?                                     when 2=>rsdout<=reg(2);
7 T! w% V# d" z# U                                       .
6 ?5 e' ~: o4 i! Z: ?5 m! E                                       .
( @: J; e4 O  E3 r1 Z1 V                                       .
4 t3 g7 b3 J6 S9 f& _8 M9 ^                                     when others=>rsdout<='1';5 r  a: N. S: N) q9 _% `- ?* d
                             end case;0 o8 T+ U( U2 H8 G3 T
                             cnt就只有0 to 20 而已;. ~  O+ T4 _  S
                             为什么case这么简单的20个赋值语句会占了这么大的资源呢;
/ [( j4 s$ k  R" q5 y还请高手指点啊,谢谢

该用户从未签到

2#
 楼主| 发表于 2009-7-14 09:36 | 只看该作者
本帖最后由 chenqinte 于 2009-7-14 09:44 编辑
. g5 x% j, a% H7 m6 t
' f; a2 S: d: f. b7 l找到原因了,不是语句的问题,是case语句里还包含了其他模块,但如何解决工程优化问题,我还是不是很了解,请大家帮忙了

该用户从未签到

3#
 楼主| 发表于 2009-7-14 10:51 | 只看该作者
现在发现了一个问题就是一个分频进程占用了蛮多的资源
) F) ?1 Z$ Q1 U, x( x& ZPROCESS(CLKIN)  --1302分频,产生约9.6K时钟
" o6 q: i' @8 b2 Y9 _BEGIN
: _' A! ?; ^0 H& s    IF CLKIN'EVENT AND CLKIN = '1' THEN* P. n. [7 l! M' {( H3 A3 V
             IF CNT_IDLE = IDLE_TIME THEN
* W1 G" n7 C& P8 [0 t. N                      CNTA <= 0;0 {+ }7 ~. L8 g% [: c; R, O
                  ELSIF RSDIN = '0' AND CNTA < RS_CLK_DIV_HALF THEN
6 i4 G( `0 `/ U, n                      CNTA <= CNTA + 1;
' c7 v: ?9 y# G6 b2 T" ]                  END IF;
# K! _" E' O$ d0 x                  
1 s; g, I* }0 L. D# F                  IF CNTA = RS_CLK_DIV_HALF2 OR CNTB = RS_CLK_DIV THEN2 A8 ?2 m; x* K! i6 g) g! X
                      CNTB <= 0;
5 ]( X2 v7 a# K* y                  ELSE 5 o7 w7 D- M0 J6 n7 P1 J
                      CNTB <= CNTB + 1;
% w& x5 q. j2 j1 H6 {                  END IF;: g; r3 [1 u. Z; |, P+ X
                  
6 N0 d8 Q6 M" h! m$ _                  IF CNTB < RS_CLK_DIV_HALF THEN
9 g8 z' N1 X' ]$ \! o6 P                      CLK_RS <= '1'; * T3 e# F4 f/ S4 f( V! @! p
                  ELSE( V  B# j2 q/ Q4 Q2 `7 r5 |6 ~% Y
                      CLK_RS <= '0';
% A9 C; c/ F: f8 o/ |                  END IF;
$ L- i# i4 d' q- Y4 G! m) m" C2 ?         END IF;
3 S  f( N) q6 y$ U5 FEND PROCESS;
9 g$ R! T# q  M' }5 V这分频可以改变一下,使它占用的资源降低吗

该用户从未签到

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 | 只看该作者
又碰到了一个问题,还请大家帮我看看.0 ]) E4 I, g1 D$ n/ L
                  REG(5 DOWNTO 1) <= REG(4 DOWNTO 0);/ X  ~& c9 p+ F8 G
                  REG(0) <= RSDIN;
9 F5 s2 m0 f! o9 `8 O  ]这样的移位程序让我很是头疼;, g' E: M0 \, d
                  REG(4 DOWNTO 1) <= REG(3 DOWNTO 0);
  ~- K1 j5 W4 m* e- R4 i                  REG(0) <= RSDIN;( N; C* U! u3 e$ I: u7 q  Y
2个移位语句只不过是下面一个比上面一个少移一位,资源的占用却完全不一样;) N8 I2 r; A9 A/ T, E4 q
上面的语句资源占用比下面的高多了,这是为什么;
0 j& U7 f0 Q3 w- b1 y- ~5 f移位语句也会占用很大的资源吗

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-19 22:27 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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