|
使用軟體:MAX+plus 2
- i$ @$ s/ y. Y% o2 J$ E9 A
4 @) ~' S3 w" l, n錯誤訊息:warning Line 101:File c:\documents and setting\adminstrator\桌面\anew.vhd:
) @5 T, O9 u$ f- s! t# ?% RFuond multiple assignmengs to the same singal or signal bit"cutting0"in a Process Statement-. W ^( ]5 q9 i1 ]! f/ R, R2 `
only the lase assignment will take effect
4 b Z' T- I8 L- W, }& x, g程式說明:
1 x4 V) t7 N- M1 H! Zentity anew is
) K4 l/ d: F) |# a8 I port ($ L6 w2 g" N m5 h! d' o
clock:in std_logic;
9 D6 j5 J% l/ G8 z- R! Z enable:in std_logic;4 X0 c' H: P- n7 P- K
direction:in std_logic;7 D+ D; K- g5 d" c c) M
selection:in std_logic_vector(1 downto 0);1 {; \0 Q5 O; m/ b+ M
cutting:out std_logic_vector(3 downto 0);
4 o. e% g' k% I3 T& l phase:out std_logic_vector(3 downto 0));
/ N) W0 B7 P4 d. H' m4 {. M1 [! Iend anew;
2 ^: d5 H1 ]* s2 c" g
2 X4 x' I7 s) Yarchitecture wena of anew is
% P t/ f; g/ a- I* o% vbegin
) ~' K9 U, D/ c4 q5 j process(clock,enable,direction,selection)
1 Q+ r/ B/ E c4 m) U" K & [9 m( N* M/ R0 i! U8 t
variable countcut2:integer range 0 to 3;
1 A4 m3 o6 H' M- h variable countcut3:integer range 0 to 7;- u' U* g2 z. W, g4 s
variable countcut4:integer range 0 to 15;0 \+ ~6 `4 `1 `$ S% f: G
variable countphase:integer range 0 to 7;! F5 G; m% i) M3 w% x
cutting a' @% M/ S2 A. p3 G# u. L$ j
宣告的四個variable均是對同一個輸出而設定8 X3 E! u1 H6 L, W; p5 [
如果 variable countcut1:integer range 0 to 3;則輸出到cutting(1 downto 0)$ c7 q6 l7 u4 {/ _ } m$ T6 m: a
如果 variable countcut2:integer range 0 to 3;則輸出到cutting(2 downto 0)
/ O6 J: N) v. c& h* q& ?如果 variable countcut3:integer range 0 to 3;則輸出到cutting(3 downto 0); {0 Q3 H, i2 A, }5 J0 A& }
以上的指定是用 : case is when ...
" g6 ~8 ~: U* `" m) h* [) \但四種狀態是個別發生$ F2 k- G% v+ V0 h
4 @6 t: f1 i- ~6 H出現的訊息說不能重覆設定不然只以最後一個設定為準. z* s& Z7 V# R& C# U; _
( ^% p" A7 k2 R _7 ]" X, x5 A- p請問有什麼方法可以解決此問題嗎
" A9 U7 ^- ?2 k; V因為不想設定這麼多支接角(epm7032)4 K6 Q) S; j, i9 @0 e/ z
也有試過將cutting:out std_logic_vector(3 downto 0);9 v. t- H3 ?8 s/ O, t* P
再分成用alias的子集合..但也不行
& [: H2 z; d/ z( m; S; |7 A7 v4 q2 I+ X7 r% O4 P) V$ U
麻煩前輩指導 |
|