intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài Giảng về Kỹ Thuật Số

Chia sẻ: Van Nguyen Van | Ngày: | Loại File: PDF | Số trang:20

206
lượt xem
52
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cũng giống như ROM hay PROM, mot PLD cũng được lập trình để tạo ra file đốt các cầu chì hay dioke. Ngôn ngữ sử dụng để lập trình cho PLD trong chương trình này là ABEL là một trong những ngôn ngữ lập trình rất mạnh cho PLD, hỗ trợ cho nhiều ngõ vào, bao gồm cả sơ đồ trạng thái và bảng sự thật.

Chủ đề:
Lưu

Nội dung Text: Bài Giảng về Kỹ Thuật Số

  1. Bài Giảng Kỹ Thuật Số Phụ lục B PHỤ LỤC B I. NGOÂN NGÖÕ LAÄP TRÌNH CHO PLD Cuõng gioáng nhö ROM hay PROM, moät PLD cuõng ñöôïc laäp trình ñeå taïo ra file ñoát caùc caàu chì hay diode. Ngoân ngöõ söû duïng ñeå laäp trình cho PLD trong chöông trình naøy laø ABEL (Advanced Boolean Equation Language) laø moät trong nhöõng ngoân ngöõ laäp trình raát maïnh cho PLD, hoã trôï cho nhieàu ngoõ vaøo, bao goàm caû sô ñoà traïng thaùi vaø baûng söï thaät. Trình bieân dòch cuûa ABEL coù khaû naêng moâ phoûng vaø taïo file fuse map (caàu chì) cho PLD. Trong phuï luïc naøy chæ toùm taét höôùng daãn söû duïng caùc phaàn caáu truùc vaø cuù phaùp veà caùc phaùt bieåu, khai baùo, chæ daãn…chuû yeáu nhaát ñeå phuïc vuï cho caùc baøi thí nghieäm sau ñoù. Ñeå hieåu saâu hôn veà ngoân ngöõ naøy, sinh vieân neân tham khaûo theâm caùc taøi lieäu khaùc hoaëc phaàn help trong ngoân ngöõ. Ngoaøi ABEL coøn coù caùc ngoân ngöõ khaùc nhö VHDL, AHDL… CAÁU TRUÙC CUÛA MOÄT CHÖÔNG TRÌNH ABEL module module name title string deviceID device deviceType; pin declarations other declarations equations equations test_vectors end module name Module. Teân chöông trình vaø caùc thoâng soá hình thöùc Title. Duøng ñeå moâ taû module Declaration. Moâ taû caùc module caáp thaáp hôn, ñònh nghóa caùc khoái chöùc naêng nhö devive, pin, node, constant, macro, caùc taäp hôïp,… Equations. Söû duïng caùc haøm, caùc löu ñoà traïng thaùi hay baûng söï thaät ñeå moâ taû caùc thieát keá logic Test_vectors. Test_vectors sö duïng trong caùc file moâ phoûng JEDEC End. Keát thuùc moät module Trang 251 GV: Nguyễn Trọng Hải
  2. Bài Giảng Kỹ Thuật Số Phụ lục B Löu yù: caáu truùc ôû treân bao goàm caùc thaønh phaàn cô baûn cuûa moät chöông trình ABEL, tuøy vaøo nhöõng öùng duïng cuï theå coù theå seõ coù theâm caùc phaùt bieåu khaùc nhö maùy traïng thaùi, v.v… 1. CAÙC PHAÙT BIEÅU (STATEMENTS) 1.1. Phaùt bieåu Module module modname [( dummy_arg[,….])] Cuù phaùp Muïc ñích: Phaùt bieåu module xaùc ñònh ñieåm baét ñaàu cuûa moät chöông trình vaø phaûi coù phaùt bieåu END ñeå xaùc ñònh ñieåm keát thuùc cuûa module Modname laø moät danh hieäu hôïp leä ñöôïc ñaët laøm teân goïi cho module Söû duïng chöông trình Danh hieäu hôïp leä laø moät chuoãi daøi toái ña 31 kyù töï (chöõ caùi, chöõ soá, daáu gaïch döôùi’_’), ñöôïc baét ñaàu baèng chöõ caùi hay daáu gaïch döôùi ’_’. Danh hieäu phaân bieät chöõ hoa hay chöõ thöôøng. Dummy_arg (coù theå coù) : laø moät thoâng soá hình thöùc (töông töï nhö trong ngoân ngöõ hôïp dòch) Ví duï MODULE My_Example … END My_Example Module coù teân My_Example vaø phaùt bieåu END My_Example keát thuùc module naøy.Trong module naøy khoâng söû duïng thoâng soá hình thöùc. MODULE My_Example (A,B) … C=A+B END My_Example Trong module naøy coù söû duïng hai thoâng soá hình thöùc A vaø B, bieåu thöùc C=A+B, vôi A,B ñöôïc traû veà gía trò thöïc (töø module khaùc) khi bieân dòch 1.2. Phaùt bieåu Title title ‘string’ Cuù phaùp Muïc ñích: Phaùt bieåu title ñaët cho module moät töïa ñeà (header) ñeå minh hoïa ñaëc ñieåm chöùc naêng do ngöôøi laäp trình taïo ra.Chuoãi kyù töï seõ xuaát hieän trong caû file döõ lieäu vaø file fusemap sau khi bieân dòch string: laø chuoãi kyù töï naèm trong hai daáu nhaùy ñôn (‘) vaø giôùi haïn 324 kyù Söû duïng töï Söû duïng phaùt bieåu tilte laø tuøy choïn Ví duï module m6809a Trang 252 GV: Nguyễn Trọng Hải
  3. Bài Giảng Kỹ Thuật Số Phụ lục B title ’6809 memory decode Jean Designer Data I/O Corp Redmond WA’ 1.3. Phaùt bieåu equations equations Cuù phaùp element [?] = condition; when-then-else_statement; Muïc ñích: Phaùt bieåu equations ñònh choã baét daàu cuûa moät hay moät nhoùm bieåu thöùc Boole bieãu dieãn haøm logic ngoõ ra theo ngoõ vaøo condition. Moät moâ taû Söû duïng element. teân danh ñònh cuûa moät tín hieäu, taäp caùc tín hieäu hay tín hieäu thöïc maø moâ taû giaù trò cuûa noù ñöôïc gaùn when-then-else_statement: phaùt bieåu when-then-else Sau moãi bieåu thöùc phaûi coù daáu chaám phaåy (;) Ví duï Equations A = B&C#A; [W,Y] = 3; !F = (B = =C); 1.4. Phaùt bieåu Truth_table truth_table (inputs -> outputs) Cuù phaùp hay truth_table (inputs : > reg_outs) Truth_table trình baøy baûng söï thaät minh hoïa ngoõ ra nhö moät haøm toå hôïp cuûa caùc Muïc ñích: ngoõ vaøo Caùc baûng söï thaät coù theå thay theá hoaëc boå sung theâm cho caùc bieåu thöùc (trong equations) hay sô ñoà traïng thaùi (trong state_diagram) inputs : laø caùc ngoõ vaøo cuûa haøm logic Söû duïng outputs : laø caùc ngoõ ra cuûa haøm logic reg_outs : laø caùc ngoõ ra cuûa caùc thanh ghi (FF) Daáu -> bieãu dieãn heä toå hôïp Daáu : > bieãu dieãn heä tuaàn töï Ví duï Truth_table ([A,B] -> C) [0,1] -> 1; [1,0] -> 1; [1,1] -> 0; [0,0] -> 0; Roõ raøng truth_table ôû treân bieãu dieãn bieåu thöùc C=A+B Trang 253 GV: Nguyễn Trọng Hải
  4. Bài Giảng Kỹ Thuật Số Phụ lục B 1.5. Phaùt bieåu state_diagram State_diagram state variables Cuù phaùp State state_exp:[equations]; . . [trans-stmt…]; Muïc ñích: Phaùt bieåu state_diagram ñònh nghóa caùc bieán traïng thaùi baét ñaàu söï moâ taû hoaït ñoäng cuûa maùy traïng thaùi (töông töï nhö ñoà thò traïng thaùi hay löu ñoà maùy traïng thaùi) state_variables: laø taäp hôïp caùc bieán traïng thaùi trong maùy traïng thaùi Söû duïng state: laø töø khoùa ñeå bieãu dieãn söï chuyeån bieán töø traïng thaùi hieän taïi sang traïng thaùi keá tieáp vaø ngoõ ra hieän taïi state_exp : laø bieåu thöùc hay haèng soá ñòng nghóa traïng thaùi hieän taïi equations: laø caùc bieåu thöùc logic ngoõ ra hieän taïi cuûa maùy traïng thaùi trans_stmt : laø moät phaùt bieåu daïng IF – THEN – ELSE , GOTO, CASE (tuøy choïn) ñeå moâ taû söï chuyeån bieán töø traïng thaùi hieän btaïi sang traïng thaùi keá tieáp theo ñieàu kieän taùc ñoäng cuûa ngoõ vaøo Ví duï Giaû söû ta coù 2 ngoõ vaøo x1 vaø x2, ngoõ ra laø z, maùy traïng thaùi coù 3 traïng thaùi kyù hieäu S0,S1,S2, 2 bieán traïng thaùi Q = [Q0,Q1] (2 ngoõ ra cuûa FF) State_diagram Q State S0: if (x1&x2 = =0) then S2 S0 Else S1 State S1: z=1; 1 0 x1x2 Go to S2; State S2: z=0; z=1 S1 S2 z=0 Go to S0; 1.6. Phaùt bieåu goto Goto state_exp Cuù phaùp Muïc ñích: Phaùt bieåu goto bieãu dieãn söï chuyeån bieán khoâng ñieàu kieän töø traïng thaí hieän taïi sang traïng thaùi keá tieáp laø state_exp. State_exp: laø bieåu thöùc bieãu dieãn traïng thaí keá tieáp Söû duïng Ví duï Si: goto Sj; nhaûy ñeán traïng thaùi Sj Trang 254 GV: Nguyễn Trọng Hải
  5. Bài Giảng Kỹ Thuật Số Phụ lục B 1.7. If – then – else If exps then state_exp1 Cuù phaùp [else state_exp2]; hay if exp1 then state_exp1 else if exp2 then state_exp2 [else if….] else state_expn; Muïc ñích: Phaùt bieåu if – then – else : moâ taû söï chuyeån hoùa traïng thaùi theo ñieàu kieän ngoõ vaøo. Neáu bieåu thöùc ngay sau töø khoùa if laø ñuùng , chuyeån bieán höôùng ñeán traïng thaùi ngay sau töø khoùa then; neáu sai chuyeån bieán höôùng ñeán trang thaùi ngay sau töø khoùa else. exps: laø bieåu thöùc baát kyø hôïp leä naøo Söû duïng state_exp1, state_exp2…..: laø bieåu thöùc bieãu dieãn traïng thaùi keá tieáp. Caùc phaùt bieåu if – then – else coù theå ñöôïc noái vôùi nhau lieân tieáp nhöng keát thuùc phaûi laø daáu chaám phaåy. Ví duï State 1 : if (A = = B) then 2; “neáu A = b chuyeån ñeán traïng thaùi 2 State 2 : if A then 3 else 4; “ neáu A ñuùng (≠0) chuyeån ñeán traïng thaùi 3 “ neáu A sai (=0) chuyeån ñeán traïng thaùi 4 state 0 : if a then 1 else if b then 2 else if c then 3 else 0; 1.8. Phaùt bieåu case Case [exps1 : state+exp1;] Cuù phaùp [expsi : state_expi;] end case; Muïc ñích: Phaùt bieåu case moâ taû söï chuyeån bieán traïng thaùi trong tröôøng hôïp coù nhieàu ñieàu kieän taùc ñoäng. Söû duïng Traùnh khoâng ñeå 2 ñieàu kieän xaûy ra cuøng luùc vaø traùnh tröôøng hôïp keát quaû traïng thaùi keá khoâng ñoaùn tröôùc ñöôïc Ví duï STATE S0: CASE (sel == 0): S0 ; (sel == 1): S1 ; ENDCASE Trang 255 GV: Nguyễn Trọng Hải
  6. Bài Giảng Kỹ Thuật Số Phụ lục B 1.9. Phaùt bieåu test_vectors: Text vectors[‘note’] (inputs → outputs) Cuù phaùp [invalues → out values] Muïc ñích: Caùc test_vectors duøng ñeå moâ phoûng hoaït ñoäng cuûa heä vaø kieåm tra caùc chöùc naêng hoaït ñoäng cuûa heä khi chaïy chöông trình moâ phoûng note: laø moät chuoãi kyù töï ñeå moâ taû caùc text_vectors Söû duïng inputs : laø 1 danh ñònh hay taäp hôïp caùc danh ñònh teân caùc tín hieäu vaøo hay hoài tieáp veà ngoõ vaøo cuûa heä. Outputs : laø 1 danh ñònh hay taäp hôïp caùc danh ñònh teân caùc tín hieäu ra cuûa heä. Invalues : laø 1 hay taäp hôïp caùc giaù trò vaøo Outvalues : laø 1 hay taäp hôïp caùc giaù trò ra laø haøm logic cuûa caùc giaù trò vaøo vaø gía trò traïng thaùi (heä tuaàn töï) Ví duï equations C = A&B; “C = A.B D = A#B; “D = A+B Text_vectors ([A,B]→[C,D]) [0,0]→[0,0] [0,1]→[0,1] [1,0]→[0,1] [1,1]→[1,1] 1.10. Phaùt bieåu istype Signal [ , signal] … istype ’attr[ , attr]…’; Cuù phaùp Hay signal [ , signal] … pin istype ‘attr[ , attr]… ‘; Muïc ñích: Phaùt bieåu istype ñònh nghóa caùc thuoäc tính cuûa pin hay node laäp trình ñöôïc cuûa caùc duïng cuï (PLD). Caùc thuoäc tính cuûa pin hay node coù theå khai baùo cuøng moät doøng signal: laø moät danh hieäu pin hay node Söû duïng attr: laø moät chuoãi kyù töï xaùc ñònh caùc thuoäc tính cuûa caùc signal Caùc thuoäc tính hôïp leä laø: ‘buffer’ : ñeäm ‘com’ : heä toå hôïp ‘invert’ : ñaûo ‘neg’ : tính cöïc möùc thaáp ‘pos’ : tính cöïc möùc cao ‘reg’ : thanh ghi (heä tuaàn töï) ‘reg_D’,’reg_T’,’reg_JK’,’reg_SR’ : caùcFF, D, T, JK, SR Trang 256 GV: Nguyễn Trọng Hải
  7. Bài Giảng Kỹ Thuật Số Phụ lục B Ví duï F0, A istype ‘neg , reg’; istype ñònh nghóa F0 , A laø tín hieäu cuûa thanh ghi , taùc ñoäng möùc thaáp outputs pin 15 istype ‘reg , invert’ tín hieäu output chaân 15 cuûa thanh ghi ngoõ ñaûo (ngoõ ra Q ) 1.11. Phaùt bieåu end End Cuù phaùp Hay end modname Muïc ñích: Duøng keát hôïp vôùi caùc phaùt bieåi module ñeå môû ñaàu vaø keát thuùc module chöông trình signal: laø moät danh hieäu pin hay node Söû duïng attr: laø moät chuoãi kyù töï xaùc ñònh caùc thuoäc tính cuûa caùc signal Caùc thuoäc tính hôïp leä laø: ‘buffer’ : ñeäm ‘com’ : heä toå hôïp ‘invert’ : ñaûo ‘neg’ : tính cöïc möùc thaáp ‘pos’ : tính cöïc möùc cao ‘reg’ : thanh ghi (heä tuaàn töï) ‘reg_D’,’reg_T’,’reg_JK’,’reg_SR’ : caùcFF, D, T, JK, SR Ví duï F0, A istype ‘neg , reg’; istype ñònh nghóa F0 , A laø tín hieäu cuûa thanh ghi , taùc ñoäng möùc thaáp outputs pin 15 istype ‘reg , invert’ tín hieäu output chaân 15 cuûa thanh ghi ngoõ ñaûo (ngoõ ra Q ) 2. CAÙC KHAI BAÙO (DECLARATIONS) 2.1. Pin [!]pin_id[,[l]pin_id…]pin[pin#[,pin#]] istype ’attr’]; Cuù phaùp Muïc ñích: Töø khoùa pin duøng ñeå khai baùo nhöõng tín hieäu input vaø output, laø nhöõng tín hieäu in/out quy ñònh saün treân duïng cu ï(theo soå tra cöùu). Khai baùo cuõng coù theå ñònh nghóa thuoäc tính chaân Khi 1 danh saùc danh ñònh chaân vaø soá chaân coù trong cuøng moät khai baùo chaân , seõ coù söï töông öùng 1-1 giöõa danh ñònh chaân vaø soá chaân pin_id: laø moät danh hieäu duøng ñeå ñaët teân cho 1 chaân Söû duïng pin #: laø soá thöù töï chaân treân duïng cuï (PLD)thaät Trang 257 GV: Nguyễn Trọng Hải
  8. Bài Giảng Kỹ Thuật Số Phụ lục B attr: laø moät chuoãi xaùc ñònh caùc thuoäc tính cuûa chaân !: kyù hieäu NOT,tích cöïc möùc thaáp Ví duï !clock,reset,S1 pin 12,15,3; khai baùo naøy gaùn teân chaân: clock chaân 12, reset chaân 15, S1 chaân 3 !clock: tích cöïc möùc 0 2.2. Node [!]node_id[,[!]node_id … ]node[node#[,node# …][istype ’attr’]; Cuù phaùp Muïc ñích: Töø khoùa node duøng ñeå khai baùo nhöõng tín hieäu gaùn cho nhöõng nuùt aån trong duïng cuï node_id: laø moät danh hieäu duøng ñeå ñaët teân moät nuùt Söû duïng node#: laø soá thöù töï nuùt treân duïng cuï thaät (nuùt töông ñöông nhö chaân aån trong duïng cuï vaø soá nuùt ñöôïc cho trong soå tay tra cöuù) Ví duï B node istype’reg’ : xaùc ñònh nuùt B laø 1 ngoõ cuûa FF trong duïng cuï A,B node 25,26 : gaùn teân A laø nuùt 25, gaùn teân B laø nuùt 26. Soá nuùt naøy do nhaø saûn xuaát quy ñònh trong soå tay tra cöùu 2.3. Duïng cuï (Device) Device-id device real_device; Cuù phaùp Muïc ñích: Khai baùo device cho moät PLD thaät. Trong quaù trình bieân dòch, caùc haøm logic seõ ñöôïc ñöa veà daïng theo caáu truùc coång ñuùng nhö cuûa duïng cuï thaät. device-id: laø moät danh hieäu, chính laø teân file fusemap Söû duïng real-device: moâ taû maõ soá duïng cuï (PLD) ñaët giöõa 2 daáu nhaùy ñôn (‘) Phaûi ñaët daáu ; sau khai baùo Ví duï D1 device ‘P16R4’: khai baùo naøy cho bieát D1 laø loaïi PLD PAL 16R4 3. CAÙC KHAI BAÙO KHAÙC (OTHER DECLARATIONS) 3.1. Haèng (constant) id[,id]… = expr[,expr] …; Cuù phaùp Muïc ñích: Khai baùo haèng ñònh nghóa nhöõng haèng soá ñöôïc duøng trong 1 module id: laø moät danh hieäu ñaët teân cho 1 haèng Söû duïng expr: xaùc ñònh gía trò haèng Ví duï X = .X.; “X mang yù nghóa khoâng xaùc ñònh Trang 258 GV: Nguyễn Trọng Hải
  9. Bài Giảng Kỹ Thuật Số Phụ lục B Z = .Z.; “Z mang yù nghóa toång trôû cao C = .C. “C mang yù nghóa taùc ñoäng caïnh leân A = ^b01 ; “soá nhò phaân B = ^h16; “soá hex C = 10; “soá thaäp phaân 3.2. Taäp hôïp (set) Taäp hôïp laø taäp hôïp nhöõng tính hieäu vaø haèng soá maø taùc vuï thöïc hieän nhö laø Ñònh nghóa 1 ñôn vò Baát cöù taùc vuï naøo aùp duïng cho 1 taäp hôïp seõ ñöôïc aùp duïng cho moãi phaàn töû trong taäp hôïp Taäp hôïp seõ laøm ñôn giaûn vieäc moâ taû logic vaø caùc test-vectors baèng caùch chæ caàn duøng teân goïi taäp hôïp Söû duïng Moät taäp hôïp ñöôïc ñaïi dieän bôûi 1 danh saùch caùc haèng soá vaø tín hieäu ngaên caùch baèng caùc daáu chaám phaåy hay daáu khoaûng (..), ñaët trong daáu ngoaëc vuoâng ([ ]). Sau moãi khai baùo taäp hôïp phaûi coù daáu ; Ví duï MULOUT = [B0,B1,B2,B3,B4,B5,B6,B7]; hay MULOUT = [B0…B7]; MULOUT laø khai baùo laø teân moät taäp hôïp goàm 8 tín hieäu töø B0 ñeán B7 BCD = [D,C,B,A] LED = [g,f,e,d,c,b,a] Test-vectors (BCD → LED) [0,0,0,0] →[1,0,0,0,0,0,0] BCD laø 1 taäp hôïp goàm caùc tín hieäu D,C,B,A LED laø 1 taäp hôïp goàm caùc tín hieäu g,f,e,d,c,b,a 3.3. Macro Macro_id macro [(dummy_arg [, dummy_arg]…)]{block}; Cuù phaùp Muïc ñích: Khai baùo macro ñònh nghóa 1 macro thöïc hieän caùc chöùc naêng, caùc pheùp toaùn,bieåu thöùc logic trong moät khoái Chæ ñònh nghóa macro 1 laàn trong phaàn khai baùo macro trong module vaø seõ ñöôïc duøng baát cöù nôi naøo trong module Khai baùo macro töông töï nhö trong trình hôïp ngöõ Macro chæ coù theå ñöôïc duøng trong module maø noù ñöôïc khai baùo Trang 259 GV: Nguyễn Trọng Hải
  10. Bài Giảng Kỹ Thuật Số Phụ lục B macro_id: laø moät danh hieäu ñaët teân cho macro Söû duïng dummy_arg: laø moät thoâng soá hình thöùc block: laø caùc bieåu thöùc logic Ví duï NAND3 macro (A,B,C) {!(A&B&C)} NAND3 laø macro thöïc hieän chöùc naêng haøm logic A.B.C vôùi A,B,C laø caùc thoâng soá hình thöùc Sau ñoù trong module khai baùo macro naøy ta coù khai baùo: D = NAND 3 (Clock, Hello, busy); Keát quûa laø: D = !(Clock&Hello&Busy) khi bieân dòch 3.4. Enable Enable output_id = [!]expr; Cuù phaùp Muïc ñích: Khai baùo enable cho pheùp caùc ngoõ ra 3 traïng thaùi hoaït ñoäng theo tín hieäu ñieàu khieån bôûi gía trò cuûa expr Söû duïng khai baùo naøy theo sau phaùt bieåu equations output_id: laø danh hieäu ñaët teân cho 1 ngoõ ra hoaëc 1 taäp hôïp ngoõ ra Söû duïng expr: laø 1 bieåu thöùc logic Ví duï OE pin11; F0,F1,F2,F3 pin 19,18,17,16; Count = [F0,F1,F2,F3]; Equations Enable count = !OE Caùc ngoõ ra töø F0 ñeán F3 trong taäp hôïp count laø caùc ngoõ ra 3 traïng thaùi , seõ hoaït ñoäng khi OE = 0 vaø seõ ôû traïng thaùi high-Z khi OE = 1 Coù theå söû duïng tieáp vó ngöõ .OE thay cho khai baùo enable (xem phaàn tieáp vó ngöõ) 4. CAÙC TOAÙN TÖÛ (OPERATORS) 4.1. Toaùn töû chuaån (standard) ! NOT = toaùn töû gaén cho bieåu thöùc toå hôïp # OR := toaùn töû gaùn cho bieåu thöùc thanh ghi (tuaàn töï) & AND $ XOR !$ XNOR Trang 260 GV: Nguyễn Trọng Hải
  11. Bài Giảng Kỹ Thuật Số Phụ lục B Ngoaøi ra töø khoaù @ALTERNATE baùo cho trình bieân dòch bieát boä toaùn töû töông ñöông (alternate) thay theá cho boä toaùn töû chuaån (caùc kyù hieäu deã nhôù hôn) Boä toaùn töû thay theá (phaûi coù töø khoaù @ALTERNATE ôû ñaàu module chöông trình) / NOT * AND + OR :+: XOR :*: XNOR 4.2. Toaùn töû so saùnh == baèng != khoâng baèng < nhoû hôn > lôùn hôn = lôùn hôn hoaëc baèng Ngoaøi ra coøn cho pheùp vieát caùc bieåu thöùc ñieàu kieän , bieåu thöùc naøy seõ traû veà 1 neáu thoaû ñieàu kieän vaø traû veà 0 neáu khoâng thoûa ñieàu kieän Ví duï Q = (P = =1); “Q seõ baèng 1 neáu P =1 vaø Q seõ baèng 0 neáu P khaùc 1 5. CAÙC TIEÁP ÑAÀU NGÖÕ (Prefix), tieáp vó ngöõ (suffix) 5.1. Tieáp ñaàu ngöõ Toùan töû Not (! hay /) ñöôïc duøng nhö tieàp ñaàu ngöõ ñeå baùo trình bieân dòch bieát tín hieäu hoaït ñoäng (tích cöïc) ôû möùc logic !Q0 pin 15; töông ñöông vôùi Q0 pin 15 istype ‘neg’; Ví duï: 5.2. Tieáp vó ngöõ Caùc tieáp vó ngöõ thöôøng ñöôïc duøng trong cheá ñoä thanh ghi ñeå truy xuaát ñeán töøng chaân noäi trong thanh ghi Ví duï Q0.CK truy xuaát ñeán chaân clock cuûa tín hieäu ra Q0 ôû cheá ñoä thanh ghi Töông töï nhö ñoái vôùi .RE,.PR,.D,.T….. laàn löôït truy xuaát ñeán caùc chaân reset,preset,D,T cuaû thanh ghi Tieáp vó ngöõ .OE cho pheùp xuaát ôû ngoõ ra 3 traïng thaùi Ví duï out.oe = !ena; ena =0 → ngoõ ra out ñöôïc pheùp xuaát ena = 1 → ngoõ ra out ôû traïng thaùi high-Z Trang 261 GV: Nguyễn Trọng Hải
  12. Bài Giảng Kỹ Thuật Số Phụ lục B 6. GHI CHUÙ (Comments) Caùc ghi chuù minh hoaï , giaûi thích cuûa chöông trình baét ñaàu baèng daáu nhaùy keùp (“)vaø keát thuùc baèng daáu nhaùy keùp (“) hoaëc xuoáng doøng. Ví duï Q1,Q2,Q3, pin 14,15,16 “outputs “declarations QSTATE = [Q1,Q2,Q3]; “sets Trang 262 GV: Nguyễn Trọng Hải
  13. Bài Giảng Kỹ Thuật Số Phụ lục B BAØI THÍ NGHIEÄM BIEÂN DÒCH VAØ MOÂ PHOÛNG ABEL A. MUÏC ÑÍCH – YEÂU CAÀU BAØI THÍ NGHIEÄM: Giuùp sinh vieân naém ñöôïc kyõ thuaät laäp trình vaø bieân dòch ngoân ngöõ ABEL trong • thieát keá PLD (caùc daïng hoài tieáp, khoâng hoài tieáp, thanh ghi…) SV phaûi ñoïc kyõ tröôùc baøi cô sôû lyù thuyeát vaø oân laïi kieán thöùc veà kyõ thuaät soá • SV phaûi nhaäp saün caùc baøi thí nghieäm vaøo ñóa meàm • B. THIEÁT BÒ SÖÛ DUÏNG: Maùy vi tính + chöông trình • C. NOÄI DUNG THÍ NGHIEÄM: 1. Thí nghieäm 1 Muïc ñích: Duøng caùc bieåu thöùc trong equations ñeå thöïc hieän maïch (mode ñôn). Thieát keá boä MUX 12 → 4 duøng GAL16V8 nhö hình sau U2 1 12 A0 C2 I0 F0 2 13 A1 C3 I1 F1 3 14 A2 Y0 I2 F2 4 15 A3 Y1 I3 F3 5 16 B0 Y2 I4 F4 6 17 B1 Y3 I5 F5 7 18 B2 S1 I6 F6 8 19 B3 S0 I7 F7 9 C0 I8 11 C1 I9 16V8 Caùc ngoõ vaøo: [a3,a2,a1,a0], [b3,b2,b1,b0], [c3,c2,c1,c0] Ngoõ ra : [y0, y1, y2, y3] Ñieàu khieån choïn keânh : [S1, S0] Chöông trình • 1 Module mux12t4 2 title '12 to 4 multiplexer 3 Thi nghiem 1' 4 “Cac khai bao 5 mux12t4 device 'P16V8S'; 6 a0,a1,a2,a3 pin 1,2,3,4; 7 b0,b1,b2,b3 pin 5,6,7,8; 8 c0,c1,c2,c3 pin 9,11,12,13; 9 s1,s0 pin 18,19; 10 y0,y1,y2,y3 pin 14,15,16,17; Trang 263 GV: Nguyễn Trọng Hải
  14. Bài Giảng Kỹ Thuật Số Phụ lục B 11 H = [1,1,1,1]; 12 L = [0,0,0,0]; 13 X = [.x.,.x.,.x.,.x.]; 14 select = [s1, s0]; 15 y = [y3,y2,y1,y0]; 16 a = [a3,a2,a1,a0]; 17 b = [b3,b2,b1,b0]; 18 c = [c3,c2,c1,c0]; 19 equations 20 y = (select == 0) & a # 21 (select == 1) & b # 22 (select == 2) & c # 23 (select == 3) & c ; 24 test_vectors ([select, a, b, c] -> y) 25 [0 , 1, X, X] -> 1; 26 [0 ,10, H, L] -> 10; 27 [0 , 5, H, L] -> 5; 28 [1 , H, 3, H] -> 3; 29 [1 ,10, 7, H] -> 7; 30 [1 , L,15, L] -> 15; 31 [2 , L, L, 8] -> 8; 32 [2 , H, H, 9] -> 9; 33 [2 , L, L, 1] -> 1; 34 [3 , H, H, 0] -> 0; 35 [3 , L, L, 9] -> 9; 36 [3 , H, L, 0] -> 0; 37 end Giaûi thích chöông trình • Doøng 1 khai baùo teân module laø mux12t4 - Doøng 2,3 khai baùo teân title vaø ñaët teân - Doøng 4 laø chuù thích - Doøng 5 khai baùo duïng cuï (device) teân U1 vaø duøng vi maïch 16V8S (simple - mode) Doøng 6,7,8,9,10 laø khai baùo gaùn teân caùc chaân töông öùng nhö hình - Doøng 11, 12, 13 laø khai baùo haèng : L = 0, H = 1, X=tuøy ñònh - Doøng 14,15,16,17,18 laø khai baùo taäp hôïp : select = [S1,S0] laø taäp goàm 3 bieán - ñieàu khieån choïn keânh, töông töï cho taäp a, b, c, y. Vieäc khai baùo taäp hôïp naøy seõ raát tieän khi ta caàn tham chieáu tôùi caùc ngoõ ñieàu khieån hoaëc ngoõ ra ôû phaàn sau ñoù Doøng 19 baét ñaàu phaùt bieåu equations. - Giaù trò gaùn cho toaùn töû ‘baèng’ duøng heä thaäp phaân. Neáu duøng heä nhò phaân ta ghi : (select = = ^b00) Doøng 24 baét ñaàu phaùt bieåu test_vectors ñeå kieåm tra chöùc naêng cuûa heä, khai baùo - caùc tín hieäu ngoõ vaøo vaø ngoõ ra caàn kieåm tra Ngoõ vaøo laø taäp hôïp caùc bieán select, a, b, c. Ngoõ ra laø taäp hôïp caùc bieán y Trang 264 GV: Nguyễn Trọng Hải
  15. Bài Giảng Kỹ Thuật Số Phụ lục B Doøng 25 ñeán 27 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=0 - Doøng 28 ñeán 30 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=1 - Doøng 31 ñeán 33 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=2 - Doøng 34 ñeán 36 laø caùc vector kieåm tra doàn keânh khi cho ngoõ vaøo select=3 - Doøng 37 laø phaùt bieåu END keát thuùc chöông trình - Bieân dòch chöông trình • Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt. 2. Thí nghieäm 2 Muïc ñích: Thieát laäp ñieàu khieån caùc ngoõ ôû cheá ñoä I/O vaø Hi Z (mode phöùc) Thieát keá boä ñeäm 2 chieàu 3 traïng thaùi duøng GAL 16V8 S1 S0 U2 1 12 S1 I0 F0 2 13 S0 A2 I1 F1 3 14 A1 I2 F2 4 15 A0 I3 F3 5 16 GAL16V8 B2 I4 F4 6 17 B1 I5 F5 7 18 B0 I6 F6 8 19 I7 F7 9 I8 11 I9 16V8 B2 B1 B0 A2 A1 A0 Caùc ngoõ vaøo/ra: [a2,a1,a0], [b2,b1,b0] Ñieàu khieån choïn chieàu data: [S1, S0] Neáu [S1,S0] = [0,1]: höôùng töø B sang A Neáu [S1,S0] = [1,0]: höôùng töø A sang B Chöông trình • 1 module tsbuffer 2 title 'bi-directional three state buffer 3 Thi nghiem 2' 4 TSB1 device 'P16V8c'; Trang 265 GV: Nguyễn Trọng Hải
  16. Bài Giảng Kỹ Thuật Số Phụ lục B 5 S1,S0 Pin 1,2; 6 A2,A1,A0 Pin 13,14,15; 7 B2,B1,B0 Pin 16,17,18; 8 Select = [S1,S0]; 9 A = [A2,A1,A0]; 10 B = [B2,B1,B0]; 11 X,Z = .X., .Z.; 12 Equations 13 A = B; 14 B = A; 15 Enable A = (Select==1); 16 Enable B = (Select==2); 17 test_vectors 18 ([Select, A, B]-> [ A, B]) 19 [0 , 0, 0]-> [ Z, Z]; 20 [0 , 7, 7]-> [ Z, Z]; 21 [1 , X, 3]-> [ 3, X]; 22 [1 , X, 5]-> [ 5, X]; 23 [2 , 3, X]-> [ X, 3]; 24 [2 , 5, X]-> [ X, 5]; 25 [3 , 0, 0]-> [ Z, Z]; 26 [3 , 7, 7]-> [ Z, Z]; 27 end Giaûi thích chöông trình • Doøng 4 khai baùo device ôû mode phöùc (modeI/O) - Doøng 11 khai baùo .z. laø toång trôû cao - Doøng 15 cho pheùp A xuaát khi [S1S0] = [01], luùc naøy höôøng truyeàn töø B->A - Doøng 16 cho pheùp B xuaát khi [S1S0] = [10], luùc naøy höôøng truyeàn töø A->B - Bieân dòch chöông trình • Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt. Trang 266 GV: Nguyễn Trọng Hải
  17. Bài Giảng Kỹ Thuật Số Phụ lục B 3. Thí nghieäm 3 Muïc ñích: Söû duïng baûng söï thaät trong truth_table ñeå thöïc hieän maïch Thieát keá 2 boä giaûi maõ 2→ 4 söû duïng GAL16V8 hoaït ñoäng theo baûng söï thaät sau: Input Output U2 1 12 Y32 G B A Y3 Y2 Y1 Y0 I0 F0 2 13 G1 Y22 I1 F1 3 14 A1 Y12 I2 F2 1 0 0 1 1 1 0 4 15 B1 Y02 I3 F3 5 16 G2 Y31 I4 F4 1 0 1 1 1 0 1 6 17 A2 Y21 I5 F5 7 18 B2 Y11 I6 F6 1 1 0 1 0 1 1 8 19 Y01 I7 F7 9 I8 1 1 1 0 1 1 1 11 I9 0 x x 1 1 1 1 16V8 Chöông trình • 1 Module decod2t4 2 Title 'giai ma 2 sang 4 3 Thi nghiem 3' 4 5 Decod2t4 device 'P16V8S'; 6 G1,G2 pin 2,5; 7 A1,B1,A2,B2 pin 3,4,6,7; 8 Y01,Y11,Y21,Y31 pin 19,18,17,16; 9 Y02,Y12,Y22,Y32 pin 15,14,13,12; 10 11 H,L,X = 1,0,.x.; 12 inputs1 = [G1,B1,A1]; 13 outputs1 = [Y31,Y21,Y11,Y01] ; 14 inputs2 = [G2,B2,A2]; 15 outputs2 = [Y32,Y22,Y12,Y02]; 16 17 Truth_table (inputs1->outputs1) 18 [1,0,0] -> [H,H,H,L]; 19 [1,0,1] -> [H,H,L,H]; 20 [1,1,0] -> [H,L,H,H]; 21 [1,1,1] -> [L,H,H,H]; 22 [0,X,X] -> [H,H,H,H]; 23 truth_table (inputs2-> outputs2) 24 [1,0,0] -> [H,H,H,L]; 25 [1,0,1] -> [H,H,L,H]; 26 [1,1,0] -> [H,L,H,H]; 27 [1,1,1] -> [L,H,H,H]; 28 [0,X,X] -> [H,H,H,H]; Trang 267 GV: Nguyễn Trọng Hải
  18. Bài Giảng Kỹ Thuật Số Phụ lục B 29 test_vectors (inputs1-> outputs1) 30 [1,0,0] -> [H,H,H,L]; 31 [1,0,1] -> [H,H,L,H]; 32 [1,1,0] -> [H,L,H,H]; 33 [1,1,1] -> [L,H,H,H]; 34 [0,1,0] -> [H,H,H,H]; 35 test_vectors (inputs2-> outputs2) 36 [1,0,0] -> [H,H,H,L]; 37 [1,0,1] -> [H,H,L,H]; 38 [1,1,0] -> [H,L,H,H]; 39 [1,1,1] -> [L,H,H,H]; 40 [0,0,1] -> [H,H,H,H]; 41 end Giaûi thích chöông trình • Chöông trình treân duøng phaùt bieåu truth_table ñeå khai baùo baûng söï thaät hoaït ñoäng cuûa heä thay cho bieåu thöùc. Trong tröôøng hôïp naøy caùch vieát truth_table seõ goïn hôn caùch vieát theo bieåu thöùc (equations). Bieân dòch chöông trình • Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt. 4. Thí nghieäm 4 Muïc ñích: Thieát keá vôùi mode thanh ghi cho maïch tuaàn töï Thieát keá boä ñeám leân (ñoàng boä) 16 duøng GAL16V8. Boä ñeám coù ngoõ Cl ñoàng boä, tính cöïc möùc 0 nhö hình sau U2 1 12 CK I0 F0 2 13 CL I1 F1 3 14 I2 F2 4 15 I3 F3 5 16 Q0 I4 F4 6 17 Q1 I5 F5 7 18 Q2 I6 F6 8 19 Q3 I7 F7 9 I8 11 I9 16V8 Trang 268 GV: Nguyễn Trọng Hải
  19. Bài Giảng Kỹ Thuật Số Phụ lục B Ta thieát laäp baûng traïng thaùi hieän taïi vaø keá tieáp cho caùc ngoõ ra Q3Q2Q1Q0 Traïng thaùi hieän taïi Traïng thaùi keá + Q2+ Q1+ Q0+ Q3 Q2 Q1 Q0 Q3 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 Töø ñoù ruùt ra ñöôïc Q0 + = Q0 .Cl (vôùi Cl tích cöïc möùc thaáp) Q1+ = Q1 ⊕ Q0.Cl Q 2 + = Q 2 ⊕ (Q1.Q0).Cl Q3 + = Q3 ⊕ (Q 2.Q1.Q0).Cl Theo caáu truùc GAL16V8, chaân 1 laø chaân CK ñoàng boä caùc thanh ghi beân trong Chöông trình • 1 module count4 2 title 'COUNTER MOD16 3 Bai so 1' 4 Counter device 'P16V8R'; 5 CK,CL pin 1,2 ; 6 Q3,Q2,Q1,Q0 pin 19,18,17,16; 7 Count = [Q3,Q2,Q1,Q0]; 8 C,H,L = .C.,1,0 ; "Xung CK tac dong canh len 9 Equations 10 Q0 := !Q0 & CL; 11 Q1 := (Q1$Q0) & CL; 12 Q2 := (Q2$(Q1&Q0))&CL; 13 Q3 := (Q3$(Q2&Q1&Q0))&CL; Trang 269 GV: Nguyễn Trọng Hải
  20. Bài Giảng Kỹ Thuật Số Phụ lục B 14 Test_vectors([CK,CL] -> Count) 15 [C,L] -> 0; 16 [C,H] -> 1; 17 [C,H] -> 2; 18 [C,H] -> 3; 19 [C,H] -> 4; 20 [C,H] -> 5; 21 [C,H] -> 6; 22 [C,H] -> 7; 23 [C,H] -> 8; 24 [C,H] -> 9; 25 [C,H] -> 10 ; 26 [C,H] -> 11 ; 27 [C,H] -> 12 ; 28 [C,H] -> 13 ; 29 [C,H] -> 14 ; 30 [C,H] -> 15 ; 31 [C,H] -> 0; 32 END Giaûi thích • Trong mode thanh ghi caùc bieåu thöùc söû duïng toaùn töû gaùn ‘:=’ ñeå bieãu dieãn ngoõ ra laø heä tuaàn töï (thanh ghi). Bieân dòch chöông trình • Böôùc 1: Nhaäp file nguoàn trong thí nghieäm treân Böôùc 2: Bieân dòch chöông trình duøng phaàn meàm ABEL Töø thö muïc ABEL ñaùnh leänh abe filename Böôùc 3: Xem laïi caùc file môùi hình thaønh (file.doc, file.list) Böôùc 4: Theâm töø khoùa flag ‘-t1’ vaøo sau phaùt bieåu module Module mod-id flag ‘-t1’ Böôùc 5: Bieân dòch laïi chöông trình vaø xem keát quaû ôû file.sim. Nhaän xeùt. Trang 270 GV: Nguyễn Trọng Hải
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2