Thiết kế hệ thống số phkkhanh PhulucB

20 127 0
Thiết kế hệ thống số  phkkhanh PhulucB

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài Giảng Kỹ Thuật Số Phụ lục B PHỤ LỤC B I NGÔN NGỮ LẬP TRÌNH CHO PLD Cũng giống ROM hay PROM, PLD lập trình để tạo file đốt cầu chì hay diode Ngôn ngữ sử dụng để lập trình cho PLD chương trình ABEL (Advanced Boolean Equation Language) ngôn ngữ lập trình mạnh cho PLD, hỗ trợ cho nhiều ngõ vào, bao gồm đồ trạng thái bảng thật Trình biên dòch ABEL có khả mô tạo file fuse map (cầu chì) cho PLD Trong phụ lục tóm tắt hướng dẫn sử dụng phần cấu trúc cú pháp phát biểu, khai báo, dẫn…chủ yếu để phục vụ cho thí nghiệm sau Để hiểu sâu ngôn ngữ này, sinh viên nên tham khảo thêm tài liệu khác phần help ngôn ngữ Ngoài ABEL có ngôn ngữ khác VHDL, AHDL… CẤU TRÚC CỦA MỘ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 Tên chương trình thông số hình thức Title Dùng để mô tả module Declaration Mô tả module cấp thấp hơn, đònh nghóa khối chức devive, pin, node, constant, macro, tập hợp,… Equations Sử dụng hàm, lưu đồ trạng thái hay bảng thật để mô tả thiết kế logic Test_vectors Test_vectors sư dụng file mô JEDEC End Kết thúc module GV: Nguyễn Trọng Hải Trang 251 Bài Giảng Kỹ Thuật Số Phụ lục B Lưu ý: cấu trúc bao gồm thành phần chương trình ABEL, tùy vào ứng dụng cụ thể có thêm phát biểu khác máy trạng thái, v.v… CÁC PHÁT BIỂU (STATEMENTS) 1.1 Phát biểu Module Cú pháp module modname [( dummy_arg[,….])] Mục đích: Phát biểu module xác đònh điểm bắt đầu chương trình phải có phát biểu END để xác đònh điểm kết thúc module Sử dụng Modname danh hiệu hợp lệ đặt làm tên gọi cho module chương trình Danh hiệu hợp lệ chuỗi dài tối đa 31 ký tự (chữ cái, chữ số, dấu gạch dưới’_’), bắt đầu chữ hay dấu gạch ’_’ Danh hiệu phân biệt chữ hoa hay chữ thường Dummy_arg (có thể có) : thông số hình thức (tương tự ngôn ngữ hợp dòch) Ví dụ MODULE My_Example … END My_Example Module có tên My_Example phát biểu END My_Example kết thúc module này.Trong module không sử dụng thông số hình thức MODULE My_Example (A,B) … C=A+B END My_Example Trong module có sử dụng hai thông số hình thức A B, biểu thức C=A+B, vơi A,B trả gía trò thực (từ module khác) biên dòch 1.2 Phát biểu Title Cú pháp title ‘string’ Mục đích: Phát biểu title đặt cho module tựa đề (header) để minh họa đặc điểm chức người lập trình tạo ra.Chuỗi ký tự xuất file liệu file fusemap sau biên dòch Sử dụng string: chuỗi ký tự nằm hai dấu nháy đơn (‘) giới hạn 324 ký tự Sử dụng phát biểu tilte tùy chọn Ví dụ module m6809a GV: Nguyễn Trọng Hải Trang 252 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 Phát biểu equations Cú pháp equations element [?] = condition; when-then-else_statement; Mục đích: Phát biểu equations đònh chỗ bắt dầu hay nhóm biểu thức Boole biễu diễn hàm logic ngõ theo ngõ vào Sử dụng condition Một mô tả element tên danh đònh tín hiệu, tập tín hiệu hay tín hiệu thực mà mô tả giá trò gán when-then-else_statement: phát biểu when-then-else Sau biểu thức phải có dấu chấm phẩy (;) Ví dụ Equations A = B&C#A; [W,Y] = 3; !F = (B = =C); 1.4 Phát biểu Truth_table Cú pháp hay Mục đích: Sử dụng Ví dụ truth_table (inputs -> outputs) truth_table (inputs : > reg_outs) Truth_table trình bày bảng thật minh họa ngõ hàm tổ hợp ngõ vào Các bảng thật thay bổ sung thêm cho biểu thức (trong equations) hay đồ trạng thái (trong state_diagram) inputs : ngõ vào hàm logic outputs : ngõ hàm logic reg_outs : ngõ ghi (FF) Dấu -> biễu diễn hệ tổ hợp Dấu : > biễu diễn hệ Truth_table ([A,B] -> C) [0,1] -> 1; [1,0] -> 1; [1,1] -> 0; [0,0] -> 0; Rõ ràng truth_table biễu diễn biểu thức C=A+B GV: Nguyễn Trọng Hải Trang 253 Bài Giảng Kỹ Thuật Số 1.5 Phụ lục B Phát biểu state_diagram Cú pháp State_diagram state variables State state_exp:[equations]; [trans-stmt…]; Mục đích: Phát biểu state_diagram đònh nghóa biến trạng thái bắt đầu mô tả hoạt động máy trạng thái (tương tự đồ thò trạng thái hay lưu đồ máy trạng thái) Sử dụng state_variables: tập hợp biến trạng thái máy trạng thái state: từ khóa để biễu diễn chuyển biến từ trạng thái sang trạng thái ngõ state_exp : biểu thức hay số đòng nghóa trạng thái equations: biểu thức logic ngõ máy trạng thái trans_stmt : phát biểu dạng IF – THEN – ELSE , GOTO, CASE (tùy chọn) để mô tả chuyển biến từ trạng thái btại sang trạng thái theo điều kiện tác động ngõ vào Ví dụ 1.6 Giả sử ta có ngõ vào x1 x2, ngõ z, máy trạng thái có trạng thái ký hiệu S0,S1,S2, biến trạng thái Q = [Q0,Q1] (2 ngõ FF) State_diagram Q State S0: if (x1&x2 = =0) then S2 S0 Else S1 State S1: z=1; x1x2 Go to S2; State S2: z=0; z=1 S1 S2 z=0 Go to S0; Phát biểu goto Cú pháp Goto state_exp Mục đích: Phát biểu goto biễu diễn chuyển biến không điều kiện từ trạng th sang trạng thái state_exp Sử dụng State_exp: biểu thức biễu diễn trạng th Ví dụ Si: goto Sj; nhảy đến trạng thái Sj GV: Nguyễn Trọng Hải Trang 254 Bài Giảng Kỹ Thuật Số 1.7 Phụ lục B If – then – else Cú pháp hay If exps then state_exp1 [else state_exp2]; if exp1 then state_exp1 else if exp2 then state_exp2 [else if….] else state_expn; Mục đích: Phát biểu if – then – else : mô tả chuyển hóa trạng thái theo điều kiện ngõ vào Nếu biểu thức sau từ khóa if , chuyển biến hướng đến trạng thái sau từ khóa then; sai chuyển biến hướng đến trang thái sau từ khóa else Sử dụng exps: biểu thức hợp lệ state_exp1, state_exp2… : biểu thức biễu diễn trạng thái Các phát biểu if – then – else nối với liên tiếp kết thúc phải dấu chấm phẩy Ví dụ State : if (A = = B) then 2; “nếu A = b chuyển đến trạng thái State : if A then else 4; “ A (≠0) chuyển đến trạng thái “ A sai (=0) chuyển đến trạng thaùi state : if a then else if b then else if c then else 0; 1.8 Phát biểu case Cú pháp Case [exps1 : state+exp1;] [expsi : state_expi;] end case; Mục đích: Phát biểu case mô tả chuyển biến trạng thái trường hợp có nhiều điều kiện tác động Sử dụng Tránh không để điều kiện xảy lúc tránh trường hợp kết trạng thái kế không đoán trước Ví dụ STATE S0: CASE (sel == 0): S0 ; (sel == 1): S1 ; ENDCASE GV: Nguyễn Trọng Hải Trang 255 Bài Giảng Kỹ Thuật Số 1.9 Phụ lục B Phát biểu test_vectors: Cú pháp Text vectors[‘note’] (inputs → outputs) [invalues → out values] Mục đích: Các test_vectors dùng để mô hoạt động hệ kiểm tra chức hoạt động hệ chạy chương trình mô Sử dụng note: chuỗi ký tự để mô tả text_vectors inputs : danh đònh hay tập hợp danh đònh tên tín hiệu vào hay hồi tiếp ngõ vào hệ Outputs : danh đònh hay tập hợp danh đònh tên tín hiệu hệ Invalues : hay tập hợp giá trò vào Outvalues : hay tập hợp giá trò hàm logic giá trò vào gía trò trạng thái (hệ tuần tự) Ví dụ 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 Phát biểu istype Cú pháp Signal [ , signal] … istype ’attr[ , attr]…’; Hay signal [ , signal] … pin istype ‘attr[ , attr]… ‘; Mục đích: Phát biểu istype đònh nghóa thuộc tính pin hay node lập trình dụng cụ (PLD) Các thuộc tính pin hay node khai báo dòng Sử dụng signal: danh hiệu pin hay node attr: chuỗi ký tự xác đònh thuộc tính signal Các thuộc tính hợp lệ là: ‘buffer’ : đệm ‘com’ : hệ tổ hợp ‘invert’ : đảo ‘neg’ : tính cực mức thấp ‘pos’ : tính cực mức cao ‘reg’ : ghi (hệ tuần tự) ‘reg_D’,’reg_T’,’reg_JK’,’reg_SR’ : cácFF, D, T, JK, SR GV: Nguyễn Trọng Hải Trang 256 Bài Giảng Kỹ Thuật Số Ví dụ Phụ lục B F0, A istype ‘neg , reg’; istype đònh nghóa F0 , A tín hiệu ghi , tác động mức thấp outputs pin 15 istype ‘reg , invert’ tín hiệu output chân 15 ghi ngõ đảo (ngõ Q ) 1.11 Phát biểu end End Cú pháp Hay end modname Mục đích: Dùng kết hợp với phát biểi module để mở đầu kết thúc module chương trình Sử dụng signal: danh hiệu pin hay node attr: chuỗi ký tự xác đònh thuộc tính signal Các thuộc tính hợp lệ là: ‘buffer’ : đệm ‘com’ : hệ tổ hợp ‘invert’ : đảo ‘neg’ : tính cực mức thấp ‘pos’ : tính cực mức cao ‘reg’ : ghi (hệ tuần tự) ‘reg_D’,’reg_T’,’reg_JK’,’reg_SR’ : cácFF, D, T, JK, SR Ví dụ F0, A istype ‘neg , reg’; istype đònh nghóa F0 , A tín hiệu ghi , tác động mức thấp outputs pin 15 istype ‘reg , invert’ tín hiệu output chân 15 ghi ngõ đảo (ngõ Q ) CAÙC KHAI BAÙO (DECLARATIONS) 2.1 Pin Cú pháp [!]pin_id[,[l]pin_id…]pin[pin#[,pin#]] istype ’attr’]; Mục đích: Từ khóa pin dùng để khai báo tín hiệu input output, tín hiệu in/out quy đònh sẵn dụng cu ï(theo sổ tra cứu) Khai báo đònh nghóa thuộc tính chân Khi danh sác danh đònh chân số chân có khai báo chân , có tương ứng 1-1 danh đònh chân số chân Sử dụng pin_id: danh hiệu dùng để đặt tên cho chân pin #: số thứ tự chân dụng cụ (PLD)thaät GV: Nguyễn Trọng Hải Trang 257 Bài Giảng Kỹ Thuật Số Phụ lục B attr: chuỗi xác đònh thuộc tính chân !: ký hiệu NOT,tích cực mức thấp Ví dụ !clock,reset,S1 pin 12,15,3; khai báo gán tên chân: clock chân 12, reset chân 15, S1 chân !clock: tích cực mức 2.2 Node Cú pháp [!]node_id[,[!]node_id … ]node[node#[,node# …][istype ’attr’]; Mục đích: Từ khóa node dùng để khai báo tín hiệu gán cho nút ẩn dụng cụ Sử dụng node_id: danh hiệu dùng để đặt tên nút node#: số thứ tự nút dụng cụ thật (nút tương đương chân ẩn dụng cụ số nút cho sổ tay tra cưú) Ví dụ B node istype’reg’ : xác đònh nút B ngõ FF dụng cụ A,B node 25,26 : gán tên A nút 25, gán tên B nút 26 Số nút nhà sản xuất quy đònh sổ tay tra cứu 2.3 Dụng cụ (Device) Cú pháp Device-id device real_device; Mục đích: Khai báo device cho PLD thật Trong trình biên dòch, hàm logic đưa dạng theo cấu trúc cổng dụng cụ thật Sử dụng device-id: danh hiệu, tên file fusemap real-device: mô tả mã số dụng cụ (PLD) đặt dấu nháy đơn (‘) Phải đặt dấu ; sau khai báo Ví dụ D1 device ‘P16R4’: khai báo cho biết D1 loại PLD PAL 16R4 CÁC KHAI BÁO KHÁC (OTHER DECLARATIONS) 3.1 Hằng (constant) Cú pháp id[,id]… = expr[,expr] …; Mục đích: Khai báo đònh nghóa số dùng module Sử dụng id: danh hiệu đặt tên cho expr: xác đònh gía trò Ví dụ X = X.; GV: Nguyễn Trọng Hải “X mang ý nghóa không xác đònh Trang 258 Bài Giảng Kỹ Thuật Số 3.2 Phụ lục B Z = Z.; “Z mang yù nghóa tổng trở cao C = C “C mang ý nghóa tác động cạnh lên A = ^b01 ; “số nhò phân B = ^h16; “số hex C = 10; “số thập phân Tập hợp (set) Đònh nghóa Tập hợp tập hợp tính hiệu số mà tác vụ thực đơn vò Bất tác vụ áp dụng cho tập hợp áp dụng cho phần tử tập hợp Tập hợp làm đơn giản việc mô tả logic test-vectors cách cần dùng tên gọi tập hợp Sử dụng Một tập hợp đại diện danh sách số tín hiệu ngăn cách dấu chấm phẩy hay dấu khoảng ( ), đặt dấu ngoặc vuông ([ ]) Sau khai báo tập hợp phải có dấu ; Ví dụ MULOUT = [B0,B1,B2,B3,B4,B5,B6,B7]; hay MULOUT = [B0…B7]; MULOUT khai báo tên tập hợp gồm tín hiệu từ B0 đế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ø tập hợp gồm tín hiệu D,C,B,A LED tập hợp gồm tín hiệu g,f,e,d,c,b,a 3.3 Macro Cú pháp Macro_id macro [(dummy_arg [, dummy_arg]…)]{block}; Mục đích: Khai báo macro đònh nghóa macro thực chức năng, phép toán,biểu thức logic khối Chỉ đònh nghóa macro lần phần khai báo macro module dùng nơi module Khai báo macro tương tự trình hợp ngữ Macro dùng module mà khai báo GV: Nguyễn Trọng Hải Trang 259 Bài Giảng Kỹ Thuật Số Phụ lục B macro_id: danh hiệu đặt tên cho macro dummy_arg: thông số hình thức block: biểu thức logic Sử dụng Ví dụ NAND3 macro (A,B,C) {!(A&B&C)} NAND3 macro thực chức hàm logic A.B.C với A,B,C thông số hình thức Sau module khai báo macro ta có khai báo: D = NAND (Clock, Hello, busy); Kết qủa là: D = !(Clock&Hello&Busy) biên dòch 3.4 Enable Cú pháp Enable output_id = [!]expr; Mục đích: Khai báo enable cho phép ngõ trạng thái hoạt động theo tín hiệu điều khiển gía trò expr Sử dụng khai báo theo sau phát biểu equations Sử dụng output_id: danh hiệu đặt tên cho ngõ tập hợp ngõ expr: biểu thức logic Ví dụ OE pin11; F0,F1,F2,F3 pin 19,18,17,16; Count = [F0,F1,F2,F3]; Equations Enable count = !OE Các ngõ từ F0 đến F3 tập hợp count ngõ trạng thái , hoạt động OE = trạng thái high-Z OE = Có thể sử dụng tiếp vó ngữ OE thay cho khai báo enable (xem phần tiếp vó ngữ) CÁC TOÁN TỬ (OPERATORS) 4.1 Toán tử chuẩn (standard) ! NOT = toán tử gắn cho biểu thức tổ hợp # OR := toán tử gán cho biểu thức ghi (tuần tự) & AND $ XOR !$ XNOR GV: Nguyễn Trọng Hải Trang 260 Bài Giảng Kỹ Thuật Số Phụ lục B Ngoài từ khoá @ALTERNATE báo cho trình biên dòch biết toán tử tương đương (alternate) thay cho toán tử chuẩn (các ký hiệu dễ nhớ hơn) Bộ toán tử thay (phải có từ khoá @ALTERNATE đầu module chương trình) / * + :+: :*: 4.2 NOT AND OR XOR XNOR Toán tử so sánh == != không < nhỏ > lớn = lớn Ngoài cho phép viết biểu thức điều kiện , biểu thức trả thoả điều kiện trả không thỏa điều kiện Ví dụ Q = (P = =1); “Q P =1 Q P khác CÁC TIẾP ĐẦU NGỮ (Prefix), tiếp vó ngữ (suffix) 5.1 Tiếp đầu ngữ Tóan tử Not (! hay /) dùng tiềp đầu ngữ để báo trình biên dòch biết tín hiệu hoạt động (tích cực) mức logic Ví dụ: 5.2 !Q0 pin 15; tương đương với Q0 pin 15 istype ‘neg’; Tiếp vó ngữ Các tiếp vó ngữ thường dùng chế độ ghi để truy xuất đến chân nội ghi Ví dụ Q0.CK truy xuất đến chân clock tín hiệu Q0 chế độ ghi Tương tự RE,.PR,.D,.T… truy xuất đến chân reset,preset,D,T cuả ghi Tiếp vó ngữ OE cho phép xuất ngõ trạng thái Ví dụ out.oe = !ena; ena =0 → ngõ out phép xuất ena = → ngõ out trạng thái high-Z GV: Nguyễn Trọng Hải Trang 261 Bài Giảng Kỹ Thuật Số Phụ lục B GHI CHÚ (Comments) Các ghi minh hoạ , giải thích chương trình bắt đầu dấu nháy kép (“)và kết thúc dấu nháy kép (“) xuống dòng Ví dụ Q1,Q2,Q3, pin 14,15,16 “outputs “declarations QSTATE = [Q1,Q2,Q3]; “sets GV: Nguyễn Trọng Hải Trang 262 Bài Giảng Kỹ Thuật Số Phụ lục B BÀI THÍ NGHIỆM BIÊN DỊCH VÀ MÔ PHỎNG ABEL A MỤC ĐÍCH – YÊU CẦU BÀI THÍ NGHIỆM: • Giúp sinh viên nắm kỹ thuật lập trình biên dòch ngôn ngữ ABEL thiết kế PLD (các dạng hồi tiếp, không hồi tiếp, ghi…) • SV phải đọc kỹ trước sở lý thuyết ôn lại kiến thức kỹ thuật số • SV phải nhập sẵn thí nghiệm vào đóa mềm B THIẾT BỊ SỬ DỤNG: Máy vi tính + chương trình • C NỘI DUNG THÍ NGHIỆM: Thí nghiệm Mục đích: Dùng biểu thức equations để thực mạch (mode đơn) Thiết kế MUX 12 → dùng GAL16V8 hình sau A0 A1 A2 A3 B0 B1 B2 B3 C0 C1 11 U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 F0 F1 F2 F3 F4 F5 F6 F7 12 13 14 15 16 17 18 19 C2 C3 Y0 Y1 Y2 Y3 S1 S0 16V8 Các ngõ vào: [a3,a2,a1,a0], [b3,b2,b1,b0], [c3,c2,c1,c0] Ngoõ : [y0, y1, y2, y3] • Điều khiển chọn kênh : [S1, S0] Chương trình Module mux12t4 title '12 to multiplexer Thi nghiem 1' “Cac khai bao mux12t4 device 'P16V8S'; 10 a0,a1,a2,a3 b0,b1,b2,b3 c0,c1,c2,c3 s1,s0 y0,y1,y2,y3 GV: Nguyễn Trọng Hải pin pin pin pin pin 1,2,3,4; 5,6,7,8; 9,11,12,13; 18,19; 14,15,16,17; Trang 263 Bài Giảng Kỹ Thuật Số 11 12 13 14 15 16 17 18 • Phụ lục B H = [1,1,1,1]; L = [0,0,0,0]; X = [.x.,.x.,.x.,.x.]; select = [s1, s0]; y = [y3,y2,y1,y0]; a = [a3,a2,a1,a0]; b = [b3,b2,b1,b0]; c = [c3,c2,c1,c0]; 19 20 21 22 23 equations y = (select (select (select (select 24 25 26 27 28 29 30 31 32 33 34 35 36 37 test_vectors ([select, a, b, c] -> y) [0 , 1, X, X] -> 1; [0 ,10, H, L] -> 10; [0 , 5, H, L] -> 5; [1 , H, 3, H] -> 3; [1 ,10, 7, H] -> 7; [1 , L,15, L] -> 15; [2 , L, L, 8] -> 8; [2 , H, H, 9] -> 9; [2 , L, L, 1] -> 1; [3 , H, H, 0] -> 0; [3 , L, L, 9] -> 9; [3 , H, L, 0] -> 0; end == == == == 0) 1) 2) 3) & & & & a b c c # # # ; Giải thích chương trình - - - Dòng khai báo tên module mux12t4 Dòng 2,3 khai báo tên title đặt tên Dòng thích Dòng khai báo dụng cụ (device) tên U1 dùng vi mạch 16V8S (simple mode) Dòng 6,7,8,9,10 khai báo gán tên chân tương ứng hình Dòng 11, 12, 13 khai báo : L = 0, H = 1, X=tùy đònh Dòng 14,15,16,17,18 khai báo tập hợp : select = [S1,S0] tập gồm biến điều khiển chọn kênh, tương tự cho tập a, b, c, y Việc khai báo tập hợp tiện ta cần tham chiếu tới ngõ điều khiển ngõ phần sau Dòng 19 bắt đầu phát biểu equations Giá trò gán cho toán tử ‘bằng’ dùng hệ thập phân Nếu dùng hệ nhò phân ta ghi : (select = = ^b00) Dòng 24 bắt đầu phát biểu test_vectors để kiểm tra chức hệ, khai báo tín hiệu ngõ vào ngõ cần kiểm tra Ngõ vào tập hợp biến select, a, b, c Ngõ tập hợp biến y GV: Nguyễn Trọng Hải Trang 264 Bài Giảng Kỹ Thuật Số • Phụ lục B Dòng 25 đến 27 vector kiểm tra dồn kênh cho ngõ vào select=0 Dòng 28 đến 30 vector kiểm tra dồn kênh cho ngõ vào select=1 Dòng 31 đến 33 vector kiểm tra dồn kênh cho ngõ vào select=2 Dòng 34 đến 36 vector kiểm tra dồn kênh cho ngõ vào select=3 Dòng 37 phát biểu END kết thúc chương trình Biên dòch chương trình Bước 1: Nhập file nguồn thí nghiệm Bước 2: Biên dòch chương trình dùng phần mềm ABEL Từ thư mục ABEL đánh lệnh abe filename Bước 3: Xem lại file hình thành (file.doc, file.list) Bước 4: Thêm từ khóa flag ‘-t1’ vào sau phát biểu module Module mod-id flag ‘-t1’ Bước 5: Biên dòch lại chương trình xem kết file.sim Nhận xét Thí nghiệm Mục đích: Thiết lập điều khiển ngõ chế độ I/O Hi Z (mode phức) Thiết kế đệm chiều trạng thái dùng GAL 16V8 S1 S0 S1 S0 GAL16V8 B2 B1 B0 11 U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 F0 F1 F2 F3 F4 F5 F6 F7 12 13 14 15 16 17 18 19 16V8 A2 A1 A0 Các ngõ vào/ra: [a2,a1,a0], [b2,b1,b0] Điều khiển chọn chiều data: [S1, S0] Nếu [S1,S0] = [0,1]: hướng từ B sang A Nếu [S1,S0] = [1,0]: hướng từ A sang B • Chương trình module tsbuffer title 'bi-directional three state buffer Thi nghiem 2' TSB1 device 'P16V8c'; GV: Nguyễn Trọng Hải Trang 265 A2 A1 A0 B2 B1 B0 Bài Giảng Kỹ Thuật Số S1,S0 A2,A1,A0 B2,B1,B0 10 11 Select A = B = X,Z = 12 13 14 Equations A = B; B = A; 15 16 17 18 19 20 21 22 23 24 25 26 27 • Pin 1,2; Pin 13,14,15; Pin 16,17,18; = [S1,S0]; [A2,A1,A0]; [B2,B1,B0]; X., Z.; Enable A = (Select==1); Enable B = (Select==2); test_vectors ([Select, [ , [ , [ , [ , [ , [ , [ , [ , A, 0, 7, X, X, 3, 5, 0, 7, B]-> 0]-> 7]-> 3]-> 5]-> X]-> X]-> 0]-> 7]-> [ [ [ [ [ [ [ [ [ A, Z, Z, 3, 5, X, X, Z, Z, B]) Z]; Z]; X]; X]; 3]; 5]; Z]; Z]; end Giải thích chương trình - • Phụ lục B Dòng khai báo device mode phức (modeI/O) Dòng 11 khai báo z tổng trở cao Dòng 15 cho phép A xuất [S1S0] = [01], lúc hường truyền từ B->A Dòng 16 cho phép B xuất [S1S0] = [10], lúc hường truyền từ A->B Biên dòch chương trình Bước 1: Nhập file nguồn thí nghiệm Bước 2: Biên dòch chương trình dùng phần mềm ABEL Từ thư mục ABEL đánh lệnh abe filename Bước 3: Xem lại file hình thành (file.doc, file.list) Bước 4: Thêm từ khóa flag ‘-t1’ vào sau phát biểu module Module mod-id flag ‘-t1’ Bước 5: Biên dòch lại chương trình xem kết file.sim Nhận xét GV: Nguyễn Trọng Hải Trang 266 Bài Giảng Kỹ Thuật Số Phụ lục B Thí nghiệm Mục đích: Sử dụng bảng thật truth_table để thực mạch Thiết kế giải mã 2→ sử dụng GAL16V8 hoạt động theo bảng thật sau: Input G B 1 1 1 x • A 1 x Y3 1 1 Output Y2 Y1 1 0 1 1 Y0 1 1 G1 A1 B1 G2 A2 B2 11 U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 F0 F1 F2 F3 F4 F5 F6 F7 16V8 Chương trình 10 11 12 13 14 15 16 17 18 19 20 21 22 Module decod2t4 Title 'giai ma sang Thi nghiem 3' 23 24 25 26 27 28 truth_table (inputs2-> outputs2) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,X,X] -> [H,H,H,H]; Decod2t4 device 'P16V8S'; G1,G2 pin 2,5; A1,B1,A2,B2 pin 3,4,6,7; Y01,Y11,Y21,Y31 pin 19,18,17,16; Y02,Y12,Y22,Y32 pin 15,14,13,12; H,L,X = 1,0,.x.; inputs1 = [G1,B1,A1]; outputs1 = [Y31,Y21,Y11,Y01] ; inputs2 = [G2,B2,A2]; outputs2 = [Y32,Y22,Y12,Y02]; Truth_table (inputs1->outputs1) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,X,X] -> [H,H,H,H]; GV: Nguyễn Trọng Hải Trang 267 12 13 14 15 16 17 18 19 Y32 Y22 Y12 Y02 Y31 Y21 Y11 Y01 Bài Giảng Kỹ Thuật Số • Phụ lục B 29 30 31 32 33 34 test_vectors (inputs1-> outputs1) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,1,0] -> [H,H,H,H]; 35 36 37 38 39 40 41 test_vectors (inputs2-> outputs2) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,0,1] -> [H,H,H,H]; end Giải thích chương trình Chương trình dùng phát biểu truth_table để khai báo bảng thật hoạt động hệ thay cho biểu thức Trong trường hợp cách viết truth_table gọn cách viết theo biểu thức (equations) • Biên dòch chương trình Bước 1: Nhập file nguồn thí nghiệm Bước 2: Biên dòch chương trình dùng phần mềm ABEL Từ thư mục ABEL đánh lệnh abe filename Bước 3: Xem lại file hình thành (file.doc, file.list) Bước 4: Thêm từ khóa flag ‘-t1’ vào sau phát biểu module Module mod-id flag ‘-t1’ Bước 5: Biên dòch lại chương trình xem kết file.sim Nhận xét Thí nghiệm Mục đích: Thiết kế với mode ghi cho mạch Thiết kế đếm lên (đồng bộ) 16 dùng GAL16V8 Bộ đếm có ngõ Cl đồng bộ, tính cực mức hình sau CK CL 11 U2 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 F0 F1 F2 F3 F4 F5 F6 F7 12 13 14 15 16 17 18 19 16V8 GV: Nguyễn Trọng Hải Trang 268 Q0 Q1 Q2 Q3 Bài Giảng Kỹ Thuật Số Phụ lục B Ta thiết lập bảng trạng thái cho ngõ Q3Q2Q1Q0 Trạng thái Q3 Q2 Q1 Q0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 + Q3 0 0 0 1 1 1 1 Trạng thái kế Q2+ Q1+ Q0+ 0 1 1 0 1 1 1 0 0 0 1 1 0 1 1 1 0 Từ rút Q0 + = Q0 Cl (với Cl tích cực mức thấp) Q1+ = Q1 ⊕ Q0.Cl Q + = Q ⊕ (Q1.Q0).Cl Q3 + = Q3 ⊕ (Q 2.Q1.Q0).Cl Theo cấu trúc GAL16V8, chân chân CK đồng ghi bên • Chương trình module count4 title 'COUNTER Bai so 1' Counter device CK,CL Q3,Q2,Q1,Q0 Count = [Q3,Q2,Q1,Q0]; C,H,L = C.,1,0 ; "Xung CK tac dong canh len 10 11 12 13 Equations Q0 := Q1 := Q2 := Q3 := GV: Nguyễn Trọng Hải MOD16 'P16V8R'; pin 1,2 ; pin 19,18,17,16; !Q0 & CL; (Q1$Q0) & CL; (Q2$(Q1&Q0))&CL; (Q3$(Q2&Q1&Q0))&CL; Trang 269 Bài Giảng Kỹ Thuật Số 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 • Phụ lục B Test_vectors([CK,CL] -> Count) [C,L] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> ; [C,H] -> 10 ; [C,H] -> 11 ; [C,H] -> 12 ; [C,H] -> 13 ; [C,H] -> 14 ; [C,H] -> 15 ; [C,H] -> ; END Giải thích Trong mode ghi biểu thức sử dụng toán tử gán ‘:=’ để biễu diễn ngõ hệ (thanh ghi) • Biên dòch chương trình Bước 1: Nhập file nguồn thí nghiệm Bước 2: Biên dòch chương trình dùng phần mềm ABEL Từ thư mục ABEL đánh lệnh abe filename Bước 3: Xem lại file hình thành (file.doc, file.list) Bước 4: Thêm từ khóa flag ‘-t1’ vào sau phát biểu module Module mod-id flag ‘-t1’ Bước 5: Biên dòch lại chương trình xem kết file.sim Nhận xét GV: Nguyễn Trọng Hải Trang 270 ... mod-id flag ‘-t1’ Bước 5: Biên dòch lại chương trình xem kết file.sim Nhận xét Thí nghiệm Mục đích: Thiết kế với mode ghi cho mạch Thiết kế đếm lên (đồng bộ) 16 dùng GAL16V8 Bộ đếm có ngõ Cl đồng... ‘-t1’ Bước 5: Biên dòch lại chương trình xem kết file.sim Nhận xét Thí nghiệm Mục đích: Thiết lập điều khiển ngõ chế độ I/O Hi Z (mode phức) Thiết kế đệm chiều trạng thái dùng GAL 16V8 S1 S0 S1... lại chương trình xem kết file.sim Nhận xét GV: Nguyễn Trọng Hải Trang 266 Bài Giảng Kỹ Thuật Số Phụ lục B Thí nghiệm Mục đích: Sử dụng bảng thật truth_table để thực mạch Thiết kế giải mã 2→ sử dụng

Ngày đăng: 21/01/2018, 11:38

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan