Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 19104|回復: 16
打印 上一主題 下一主題

[問題求助] VHDL新手上路,程序Bug請教

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2013-10-18 21:15:06 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
一般dly'event and dly='1'是不能寫在case裡面嗎?
- p2 c: r  N, m9 {& @3 r" a因編譯會出現以下訊息
) w3 K. a0 s+ v$ r) c, G( v. Y7 OError (10822): HDL error at CUB.vhd(70): couldn't implement registers for assignments on this clock edge) H8 v5 [& o- s2 a1 t! s
Error: Can't elaborate top-level user hierarchy
1 B( u1 m  I& z, ~Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 15 warnings
# I* e# i  P( W% v        Info: Allocated 144 megabytes of memory during processing
9 Q; G/ M+ \0 Q. e; [. ?1 r5 g$ R* C+ z        Error: Processing ended: Fri Oct 18 21:24:23 2013
8 _0 I+ k: R- U3 ]        Error: Elapsed time: 00:00:02
7 x# Y. x3 o8 S$ ZError: Quartus II Full Compilation was unsuccessful. 2 errors, 15 warnings" l% L0 p3 }; i4 @8 R

" N) S0 [0 V4 V程序如果寫的不好,可以幫我改寫,因是自學,所以比較少機會可以看到其它人的寫法!
# c: S8 @7 C$ M: y: V- ]7 `  |' M8 y
1 A- m) j& ~6 H8 p5 B( b3 |! ^" O6 B7 n, X3 p$ s

  ^) A5 E) p6 K
# M' y+ U0 J& L$ [9 w$ |5 g& fLibrary ieee;
; ?6 `' i. C7 e9 S1 gUse ieee.std_logic_1164.all;2 C$ A2 \8 V9 N& B9 `0 b: ^
Use ieee.std_logic_unsigned.all;  U/ p3 q7 U1 n4 G! c: U4 N6 V
Use ieee.std_logic_arith.all;
* B4 x; D2 n2 G0 D' A6 n0 Q4 ~3 _5 b) S) q; a! W$ z
Entity CUB is) b, j  l7 X+ ?) h0 s" d
Port(
0 {! }2 g# ^, M7 x: S* t- Q7 [        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;
5 o4 C3 N) y  w& K4 j" Q        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic
& e0 Q0 M; `! [);8 P' ~& b2 k+ y/ i
end CUB;
  c  I0 C8 P6 M0 K# Z/ Z. ~1 y* D4 ^9 u/ X, D/ G: n+ R
Architecture cub_arc of CUB is
" G" @' i* l7 J) Fsignal d : std_logic_vector(2 downto 0);+ ]5 u% F; q9 `& d' Z6 \
Begin
  p# q% m, e2 Y/ ?# e1 F' s6 C
  Z, d, s/ L' I4 x" W! Yproce1rocess(coll_manu,coll_auto,count_v2)
+ p3 t- ~' H! W9 Z5 V- n( I0 IBegin
9 ?) ?2 c' l; O5 M/ k        if coll_auto='0' then8 f: j5 U# _6 A) O# U9 J: `
                if coll_manu='0' then1 ~: Z6 d2 A& Z# P; _) v
                        if count_v2='1' then
1 [* }; \: t9 j9 s  i                                count_clr<='1';
1 d0 w& w- x7 i                        else9 Z) O$ h, Q( Y) o/ I
                                count_clr<='0';
2 p2 V# c; I) E& H- V                        end if;
* P' a7 |# r& s% \3 e9 r; P3 j                        coll_up<='0';
" C8 g' O  \0 z4 u8 Z9 Q. a                        coll<='0';( Y2 y2 s# Z% o( i& r) M, u. Q
                        cold_pin<='0';5 w4 G4 k6 F3 V; N, s+ D" S/ _
                end if;
- g% v& f/ X( L1 S' c        end if;
4 A5 ]" V7 C% x8 W+ P! b- V0 z( E) o       
" ~1 W; s1 O! O( Q        if coll_auto='0' then# T9 p" |+ e1 f0 n. f, u
                if coll_manu='1' then
+ |. j& ~" k1 R5 ^6 f9 n! f* Z5 d                        if count_v2='1' then
+ U& x6 s- n+ f* I. g( w9 N                                count_clr<='1';
% b7 I6 y8 G+ _) E; z' V5 U' O; F                        else5 |: }) H3 G' u2 M
                                count_clr<='0';
5 o6 B+ ]# O6 b# h. q                        end if;
0 S+ Q: A8 K' ^% @! a                        coll_up<='1';& P; z* Z$ }8 |# g
                        coll<='1';
' P- G/ R0 [$ z/ O/ R7 L0 G                        cold_pin<='1';
, _1 {+ h! e3 \! @. `                end if;
5 l$ ]# W4 w! w% N1 [        end if;( r  b# a6 |' H6 @9 r
       
4 \% g" H+ o# W' O4 v# Q        if coll_auto='1' then8 v, R- b& c2 G! \& z! M
                if coll_manu='0' then
; P# Y3 |' V( `4 ^                        if (sv_ctrl and count_v2)='1' then9 O  `5 }' b5 E: v5 ]+ r4 g2 s2 e
                                case d is( s- g2 {. `3 v# [7 U$ `
                                        when "000"=>
0 q' h- W: o8 h                                                coll_up<='1';
4 Y, p! h, q5 R5 t! J/ S1 I                                                T1O<='1';, \9 ^( E% E- F; Y; L
                                                d<=d+1;/ p/ @3 D: P- ~0 v! X+ r7 @: {) J
                                        when "001"=>
. ^. w! K) C- ?4 S                                                if T1I='1' then
" c  G7 H9 S4 l; s                                                        T1O<='0';
! b$ k* m/ k: u; h' l1 O) p                                                        coll<='1';3 q" o( T) z4 K6 j& r
                                                        cold_pin<='1';: l9 c( \! M2 H: Y
                                                        T2O<='1';
+ v; ~1 `8 H' }' B+ Y& L$ |) `                                                        d<=d+1;  a% T( {6 Z' a* H* j1 ^- Y( h
                                                end if;2 ^7 y; U. u$ Z0 }( B+ u
                                        when "010"=>$ p' z( ?' Q( w* G8 i, a
                                                if T2I='1' then8 Q# L; Z* R% ^
                                                        T2O<='0';
$ Z: V8 g6 e& ]0 A) u8 J" T                                                        coll_up<='0';
4 D2 a7 i# ~. m7 N                                                        coll<='0';" R0 O  L2 L- J1 L% Q8 M
                                                        cold_pin<='0';, P- _- J$ h6 ?* \; V7 w
                                                        d<=d+1;5 r0 f1 u, _$ F! R9 @
                                                end if;
! x$ x, J) p* [( {# z2 ~                                        when "011"=>
3 \, i  \& d; n# s2 d$ {                                                if (dly'event and dly='1') then
5 z7 E3 `" m4 Y( P& ]/ ]1 h                                                        d<=d+1;+ h1 J9 r& g" G( D: C6 C  Y& q% P
                                                end if;3 b9 J" M6 H6 S& p/ {
                                        when "110"=>& ^) h; e: b# f9 e7 X
                                                count_clr<='1';: l8 r% A& x: n0 I# u9 t! I% O
                                                d<=d+1;
! c  L: Z+ z; a! |                                        when "111"=>' F8 n* d0 F$ X! j) a# w1 g; b* ~
                                                if count_v2='0' then
7 n3 c4 \0 W. o: v" Y) U% J                                                        count_clr<='0';0 F0 O% L3 L' t. S: B
                                                        d<="000";
  ]1 D) v0 _' M( H1 e0 W" }) W                                                end if;
- Q: J$ A$ V3 |% |5 D. g, M. J                                        when others=>null;; Q/ ^% _; G- O
                                end case;
3 x* {7 _1 y5 T/ ?1 \9 _                        end if;
: c- D& m" D* m% y5 ]' |' ?0 w                end if;" [& h& h' G1 }1 Y* U2 _
        end if;7 {/ ]- }& {9 s3 {$ I& S
        2 u4 d: k8 ?& c
        if coll_auto='1' then' e3 k+ p" N& c  F
                if coll_manu='1' then4 X4 ?! J/ ]1 t8 u; J' G6 u
                        coll_up<='0';
, {+ l  Y5 o6 F; m                        coll<='0';& t5 U# M7 \, [
                        cold_pin<='0';# E4 Y) C1 |( `! B, @
                end if;' S6 `. G# {7 l1 H3 z
        end if;
( r6 b7 {" T/ X) J) ~7 A) tend process proce1;8 P+ o1 s$ C$ q
% a8 {% k2 W+ {4 s, B+ ?) s5 S
end cub_arc;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂9 踩 分享分享
2#
發表於 2014-11-12 10:14:35 | 只看該作者
你有打錯
9 u3 o3 T- U2 y! r
  P/ z$ F, S+ K( }$ _
/ V: H! b9 v4 d5 a6 p/ g7 E' gLibrary ieee;
' [3 Q# I5 k8 d- F1 `4 TUse ieee.std_logic_1164.all;' c( e: L  {1 Y% d& O" M
Use ieee.std_logic_unsigned.all;
( [) C' j* U7 w) _9 fUse ieee.std_logic_arith.all;
& L+ \& O$ I* m& b! D* N& j3 E- f9 Q0 ~! X6 R9 b6 c7 Z! y, N
Entity CUB is
! C9 @. T$ G; B6 TPort(. f& c2 F4 ?* x. t  f) d% A
        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;
4 G# U; B, _' o9 c! @  G* S        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic
* k8 f* A7 l4 \* d& Y2 g);% _& g- R. \. x% J; k; u: h/ F$ i
end CUB;
8 U! Q+ ]7 Q. W0 X) S1 @2 z. j' Y' A( S7 {4 ~6 t
Architecture cub_arc of CUB is, ]8 x' c) {4 [2 n

/ t4 U6 l% \+ B7 G9 \signal d : std_logic_vector(2 downto 0);
( E) J5 Y+ f: V0 c* q! g2 ^/ q+ s* v. {" b7 w
Begin  
# Z& ~7 N* R! D6 a2 m# o8 i
6 ]2 K% _' W& X1 g  Hprocess(coll_manu,coll_auto,count_v2)
& @! t1 G' t: ^9 d
# ?" x! s; [) T& |3 R0 V( |Begin
( K, t* }: y& ^# i" |0 d9 P7 Z; N: R2 U3 ?' D( I8 K
    if coll_auto='0' then. ?9 i" ~- I# C: _: {# ^
        if coll_manu='0' then
# a5 [9 }6 U+ \9 T* h9 Z. k            if count_v2='1' then
6 Y7 ^$ ]" v4 |/ t                count_clr<='1';  t; Y; w% t. ^* W+ X- Q9 ]& d
            else
6 B$ i, t/ w8 Y                count_clr<='0';
  b& r# z+ I. p) A* p: B# U            end if;+ k$ H( L. b1 m3 m3 R
                coll_up<='0';
5 F  f/ l, H% |+ F/ a: Y+ m                coll<='0';6 _( R9 p( l& F4 R. L. i  R) o
                cold_pin<='0';
1 `% H; P0 t9 a" N( v+ _; E            end if;. D, F+ w% a8 T6 h+ O
        end if;
+ I. w, L$ n( Q. T' ~5 g9 F4 i1 ?        if coll_auto='0' then
' A# l/ L1 ?3 [) U* Z! a: N. N                if coll_manu='1' then2 E* Z$ Y# c3 Z! l8 G8 n
                        if count_v2='1' then# P# |, X5 w6 {. ]- A
                                count_clr<='1';
. Q" ^9 u: B. `0 v6 F$ I- C                        else6 ~* g! u3 o) A3 P; M
                                count_clr<='0';. |& v+ D: c( `# K
                        end if;- t& j, E) N5 H5 j: n/ Q2 Q' M
                        coll_up<='1';
! w( W! }6 {) ?; L+ O; h                        coll<='1';6 r8 E$ S- q; V' d0 @
                        cold_pin<='1';
! J: {" j3 l3 ?, P                end if;/ L# d' i# O. `5 _0 c- e
        end if;
( Y9 F9 x. B; @$ H9 j& E% J0 r% \, Q. ~
        if coll_auto='1' then: a% ~* }( k8 K5 |
                if coll_manu='0' then
% ]( {+ ^7 P& I  K/ @5 ?/ {                        if (sv_ctrl and count_v2)='1' then
' r% O7 ?; o# B                                case d is0 w( I, g& r0 O" q$ v" R
                                        when "000"=>
% f1 h* P7 Y7 g( }                                                coll_up<='1';
0 n6 T+ i- o( O1 B                                                T1O<='1';5 Q! _+ U7 g* W6 }, [6 O
                                                d<=d+1;
& T# D9 u; P! t9 O3 S* V                                        when "001"=>3 l& A9 [' U) @& }
                                                if T1I='1' then
, ^9 s! I) h" u" M  [' J* L                                                        T1O<='0';
7 x/ u7 h6 u, {0 c% u$ f  D                                                        coll<='1';
4 P5 L! h1 J/ @  ^  H0 g                                                        cold_pin<='1';
9 B6 W% L- W+ V                                                        T2O<='1';
% z2 o2 O4 I. m: }  e! e$ P                                                        d<=d+1;
) ]/ x) E( `. a- @* _& Z                                                end if;
, E/ h: n1 ^, a% O8 |7 J8 }2 [, R2 V                                        when "010"=>
7 ~8 y# T! j8 u                                                if T2I='1' then9 S) a  S% N( i5 U( e+ D; U
                                                        T2O<='0';
# f0 X( j/ p5 A                                                        coll_up<='0';  f( W% d* d3 l- z1 d- I5 O
                                                        coll<='0';6 I5 o' T, ]& [  W
                                                        cold_pin<='0';2 t$ r- q' g9 P+ T# A
                                                        d<=d+1;
2 y+ H8 r( g5 T' r% `+ \                                                end if;
( }# y; t9 y, n, P4 o0 X- c% G2 h                                        when "011"=>% v- r8 h8 H2 m4 z+ `
                                                if (dly'event and dly='1') then
+ T/ l# b2 b' c  G, P" {6 R                                                        d<=d+1;
3 N# p7 e' }. R1 n                                                end if;
' f+ M% n" C  a$ P. j                                        when "110"=>
5 \9 f, e' j1 a# k                                                count_clr<='1';
' k- y/ {1 F4 V% b3 \! L. F                                                d<=d+1;& {- T+ `. i: W8 l
                                        when "111"=>8 Q6 j. u3 y% ~  _
                                                if count_v2='0' then
& L7 z+ |# Z7 _- s! l$ c+ C1 n! _: B                                                        count_clr<='0';: g1 W% {! X/ @1 Y3 ?, D7 o4 Z
                                                        d<="000";
5 t1 M" }& _' C: N% T7 g                                                end if;
& H- d* I1 L2 X( q/ N                                        when others=>null;
2 R. B. {+ ?4 v+ Y  ^                                end case;
% z* p2 `6 D, C7 C, t+ |                        end if;
3 X4 U+ o' z( _' t6 p                end if;5 b. E; x1 V- j% U) ^, U4 }
        end if;0 }& E' w: z% C$ R2 T0 Z
        if coll_auto='1' then1 R% Z: q7 G+ \/ }' M
                if coll_manu='1' then: a& ^: \7 u8 d1 S1 B
                        coll_up<='0';& E  E# t( s: Y% w: K  y( Z
                        coll<='0';
3 ~1 `/ q6 B. [9 g  e5 J! J                        cold_pin<='0';8 o$ n, G% Z& J- j3 c" h8 s* k& ~
                end if;
- c7 s' a/ T9 z        end if;
1 C- S7 U8 Z4 ^/ V  g- Y! _' Zend process ;
' Q" R4 L% T4 k7 Xend cub_arc;
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-8 04:59 AM , Processed in 0.103006 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表