Chip123 科技應用創新平台

標題: 請問 VHDL case state 如何宣告成output pot [打印本頁]

作者: DavidCha    時間: 2009-10-6 06:22 PM
標題: 請問 VHDL case state 如何宣告成output pot
如題.....
  ^, U7 `* j/ u# r( ?: g先前都是使用verilog再寫code# P- v5 k1 d% }# L- j. X
最近拿到前人的code是使用VHDL
2 P+ L+ U3 g: A2 m, q, E# X遇到一個問題我不知道如何將case 的state 宣告成 output port 4 @: ?' Y/ a( W6 h
想請各位大大 幫忙解惑一下! I8 O+ {: Q7 D2 f1 p
謝謝) J8 f  f4 p: b' X5 o
0 {& \1 S. o! k* A* l3 V
code 如下
7 Q$ F6 _* V# n( ?2 e2 T) Z
2 m% ~! u. N$ \6 S  q. l/ O type state_s is (s0,s1,s2,s3 );  + S# _! j0 ^! {( q' n& F
  signal state : state_s ;
) f& L2 r& {! l( E' _   case    state is                   6 L; I6 g6 U: p! I
           when s0 =>/ P+ p* o% ~- h$ v
             if (***)     then
# P2 o( q4 H- b               state <= s1;
3 z2 S2 v5 b8 Q7 i9 \                       when s1 =>
" W1 ^# S* q1 J) C" @                                 .' u+ |$ ?0 P% Q
                                 .2 J+ K; k2 L+ T) G; X5 w
                                 .
' I5 i6 [4 ?4 C& t9 C4 i# H                                 .
作者: addn    時間: 2009-10-7 09:53 PM
您好
$ [6 k" u+ |3 R% |9 _1 E1 Q, O0 B+ d3 N* S- o( o
  有一個方法,你的state狀態有四個,/ [' v( b2 Z6 ^  \* d
用SIGNAL  state :STD_LOGIC_VECTOR(1  DOWNTO 0);
# _6 Q' a- Y  B來取代你的狀態機宣告type state_s is (s0,s1,s2,s3 );  ! i3 i+ f  q  }! g3 I$ V- r
  signal state : state_s ;+ n$ X$ H; `4 U; z) R* s6 K7 X

0 R* |# A! L6 `然後就可以 state_output<=state;- B0 a2 I9 f, z$ O$ R) p6 q
假設state_output宣告為輸出OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
2 l, }" j6 w1 K1 N/ d% p6 R% C) y. j* M. b
不過此法可讀性不佳,因為你要自己定義state={00,01,10,11}分別代' h$ k7 q* @4 ^! @* X, U
表甚麼狀態5 z/ w3 t9 ^+ i6 w/ O

- |6 f) h7 Y1 q, }5 K  G+ ^' I請問你的state為甚需要輸出?




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