EDA365电子工程师网
标题:
一个工程优化的问题
[打印本页]
作者:
chenqinte
时间:
2009-7-14 08:12
标题:
一个工程优化的问题
我用的是xilinx-TQ144芯片,现在碰到工程占用资源过大的问题,导致程序不能Fit,结果发现是因为一个进程中case语句占用了整个芯片资源的40%左右,看了吓一跳.case语句是这样的, case cnt is
7 `4 Q, F! `/ |8 h6 J3 Q
when 0=>............;
6 O- K$ H! \7 S
when 1=>............;
5 ?% y0 \& \5 h( Y. y9 Z
when 2=>rsdout<=reg(2);
; s% Q* ^; ~! \! b. p' v `
.
6 M b; Z8 D1 v, `% s# \1 N
.
0 L0 Q( O3 j# `3 h2 R
.
0 C, E! s6 E1 y0 e+ v
when others=>rsdout<='1';
0 i) }+ ?* P9 p! r$ H
end case;
, Z) G3 a: R5 H. i0 D i! F: {
cnt就只有0 to 20 而已;
1 U7 ~& a( t2 N
为什么case这么简单的20个赋值语句会占了这么大的资源呢;
4 P; R5 Q& u; S6 C9 O/ Z
还请高手指点啊,谢谢
作者:
chenqinte
时间:
2009-7-14 09:36
本帖最后由 chenqinte 于 2009-7-14 09:44 编辑
" C$ u0 V# A) p7 v4 z
* |; d7 G2 N% B5 m* E
找到原因了,不是语句的问题,是case语句里还包含了其他模块,但如何解决工程优化问题,我还是不是很了解,请大家帮忙了
作者:
chenqinte
时间:
2009-7-14 10:51
现在发现了一个问题就是一个分频进程占用了蛮多的资源
8 D2 U7 a* p. _, A4 Z) s1 W
PROCESS(CLKIN) --1302分频,产生约9.6K时钟
) {5 `& o# a" r
BEGIN
( t6 p, b# K. f+ \
IF CLKIN'EVENT AND CLKIN = '1' THEN
9 g2 ]1 h7 ?$ n
IF CNT_IDLE = IDLE_TIME THEN
: n, E5 ~4 O+ ^6 [% E; l9 {
CNTA <= 0;
8 [* ^/ X0 v$ I( `* P7 }0 {
ELSIF RSDIN = '0' AND CNTA < RS_CLK_DIV_HALF THEN
1 B7 G2 k s9 }, U1 Q/ G
CNTA <= CNTA + 1;
0 F% n d0 L& G$ S( s' p
END IF;
* D5 x9 T5 x8 ?8 t' ^: i% a- E/ ]
1 X* U1 ~0 s. m0 L( m
IF CNTA = RS_CLK_DIV_HALF2 OR CNTB = RS_CLK_DIV THEN
3 c2 a$ W& c, B# X1 ~
CNTB <= 0;
- ?; Q' f- N! F+ J2 H
ELSE
0 k* ?* ~0 F( R1 I8 I9 v
CNTB <= CNTB + 1;
# R, X0 w0 L) B$ I7 o) d1 f
END IF;
4 ~3 {. v7 C% n2 ^1 s. z0 s: m7 _ o
& Y5 w- }& c+ v/ s5 n$ n) q, T
IF CNTB < RS_CLK_DIV_HALF THEN
+ Z. w+ K# `. D
CLK_RS <= '1';
- Y* L- c- ]- C" M6 ~1 w5 M/ v/ _
ELSE
% Y8 [8 O8 _* ~/ k9 a0 W
CLK_RS <= '0';
. X( w: o8 T" S& _& s. d
END IF;
! j/ @5 p0 w& B; X0 r% q; W
END IF;
7 C* U6 k4 w1 l" d$ Y
END PROCESS;
+ `. h2 l- w5 ]9 a
这分频可以改变一下,使它占用的资源降低吗
作者:
flyingwxj
时间:
2009-7-14 11:01
case语句里包含了其他模块,也就是说case语句和它里面的那个模块是串行工作的,你可以试试串并转换。将case语句中的其它模块提出来,让那个模块和case语句并行工作
作者:
flyingwxj
时间:
2009-7-14 11:06
分频进程必然会占用很多资源。所以如果还有多余的DCM资源的话,就用DCM做分屏吧
作者:
chenqinte
时间:
2009-7-14 13:21
DCM是什么,如何用DCM来做分频呢
作者:
flyingwxj
时间:
2009-7-14 13:26
DCM是全局时钟资源,关于这个你可以看看书。
作者:
chenqinte
时间:
2009-7-14 13:57
cpld也可以用全局时钟资源吗
作者:
flyingwxj
时间:
2009-7-14 16:00
不一定,有些芯片是没有DCM的。你要看芯片的datasheet
作者:
chenqinte
时间:
2009-7-17 14:31
又碰到了一个问题,还请大家帮我看看.
5 Z. K2 U+ f3 v2 v
REG(5 DOWNTO 1) <= REG(4 DOWNTO 0);
: ~, ?# w2 Q9 I, \% ?
REG(0) <= RSDIN;
7 ]0 Q6 f. v" t7 N$ E) x6 f% y$ F8 J
这样的移位程序让我很是头疼;
4 v8 e0 D- d: O3 }- g
REG(4 DOWNTO 1) <= REG(3 DOWNTO 0);
' K1 M' ~) i8 D' ?
REG(0) <= RSDIN;
# E {, u% C I4 L3 `
2个移位语句只不过是下面一个比上面一个少移一位,资源的占用却完全不一样;
9 [7 S7 j4 g& d( }7 T- x9 E
上面的语句资源占用比下面的高多了,这是为什么;
1 M. t- U7 q: _5 X* Z
移位语句也会占用很大的资源吗
作者:
flyingwxj
时间:
2009-7-20 17:13
这个你要看芯片的结构才能从根本上弄清楚原因。
& j9 T3 R: T, J4 }( d, {
不过你可以先看 Technology Report,看一下综合出来的结果,然后再去看芯片的datasheet,找到为什么这样综合的原因。
欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/)
Powered by Discuz! X3.2