37
Laäp trình duøng WINCUPL Giao dieän chöông trình

Lap Trinh Wincupl

Embed Size (px)

Citation preview

Laäp trình duøng WINCUPL

Giao dieän chöông trình

Laäp trình duøng WINCUPL

Bieán – Teân Bieán

Bieán laø chuoãi kyù töï ñaïi dieän cho giaù trò, haèng soá, nuùt noäi vaø nuùt ngoaïi, input/output.Teân bieán ñöôïc ñaët theo quy taéc: Teân bieán khoâng daøi quaù 31 kyù töï. Khoâng coù khoaûng traéng giöõa caùc töø Khoâng duøng caùc kyù töï ñaëc bieät vaø

caùc töø khoùa cuûa chöông trình. Phaûi coù ít nhaát 1 kyù töï trong teân. Teân bieán coù phaân bieät chöõ

thöôøng vaø chöõ hoa.Vd: a0, A0, D_enable

Laäp trình duøng WINCUPL

Chæ soá bieán

Chæ soá bieán = indexed variables

Chæ soá bieán ñöôïc ñaët theo quy taéc: phaûi keát thuùc bôûi moät soá thaäp

phaân naèm giöõa 0 -> 31. Toát nhaát neân baét ñaàu bôûi soá 0. Phaàn soá cuûa chæ soá bieán phaûi chính

xaùc töøng kyù töïVí duï:

AD0, AD7A07 ≠ A7AD0F, AD32 <= khoâng hôïp leä

Laäp trình duøng WINCUPL

Danh saùch - List

Danh saùch phaûi ñöôïc lieät keâ trong daáu [ ]

[ bieán 1, bieán 2, …, bieán n]Vd:

[up, down, left, right][a0, a1, a2, a3, a4, a5, a6, a7][a0..7][a0..2, a3, a4, a5..7]

Laäp trình duøng WINCUPL

Bieåu dieãn soá - numbers

Soá ñöôïc ñaët theo quy taéc: Duøng caùc tieàn toá ‘b’ ‘o’ ‘h’ ‘d’ ñeå baùo

hieäu soá thuoäc heä naøo.Vd: ‘b’01 , ‘o’84, ‘h’A5, ‘d’15 Coù theå duøng x ñeå bieåu dieãn tuøy

ñònh.Vd: ‘b’1x10, ‘h’[10xx..1FFF] Maëc ñònh soá khoâng ghi heä laø soá ôû

heä hexa tröø soá ghi ôû chæ soá bieán, soá thöù töï chaân.

Laäp trình duøng WINCUPL

Chuù thích - comment

Chuù thích ñöôïc

Baét ñaàu bôûi daáu /*

Keát thuùc bôûi daáu */

Chuù thích coù theå naèm treân nhieàu doøng

khaùc nhau.

Laäp trình duøng WINCUPL

Tieâu ñeà – header information

Tieâu ñeà bao goàm: Name -> project’s name. PartNo -> target part No. Revision -> design’s version. Date -> Designer -> Company -> Assembly -> board No. which use this part. Location -> location of the part on the

board. Device -> PLD device type Format -> output format (j:jedec, h:hexa,

i:signetics)

Laäp trình duøng WINCUPL

Khai baùo chaân – pin declaration

Khai baùo chaân theo cuù phaùp:

PIN pin_no = [!]var ;

Vd: PIN 3 = OE;

! - khai baùo chaân tích cöïc möùc thaáp.

Vd: PIN 6 = !OE;

pin_no – coù theå boû troáng ñeå söû duïng

thieát bò aûo khi moâ phoûng.

Laäp trình duøng WINCUPL

Khai baùo node – node declaration

Khai baùo node theo cuù phaùp:

NODE [!]var ;

Node khai baùo nuùt noäi coù chöùc naêng

ñaëc bieät beân trong IC. Bieán seõ töï ñoäng

ñöôïc gaùn vaøo 1 chaân aûo.

Coù theå gaùn chaân aûo töôøng minh:

PINNODE node_no = [!]var ;

Vd:

node [state0..5];

pinnode [29..34]= [state0..5];

Laäp trình duøng WINCUPL

Khai baùo chuoãi bit

Khai baùo chuoãi bit (bit field) theo cuù

phaùp:

FIELD var = [var, var, var…] ;

Bit field cho pheùp gaùn moät teân duy nhaát

cho moät nhoùm bit.

Vd:

FIELD addr = [A7,A6,A5,A4,A3,A2,A1,A0];

FIELD addr = [A7..0];

Note: khoâng duøng laãn bieán indexed vaø

non-indexed

Laäp trình duøng WINCUPL

$define

Tieàn xöû lyù (pre-processing) laø caùc

höôùng daãn bieân dòch vaø baét ñaàu bôûi

daáu $ nhö: $define,$include,…$DEFINE name value

Vd:

$DEFINE ON 1

$DEFINE OFF 0

$DEFINE hang_so ‘h’3512

Laäp trình duøng WINCUPL

pheùp toaùn logic

Caùc pheùp toaùn logic bao goàm:

Kyù hieäu

Pheùp toaùn

Ví duï Ñoä öu tieân

! NOT !A 1

& AND A & B 2

# OR A # B 3

$ XOR A $ B 4

Laäp trình duøng WINCUPL

pheùp toaùn soá hoïc

Caùc pheùp toaùn soá hoïc bao goàm:

Kyù hieäu

Pheùp toaùn

Ví duï Ñoä öu tieân

** Soá muõ 2**3 1

* Nhaân 2*i 2

/ Chia 4/2 2

% Modulo 5%2 2

+ Coäng 4+a 3

- Tröø i-5 3

Laäp trình duøng WINCUPL

phaàn môû roäng (extensions)

Phaàn môû roäng cho pheùp söû duïng

caùc chöùc naêng khaùc lieân quan ñeán nuùt

ñoù. Coù nhieàu extension khaùc nhau:.AP

Asyn. Preset

.DQ

Q output .J J input

.AR

Asyn. Reset .D D input .K K input

.CE Chip enable .IO Input&ouput .OEMUX

Tri-state output

.CK

Clock .OE

Output Enable

.DFB D feedback

Vaø coøn nhieàu extension khaùc nöõa, xem theâm phaàn help cuûa chöông trình

Laäp trình duøng WINCUPL

leänh APPEND

Leänh APPEND thöïc hieän OR nhieàu

bieåu thöùc logic khaùc nhau.

Vd:

APPEND Y = A &B;

APPEND Y = C & !D;

APPEND Y = !A & C;

=> Y = A & B + C & !D + !A & C;

Laäp trình duøng WINCUPL

baûng söï thaät – true table

Khai baùo moät baûng söï thaät theo

cuù phaùp:TABLE var1 => var2 {

value_in 1 => value_out 2;value_in n => value_out n;

}Vd:

TABLE input => output {0 => ‘b’0001; 1 => ‘b’0010;2 => ‘b’0100; 3 => ‘b’1000;

}

Laäp trình duøng WINCUPL

maùy traïng thaùi – state machine

Moâ hình maùy traïng thaùi:

Maïch toå hôïpMaïch nhôù

input

Non-registered output

Feedback

state output

registered output

Laäp trình duøng WINCUPL

maùy traïng thaùi – state machine

Khai baùo maùy traïng thaùi:

SEQUENCE list_var{

PRESENT state_n statement;

}

Statement – caùc khai baùo veà ñieàu

kieän hoaëc ngoõ ra hoaëc traïng thaùi keá

hoaëc coù theå laø caùc töø khoùa IF,

DEFAULT, NEXT, OUT.

Laäp trình duøng WINCUPL

maùy traïng thaùi – state machine

Chuyeån traïng thaùi khoâng ñieàu

kieän: SEQUENCE list_var{PRESENT state_n NEXT

state_m;}Chuyeån traïng thaùi coù ñieàu kieän:

SEQUENCE list_var{PRESENT state_n

IF expr_i NEXT state_i;IF expr_j NEXT state_j;[DEFAULT NEXT state_default;]

}

Laäp trình duøng WINCUPL

maùy traïng thaùi – state machine

Ngoõ ra ñoàng boä khoâng ñieàu kieän:SEQUENCE list_var{PRESENT state_n

NEXT state_m OUT var1 OUT var2;}

Ngoõ ra ñoàng boä coù ñieàu kieän:SEQUENCE list_var{PRESENT state_n

IF expr_i NEXT state_i OUT var_i;IF expr_j NEXT state_j OUT var_j;[DEFAULT NEXT state_default OUT

var_def;]}

Laäp trình duøng WINCUPL

leänh CONDITION

Leänh CONDITION coù caáu truùc:CONDITION {

IF expr_i OUT var_i;IF expr_j OUT var_j;DEFAULT OUT var_def;

}

Laäp trình duøng WINCUPL

haøm - function

Haøm ñöôïc khai baùo theo cuù phaùp:

function teân_haøm

(danh_saùch_ñoái_soá)

{ /* thaân haøm */

}

Vd:

function xor(a,b)

{ xor = a&!b # !a&b;

}

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

- Môû WINCUPL: click choïn icon

- Choïn File New Project: ñieàn ñaày ñuû caùc thoâng soá vaøo baûng roài nhaán OK.

- Ñieàn soá 3 vaøo cöûa soå INPUT PINS

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

- Ñieàn soá 1 vaøo cöûa soå OUTPUT PINS

- Ñieàn soá 0 vaøo cöûa soå PINNODES

Cöûa soå chöông trình seõ hieän ra nhö sau:

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

- Nhaäp ñoaïn code nhö sau:

/* *************** INPUT PINS *********************/PIN 2 = a ; /* input a */ PIN 3 = b ; /* input b */ PIN 4 = mux ; /* control input to select input a or b */

/* *************** OUTPUT PINS *********************/PIN 14 = mux_out ; /* output port pin */

/* mux_out = a if mux = 1 else mux_out =b */

mux_out = a& mux # b& !mux;- Choïn File Save hoaëc nhaán Ctrl+S ñeå löu project

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

- Choïn Utilities WinSim ñeå môû chöông trình moâ phoûng.

- Trong WinSim, choïn File New, choïn nuùt Design File… vaø tìm choïn taäp tin *.PLD ñaõ löu ôû treân, nhaán OK ta seõ ñöôïc giao dieän nhö hình beân:

-Choïn Signal Add Signal ñeå theâm caùc tín hieäu duøng cho moâ phoûng.

-Choïn Done ñeå keát thuùc vieäc theâm tín hieäu.

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

Keát quaû:

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

-Choïn Signal Add Vector ñeå theâm thôøi gian moâ phoûng.

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

Keát quaû:

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

-Click phaûi leân töøng ñoaïn thôøi gian cuûa töøng tín hieäu, choïn giaù trò thích hôïp cho ñoaïn ñoù. Ta thöû thieát laäp ñoaïn tín hieäu nhö sau:

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

Keát quaû:

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

-Choïn File Save ñeå löu giaûn ñoà thôøi gian vöøa taïo.

* Chuù yù: phaûi löu file naøy taïi thö muïc

ñaõ löu file *.PLD ôû treân.

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

Keát quaû:

-Choïn Simulator Run Simulator ñeå boä moâ phoûng tính toaùn caùc tín hieäu ngoõ ra theo tín hieäu ngoõ vaøo ñaõ taïo.

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

KIEÅM TRA laïi keát quaû vöøa coù theo caùc tín hieäu ñaàu vaøo vaø ñieàu kieän ñeà baøi. Neáu sai, ta quay laïi chænh söûa ñoaïn code.File *.JED laø file duøng ñeå naïp chip hoå trôï file JED

-------------------------------------

Chöông trình WinCUPL coù theå taûi veà taïi ñòa chæ:

www.atmel.com Serial Number: 60008009

Laäp trình duøng WINCUPL

Höôùng daãn moâ phoûng

ÑAÂY LAØ PHAÀN CUOÁI CUØNG CUÛA MOÂN ÑIEÄN TÖÛ SOÁ

CHUÙC MOÏI NGÖÔØI THI TOÁT

Moïi thaéc maéc, lieân heä: [email protected]