Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2013-10-18 21:15:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一般dly'event and dly='1'是不能寫在case裡面嗎?
( H" x& X4 g) F* l1 Q; J" |因編譯會出現以下訊息
9 k3 U4 t4 `: ~$ o8 j. m4 I+ R+ M6 TError (10822): HDL error at CUB.vhd(70): couldn't implement registers for assignments on this clock edge/ o# v' f4 L5 k5 U6 p0 q
Error: Can't elaborate top-level user hierarchy( S5 i! X9 J& F7 m. T3 z3 Y
Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 15 warnings
: W& R: x9 U1 r        Info: Allocated 144 megabytes of memory during processing9 t' o* V; x* n9 c9 `
        Error: Processing ended: Fri Oct 18 21:24:23 2013
. _; d- F7 U& D' m        Error: Elapsed time: 00:00:02. w& M$ R( M3 ]" e& W+ g
Error: Quartus II Full Compilation was unsuccessful. 2 errors, 15 warnings
- P8 l; W/ Y' C% P  E& p* K9 p/ M: \
程序如果寫的不好,可以幫我改寫,因是自學,所以比較少機會可以看到其它人的寫法!* e& V' N) C! }' J: z0 n8 G

4 W. F( J" C2 @
7 K, N7 M; {( r8 w. Y
3 Q8 Y: [8 [7 a, {: D9 w; l( p. b4 ~8 O7 {9 b1 P9 j4 Q
Library ieee;  ~2 q0 Z, z5 h, z. T- }' V2 k# n
Use ieee.std_logic_1164.all;
# U; N8 O+ ?" X% X- p: P+ o. \Use ieee.std_logic_unsigned.all;" x) @# l5 U: j9 [+ W2 }
Use ieee.std_logic_arith.all;# D  b1 E3 N2 I- @
9 ~/ e1 d0 F3 `
Entity CUB is
# N% g( F4 x1 ]( jPort(# a+ P  W! r7 S5 N  J* ~  Y
        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;/ O% V6 c9 F* d; E
        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic; Z; Z  y( g( k0 w3 m
);9 O; t/ X0 q4 Q- _
end CUB;! {1 [+ G$ E8 E+ c5 C

$ ]5 X2 K& S6 Q& L7 @* e5 VArchitecture cub_arc of CUB is5 x. w6 o9 C2 Z! `3 j. a6 L
signal d : std_logic_vector(2 downto 0);
4 l+ j. F0 ]1 R" I5 B3 Z* f! _. tBegin3 A- c2 H6 V8 K$ G

6 n$ V% s) a+ w5 c' {4 z6 }proce1rocess(coll_manu,coll_auto,count_v2)6 f4 i  p) q" ^# n2 }
Begin
% ?- ^/ L0 S7 o$ m0 Q2 ]& r5 ^        if coll_auto='0' then
' H5 Q& |9 W3 b1 b: q- R& m                if coll_manu='0' then# J, l( C3 F4 x5 F$ ~! p' u9 Y: d
                        if count_v2='1' then1 i4 D7 A' X& L9 |& L* ^; k
                                count_clr<='1';
6 N, \3 `' ^* L3 c" a- j5 A2 [) A                        else
0 {# r1 S% @6 s% {5 G8 }. C& Q                                count_clr<='0';! p5 ^) f. E$ F- c, |. f, h
                        end if;
7 b" U' P2 E" b8 K                        coll_up<='0';
& i  c. }' Y/ K& M- `                        coll<='0';
. J: ^2 O3 j& u0 J% {+ F) X( X- j                        cold_pin<='0';5 a/ Y0 n  J# C/ {4 W9 }
                end if;
+ T) [+ e: U* e. k        end if;
0 F9 t0 G! K; I5 W+ g( K        5 [1 c9 g/ Q$ z0 u( |* v* |
        if coll_auto='0' then4 G* `+ r: l0 I4 F$ M6 L
                if coll_manu='1' then, n- r2 N* _0 A6 i
                        if count_v2='1' then
! i, j4 @3 ~/ \( ]+ b7 ^8 J$ K2 C                                count_clr<='1'; % ^' A9 |$ g/ R  z
                        else; ~+ w( @, X! v8 x/ N5 P5 x
                                count_clr<='0';
- Q9 m" G8 \% e* y                        end if;. d# l, c: e" [5 B
                        coll_up<='1';
( _+ E) q4 e4 f( L) O% `1 D* j! E1 H                        coll<='1';
- f0 x$ c, Y. v; \. b$ P; ^# W                        cold_pin<='1';0 g9 o  [) q1 y) Y9 L9 f
                end if;; f: c  s; q2 ]1 B4 |. q
        end if;' A8 e* _  Q2 N4 o. V
        - O) k) J) p2 c! S4 g. I
        if coll_auto='1' then$ H% ]; c( S  S6 z+ c, y
                if coll_manu='0' then8 P) W1 e" g6 t
                        if (sv_ctrl and count_v2)='1' then& }, X2 z, H& U9 p7 Q3 \
                                case d is) F& I' K; U. ]! o
                                        when "000"=>, B: Q# Z8 z  P+ d. m
                                                coll_up<='1';
! Y% m2 F; A# C% k! D5 u& O4 r                                                T1O<='1';6 N0 X$ X. i, U
                                                d<=d+1;) E( E3 R+ F  p/ U% \8 t
                                        when "001"=># u4 M# ?  z6 Y6 S4 @( u
                                                if T1I='1' then
6 @+ x3 F  t5 t/ A$ R7 W' {8 D. g                                                        T1O<='0';6 d. ]1 Z& e) o) @' ?/ I; |
                                                        coll<='1';* M$ P4 u0 f& ^3 X8 q8 v# M* n& Z
                                                        cold_pin<='1';$ D4 i2 i8 X7 E
                                                        T2O<='1';" \3 T7 s( c9 y# q4 `
                                                        d<=d+1;$ ^4 c. l+ f) y* {: `
                                                end if;
5 t/ F" F+ ~$ _                                        when "010"=>
' j# v* _9 ?' P/ s5 F                                                if T2I='1' then5 ?" n; n0 G3 R% p
                                                        T2O<='0';( x0 C) o+ u; w0 D: j6 D" V1 V
                                                        coll_up<='0';
% }* N1 ~: R0 X                                                        coll<='0';
) U! p  Z% S* F                                                        cold_pin<='0';2 E, S+ }1 h' l4 R
                                                        d<=d+1;
3 l# L6 N1 _1 w* ?6 R- G                                                end if;% V1 ~2 T* a7 h8 v/ S0 C
                                        when "011"=>
1 S/ J5 g' n/ W. B4 G4 ~                                                if (dly'event and dly='1') then
3 b) B- \' {* B( M: }9 s                                                        d<=d+1;. z8 ^) V( M6 p0 K4 \9 t6 s) |
                                                end if;: A/ G& E; p3 @# m0 \
                                        when "110"=># B4 G0 j' R( ~& }4 y
                                                count_clr<='1';
! ^2 h: V- k& U                                                d<=d+1;. @' Q7 T- K" o' l
                                        when "111"=>
# Q: r, `- c- l+ w. }* ^                                                if count_v2='0' then
3 _# @8 {& H& d: }. e" x1 G; Z                                                        count_clr<='0';8 Z" s3 }6 Q8 O, Y
                                                        d<="000";# A, X% H, T( h* I# z+ D
                                                end if;
$ w% z4 T# {6 ]% s& d+ l                                        when others=>null;  V6 `$ A4 f( K( i+ ^, |6 j. d
                                end case;
! O0 _+ s# w' Q  V5 ]: o                        end if;$ x' w; p& v# \
                end if;
# m7 l5 R. I8 r        end if;
" @2 F2 U. a2 _0 X8 n        4 T2 b/ S4 G7 j- J5 F+ q& ^2 ^* v
        if coll_auto='1' then
' J; K/ o, J( O) L% B                if coll_manu='1' then' C, \7 |0 x: W! y! n5 o
                        coll_up<='0';: j' w+ |) z  b$ t  r7 Y( I* T
                        coll<='0';
# a6 H# n  Q$ o                        cold_pin<='0';
! ?+ D; r3 D5 X6 v8 R' S' C2 g; a5 r                end if;3 A) u  }$ T: P5 W4 M
        end if;2 V$ E/ [6 G0 O6 F, ]
end process proce1;
3 P3 i( a) Z+ a" z% b! r/ P1 }3 f% s' e% q! o3 f
end cub_arc;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂9 踩 分享分享
2#
發表於 2014-11-12 10:14:35 | 只看該作者
你有打錯
3 u' C: b/ Y/ f8 E+ K# }
4 ~2 ~% G- O$ N* P- G" P: v# a" K; e. `4 G7 Z9 y
Library ieee;8 d* E2 H9 ]' X# y" Z+ K; F
Use ieee.std_logic_1164.all;9 L& o& r! C# j* E$ w
Use ieee.std_logic_unsigned.all;+ p( G- b$ B2 l6 p% k
Use ieee.std_logic_arith.all;
' {, H2 y+ m5 }( I0 b
: f* s+ p% a, C- G* i+ N3 HEntity CUB is
' j/ E& V4 o" M9 r$ ?, rPort(
" g! K' W; s5 b' y8 w- I& e        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;. \: b, @/ P1 M# F# H0 l
        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic
# {7 |6 R; r$ x. H2 z$ u);  B/ K) L9 {' [; a- I
end CUB;# M$ }3 L: J5 k* T( f# V
% V0 g% _, ]2 k/ V- R+ A
Architecture cub_arc of CUB is
( O% C& j1 F: c  G
' i; ~" i/ W* f. Q- X7 t2 Xsignal d : std_logic_vector(2 downto 0);6 x- U, X7 w: s
) Y" ^3 W7 H- R* u3 L
Begin  2 ]7 l  V& u: d, ^/ b8 y9 a* W* v
. z3 I8 w0 W7 r. {3 F' y- ?
process(coll_manu,coll_auto,count_v2)
" q5 t" K. S1 P) i! @6 l& \2 V$ k2 m$ y# L# a
Begin, N0 V# V/ j; K- ?; D2 K! [

' J2 ~0 W6 ]* g9 `0 D    if coll_auto='0' then
5 v/ f) ~. T1 e4 t0 p        if coll_manu='0' then5 s, H/ {4 `( p+ B# j# X
            if count_v2='1' then$ N+ x- h1 I/ z
                count_clr<='1';$ L; L6 E: Z, N& M
            else
0 }) q! Y( W7 ^* s! I                count_clr<='0';
5 |1 f2 }8 _& a; e9 X- [1 E2 S8 ^            end if;
6 j, T) \; }: p) H  g                coll_up<='0';
9 a' B& `: J+ N                coll<='0';0 Q# Z2 A. `! ~
                cold_pin<='0';
; d5 K8 v8 d5 B7 r  V: Q            end if;  ]$ C) P9 c7 ?: S4 n9 w
        end if;
# n+ `7 V( C: u. q, X: n7 X        if coll_auto='0' then# n7 P8 r" v8 n; A6 e$ Q# h
                if coll_manu='1' then6 Q/ o  s+ C7 X# m* D& V5 P9 [. h
                        if count_v2='1' then
! g+ [& `3 b  e                                count_clr<='1';& z, o4 `: }/ |7 j
                        else
' }( Q0 I2 P* y4 Z8 |                                count_clr<='0';7 ]3 z* o; z8 G) f" A
                        end if;5 W' c  s" B. T2 Z- {
                        coll_up<='1';) S. `) |! F' J9 y4 u4 a$ K1 a8 U2 f1 A
                        coll<='1';
  U# e* k: o; }                        cold_pin<='1';: S+ |3 U/ W# F7 Z5 X' D
                end if;
. S# I$ S5 w# X, g; h5 b6 J; u        end if;
# i) q! e, M: ]8 j. c5 y6 b5 N# v1 T/ o
        if coll_auto='1' then, R8 u( X! f* N% E. ]7 x
                if coll_manu='0' then4 y3 d6 W0 B( \: ~% I( u
                        if (sv_ctrl and count_v2)='1' then! z8 e4 I, y+ y3 @( n
                                case d is" t/ F4 c, @/ h# b" {( [; r6 J
                                        when "000"=>
; V" |) ?% O, u. ^( M9 q2 V2 p                                                coll_up<='1';
# L( r- D5 t/ _: o- F/ Q                                                T1O<='1';
4 F1 t% ~3 N) ~9 Q% m! E" q5 ~                                                d<=d+1;
" l0 J. e' T) Q4 k( ^& g                                        when "001"=>
' m1 v* g7 }: [                                                if T1I='1' then; O! d: x2 _5 |
                                                        T1O<='0';
6 Y4 `! x% M2 J$ {+ g                                                        coll<='1';
% e8 d5 x" f0 w, B& L) n9 j                                                        cold_pin<='1';2 }  ~. n; z0 X5 I; M6 ]4 L
                                                        T2O<='1';- U: u, l8 R0 `( G' p$ X+ }* H
                                                        d<=d+1;) q3 E5 `8 ?" I+ ]$ _7 ^( L0 f- F
                                                end if;
) S2 k: @. `1 `. a- D% B& \                                        when "010"=>
! d) Q# n0 b- V0 b8 \; X# X$ o* @                                                if T2I='1' then. ?) |4 O3 N+ m
                                                        T2O<='0';
1 v, b1 v3 W1 f                                                        coll_up<='0';
! i- c) f! C+ O4 A/ a! |  t! t                                                        coll<='0';
7 \( m0 j. M% q1 v! `                                                        cold_pin<='0';
7 u0 j% c! r2 X; Z; C+ X- J8 X: u                                                        d<=d+1;
6 f( f1 l! r; M6 r! n( }$ q                                                end if;
) F6 s3 v8 r  S- ^1 v( w/ I6 Q                                        when "011"=>; h, s7 I' D$ s% W$ H
                                                if (dly'event and dly='1') then% w8 W$ d. l: o& p" i" N
                                                        d<=d+1;; z8 x; B% I8 ^7 `) S$ f
                                                end if;
' e* B0 D2 X3 e                                        when "110"=>
+ ?  q; E1 R4 R1 Q9 y: [                                                count_clr<='1';* o- j4 u$ U/ U* l
                                                d<=d+1;
- M7 A' F' Q& _9 r( h, G                                        when "111"=>
1 F5 i, o' w0 |2 H  N9 J* v- f8 g                                                if count_v2='0' then
5 h& k: ~3 Q3 c0 I2 L7 @                                                        count_clr<='0';
- l: B/ e2 Z5 K                                                        d<="000";. ~6 g# u8 S6 W
                                                end if;
, A3 U) F/ N1 N, W8 K                                        when others=>null;
5 J' `. K8 B* w. R& |                                end case;
+ u2 q; Q( c' V) m                        end if;$ ^+ |# p& K+ V4 e& Y
                end if;3 n% A1 R4 }: Y; y9 o1 ]0 `  }# L
        end if;
; P' n! g) I. E+ {8 P7 D        if coll_auto='1' then
" f: e  s, P6 l$ x) E$ H                if coll_manu='1' then+ R; y: u  K4 o
                        coll_up<='0';
, ]' R, A3 t' V' w! ~                        coll<='0';
1 s& K4 X+ k) S  t: N& y                        cold_pin<='0';
; U3 X7 Q1 J; i- h/ J. ~( x                end if;# U+ y' u5 d6 E2 Y+ i; F+ U
        end if;9 u% |$ s* u# [6 }
end process ;
0 P' j" ~3 f9 q& G3 y- h# K7 _: Qend cub_arc;
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-14 02:34 PM , Processed in 0.128517 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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