Upload
api-3707921
View
240
Download
10
Embed Size (px)
Citation preview
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
- 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û:
-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û:
-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û:
-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
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]