Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 19032|回復: 16

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

  [複製鏈接]
發表於 2013-10-18 21:15:06 | 顯示全部樓層 |閱讀模式
一般dly'event and dly='1'是不能寫在case裡面嗎?0 b$ e3 \9 {( D. Q
因編譯會出現以下訊息
, z+ ^; s$ @. n, g' O' ?' iError (10822): HDL error at CUB.vhd(70): couldn't implement registers for assignments on this clock edge- h- E, B0 [$ ^/ Y% e# V0 }) A
Error: Can't elaborate top-level user hierarchy
7 V8 F0 p; b. M# @/ C( kError: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 15 warnings
0 M8 U$ I1 |. a  S1 T4 A9 N# ^6 q        Info: Allocated 144 megabytes of memory during processing. t: _; v1 n& W) O! R
        Error: Processing ended: Fri Oct 18 21:24:23 20134 J- r2 W  @0 ?- y; L  T
        Error: Elapsed time: 00:00:02- F. {$ j2 \' B* Q. n6 f1 g
Error: Quartus II Full Compilation was unsuccessful. 2 errors, 15 warnings
% p0 x3 G3 y( A0 P% [3 M' Q8 _5 U* }. O9 Y# U' @( o
程序如果寫的不好,可以幫我改寫,因是自學,所以比較少機會可以看到其它人的寫法!2 F* `8 X- h$ ], v; J$ i: q; A+ |

5 A9 P3 c0 Z  M" i
7 x( C  \. _& z, n+ |4 w
1 t/ E+ F  U+ T, D% t- z3 q8 Y, h7 T$ l  N+ Q/ V6 o
Library ieee;
5 G0 v+ ~, H( ^4 m9 y/ u# qUse ieee.std_logic_1164.all;% v  }5 [* `4 @
Use ieee.std_logic_unsigned.all;- [- M, f2 A: z" L* X
Use ieee.std_logic_arith.all;
0 T6 t& h/ B8 t. s6 }
  c8 Q: y$ }/ E0 T/ q5 q0 kEntity CUB is
( ~$ z1 }5 i) T, SPort(8 h' l# J. ?$ e6 ^! g* g$ O
        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;
8 w; y- W  z( A        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic
, q: C" N: c4 p& A);# v7 |! s3 o& h; m! V7 F0 m  K! S. v
end CUB;; Q$ d7 o2 e5 z/ A4 p* U

  J: X# E. I0 v- ]) t# w2 Z5 UArchitecture cub_arc of CUB is( ^  i1 x- X# \  K9 r
signal d : std_logic_vector(2 downto 0);
$ {' F0 [( {2 ]5 y" i) yBegin1 i/ [& ^" A( s/ r  Q9 g' n
9 Y6 s3 n  B) U
proce1rocess(coll_manu,coll_auto,count_v2)9 ], S% [1 I8 @
Begin
2 V2 T0 B; b4 w$ D5 I        if coll_auto='0' then3 x8 S# l$ l0 @+ Z7 W7 {1 h% P
                if coll_manu='0' then+ z. ]8 p, j$ ^( u9 T
                        if count_v2='1' then
; @2 Q3 e& K) O3 A1 x/ K                                count_clr<='1';
7 A; ~  b( I0 s7 J  d! W  m                        else  X8 g2 p8 A. {5 D( E
                                count_clr<='0';! V( H: \3 S  b' K% A
                        end if;
/ r1 x- }8 N. x: f) e! x! g! g. ]                        coll_up<='0';0 [0 d2 ]& W; V. P
                        coll<='0';
5 a8 M* d; g( J- J% S* g                        cold_pin<='0';4 R: _% _* r7 C8 |% o. [$ a
                end if;. Z: V' @% Y: i9 d  f
        end if;
5 b$ @, s7 i7 O6 L5 o       
3 m3 V* m' B9 k3 V5 w6 Z2 Q        if coll_auto='0' then  b# n& }, r+ a1 ~
                if coll_manu='1' then
* e! m0 E2 o8 G0 X2 Q- k                        if count_v2='1' then
3 m, ?$ S2 x4 g( v( a8 E/ Z8 V                                count_clr<='1'; & w- v. o# V, w% z2 b
                        else
- @3 u! D: N% p6 q' ^9 S                                count_clr<='0';
/ `8 T' Y1 M! x( @+ T                        end if;
# d7 I$ `9 o- I& E. _" Y1 v                        coll_up<='1';
  l& j# o+ \% ]3 u' f9 r                        coll<='1';7 e, B1 ^+ V! U" M. }5 U
                        cold_pin<='1';8 ~2 O8 F  \) o" X0 v) Q
                end if;. z8 t. e) _2 C* Q7 P
        end if;
& ?2 e  ^4 v* n       
( p1 V' k; ]0 K! Y' G        if coll_auto='1' then
' z6 `# }6 l& F6 O  P: f' l                if coll_manu='0' then1 m( i7 |- F$ w$ [/ D7 K& u. s( ^
                        if (sv_ctrl and count_v2)='1' then
; S& r8 M5 b5 P) r1 C                                case d is
( }1 Y0 P3 g4 u1 b5 ~                                        when "000"=>9 T1 ^4 O4 T3 P7 ]
                                                coll_up<='1';3 G6 @( R1 [. q& O: r
                                                T1O<='1';
, X% C" C1 i) _- K0 X& |* C+ {                                                d<=d+1;
1 A# m3 s3 O; k                                        when "001"=>
$ i, b/ n4 D& u4 z; T9 Q                                                if T1I='1' then0 x, e6 t2 u3 V0 }4 t' H
                                                        T1O<='0';
9 O* q+ k0 T7 N$ ]                                                        coll<='1';
* r3 n" v1 `) W0 S* B                                                        cold_pin<='1';
, O6 b6 V7 y6 j                                                        T2O<='1';, R( _2 V( z) X0 Z( `" c* s' H
                                                        d<=d+1;
! O7 P% s/ D( N. G, s8 |                                                end if;
0 k( G8 @2 V: F, p; W                                        when "010"=>
* X: \; E' p9 W$ [+ G# V$ ]                                                if T2I='1' then
) B- |' w0 q) H+ X                                                        T2O<='0';/ F3 C2 M9 q! I- ?
                                                        coll_up<='0';
$ Q* n3 i5 J. s& ?: `" ~                                                        coll<='0';$ ~8 t0 G1 \2 I# w1 g
                                                        cold_pin<='0';0 d% o: N$ j" j+ h  x* [( K
                                                        d<=d+1;
8 \2 X% B: H8 s                                                end if;. L6 d7 F9 e, y$ i, c
                                        when "011"=>$ H. j, q3 S, f% Q6 H3 w' d
                                                if (dly'event and dly='1') then! p; u1 n4 I% \( s( y
                                                        d<=d+1;
4 d3 l; j0 d  M" p8 P                                                end if;8 @5 Z( Z) U6 @, [  x: N- |
                                        when "110"=>
* d- [( K: V" J8 }# F8 `                                                count_clr<='1';5 M. ~. i9 o" D
                                                d<=d+1;
) i. q: r2 W! l, P9 U5 H+ Q# ~                                        when "111"=>
, b( Z' O( s: q% ]                                                if count_v2='0' then7 h2 `: c4 `! z* ^3 Y3 @8 H! n; K
                                                        count_clr<='0';8 _3 \: |# _7 r6 l
                                                        d<="000";7 }% V& J* E: V8 X
                                                end if;" B$ e/ s: o$ c% b
                                        when others=>null;4 }# p' r0 J! K
                                end case;) W5 W( R2 V% T  x2 A
                        end if;
( H# \  p+ U  O5 U% I& W& c, i; j                end if;
# K  b+ Y+ x1 l" }        end if;
8 V1 w7 S' G$ R       
: l! R- B+ ^) h! p7 K: b        if coll_auto='1' then
1 `6 ~3 z7 \9 W                if coll_manu='1' then2 Q+ G6 }0 \$ \4 }5 @* p9 y
                        coll_up<='0';
% b" d% X0 u4 I+ b4 O* c/ c                        coll<='0';
: S5 \" Y: }  X4 t' u+ D# e                        cold_pin<='0';
, l* A2 B2 c! x2 M% h                end if;& _/ F; |/ d' N9 \$ W
        end if;
' ?7 N$ i3 }7 R2 \1 B% z% f" hend process proce1;
, y+ w+ K9 k. H6 b9 L% X! V3 b) w. m$ H' [' z
end cub_arc;
發表於 2014-11-12 10:14:35 | 顯示全部樓層
你有打錯8 w, g2 H9 n& z% y
$ z( k9 f# F4 q" J) E8 B
  n% W7 ^) a+ |& f/ i8 s0 o
Library ieee;6 e: X; }% ~. X7 r1 p* F
Use ieee.std_logic_1164.all;
4 [$ x: |9 H' ~! m( C( sUse ieee.std_logic_unsigned.all;: O5 n" i% q: A
Use ieee.std_logic_arith.all;
2 y) T& w- V+ x& R  o: Y  [7 e- ~3 _2 ?6 _. \
Entity CUB is8 T2 O: `6 t& D2 E& E, `
Port(2 d0 a* z' X+ u' e6 M( Z+ l3 K3 x
        sv_ctrl,coll_manu,coll_auto,count_v2,T1I,T2I,dly:in std_logic;+ B8 \" q7 k) G6 L* o) e& n0 R
        count_clr,coll_up,coll,cold_pin,T1O,T2O:out std_logic: i, G$ ]& `4 Q* X+ t" K
);1 E& F0 o0 H+ Q
end CUB;
5 x* z0 ^. J  k7 O1 A5 _8 c" h. q0 j$ T) F
Architecture cub_arc of CUB is
( n. ]# i& _3 c+ [4 ?* O' X# c) t+ z! |
signal d : std_logic_vector(2 downto 0);+ t: _+ g! q- Q: y- b6 L% [
( P* Z- M7 {4 d: L* G6 m$ e
Begin  5 y; F7 c9 y- F9 m% J$ T/ }1 Z5 Q
/ X. T1 H0 v8 {. D+ A
process(coll_manu,coll_auto,count_v2)
5 `9 |' [; B6 A; t9 |# l. ~; {- ^7 x" V! Y- z5 X
Begin% t! D9 }0 s4 q- s: K
( V# L- D  n& ]9 M2 w* O- A
    if coll_auto='0' then
9 R7 `5 _7 N# }        if coll_manu='0' then7 V, V. j6 X  X7 K
            if count_v2='1' then& w3 Q$ }. L8 j1 ^
                count_clr<='1';
* V( ~  i" D- |0 r- j            else
/ h* K; U0 p" L( W9 J8 K                count_clr<='0';* V: [$ g' R5 k: n  z
            end if;: n8 \1 T3 f# Y5 J4 e& y
                coll_up<='0';" @2 r7 p* _* q
                coll<='0';7 z, H6 l$ y3 ~
                cold_pin<='0';, W/ q) z) x6 H& v
            end if;2 r" H  _+ X' W  r6 V- f, H
        end if;
) A- N8 v7 m1 `        if coll_auto='0' then
7 w& c. Q7 V6 S, ]2 P$ s4 K% z1 v$ Z: Z                if coll_manu='1' then
3 c4 n: e3 m  l1 [: u                        if count_v2='1' then
. B, ]# G7 X; v                                count_clr<='1';/ D+ ^, G2 f4 k2 o
                        else
8 g0 F9 f8 k- H5 Z& x- ]2 F" J                                count_clr<='0';
% c) ^* M4 i) J0 e                        end if;; _4 q6 B! L& t% M7 V
                        coll_up<='1';: }9 F1 t. v) A# A
                        coll<='1';
7 p) z. }) _" ~- W& g. j- U/ X                        cold_pin<='1';5 C" v7 Q+ H4 A' t
                end if;1 N% Z: m9 l' W
        end if;9 P$ }  ^$ U& E" G: }9 N& R
3 o8 m5 f6 R: @7 @* t' q5 i- P
        if coll_auto='1' then
- u$ T" N/ Y; P5 q( N                if coll_manu='0' then
: }) @5 i! F# G5 U4 Q                        if (sv_ctrl and count_v2)='1' then5 a$ w- P) a5 h$ F7 D+ }# V
                                case d is$ L1 i  m! r" D: w0 G
                                        when "000"=>
( t! A7 g& W+ s( R6 x! d  b0 M* V" U                                                coll_up<='1';* C3 u! E4 }& E" A) ^' p- ]+ T
                                                T1O<='1';2 _! X, c/ ?+ Q' f5 \
                                                d<=d+1;
6 @' W1 I! }2 P+ z, G5 S                                        when "001"=>  ^0 P/ F7 G9 v0 J* A
                                                if T1I='1' then
0 \7 o; T3 ^- F1 J. `                                                        T1O<='0';
6 X& M2 @5 o4 A                                                        coll<='1';, t/ \3 y/ v5 F, P$ D' V5 J
                                                        cold_pin<='1';$ J  o9 V: A5 w( @! E3 ]! _
                                                        T2O<='1';
$ X: R5 k( f; o8 ~) Z+ Q% P                                                        d<=d+1;
# ]! s( f$ w4 s. i  R+ X                                                end if;' d- v( n% Z: Q2 X$ ^, D& M9 I
                                        when "010"=>5 m& q% W6 g" [/ t! Z- J+ H. ~) r
                                                if T2I='1' then
7 P3 ~8 n/ Z2 `2 v                                                        T2O<='0';6 e1 K6 h" v9 }2 I* G' \& x" U
                                                        coll_up<='0';- Z8 J5 Q# p0 {) P
                                                        coll<='0';
5 J/ M$ t7 o; B9 U                                                        cold_pin<='0';# `- O# W; x" k$ x2 {
                                                        d<=d+1;: w& A- G3 q; A3 e0 o$ d- ^0 i+ o
                                                end if;
5 P( \1 ^- F$ x( ]" |! _+ \6 ^) Q                                        when "011"=>
' G- ^- j4 E$ Z% G% }                                                if (dly'event and dly='1') then; R2 P' m* P$ s' d2 |
                                                        d<=d+1;
: m0 `6 N8 s0 a                                                end if;. B% _, S  i7 ?: U0 @- G2 h
                                        when "110"=>  _& f8 K* B, T2 ?2 n
                                                count_clr<='1';
1 j) c! e4 E3 o$ \/ s                                                d<=d+1;3 O' f& v- V. g' T1 ~: q
                                        when "111"=>0 q; ~" e/ u% Q4 Z( d3 D; R
                                                if count_v2='0' then% \6 B: s% P$ _* |
                                                        count_clr<='0';
* k. o6 _3 Q6 E% {8 W1 T4 o                                                        d<="000";
/ ?3 n" ?9 z, F- ]* S                                                end if;
; L, Y. @3 B: N. c0 P5 t                                        when others=>null;
$ [- `! C) B+ G' ~                                end case;
& a  T4 r9 s6 x                        end if;) O  U; Q& J5 g) J- M8 s
                end if;
8 s$ y$ e( h5 |: T        end if;
* J; c, a3 K3 M) c) t/ i        if coll_auto='1' then1 R" b1 f7 b' y! w$ G+ n  L* S* U
                if coll_manu='1' then
/ {, o* J0 z' A/ [* x9 [                        coll_up<='0';" @, p6 Z" W' w
                        coll<='0';7 C% ?$ k' N5 E6 X! @
                        cold_pin<='0';8 ]( u; X/ s/ C1 v' x- |3 Q+ {
                end if;- O. @& B/ w: ~( F# {
        end if;' L% H+ B: D' |8 g7 I; A
end process ;. j4 D1 b& D( u. K+ d7 C% f5 \. U
end cub_arc;
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-3-28 06:31 PM , Processed in 0.117006 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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