Ci1u J¢nh if t<;1o nen phfUl nh<.lnh (rang khi tlwc hi¢n chuang trinh. Tuy
thea ket qua cua bicu thuc dieu ki~n ma co tl1l~: ho~c rn¢t so I¢nh ho~e kh6ng col¢nh nao se duCJc thlfc hi¢n. Cilu I¢nh if co cau truc cu phap nhu saU:
178
if < dicill_ki¢n > then
{< ciiu)¢nlt_wclll_tl/ > J
! elsif < die'lf_ ki¢1I >then J
{< Ciill_fel11! _fudn tit> J [else! < call_I¢lJh_flldn_t~( > J] end if;
Twng ffi('ii nhanh eua loan tir if co th~ chua m(lt hQ(~c nhi6u cau l¢nh tu,'ln II!. Dau tien bi~u 'hue di~u ki~n (hrqe 'fnh to,in, neu ke", qu,\ ellO gia trj true, cae eflu l~nh Imin tl! narn sau IU khoa then sc dueye thl!e hi~n tue thai. Trong truong hqp nguqe l'.ti, ne'u bicu thue dieu ki~n sau IU kh(ia elsif eho gia Irj true. cae cau l¢nh luGn tl! sau lU khoa then tiep theo sc dw~e thlfC hi¢n, ... vv. Drn.m chuang trlnh du6i day su d1,lng cau l¢nh if d~ rna t,-l phan tu AND vbi hai dau vao:
signal Input 1, Input2. Output: STD _LOGIC: And_process: process ( Input I, Input2 ); begin
jf Input 1 = '0' or Input2 = '0' then Output <= '0';
elsif Input I = 'X' or Inpul2 = 'X' then Output <= 'X';
else Output <= '1':
end if end process; 4. Call l~nh Case
Crill l¢nh case duqe su d~ng trong truong heyp c6 tnQI bitu thue M kiem ,>o,it nhicu re nhanh lrong chu"0ng tdnh YHDL. Cae l~nh lUang I1ng voi t11Qt 1rong cae il!a ehQn sc dUQ'c thl!c hi¢n n2'u bicu thue ki6m soli! co gi,j Irj bill1g gia Ir! luang ung eua 11,l'a eh(:)I1. Cau I¢nh case co C<lu true eli phap nhu' sau:
case < hilll {llIrc > is
when < h/il_ch()I1 > => {< rdll_h'lIh IlIdn fl(>! { when < 1(/"il_ch()JI > => {< ('tlll_'fnh _WGII_fl/ >} end case; 179
Trong d6,
< bit/II ~"lIrc > sau khi tinh phai eo ki~u: nguyen, kie:u Ji~t ke hO{le mang m9t ehicu de ky tl,l nhLl BIT ~ VECfOR;
< ft/(l C/l(JII > ho~e III nhung bicu th(rc eo djnh ( vi dl,l nhLl hung so ) hO(lC mOt khoang eo dinh;
moi gill trj trong mien xac djnh eua < bi("11 ,Mer> phJ.i ctuqc phu boi mOt va chi ll1(lt < h.r(J~('h{Ji/ >;
< h.t(I_("h~J/I > euai eung eo the la others. Tu kh6a others lUang (rng v6i tAt c,i eae trui:mg h9P eon h~i eua < h.ltl~ch~m > trong mien xiie dinh ella hieu th(re kicm soaL D6i voi cae < It/aJ!/(:m >, ngoll ngu VHDL dLl<l ra cac gi6i
h,~n sau:
180
< fl/(J~ch{)// > phili e6 ellng kieu voi < bi£"JI~tllll"C >.
m6i gia trj clla < hi/II ,llIr( > ph"l.i dUge bicu dicn bang 1l19t va chi mQt < l{la~cl/(:m >.
neu khong e6 h!a ehQn others thl mQi gia tri e6 the co dUQ"c ella
< biell~tlll(c > phii dUQ"e phu bai tat c.i dc khii nang e6 the C() eua < h{a chol1 >.
Vi dl,l Slr dyng cau l¢nh case,
signal S1: integer range 0 to 7 ; signal II, 12, D : BIT ;
selcct~proeess: process ( S 1, II, 12, 13 )
begin case SI is when 0 I 2 => OU <= '0'; when 1 => OU <= II ; when 3 to 5 => OU <= 12; when others => OU<=B; end case;
5. Cau I~nh rbng null
Clu l¢nh rang c6 eli rhap nhu SilU:
null;
Trang ngon ngU VHDL, khi chuang trinh InO ph6ng g~p CflU l¢nh null,
no se he, qua l¢nh nay va thlfC hi¢n l~nh tiep sau. Thong thuong. cau I¢nh
null dung d~ chi truang hqp kh6ng thlfc hi~n I¢nh InQt eel.ch luang mLnh khL co d.c dicu ki~n tn\. l<,li gia Ir! true. Do do, C,lU l¢nh null thLfong dW;K dlmg trong dc cau l~nh case dni vdj nhung h.ra chQn kh6ng can thao taco
V'd1.:l.
variable Sel : integer range 0 to 31;
variable V : integer range 0 to 31;
ease Sel is whenOtu 15=> V :~ SeI; when uthers => nulL end case;
6. Cae I¢nh v6ng I~p
L~nh qp luop chua than vong 1~p baa g6m day de c1u l¢nh sc dU,!e Ihl,l'C hi¢1l kh6ng ho~c nhieu hin. au l~nh loop c() quy It I< .l phap nhu SilU:
[< nhdn >:] l< sU_dd_/(1p >] loop
{ < /i'Il/1 Wan . - - ' tlf >} I
{next [< !l1J(11I > ] [","hen < diell_ ki{'JI >]; } I I exit [< 111/(/11 >] [when < die'lI_ ki{;/1 >];} end loop [l1l1all ];
< 1111(111 >: nhii.n ella vong Ii).p va thuang dUQ'e dung de xay dl,l'r1g nhiing \'ong l~lP 16ng nhau. trong 1.16 mOL vang l~p ducyc ket Ihue b6'i tu khoa end loop;