Chip123 科技應用創新平台

標題: 7段顯示器用when else 寫法 [打印本頁]

作者: gto10620    時間: 2008-5-7 11:15 PM
標題: 7段顯示器用when else 寫法
剛學FPGA/CPLD 現在學VHDL寫出7段顯示器。
/ O. l( L; L- _5 L9 r% U7 dentity sedg7 is
7 f$ F" j2 o. {5 s    Port ( S : in  STD_LOGIC_VECTOR (3 downto 0);9 q! y% i: ^% N
           Y : out  STD_LOGIC_VECTOR (7 downto 0);
* `" i- x+ i/ \' P" ^$ f           a,b,c,d,e,f,g,p : out  STD_LOGIC);" H4 ^7 }. E" m- s  e# s' B
end sedg7;8 x8 x' z1 ?( u( h
0 ]9 r7 I2 i( q! G, M: r7 w' `" ^
architecture Behavioral of sedg7 is
/ {# `* T- A* q4 E/ r% ^% x- i+ D& g% @9 d0 v
begin
3 \6 i, y$ I" J" A) j/ ]        Y<=        "00000011" when S= "0000" else                , g4 L, o* B7 ~2 W: B8 N
                        "10011111" when S= "0001" else       
0 x2 ~6 i" P9 S                        "00100101" when S= "0010" else       
: B; D" ]' \7 I+ Z/ k. [                        "00001101" when S= "0011" else        * b/ ^: N9 o" {, l& p8 m7 \6 D
                        "10011001" when S= "0100" else       
' |$ K0 m/ q- O  B                        "01001001" when S= "0101" else       
0 T8 `: _. O- j! q% W, s" c2 P0 z                        "01000001" when S= "0110" else       
9 U, o8 K% n% C5 q7 z                        "00011011" when S= "0111" else       
2 n6 q4 z7 b. B. Y3 i  N9 z                        "00000001" when S= "1000" else       
4 |9 M$ y; s* Y$ L, L* w; Y                        "00001001" when S= "1001" else          : d$ o" p* f7 }* c2 H! [7 |
                        "00010001" when S= "1010" else       
3 ~& O6 O2 O6 K1 W                        "11000001" when S= "1011" else       
0 A0 _/ q8 V# _1 b% |+ L                        "01100011" when S= "1100" else        $ x8 P/ V4 M  A' b6 ]
                        "10000101" when S= "1101" else       
/ C% m2 ^; x5 t( X5 J4 J1 m                        "01100001" when S= "1110" else       
4 X0 d* Y# u2 ]$ B+ o# B# W                        "01110001" when others ;    ' j* Y- ?) n$ V
                        4 [0 H1 @) T: |. ?
                        a:= Y(7);
2 e% B7 \$ P: K* q& Q! ?, ^; _                        b:= Y(6);
8 r5 \' i3 G5 k  K  K5 S                        c:= Y(5);
9 b6 c$ h. c2 \# v' X                        d:= Y(4);! p5 r7 P9 A, h. b" q& R
                        e:= Y(3);9 ~& a' \# F0 ^/ U$ [
                        f:= Y(2);* l& A- k: `2 E% M9 t/ f
                        g:= Y(1);
! {$ ?6 N5 b( j" H$ u5 G                        p:= Y(0);: Y, J) U& s# A+ G
                SEL0<= '0';' }8 i# l: p$ p7 d
end Behavioral;
. u; V- X' ~1 ?1 C( g) R% W! c
9 r# t. @1 O) `2 _ERROR:HDLParsers:164 - "D:/ypj2008/4e2afpga/sedg7/sedg7.vhd" Line 54. parse error, unexpected OTHERS
+ K+ u$ ?3 z+ g( P9 IERROR:HDLParsers:3312 - "D:/ypj2008/4e2afpga/sedg7/sedg7.vhd" Line 64. Undefined symbol 'SEL0'.  f6 a; e  n' x2 ~2 g. E
一直錯誤~"~ 實在搞不懂... 誰可以幫幫我呢? 感謝~
作者: addn    時間: 2008-5-8 09:27 AM
您好
/ t% v, X" B% q: ]1.
, S0 ^  f5 \; Q8 J6 e; p+ u Y : out  STD_LOGIC_VECTOR (7 downto 0);
# K; |; o0 n5 t9 J# T7 W Y宣告為out 怎還可以指定給abcdefgp
8 }% O$ D% o" m) h- G5 K+ {
. W) v+ ~0 ^% J1 ?6 M' Y# V, I2." E$ a( M; m4 I. ]) V- L- ?/ ?6 v
a,b,c,d,e,f,g,p不能用":="要改成"<=", m( v( i* F) a2 p$ N+ `
* w/ u( B7 ]/ j$ V2 f
3.
, a, Z2 q' K, y/ L9 K2 tSEL0沒宣告,怎會冒出SEL0<= '0';來呢
4 J/ p% Z# n7 }8 K+ _
5 y# M2 v( Z; D9 @0 r( u' b% M  {2 L0 H[ 本帖最後由 addn 於 2008-5-8 09:30 AM 編輯 ]
作者: airtiger    時間: 2008-5-9 05:57 PM
標題: when else
改成這樣就可以了
0 H- S0 h, ^1 `$ U+ h6 ]) J, S; y( h
entity segment_7 is; s7 y! c% {" I2 O6 M
    Port ( S : in  STD_LOGIC_VECTOR (3 downto 0);2 Y: }" |$ l2 P3 A* `0 F0 w
           Y : out  STD_LOGIC_VECTOR (7 downto 0));
. {+ R( `1 Y# d! X. Zend segment_7;1 o3 f- Q! \7 b) ?6 \. D$ Y
/ L) z: o4 L: P6 n
architecture Behavioral of segment_7 is
" i3 X: b* J8 S. }9 q2 p/ q$ M
/ L6 a- g% c7 x0 Qbegin' F* S9 N! q7 q$ W2 v$ C
        Y<=        "00000011" when S= "0000" else               
/ y  e. z9 p9 X* D4 \( I                        "10011111" when S= "0001" else        
7 S9 G1 X: Y3 Q1 O7 t                        "00100101" when S= "0010" else        / m+ U2 V* l6 y4 Y8 I9 k
                        "00001101" when S= "0011" else        
2 f% \* c( z* A2 E7 I0 a/ G                        "10011001" when S= "0100" else        
8 ?3 m+ Y9 H2 B1 F                        "01001001" when S= "0101" else        
/ F1 i9 b, [$ \. m# g4 X                        "01000001" when S= "0110" else        # I% g* O9 e; I/ @4 z7 l
                        "00011011" when S= "0111" else        - i) Y) m- B8 y3 r% u
                        "00000001" when S= "1000" else        * J. S2 W- ^3 X, M
                        "00001001" when S= "1001" else         
) j/ W4 {' {$ j                        "00010001" when S= "1010" else        5 M/ d8 ]" D# a; @. H2 S
                        "11000001" when S= "1011" else        
! }/ f# P3 j$ F: l( U; Z                        "01100011" when S= "1100" else        
& s% S; @% C: e8 `% d; y' Q                        "10000101" when S= "1101" else        
0 |  M2 W% Q) B( ^: ^! V                        "01100001" when S= "1110" else        2 o, _6 k* v) {  L
                        "01110001";    ; Z! W0 N9 X8 L" b+ X" A3 \* J7 A
                        
& H% Z0 D" w2 l  V" jend Behavioral;
作者: gto10620    時間: 2008-5-14 10:45 PM
感謝囉!!後來我改成這樣
% @3 R* Q! }2 zentity sedg7 is
1 R' q  Y6 Q4 a    Port ( Enable : in  STD_LOGIC;
' k: r' m/ X/ x" Z8 A! F+ N# B* M           X : in  STD_LOGIC_VECTOR (3 downto 0);
; E3 c& T& B1 [' p9 i" a& R  h! c                          a,b,c,d,e,f,g,p : out STD_LOGIC;
$ S' G' @* N% _$ J3 A                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));; Q" Z) S# f! A) S
                          
* C4 N$ H9 a# E2 }                          0 V9 m! E1 o, q' @, P

1 F4 K( m1 h  {0 u6 \) {7 v1 n0 @end sedg7;
& [" i% C) @. `3 F3 m! F' ~
' j5 z4 F% ~, V: ~4 _6 }' m) Karchitecture Behavioral of sedg7 is- S) U* F& S% k- b5 B- z
SIGNAL Y :  STD_LOGIC_VECTOR (7 downto 0);+ Z4 ~- F0 I8 R% E! E! ?& m
begin
* Z: B' d/ T+ |                Y<=                "11111111" WHEN Enable= '1' ELSE! y0 V5 T4 v' ~9 A$ y2 L2 J$ T4 w
                                        "00000011" WHEN X="0000" ELSE0 W! o1 n* `( {# `
                                        "10011111" WHEN X="0001" ELSE* B1 f. ?1 X7 l' u+ L
                                        "00100101" WHEN X="0010" ELSE2 X: L' Q& D; M# `( s# o
                                        "00001101" WHEN X="0011" ELSE
: G' b# u2 \* O( ?" q  W                                        "10011001" WHEN X="0100" ELSE
, W& E" {* Z0 I4 c1 p; O- V                                        "01001001" WHEN X="0101" ELSE
3 S+ L5 n$ w/ l% f/ I) Y- k, s% i+ s                                        "01000001" WHEN X="0110" ELSE; u8 c2 |3 K: J1 ?4 S5 \
                                        "00011011" WHEN X="0111" ELSE
$ u  L: ~; t9 U                                        "00000001" WHEN X="1000" ELSE
* T% {. a" B0 X0 b, E! a6 X2 S                                        "00001001" WHEN X="1001" ELSE
0 I  }  C' Z# v; b                                        "00010001" WHEN X="1010" ELSE% A4 A0 ~0 h( c( G; E- Y* M% ~1 y
                                        "11000001" WHEN X="1011" ELSE: t3 f( U5 G) C( d$ O/ _3 R) h
                                        "01100011" WHEN X="1100" ELSE. {! u( E& J. y; q. Q5 l
                                        "10000101" WHEN X="1101" ELSE
& F  }" W1 Z# q2 ?9 Y& T! D0 ^' i0 H! ^                                        "01100001" WHEN X="1110" ELSE
+ v: e, a: H- h                                        "01110001" ;0 ]: K. v1 G$ l" O. n
        a<= Y(7);1 P5 M) b* }2 ]3 O
        b<= Y(6);
  Y. n& R3 i' g: u+ z        c<= Y(5);
( F2 G1 L2 p* V4 r        d<= Y(4);' z, H8 E3 ^9 Q8 Z
        e<= Y(3);
3 r# J$ S! P; n) p        f<= Y(2);' e2 q: D- r" c1 J( z2 X
        g<= Y(1);
1 {0 s7 Q2 g5 P        p<= Y(0);$ i5 [( a: h  i: J* W, r) A
        SEL<= "111110" ;
  n: G3 ?7 o2 \end Behavioral;




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