1. Trang chủ
  2. » Thể loại khác

Phần 3: TÓM TẮT HƯỚNG DẪN SỬ DỤNG NGÔN NGỮ ABE

10 3 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 252,01 KB

Nội dung

Bài giảng Vi mạch số Biên soạn Ngơ Văn Bình Phần 3: TĨM TẮT HƯỚNG DẪN SỬ DỤNG NGƠN NGỮ ABEL Ngôn ngữ ABEL (Advanced Boolean Equation Language) ngơn ngữ lập trình mạnh cho PLD bao gồm phần lập trình mơ tạo file fuslemap (cầu chì) 'đốt' PLD Trong 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 cách lập trình cho vi mạch GAL cách lập trình cho vi mạch ứng dụng mạch sau Để hiểu sâu ngôn ngữ này, người học nên cần tham khảo thêm tài liệu khác phần help ngôn ngữ 3.1 CẤU TRÚC VÀ CÚ PHÁP: 3.1.1 CÁC PHÁT BIỂU (STATEMENT) Phát biểu Module: Cú pháp: module modname [(dummy_arg[,….])] 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 '_'), 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ự thơng số hình thức procedure ngơn ngữ cấp cao) Mục đích - cách dùng: Phát biểu module xác định chỗ bắt đầu module phải có phát biểu end để xác định chỗ kết thúc module Một file chương trình có nhiều module (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 Trong module khơng sử dụng thơng số hình thức Ví dụ: MODULE My _ Example (A,B) C= A+B Trang 87 Bài giảng Vi mạch số Biên soạn Ngô Văn Bình 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ả giá trị thực (từ module khác) biên dịch Phát biểu title: Cú pháp: title 'string' String chuỗi ký tự nằm hai dấu nháy đơn (') Mục đích - cách dùng: Phát biểu title dùng để đặt cho module tiêu đề để minh họa đặc điểm chức chẳng hạn Chuỗi ký tự đặt tiêu đề xuất file liệu file fusemap sau biên dịch Sử dụng phát biểu title tùy chọn (không thiết phải có) Ví dụ: Module EXO Title '3 - line decoder using GAL 16V8' Phát biểu equations: Cú pháp: equations Mục đích - cách dùng: Phát biểu equations định chỗ bắt đầu hay nhóm biểu thức Boole biểu diễn hàm logic ngõ theo ngõ vào: Sau biểu thức phải có dấu chấm phẩy (;) Ví dụ: Equations A= B&C; [W,Y] = ; !F = B = = C ; Phát biểu Truth _ table: Cú pháp: Truth _ table (inputs -> outputs) hay truth _ table (inputs : > reg _ outs) hay truth _ table (inputs: > reg _ outs -> outputs)  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ệ Mục đích - Cách dùng: Truth _ table trình bày bảng thật minh họa hoạt động hàm logic hệ logic cần thiết kế Trang 88 Bài giảng Vi mạch số Biên soạn Ngơ Văn Bình Các bảng thật thay bổ sung thêm cho biểu thức (trong equations) hay sơ đồ trạng thái (trong state _ dragram) Ví dụ: Truth _ table ([A,B] -> C)) [0,1] -> ; [1,0] -> ; [1,1] -> ; [0,0] -> ; Rõ ràng truth _ table biểu diễn biểu thức C = A + B Phát biểu state _ diagram: Cú pháp: state _ diagram state variables state state _ exp : [equations] ; [trans - stmt…]; 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ố định 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 sang trạng thái theo điều kiện tác động ngõ vào Mục đích - cách dùng: 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) Ví dụ: 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) S0 state _ diagram Q state S0 : if (x1 & x2 = = 0) then S2 N else S1 S1 state S1 : z = ; Z=1 Trang 89 x1.x2=0 Y S2 Z=0 Bài giảng Vi mạch số Biên soạn Ngô Văn Bình go to S2 ; state S2 : z = ; go to S0 ; Đoạn chương trình tương đương với lưu đồ máy trạng thái hình bên Phát biểu go to: Cú pháp: goto state _ exp ; State _ exp : biểu thức biểu diễn trạng thái Mục đích - cách dùng: Phát biểu goto biểu diễn chuyển biến không điều kiện từ trạng thái sang trạng thái state _ exp Ví dụ: Si: goto Sj ; nhảy đến trạng thái Sj Sj: goto x + y; nhảy đến trạng thái x + y If - then - else: Cú pháp: If exps then state _ exp1 [else state _ exp2]; hay if exps1 then state _ exp1 else if exps2 then state _ exp2 [else if …] else state _ expn; _ Exps : biểu thức hợp lệ _ State _exp1, state _ exp2 … : biểu thức biểu diễn trạng thái Mục đích - cách dùng: 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 đúng, chuyển biến hướng đến trạng thái sau từ khóa then; sai chuyển biến hướng đến trạng thái sau từ khóa else 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 1: if (A = = B) then 2; "nếu A = B chuyển đến trạng thái state 2: if A then else 4; "nếu A ( 0) chuyển đến trạng thái 3" "nếu A sai (= 0) chuyển đến trạng thái 4" state 0: if a then else if b then else if c then Trang 90 Bài giảng Vi mạch số Biên soạn Ngơ Văn Bình else 0; Phát biểu case: Cú pháp: case [exps1 : state_ exp1;] [expsi : state _ expi;] end case; Mục đích - cách dùng: 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 Ví dụ: State : case a = = : 1; a = = : 2; a = = : 3; a = = : 0; End case; Phát biểu test _ vectors: Cú pháp: Test vectors['note'] (inputs -> outputs) [invalues -> out values] Note: chuỗi ký tự để mô tả test _ vector Inputs: danh hiệu hay tập hợp danh hiệu tên tín hiệu vào hay hồi tiếp ngõ vào hệ Outputs danh hiệu hay tập hợp danh hiệu 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 giá trị trạng thái (hệ tuần tự) Mục đích - cách dùng: Các vector thử dùng để mô hoạt động hệ kiểm tra chức hoạt động hệ chạy chương trình mơ Ví dụ: equations C = A & B ; "C = A B D = A # B ; "D = A + B Test _ vectors ([A,B] -> [C, D]) [0,0] -> [0, 0] [0,1] -> [0, 1] [1,0] -> [0, 1] [1,1] -> [1, 1] 10 Phát biểu istype: Trang 91 Bài giảng Vi mạch số Biên soạn Ngơ Văn Bình Cú pháp: signal [ , signal] … istype 'attr [ , attr]…'; hay signal [ , signal] … pin is type 'attr [ , attr] …'; _ Signal danh hiệu pin hay node _ Attr chuỗi ký tự xác định thuộc tính (attribution) signal Mục đích - cách dùng: 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 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': FF, D, T, JK, SR Ví dụ: FO, A istype 'neg, reg' Istype định nghĩa FO, A tín hiệu ghi, tác động mức thấp Output pin 15 istype 'reg, invert'; Tín hiệu output chân 15 ghi ngõ đảo (ngõ Q) 11 Phát biểu end: Cú pháp: end hay end modname Modname : tên module chương trình Mục đích - cách dùng: Dùng kết hợp với phát biểu module để mở đầu kết thúc module chương trình 3.1.2 CÁC KHAI BÁO (DECLARATIONS): Chân (pin): Cú pháp: [!] pin _id [,[I]pin_id…]pin [pin [pin # [,pin #]] istype 'attr'] ;  Pin _id danh hiệu dùng để đặt tên cho chân  Pin # số thứ tự chân dụng cụ (PLD) thật  Attr: chuỗi xác định thuộc tính chân Trang 92 Bài giảng Vi mạch số Biên soạn Ngơ Văn Bình  ! : ký hiệu NOT, tích cực mức thấp Mục đích - cách dùng: Từ khóa pin dùng để khai báo tín hiệu input output, tín hiệu in / out qui định sẵn dụng cụ (theo sổ tra cứu) Khai báo định nghĩa thuộc tính chân Khi danh sách danh hiệu chân số chân có khai báo chân, có tự tương xứng - danh hiệu chân số chân 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ác động mức thấp Nút (node): Cú pháp: [!]node_id[,[!]node_id …]node [node# [,nod # …][istype 'attr']; _ 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ứu) Mục đích - cách dùng: Từ khóa node dùng để khai báo tín hiệu gán cho nút ẩn dụng 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, B nút 26 Số nút nhà sản xuất qui định sổ tay tra cứu Dụng cụ (device): Cú pháp: device-id device real_device; Device-id danh hiệu, tên file fusemap Real-device chuỗi mơ tả mã số dụng cụ (PLD) đặt dấu nháy đơn (') Mục đích - cách dùng: Khai báo dụng cụ gắn tên dụng cụ sử dụng module với dụng cụ (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 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 3.3 CÁC KHAI BÁO KHÁC (OTHER DEDARATIONS): Hằng (Constant): Trang 93 Bài giảng Vi mạch số Biên soạn Ngơ Văn Bình Cú pháp: id [, id]… = expr [, expr]…; id danh hiệu đặt tên cho expr xác định giá trị Mục đích - cách dùng: Khai báo định nghĩa số dùng module Ví dụ: X = X ; "X mang ý nghĩa không xác định Z = Z ; "Z mang ý 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ín 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 Định nghĩa: 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 Cách khai báo: Một tập hợp đại diện danh sách số tín hiệu ngăn cách dấu 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]; Khai báo MULOUT 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 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 Macro: Cú pháp: macro_id macro [(dummy_arg [, dummy_arg]…)]{block}; _ macro_id : danh hiệu đặt tên cho macro Trang 94 Bài giảng Vi mạch số Biên soạn Ngô Văn Bình _ dummy_arg : thơng số hình thức _ block : biểu thức logic Mục đích - cách dùng: Khai báo macro định nghĩa macro thực chức phép toán, biểu thức logic block 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 Ví dụ: NAND 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 mudule khai báo macro ta có khai báo: D = NAND (Clock, Hello, busy) ; Sẽ cho kết : D = ! (Clock & Hello & Busy) biên dịch Enable: Cú pháp: Enable output_id = [!] expr ; Output_id danh hiệu đặt tên cho ngõ tập hợp ngõ Expr biểu thức logic Mục đích - Các dùng: Khai báo enable cho phép ngõ trạng thái hoạt động theo tín hiệu điều khiển giá trị expr Sử dụng khai báo theo sau phát biểu equations Ví dụ: OE pin 11 ; 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ữ) 3.4 CÁC TỐN TỬ (OPERATORS): Tốn tử chuẩn (standard): ! : NOT # : OR Trang 95 Bài giảng Vi mạch số Biên soạn Ngơ Văn Bình & : AND $ : XOR !$: XNOR = : toán tử gán cho biểu thức tổ hợp : = : toán tử gán cho biểu thức ghi (tuần tự) Ngồi từ khóa @ ALTERNATE báo cho trình biên dịch biết toán tử tương đương (atternate) thay cho toán tử chuẩn (các ký hiệu dễ nhớ hơn) Bộ tốn tử thay (phải có từ khóa @ ALTERNATE đầu module chương trình) / : 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ả thỏa điều kiện trả khơng thỏa điều kiện Ví dụ: Q = (P = = 1) ; "Q P = "Q P khác 3.5 CÁC TIẾP ĐẦU NGỮ (PREFIX), TIẾP VĨ NGỮ (SUFFIX): Tiếp đầu ngữ: Toán 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ụ: ! Q0 pin 15 ; Tương đương với Q0 pin 15 is type '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 ghi Tiếp vĩ ngữ OE cho phép xuất ngõ trạng thái Ví dụ: out.oe = !ena ; ena = -> ngõ out phép xuất Trang 96

Ngày đăng: 29/12/2022, 02:36

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN