Chip123 科技應用創新平台

標題: VHDL新手上路,程序Bug請教 [打印本頁]

作者: ultraman    時間: 2013-10-18 09:15 PM
標題: VHDL新手上路,程序Bug請教
一般dly'event and dly='1'是不能寫在case裡面嗎?
8 r; _9 ?: b. U0 L( O( \- d, o' p" B因編譯會出現以下訊息: y8 l# p" u  z) _
Error (10822): HDL error at CUB.vhd(70): couldn't implement registers for assignments on this clock edge
5 }# l3 V( W" X7 \Error: Can't elaborate top-level user hierarchy6 U  @8 q/ h. ~: Z) [$ G) T2 }
Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 15 warnings& c3 I7 ]/ B. B* W8 ?) H5 r# a
        Info: Allocated 144 megabytes of memory during processing
2 ^6 Y! U1 u9 @( X; f. _        Error: Processing ended: Fri Oct 18 21:24:23 2013
6 C6 ~& ^2 u: V0 `! V8 @        Error: Elapsed time: 00:00:02; U$ N5 f9 A9 C- _$ s' u
Error: Quartus II Full Compilation was unsuccessful. 2 errors, 15 warnings
9 c' \" p3 _6 _' g( s, y0 m0 Y3 s. P& @1 h  `* T: U
程序如果寫的不好,可以幫我改寫,因是自學,所以比較少機會可以看到其它人的寫法!+ Q! |3 D+ O8 i! U; D6 i6 N( c
. ~) a! A7 u+ z

. y2 i% I) G/ q: V) u
# k9 ?6 h2 X3 s7 \& c
8 J: e9 D/ Z; d' ALibrary ieee;$ l) D7 C9 v$ z# {& ^6 b; e& g
Use ieee.std_logic_1164.all;+ F& m7 j& _! j: }( w' C% |2 h
Use ieee.std_logic_unsigned.all;4 g& c0 E* @2 I% [9 W3 l) n# q( q& y1 K
Use ieee.std_logic_arith.all;
! ~/ R! F4 G6 n2 w
6 o* r! M" b2 U( J  U' y1 K/ ^: REntity CUB is
; Q+ C* \6 R, ]2 \& G' MPort(; @7 Q( u) L8 F. e! L
        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;
+ Y  B/ }: u, q        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic$ H. E- t1 M8 D/ q& a
);
( d: b( f0 j3 H5 M, W3 gend CUB;6 ~, l( B4 `% q4 {' u7 S! B

0 w( c7 D# M. B6 nArchitecture cub_arc of CUB is( ]! {% w9 n2 Y# A6 O5 h) K- C
signal d : std_logic_vector(2 downto 0);
, i7 p6 t' a/ b/ LBegin) v# l- [/ p" w# i& P
# F$ p" F& S. t0 e" g/ d' _4 o
proce1rocess(coll_manu,coll_auto,count_v2)
: [1 Z7 G8 G$ d' ?% q- IBegin4 }: ?5 K4 _7 W- y* Y
        if coll_auto='0' then
! J/ x! y8 w2 A; I                if coll_manu='0' then' P  t7 g* x5 k2 C0 G" K
                        if count_v2='1' then
( D' ~3 m4 T2 a& C% d9 t8 }0 @                                count_clr<='1'; 7 D( X1 U2 d& Q  z8 a' G& h7 i
                        else" C8 Z; I% F# }
                                count_clr<='0';! \$ H3 @) ^- o, I8 s1 b  m
                        end if;2 z5 ~2 u% b* N" p5 z/ b( P
                        coll_up<='0';
3 D! `& S% C, C4 ^; I                        coll<='0';
8 I8 r4 ~9 C5 M' H. g                        cold_pin<='0';
8 f5 l5 I; n6 _) Z: r: K                end if;  r- Y6 Z8 ^( K5 x
        end if;
+ ~: e  V4 e. d+ i        2 j( `2 t6 H6 Q: t( z3 Q
        if coll_auto='0' then. X  H! U, g/ j) I; k
                if coll_manu='1' then7 K( e* k  \8 @; ~8 E
                        if count_v2='1' then
( {/ y- c! j! C1 u* _                                count_clr<='1';
. x1 v5 T# H0 I! j                        else
& A4 \1 s% ~  l) R; A% b, D                                count_clr<='0';
5 |1 y8 t7 V) ~9 H7 u2 }* `                        end if;
! j5 ~: W. [  b  G( u  X                        coll_up<='1';- J4 M* Y! Z1 v2 F* O
                        coll<='1';% v$ |( f* S" w5 ?5 P1 A
                        cold_pin<='1';- `& f& o6 z6 `$ `4 Y0 }" H
                end if;2 H- N% f" }" {
        end if;0 D7 [3 f$ K0 U+ T' b. r3 K
        $ K- J' W# W* f3 A# c+ @
        if coll_auto='1' then
. c- _+ r# H1 h1 D' N/ t, C                if coll_manu='0' then! ]( |  }1 R5 g# W4 _9 o' u2 G
                        if (sv_ctrl and count_v2)='1' then
" W3 Z* O" x8 o                                case d is
* K5 M- S0 `; P5 {( V( v# I3 y' q8 w                                        when "000"=>6 V2 [+ k0 i% ]: R8 z! M9 K
                                                coll_up<='1';
) ~, ]) E+ J! P: L" C                                                T1O<='1';* M% ?+ P, H; V2 N/ K
                                                d<=d+1;/ g0 Q6 m/ q4 X, q; W7 |. m
                                        when "001"=>6 M. k5 j7 ~" z2 H3 P0 Z
                                                if T1I='1' then$ G. |# N5 t* e9 @* B
                                                        T1O<='0';
7 [/ ~& C+ w7 y: \                                                        coll<='1';
7 k6 k/ e' i6 z                                                        cold_pin<='1';
0 J& U' \: Y: z5 B( y- b2 ?                                                        T2O<='1';2 N- n6 \( n' A/ ~  J7 N+ s5 v
                                                        d<=d+1;
6 q2 K# w0 k' @% I2 i! h                                                end if;" ^7 z2 M  ]! x# p8 b  y9 X
                                        when "010"=>6 O$ _" g- T7 O# R! w& ]
                                                if T2I='1' then
  i7 z8 v3 |( q9 ^& z  R9 G                                                        T2O<='0';
+ M# O/ s) B; W3 f( ?5 }' ^4 g                                                        coll_up<='0';
. d( D, h! K' s$ O0 b                                                        coll<='0';2 n) N5 c+ A0 \! `3 ~
                                                        cold_pin<='0';' L, V. ~4 ?" @/ l/ j6 d
                                                        d<=d+1;
, D- O: Y7 o+ O  L9 W  R                                                end if;! n" @6 l3 S  t* ^5 P
                                        when "011"=>+ u; |! L; o; ?9 D6 N6 X4 S( s
                                                if (dly'event and dly='1') then$ g; ?, J) Z1 I5 r8 Q6 k+ W& d6 U$ t
                                                        d<=d+1;
4 d) Y$ J+ `- }7 J& q1 L4 }                                                end if;
" H+ i' ^& ]6 O4 V" `7 O7 b                                        when "110"=>
# \' B1 k, n* k. n# I( T0 t                                                count_clr<='1';, d7 e( L' \8 k+ Z# M& t' L# P! G# P
                                                d<=d+1;$ q& d5 y! j, ^7 I! S
                                        when "111"=>
7 M" a1 b/ H! D/ {( j                                                if count_v2='0' then
1 n( P7 m8 i$ k6 E: f9 Z0 u                                                        count_clr<='0';7 B5 P, L, O5 k0 O1 ~
                                                        d<="000";
2 Y1 C6 S$ r, ~+ [! w2 ]                                                end if;2 c0 m5 _; G) u; ?6 F! T
                                        when others=>null;. o6 B' e  z; G; b# `! a
                                end case;' n% R$ V9 t: I  S; U2 Q: c3 I+ b5 N! C
                        end if;
0 k) S$ v9 k2 {                end if;
3 m) X7 |) h) b* K6 e. ]: G        end if;
1 r1 b3 u3 }# K7 J, ], C* C7 N       
( w$ @# M) R1 [, \" v        if coll_auto='1' then0 g5 X: G8 H+ Y) C& |* n
                if coll_manu='1' then  N" r( N* o5 ~1 i# c* o
                        coll_up<='0';
+ H) n2 B  \; r1 o! Y* t                        coll<='0';
' l; D+ k  d' G" W# M8 x0 c                        cold_pin<='0';
. V- p# i" F  c0 ^' e& q                end if;) o6 F7 F3 z1 j4 ]' b# N
        end if;! u2 Z% s0 A0 ?8 _- u/ W
end process proce1;, R3 t8 Q. I  C/ P$ k

4 H5 A0 E. p" e7 Iend cub_arc;
作者: stroke    時間: 2014-11-12 10:14 AM
你有打錯. X# q9 _' S  `& X! A# u1 Z( i

* i8 E- I& K9 R- _( {% f+ M3 I
7 g5 i; D' A, i! o2 `Library ieee;8 Q5 X+ Y/ M6 Z
Use ieee.std_logic_1164.all;
. \- o+ C$ r0 P4 g: h9 r; jUse ieee.std_logic_unsigned.all;
$ @2 Y% Q  Z, v5 dUse ieee.std_logic_arith.all;2 W+ b8 G& \& }# k- c4 W( U

( D3 _2 c1 `! m1 A7 aEntity CUB is7 S, a3 O* F$ r& e. U" W+ g& }
Port(
7 i& M# ^6 P, r+ Z        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;' o0 B! Y  g: a. U. T
        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic
, z2 T* g" A2 S0 z- _' v+ E);
: S8 Z2 J: A, _6 B+ }end CUB;1 t6 S% S+ S3 i' m( O( T

7 W6 r5 ^- {: B; p" o  j, a3 wArchitecture cub_arc of CUB is
! ]( H+ \" Y  _* x: q+ {8 [" M2 s5 G
" t0 |$ C+ B* Y9 _0 X3 W5 Nsignal d : std_logic_vector(2 downto 0);# d6 V: ^% e# N+ y& O' m+ s
- W) G$ O3 ?7 ~) k/ Y8 I4 G; Z9 @
Begin  . [! i" d% o6 m6 I3 L( I6 @
4 h. i6 a/ K# I
process(coll_manu,coll_auto,count_v2)
5 K4 |" w' j. H: f* N# s3 X5 ^* |9 i) J# v
Begin
& [1 ]9 l3 a4 x* x& r5 D6 D' Q, }
! f. @+ f8 _3 L0 E5 e# r5 ?4 a    if coll_auto='0' then8 B( b( Z0 o* b3 f' O, I
        if coll_manu='0' then. w+ j5 @& Q) A' h2 @4 t1 s6 q
            if count_v2='1' then0 `" \; \# v7 y8 @  g+ I
                count_clr<='1';
& r7 s' s1 d5 ^1 |; F/ Q6 |5 B! O            else; U2 E. }4 v" u  U
                count_clr<='0';, z& }0 O# P5 n
            end if;
0 E+ b8 _* f) \, ?5 g7 Q                coll_up<='0';+ B; R( v( `1 h! s( K5 c
                coll<='0';
; r) W' J: m$ J" R                cold_pin<='0';( G! o8 o1 \- h) \+ ]# F
            end if;; }  q( g: P% z. Q: y
        end if;
/ `4 ]" X; D+ X        if coll_auto='0' then1 H4 E# ~% q5 [& U0 f; U  x: @
                if coll_manu='1' then2 J. [" R0 k# O$ [$ }2 r
                        if count_v2='1' then: N3 N3 x' H/ a) F/ [- p( O2 X9 }
                                count_clr<='1';
& B, q; ?: W% F, a% A5 r9 W; a/ }                        else  M* t9 {9 L* [: \, B
                                count_clr<='0';
) Y% q2 [2 F- V1 @* |' v: e                        end if;
6 K+ l  J; y7 U/ T: E/ |  X                        coll_up<='1';
  m# v6 ?3 D3 g* n% S9 l; ~                        coll<='1';* a* c) ~4 z5 i  _6 l( X0 ]
                        cold_pin<='1';
4 J' ]8 ^6 g- R& H4 T* H                end if;
! f: a) l/ D% {  D3 h9 h7 u! U        end if;  y1 @) |3 Y5 @$ r# B# K  `! `

3 T( W/ s1 ^2 r0 j- V( j  l& y        if coll_auto='1' then0 L1 u. m: s5 n+ v# F4 t
                if coll_manu='0' then
; D& i0 u/ ]0 ]1 l                        if (sv_ctrl and count_v2)='1' then
* Q1 {$ @& w  F# g( o8 \                                case d is7 a, T& {' _' h1 R$ ^
                                        when "000"=>
) N6 T) w! F" B5 ]8 C                                                coll_up<='1';& Z1 y* E* z, C" E+ r! I4 Z3 r
                                                T1O<='1';$ U) j/ J% w3 A$ w$ Y4 `5 o: L
                                                d<=d+1;
" ^- ?8 M1 F9 M8 y9 I7 y9 O2 d                                        when "001"=>! D; |6 t8 N0 N$ x7 g8 i
                                                if T1I='1' then
5 @3 ]3 W& \0 g                                                        T1O<='0';
1 r# G7 B+ |$ g                                                        coll<='1';
) h, O7 k6 @* o, ]) q                                                        cold_pin<='1';/ ^7 B9 D2 a; e9 _5 N5 q
                                                        T2O<='1';
4 N5 q  }8 [' s' O# ]% p, l/ K* O                                                        d<=d+1;3 A3 [9 r& D3 r) L+ ]" {
                                                end if;
5 H- m4 D7 G' n! P3 O' Z                                        when "010"=>/ A9 l  Z& `; v1 P
                                                if T2I='1' then. E0 S/ p% _0 G8 o( D: A, ]6 K$ [
                                                        T2O<='0';
0 i* O) i2 H0 W4 c3 n                                                        coll_up<='0';% W0 Q4 z! Z* q9 Y  ~# @0 p, V
                                                        coll<='0';6 R7 D' p1 i! T8 J1 _
                                                        cold_pin<='0';# i9 g, C# K% ]. O( ?
                                                        d<=d+1;6 L+ X' |: ]1 V: D: e6 l+ i* ^+ p
                                                end if;5 |$ r" l6 R0 O3 S3 i
                                        when "011"=>
9 _7 y& l+ j8 \7 r                                                if (dly'event and dly='1') then7 ?% h* j, Z! R% W+ F: B( E- P' T
                                                        d<=d+1;. q. @- {2 {- ~& h: p2 u" o( ~( I
                                                end if;
. b/ n7 r4 k3 N+ R                                        when "110"=>
, T: T: O' Q8 }                                                count_clr<='1';
5 S% K  E- K& P1 v2 g                                                d<=d+1;
4 _, m2 ]; u# R                                        when "111"=>
" _- `# x3 ~- r5 C* `0 S* z* r                                                if count_v2='0' then
/ b: p+ b/ i5 {* Q8 O                                                        count_clr<='0';* M% q; O. a! @! a% F
                                                        d<="000";5 N9 d- w( \+ N  w
                                                end if;
/ P6 ?- w1 F4 E: I3 V4 y. ~- O                                        when others=>null;
4 B" h8 Z/ l/ K# G9 Q( z! @& S                                end case;1 }% S: |# R% a! f% y
                        end if;
7 W8 k0 i6 w3 A8 ^8 I                end if;! X- i8 d) m5 p0 e* i6 e% q2 Q
        end if;
, `* F& [( s+ v0 {( X3 }        if coll_auto='1' then
5 w: N8 O) S1 B9 A' _$ Y  }                if coll_manu='1' then9 A$ A( }# M9 L
                        coll_up<='0';
# `/ g  \' j4 N, S8 ~, v                        coll<='0';3 j) q0 S7 j# ~6 j8 d3 o1 y1 `; y
                        cold_pin<='0';8 z) t  t/ t, V" t/ m
                end if;, [1 m3 U) b: t' o0 m4 D# M( \( S$ O
        end if;
- M; Q. J. X8 N0 Qend process ;- _# K! l) l: K- }3 K
end cub_arc;




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com.tw/) Powered by Discuz! X3.2