VHDL (VHDL laø töø vieát taét cuûa Very Hight Speed Integrated Circuit Hardware Description Language) laø moät ngoân ngöõ laäp trình ñaõ ñöôïc thieát keá theo caùch moâ taû haønh vi cuûa heä thoáng soá.VHDL ñöôïc phaùt trieån vaøo nhöõng 1980.
VHDL coù nhieàu ñaëc ñieåm thích hôïp moâ taû haønh vi cuûa caùc thaønh phaàn thieát bò ñieän töû töø nhöõng coång luaän lyù ñôn giaûn ñeán nhöõng boä vi xöû lyù phöùc taïp. Ñaëc ñieåm cuûa VHDL laø cho pheùp moâ taû chính xaùc haønh vi cuûa nhöõng maïch ñieän töû.
Cuõng gioáng nhö ngoân ngöõ Pascal, C vaø C++, VHDL bao goàm nhöõng ñaëc ñieåm höõu ích cho kyõ thuaät thieát keá nhöõng caáu truùc vaø trình baøy nhöõng ñaëc ñieåm döõ lieäu. Khoâng gioáng nhö nhöõng ngoân ngöõ laäp trình khaùc, VHDL cung caáp nhöõng ñaëc ñieåm cho pheùp ñeå moâ taû nhöõng söï kieän xaûy ra. (xem[1])
73 trang |
Chia sẻ: luyenbuizn | Lượt xem: 997 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Tìm hiểu một số khái niệm của của ngôn ngữ văn hóa du lịch và mối quan hệ giữa văn hóa du lịch với phần cứng., để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LÔØI NOÙI ÑAÀU
Moät thaønh phaàn quan troïng cuûa maùy tính laø boä xöû lyù trung taâm (CPU). Coù raát nhieàu coâng söùc ñöôïc ñaàu tö vaøo vieäc cheá taïo caùc CPU nhaèm taïo ra caùc maùy tính ñaùp öùng yeâu caàu ngaøy caøng cao cuûa xaõ hoäi. Ñoù cuõng chính laø nhieäm vuï maø ñeà taøi naøy caàn thöïc hieän. Ñeå thieát keá moät CPU vôùi ñaày ñuû chöùc naêng caàn moät coâng cuï ñuû maïnh. Trong soá nhöõng coâng cuï ñoù, ngoân ngöõ moâ taû phaàn cöùng (VHDL) seõ ñöôïc söû duïng trong ñeà taøi naøy
Töø ngoân ngöõ VHDL caùc nhaø thieát keá phaàn cöùng coù theå thieát keá ra nhöõng thieát bò phaàn cöùng nhö CPU, boä vi ñieàu khieån… moät caùch nhanh choùng vaø cuõng coù theå thöïc hieän moâ phoûng vaø kieåm tra khaû naêng hoaït ñoäng cuûa thieát bò tröôùc khi ñöa vaøo saûn xuaát, nhôø vaäy coù theå giaûm bôùt thôøi gian, chi phí saûn xuaát... Do khaû naêng vaø tính hieäu quaû cuûa ngoân ngöõ VHDL laø ñoäng cô chính ñeå chuùng em choïn ñeà taøi “Thieát keá CPU duøng ngoân ngöõ VHDL” laøm ñeà taøi cho luaän vaên toát nghieäp cuûa mình.
Chuùng em chaân thaønh bieát ôn toaøn theå quyù thaày coâ trong Khoa Coâng Ngheä Thoâng Tin Tröôøng Ñaïi Hoïc Kyõ Thuaät Coâng Ngheä TPHCM, xin chaân thaønh caûm ôn thaày Leâ Maïnh Haûi ñaõ taän tình höôùng daãn chuùng em thöïc hieän luaän vaên naøy.
Trong thôøi gian ngaén, coù leõ chöa ñuû ñeå nghieân cöùu saâu moät ñeà taøi töông ñoái lôùn, neân chaéc chaén khoâng theå traùnh khoûi thieáu soùt. Kính mong quyù thaày coâ goùp yù ñeå chuùng em tieán boä theâm.
Tp.HCM, ngaøy 03 thaùng 05 naêm 2003 Huyønh Thò Moäng Tuyeàn
Döông Huyønh Thanh Tuøng
GIÔÙI THIEÄU
I. MUÏC ÑÍCH
Luaän vaên naøy thöïc hieän moät soá coâng vieäc nhö sau.
- Thieát keá CPU baèng ngoân ngöõ VHDL.
- Thöïc hieän moâ phoûng chöông trình treân chíp FLEX10K cuûa haõng Altera.
II. BOÁ CUÏC
- Tìm hieåu moät soá khaùi nieäm cuûa cuûa ngoân ngöõ VHDL vaø moái quan heä giöõa VHDL vôùi phaàn cöùng.
- Coâng ngheä FPGA: tìm hieåu moät soá thieát bò FPGAs.
- Thieát keá CPU: thöïc hieän moâ taû nhieäm vuï cuûa CPU, taäp leänh cuûa CPU, cheá ñoä ñòa chæ leänh cuûa CPU, haønh vi cuûa CPU, caùc thaønh phaàn cuûa CPU vaø vieát chöông trình ñeå thöïc hieän moät soá leänh cuûa CPU.
- Thöïc hieän moâ phoûng chöông trình duøng phaàn meàm MAX+Plus II.
MUÏC LUÏC
Trang
LÔØI NOÙI ÑAÀU 1
GIÔÙI THIEÄU 2
I. MUÏC ÑÍCH 2
II. BOÁ CUÏC 2
MUÏC LUÏC 3
Phaàn 1 VHDL VAØ FPGA 6
I. GIÔÙI THIEÄU 6
1. Giôùi thieäu veà VHDL 6
2. Caùc ñaëc ñieåm cuûa VHDL 6
II. CAÙC KHAÙI NIEÄM CÔ BAÛN 6
1. Caùc khoái 6
2. Giôùi thieäu hai ñôn vò thieát keá cô baûn cuûa VHDL 7
2.1. Khai baùo thöïc theå 8
2.2. Thöïc theå kieán truùc 8
3. Goùi 9
III. MOÁI QUAN HEÄ GIÖÕA NGOÂN NGÖÕ VHDL VAØ PHAÀN CÖÙNG 9
1. Caùc thaønh phaàn cuûa VHDL ñeå moâ taû phaàn cöùng 9
1.1. Caùc kieåu cuûa VHDL 9
1.2. Caùc ñoái töôïng cuûa ngoân ngöõ VHDL 10
1.3. Caùc toaùn töû soá hoïc 11
1.3.1. Caùc toaùn töû luaän lyù 11
1.3.2. Caùc toaùn töû quan heä 11
1.3.3. Caùc toaùn töû coäng 11
1.3.4. Caùc toaùn töû dòch 11
1.3.5. Caùc toaùn töû moät ngoâi 12
1.3.6. Caùc toaùn töû nhaân 12
1.4. Caùc leänh tuaàn töï 12
1.4.1. Pheùp gaùn bieán soá 12
1.4.2. Pheùp gaùn tín hieäu 12
1.4.3. Leänh ñieàu kieän 12
1.4.4. Leänh laëp 13
2. Söï theå hieän phaàn cöùng baèng VHDL 13
2.1. Caùc maïch toå hôïp 13
2.1.1. Caùc coång luaän lyù 13
2.1.2. Caùc toaùn töû soá hoïc 13
2.1.3. Caùc toaùn töû dòch vaø quay 14
2.1.4. Boä doàn keânh 14
2.2. Caùc maïch ñoàng boä 15
2.2.1. Maïch caøi 15
2.2.2. Thanh ghi 16
IV. COÂNG NGHEÄ FPGA 16
1. Caùc loaïi FPGA 17
1.1. Caùc coâng ngheä laäp trình chíp 18
1.1.1. Coâng ngheä laäp trình duøng RAM tónh 18
1.1.2. Coâng ngheä laäp trình duøng caàu chì nghòch 19
1.1.3. Coâng ngheä laäp trình EPROM vaø EEPROM 20
1.2. Caùc loaïi FPGA treân thò tröôøng 21
2. Moät soá öùng duïng cuûa FPGA 22
3. Thieát bò Max, Flex 23
3.1. MAX 24
3.2. FLEX 24
Phaàn 2 THIEÁT KEÁ CPU 25
I. NHIEÄM VUÏ 25
II. TOÅ CHÖÙC BOÄ NHÔÙ CUÛA CPU 25
III. TAÄP LEÄNH CUÛA CPU 26
IV. CHEÁ ÑOÄ ÑÒA CHÆ CUÛA LEÄNH 27
V. HAØNH VI CPU 29
1. Ñònh thôøi vaø ñoàng hoà 29
1.1. Giaûn ñoà ñònh thôøi ñaùp öùng ngaét quaõng 29
1.2. Giaûn ñoà chu kyø thöïc hieän leänh 1 byte 30
1.3. Giaûn ñoà ñònh thôøi chu kyø thöïc hieän caùc leänh reõ nhaùnh vaø leänh jmp ôû cheá ñoä tröïc tieáp 30
1.4. Giaûn ñoà ñònh thôøi chu kyø thöïc hieän leänh lda, adc, sbc 31
1.5. Giaûn ñoà ñònh thôøi chu kyø thöïc hieän leänh jsr 31
1.6. Giaûn ñoà ñònh thôøi chu kyø thöïc hieän leänh sta 31
1.7. Giaûn ñoà ñònh thôøi chu kyø thöïc hieän leänh lda, and, adc, sbc 32
1.8. Giaûn ñoà ñònh thôøi chu kyø thöïc hieän leänh sta 32
2. Khoái phuïc vuï chöông trình 33
3. Moâ taû haønh vi cpu 36
VI.CAÙC THAØNH PHAÀN CUÛA CPU 38
1. Chöùc naêng cuûa caùc thaønh phaàn cuûa CPU 39
2. Thöïc hieän leänh 39
3. Moâ taû caùc thaønh phaàn 41
3.1. Ñôn vò luaän lyù soá hoïc 41
3.2. Ñôn vò dòch chuyeån 44
3.3. Thanh ghi traïng thaùi 45
3.4. Thanh ghi tích luy 46
3.5. Thanh ghi leänh 47
3. Boä ñieàu khieån cuûa CPU 48
Phaàn 3 MOÂ PHOÛNG 62
I. MAX+PLUSII 62
1. Toång Quaùt 62
2. Caùch söû duïng Max+PlusII 62
2.1. Thöïc hieän soaïn thaûo vaø dòch moät chöông trình 63
2.2. Thöïc hieän kieåm tra keát quaû sau khi ñaõ toång hôïp maïch 64
2.3. Thoaùt khoûi Max+plusII 65
II. MAØN HÌNH KHI MOÂ PHOÛNG 65
1. Khoái luaän lyù soá hoïc ALU 65
2. Khoái dòch chuyeån SHU 66
3. Khoái ñieàu khieån 67
4. Sô ñoà chaân CPU 69
5. Maøn hình moâ phoûng leänh 70
Phaàn 4 KEÁT LUAÄN KIEÁN NGHÒ 71
I. NHAÄN XEÙT CHUNG 71
a. Nhöõng maët ñaït ñöôïc 71
b. Nhöõng vaán ñeà toàn taïi 71
II. HÖÔÙNG PHAÙT TRIEÅN 71
III. ÑAÙNH GIAÙ 71
IV. KEÁT LUAÄN 71
Phaàn 5 TAØI LIEÄU THAM KHAÛO 73
Phaàn 1 VHDL VAØ FPGA
Phaàn I giôùi thieäu ngoân ngöõ VHDL vaø moät soá ñaëc ñieåm chính cuûa noù. Phaàn II trình baøy caùc khaùi nieäm cô baûn veà khoái, thöïc theå, kieán truùc vaø goùi cuûa ngoân ngöõ VHDL. Phaàn III trình baøy moái quan heä maät thieát giöõa ngoân ngöõ VHDL vaø phaàn cöùng. Phaàn IV giôùi thieäu veà coâng ngheä FPGA ñeå xaây döïng caùc maïch tích hôïp.
I. GIÔÙI THIEÄU
1. Giôùi thieäu veà VHDL
VHDL (VHDL laø töø vieát taét cuûa Very Hight Speed Integrated Circuit Hardware Description Language) laø moät ngoân ngöõ laäp trình ñaõ ñöôïc thieát keá theo caùch moâ taû haønh vi cuûa heä thoáng soá.VHDL ñöôïc phaùt trieån vaøo nhöõng 1980.
VHDL coù nhieàu ñaëc ñieåm thích hôïp moâ taû haønh vi cuûa caùc thaønh phaàn thieát bò ñieän töû töø nhöõng coång luaän lyù ñôn giaûn ñeán nhöõng boä vi xöû lyù phöùc taïp. Ñaëc ñieåm cuûa VHDL laø cho pheùp moâ taû chính xaùc haønh vi cuûa nhöõng maïch ñieän töû.
Cuõng gioáng nhö ngoân ngöõ Pascal, C vaø C++, VHDL bao goàm nhöõng ñaëc ñieåm höõu ích cho kyõ thuaät thieát keá nhöõng caáu truùc vaø trình baøy nhöõng ñaëc ñieåm döõ lieäu. Khoâng gioáng nhö nhöõng ngoân ngöõ laäp trình khaùc, VHDL cung caáp nhöõng ñaëc ñieåm cho pheùp ñeå moâ taû nhöõng söï kieän xaûy ra. (xem[1])
2. Caùc ñaëc ñieåm cuûa VHDL
Moät soá ñaëc ñieåm chính cuûa ngoân ngöõ VHDL (xem[4])
* Ñaëc ñieåm toång quaùt: VHDL coù theå ñöôïc söû duïng ñeå laäp taøi lieäu thieát keá, thieát keá möùc ñoä cao, moâ phoûng toång hôïp vaø kieåm tra phaàn cöùng. VHDL cho pheùp moâ taû phaàn cöùng töø möùc heä thoáng ñeán möùc coång, hoã trôï tính ñoàng thôøi nghóa laø töø caùc hôïp phaàn nhoû ñeán lôùn hoaït ñoäng taïi moät thôøi ñieåm.
* Hoã trôï phaân caáp thieát keá: Ñaây laø ñaëc tính thieát yeáu cuûa ngoân ngöõ phaàn cöùng ña caáp. Thieát keá chöùa moät moâ taû giao dieän vaø moät soá phaàn ñoäc laäp ñeå moâ taû hoaït ñoäng. Hoaït ñoäng cuûa heä thoáng coù theå ñöôïc ñaëc taû döïa treân chöùc naêng hoaëc döïa treân caáu truùc cuûa nhöõng phaàn nhoû hôn cuûa chuùng. Ñaëc taû caáu truùc caùc hôïp phaàn coù theå ñöôïc thöïc hieän ôû taát caû caùc caáp thieát keá.
* Coù thö vieän hoã trôï: Ngoân ngöõ cung caáp cô cheá ñeå truy caäp ñeán nhieàu thö vieän khaùc nhau. Thö vieän khoâng chæ chöùa ñaëc taû giao dieän cuûa thieát keá, maø coøn chöùa moät soá ñaëc taû cuûa heä thoáng. Caùc ñaëc taû vaø caùc maãu coù theå döïa vaøo thö vieän sau khi ñöôïc dòch bôûi chöông trình dòch.
* Coù leänh tuaàn töï: Khi ngöôøi thieát keá phaân chia heä thoáng thaønh nhöõng hôïp phaàn ñoàng thôøi hay phaàn con, tieáp ñoù ngöôøi thieát keá coù theå moâ taû chi tieát hoaït ñoäng beân trong baèng nhöõng caáu truùc ngoân ngöõ laäp trình tuaàn töï nhö caùc leänh case, if – then – else, loop,…Caùc leänh tuaàn töï cung caáp phöông phaùp ñôn giaûn ñeå taïo ra caùc hôïp phaàn phaàn cöùng döïa treân chöùc naêng cuûa chuùng.
* Thieát keá töông thích chung: Ñeå thieát keá toång quaùt ngoân ngöõ cho pheùp ngöôøi thieát keá ñaët caáu hình moâ taû hôïp phaàn coù thoâng soá chung trong thieát keá. Moâ taû töông thích chung coù theå thay ñoåi kích thöôùc ñaëc tính vaät lyù, ñònh thôøi ñaëc tính taûi, vaø moâi tröôøng hoaït ñoäng cuûa thieát keá.
* Khai baùo kieåu vaø caùch duøng: Ngoân ngöõ VHDL cho pheùp moâ taû caùc kieåu bit, Boolean, integer, floating, kieåu lieät keâ, kieåu daõy, baûn ghi. Ngoaøi ra coøn hoã trôï caùc kieåu do ngöôøi söû duïng ñònh nghóa. Ngoân ngöõ VHDL cuõng cho pheùp ñònh nghóa laïi caùc toaùn töû cuûa ngoân ngöõ bôûi ngöôøi söû duïng.
* Söû duïng caùc chöông trình con: Ngoân ngöõ VHDL cho pheùp ñònh nghóa caùc haøm, thuû tuïc, caùc chuông trình con coù theå söû duïng ñeå bieán ñoåi caùc kieåu, ñònh nghóa ñôn vò luaän lyù, ñònh nghóa laïi toaùn haïng, ñònh nghóa toaùn töû môùi, vaø caùc öùng duïng khaùc trong ngoân ngöõ laäp trình.
* Ñieàu khieån ñònh thôøi: Ngoân ngöõ VHDL laø cho pheùp ñaëc taû ñònh thôøi ôû taát caû caùc caáp nhö laø: ñaët giaù trò cuûa tín hieäu, thôøi gian treã, ñònh nghóa tín hieäu ñoàng boä, ñaët ñoä roäng xung …
II. CAÙC KHAÙI NIEÄM CÔ BAÛN (xem[1])
1. Caùc khoái
VHDL ñöôïc moâ taû thaønh nhöõng khoái, khoái ñaàu tieân laø ñôn vò thieát keá.
Coù 5 loaïi ñôn vò thieát keá ñöôïc phaân thaønh hai phaàn laø phaàn moâ taû kieán truùc phaàn cöùng vaø phaàn meàm.
+Phaàn cöùng goàm coù: Thöïc theå (entity), caáu hình (configuration), kieán truùc (architecture)
+Phaàn meàm goàm coù: goùi (package) vaø thaân goùi (package body).
2. Giôùi thieäu hai ñôn vò thieát keá cô baûn cuûa VHDL
Hai ñôn vò thieát keá cô baûn cuûa VHDL laø Entity declaration vaø Architecture body.
Moät Entity laø moät moâ hình söû duïng moät khai baùo thöïc theå vaø ít nhaát coù moät thöïc theå kieán truùc. Khai baùo thöïc theå laø moâ taû toång quaùt beân ngoaøi cuûa moät thöïc theå, ví duï nhö: teân caùc tín hieäu input, output. Thaân cuûa kieán truùc (Architecture body) laø ñi vaøo ñaëc taû beân trong cuûa moät thöïc theå, ví duï thieát laäp söï noái keát lieân tuïc cuûa caùc thaønh phaàn maø ñaïi dieän cho caáu truùc cuûa moät thöïc theå, hoaëc taäp hôïp taát caû caùc phaùt bieåu ñoàng thôøi hay lieân tuïc maø ñaïi dieän cho söï xöû lyù cuûa thöïc theå.
Söï tröøu töôïng phaàn cöùng cuûa moät heä thoáng soá
Khai baùo thöïc theå
Thaân kieán truùc
-Moâ hình cuûa thöïc theå
Hình 1.
2.1. Khai baùo thöïc theå (Entity Delaration)
Khai baùo thöïc theå laø chæ ra teân cuûa moâ hình caàn thieát keá vaø danh saùch caùc coång giao tieáp. Coång laø nhöõng tín hieäu maø thöïc theå duøng ñeå giao tieáp vôùi nhöõng moâ hình khaùc trong moâi tröôøng toång quaùt cuûa noù.
Ví duï: Entity mach_cong is
Port(a,b : in bit; s1,c : out bit ) ;
End mach_cong ;
2.2. Thöïc theå kieán truùc (Architecture Body)
-Moâ taû chi tieát moät thöïc theå ñöôïc chæ ra bôûi kieán truùc cuûa thöïc theå nhö sau
Ví duï: moâ hình cho thöïc theå mach_cong, ôû daïng caáu truùc (structural):
Architecture arc_mach_cong of mach_cong is
Component Xor
Port (X, Y: in bit; Z, T: out bit);
End component;
Component And
Port (L, M: input; N, P: out bit);
End component;
Begin
G1: Xor port map (A, B, Sum);
G2: And port map (A, B, C);
End arc_mach_cong;
Thöïc theå kieán truùc coù teân laø “arc_mach_cong”. Duøng nhöõng thaønh phaàn coù saün cuûa ngoân ngöõ VHDL nhö coång And, Xor ñeå noái keát chuùng laïi vôùi nhau taïo thaønh moät caáu truùc cho thöïc theå.
3. Goùi
Trong moâi tröôøng thieát keá phaàn cöùng caàn phaûi nhoùm caùc hôïp phaàn hay caùc tieän ích duøng cho vieäc moâ taû caùc hôïp phaàn. Nhöõng caáu truùc VHDL ñeå moâ taû caùc tieän ích vaø moâi tröôøng laø caùc ñònh nghóa kieåu vaø chöông trình con. Nhöõng hôïp phaàn vaø tieän ích nhö vaäy coù theå ñöôïc nhoùm laïi baèng caùch söû duïng khoái. Nhö ví duï sau, caùch khai baùo khoái chöùa caùc hôïp phaàn vaø tieän ích coù theå tham khaûo ñöôïc töø caùc thöïc theå vaø caùc kieán truùc.
Cuù phaùp: Package teân cuûa goùi is
Khai baùo caùc thaønh phaàn cuûa goùi
End teân cuûa goùi ;
Trong phaàn thaân khoái chöùa nhöõng ñònh nghóa chöông trình con vaø caùc tieän ích ñöôïc duøng bôûi chöông trình con
Package body teân cuûa goùi is
Khai baùo caùc thaønh phaàn trong thaân cuûa goùi
End teân cuûa goùi ;
Ngoân ngöõ VHDL cho pheùp söû duïng caùc thö vieän vaø lieân keát caùc hôïp phaàn phuï cuûa thieát keá vôùi caùc phaàn töû cuûa thö vieän khaùc
III. MOÁI QUAN HEÄ GIÖÕA NGOÂN NGÖÕ VHDL VAØ PHAÀN CÖÙNG
Trong phaàn naøy trình baøy hai vaán ñeà laø caùc thaønh phaàn cuûa ngoân ngöõ VHDL ñeå thöïc hieän vieäc moâ taû phaàn cöùng vaø söï theå hieän phaàn cöùng baèng ngoân ngöõ VHDL.
Phaàn 1 trình baøy caùc kieåu cuûa VHDL, caùc ñoái töôïng cuûa VHDL, caùc toaùn töû, caùc leänh tuaàn töï.
Phaàn 2 caùc vaán ñeà veà maïch toå hôïp vaø maïch ñoàng boä ñöôïc trình baøy.
1. Caùc thaønh phaàn cuûa VHDL ñeå moâ taû phaàn cöùng
1.1. Caùc kieåu cuûa VHDL (xem [2, 4])
Trong ngoân ngöõ VHDL coù caùc kieåu sau:
- Kieåu lieät keâ ñöôïc ñònh nghóa baèng caùch lieät keâ danh saùch caùc giaù trò, moãi thaønh phaàn cuûa danh saùch laø moät teân daønh rieâng hoaëc laø moät kyù töï soá.
Ví duï: Type STD_LOGIC is (‘U’,’X’,’0’,’1’,’H’,’-’);
Type STATE_TYPE is (HALT, READY, RUN, ERROR);
- Kieåu nguyeân coù hai loaïi:
+ Kieåu nguyeân ñöôïc ñònh nghóa nhö vuøng con cuûa kieåu toång quaùt ñaõ ñöôïc caøi saün vaø caùc giôùi haïn phaûi ñöôïc khai baùo.
Ví duï: Type LENGTH is range 0 to 1000;
Type BYTE_INT is range -128 to 127;
+ Kieåu nguyeân ñöôïc ñònh nghóa bôûi ngöôøi söû duïng.
Ví duï: Type MY_INTEGET is INTEGER range 0 to 1000;
Signal MY_INT: MY_INTEGER;
- Kieåu maûng duøng ñeå ñònh nghóa moät taäp chæ soá.
Ví duï: Type WORD is array (10 down to 0) of bit;
- Kieåu record duøng ñeå ñònh nghóa taäp caùc kieåu khaùc nhau.
Ví duï: Type CODE_TYPE is (NONE, DATA, STATMT);
Type ITEM_TYPE is record
CODE: CODE_TYPE;
INT: INTEGER;
End record;
1.2. Caùc ñoái töôïng cuûa ngoân ngöõ VHDL (xem[1])
Trong ngoân ngöõ VDHL coù moät soá ñoái töôïng nhö haèng, bieán, tín hieäu.
- Haèng: laø giaù trò ñöôïc xaùc ñònh trong suoát thôøi gian khôûi taïo, caùc giaù trò naøy khoâng ñoåi trong suoát quaù trình thöïc thi.
Ví duï: type TAB is array (BIT, BIT) of BIT;
Constant AND_TAB: TAB := ((‘0’,’0’),(‘0’,’1’));
- Bieán: Giaù trò cuûa bieán ñöôïc caäp nhaät töùc thôøi khi ñöôïc gaùn.
Coù 2 loaïi bieán, bieán cuïc boä vaø bieán toaøn cuïc.
+ Bieán cuïc boä coù theå ñöôïc khai baùo trong caùc chöông trình con hoaëc trong caùc quaù trình vaø quan troïng laø trong quaù trình toång hôïp nôi maø chuùng coù theå suy ra caùc phaàn töû nhôù.
+ VHDL ñoàng thôøi raøng buoäc thu heïp söï söû duïng caùc bieán toaøn cuïc ñoái vôùi söï mieâu taû caáp heä thoáng.
-Tín hieäu:
Treân board maïch in hoaëc caùc maïch tích hôïp thoâng tin ñöôïc lan truyeàn xuyeân qua caùc daây daãn. Trong ngoân ngöõ VHDL caùc daây daãn naøy goïi laø “tín hieäu”.
Caùc tín hieäu hieän höõu töø khi baét ñaàu ñeán khi keát thuùc cuûa quaù trình taùi taïo. Khoâng taïo ra tín hieäu môùi hoaëc khoâng noái keát vaät lyù vôùi caùc tín hieäu ñöôïc cho pheùp trong thôøi gian taùi taïo.
Caùc tín hieäu khoâng coù chöùa ñöïng nhö caùc bieán. Caùc tín hieäu nhö laø nhöõng ñoái töôïng vaø coù caùc keát noái ñöôïc coá ñònh vôùi caùc tín hieäu khaùc.
Ví duï: Signal A1, A2: BIT_VECTOR(DATA’range) ;
Signal A3: BIT;
1.3. Caùc toaùn töû soá hoïc (xem [2])
1.3.1. Caùc toaùn töû luaän lyù: or, and, nor, nand, xor, nor nhaän caùc toaùn haïng kieåu: bit, boolean, vector.
Ví duï : Signal s, x,y: bit_vector(1 downto 0);
Signal r, a, b: bit;
Signal t, d, e, f, g : boolean;
Begin
S <= x and y;
R <= (a and b) and c;
T <= d xor c xor f xor g;
End;
1.3.2. Caùc toaùn töû quan heä: =, >, =, < =
Toaùn töû quan heä luoân luoân traû veà giaù trò boolean ñöôïc maõ hoaù ‘0’ hoaëc ‘1’. Keát quaû laø true neáu hai toaùn haïng coù cuøng giaù trò.
Ví duï: ‘0’< ‘1’ --.laø true
‘A’ < ‘BC’ --. laø true
‘10’ < ‘101’--. laø also true
1.3.3. Caùc toaùn töû coäng: +, -, &
Caùc toaùn töû coäng vaø tröø ñöôïc ñònh nghóa cho caùc toaùn haïng soá nguyeân
Ví duï: R < = a+b+c+1;
T<= [(a+b) +c) +1];
S< = (a+ b) + (c+2);
1.3.4. Caùc toaùn töû dòch: sll, srl, sla, sra, rol, ror
Ví duï: Signal S, R1, R2, R3, R4, T1, T2, T3, T4: Bit_Vector (1 To 4);
BEGIN
R1 <= ’SLL’(S, 1);
T2 <= S (2 TO 4) & ‘0’;
R2 <= ‘ROL’(S, 2);
...
1.3.5. Caùc toaùn töû moät ngoâi: “+”, “-” ñöôïc duøng cho caùc kieåu soá nguyeân.
Ví duï: SIGNAL R, A:INTEGER –4 TO 3;
BEGIN
R<=-A;
….
1.3.6. Caùc toaùn töû nhaân: /, *, mod, rem
Pheùp chia “/”, pheùp nhaân “*”, laáy phaàn nguyeân “mod”, laáy soá dö “rem” ñöôïc xem laø trong nhoùm toaùn töû nhaân.
Ví duï: Signal MEM: NATURAL range 0 to 3;
MEM <= (MEM + 1) mod 4;
1.4. Caùc leänh tuaàn töï
1.4.1. Pheùp gaùn bieán soá
Pheùp gaùn bieán ñöôïc thöïc hieän bôûi toaùn töû “:=” vaø thao taùc naøy xaûy ra ngay laäp töùc khi tính toaùn. Do ñoù giaù trò cuûa bieán chæ thay ñoåi bôûi leänh gaùn tieáp theo neáu giaù trò môùi khaùc vôùi giaù trò cuõ.
Ví duï: A:= 0;
WORD (3 to 4):= “10”;
1.4.2. Pheùp gaùn tín hieäu
Pheùp gaùn tín hieäu töông töï nhö pheùp gaùn bieán nhöng hieäu quaû cuûa leänh chæ xaûy ra sau leänh ñoàng boä. Pheùp gaùn tín hieäu ñöôïc thöïc hieän bôûi toaùn töû “<=”.
Ví duï: signal <= A and B;
1.4.3. Leänh ñieàu kieän
* Phaùt bieåu if: moät phaùt bieåu if bao goàm caû caùc nhaùnh elsif vaø else.
Cuù phaùp: IF bieåu thöùc THEN caâu leänh;
ELSIF bieåu thöùc THEN caâu leänh;
ELSE caâu leänh;
END IF;
* Phaùt bieåu case: phaùt bieåu case coù theå duøng ñeå thay theá cho phaùt bieåu if vaø nhieàu phaùt bieåu elsif.
Cuù phaùp: CASE Bieåu thöùc IS
WHEN giaù trò haèng=> caâu leänh;
WHEN giaù trò haèng => caâu leänh;
WHEN OTHERS => caâu leänh;
END CASE;
1.4.4. Leänh laëp
Phaùt bieåu laëp: coù 2 kieåu phaùt bieåu laëp, ñoù laø voøng laëp for vaø while.
* Voøng laëp For.
Cuù phaùp: For i in giaù_trò to/downto giaù_trò loop
End loop;
* Voøng laëp while.
Cuù phaùp: __loop_label:
WHILE __boolean_expression LOOP
Caâu leänh ;
END LOOP __loop_label;
2. Söï theå hieän phaàn cöùng baèng VHDL (xem [4])
2.1. Caùc maïch toå hôïp
2.1.1. Caùc coång luaän lyù : and, nand, or, xor, nor, not
Ví duï moâ taû coång nor coù 2 coång vaøo nhö sau:
Entity nor2 is
Port (A, B: in bit; S: out bit);
End nor2;
Architecture comb of nor2 is
Begin
S<= A nor B;
End comb;
2.1.2. Caùc toaùn töû soá hoïc: Goàm 4 toaùn töû cô baûn coäng, tröø, nhaân vaø chia.
Caùc toaùn töû naøy thöôøng thöïc hieän treân kieåu döõ lieäu soá nguyeân (INTEGER). Trong ngoân ngöõ VHDL caùc toaùn töû ‘+’, ‘-‘, ‘* ‘, ‘/’ ñaõ ñöôïc ñònh nghóa tröôùc vì vaäy coù theå söû duïng maø khoâng caàn khai baùo.
Ví duï: Signal l1, l2 SUM_l: INTEGER range –16 to 15;
Signal N1, N2, SUM_N: INTEGER range 0 to 47;
SUM_l <= l1+l2;
SUM_N <= N1+N2;
2.1.3. Caùc toaùn töû dòch vaø quay
Caùc toaùn töû dòch vaø quay ñöôïc thöïc hieän treân caùc ñoái töôïng ñöôïc bieåu dieãn theo kieåu bit_vector. Toaùn töû dòch vaø quay coù theå phaân bieät tính luaän lyù vaø tính soá hoïc.
Tính luaän lyù
Pheùp dòch phaûi luaän lyù dòch moät maûng sang phaûi keá tieáp xoaù bit phaûi nhaát cuûa maûng vaø theâm vaøo giaù trò 0 ôû bit traùi nhaát cuûa maûng.
Pheùp dòch traùi luaän lyù thöïc hieän dòch maûng sang traùi xoaù bit traùi nhaát cuûa maûng vaø theâm vaøo giaù trò 0 ôû bit phaûi nhaát cuûa maûng.
Ví duï: Giaù trò ban ñaàu 10100110
Dòch phaûi luaän lyù 01010011
Dòch traùi luaän lyù 01001100
Tính soá hoïc
Pheùp dòch phaûi soá hoïc thöïc hieän dòch maûng sang phaûi vaø laáy bit traùi nhaát cuûa giaù trò ban ñaàu laøm bit traùi nhaát cuûa giaù trò sau khi dòch
Pheùp dòch traùi soá hoïc thöïc hieän dòch maûng sang traùi vaø laáy bit phaûi nhaát cuûa giaù trò ban ñaàu laøm bit phaûi nhaát cuûa giaù trò sau khi dòch.
Ví duï: Giaù trò ban ñaàu 10100101
Dòch phaûi soá hoïc 11010010
Dòch traùi soá hoïc 01001011
2.1.4. Boä doàn keânh
Chöùc naêng cô baûn cuûa boä doàn keânh laø ñeå choïn löïa moät ñaàu ra trong nhieàu ñaàu vaøo, trong khi ñoù maïch phaân keânh thöïc hieän thao taùc ngöôïc laïi, moät ñaàu vaøo ñöôïc truyeàn ñeán moät trong nhöõng ñaàu ra, caùc giaù trò ñaàu ra khaùc giöõ giaù trò tröôùc cuûa chuùng.
Ví duï: Entity MUX2 is
Port (A, B: in bit; Select_A: in bit; Z: out bit);
End MUX2;
Architecture FIRST of MUX2 is
Begin
Z <= (A and Select_A) or (B and not Select_A);
End FIRST;
Sô ñoà phaàn cöùng moâ taû boä doàn keânh.
Hình 2.
2.2. Caùc maïch ñoàng boä(xem[4])
Caùc phaàn töû ñoàng boä taïo thaønh moät hoï raát lôùn, noù chöùa caùc maïch caøi vaø caùc thanh ghi laø caùc phaàn töû nhôù.
Caùc caáu truùc töông ñöông cuûa caùc maïch ñoàng boä.
Hình 3.
2.2.1. Maïch caøi
Maïch caøi laø taøi nguyeân boä nhôù ñôn giaûn nhaát, ñaàu vaøo D ñöôïc truyeàn ñeán ñaàu ra Q khi tín hieäu ñieàu khieån G tích cöïc neáu khoâng thì giaù trò tröôùc ñoù cuûa D giöõ nguyeân treân Q.
Ví duï: ENTITY LATCH IS
Port (G: in BIT; D: in BIT; Q: out BIT);
END LATCH;
Architecture A of LATCH IS
Begin
P: Process (G, D)
Begin
If G =’1’ Then Q<= D; End if;
End process P;
End A;
2.2.2. Thanh ghi
Thanh ghi cuõng töông töï nhö maïch caøi nhöng döõ lieäu ñöôïc nhôù taïi söôøn cuûa leänh thay vì möùc cuûa noù. Söï moâ taû maïch caøi vaø thanh ghi gaàn gioáng nhau.
Ví duï: Entity FF IS
Port (clk: in BIT; D: in BIT; Q: out BIT);
End FF;
Architecture A of FF IS
BEGIN
P_FF: process
Begin
If CLK =’1’ then Q <= D; End if;
End process P_FF;
End A;
IV. COÂNG NGHEÄ FPGA (xem [4, 9])
Coâng ngheä FPGA (FPGA laø töø vieát taét cuûa Field Programmable Gate Arrays) laø coâng ngheä cheá taïo maïch tích hôïp maät ñoä cao. FPGA laø moät thieát bò caáu truùc luaän lyù coù theå laäp trình ñöôïc bôûi ngöôøi söû duïng maø khoâng caàn ñeán moät coâng cuï cheá taïo maïch tích hôïp.
Ngöôøi thieát keá muoán taïo ra FPGAs toát phaûi söû duïng coâng cuï thieát keá ñöôïc trôï giuùp bôûi maùy tính goïi laø CAD (computer -Aided - Design). Ñaàu tieân thieát keá maïch luaän lyù ban ñaàu ñoøi hoûi moät sô ñoà bieåu dieãn maïch hay moät moâ taû VHDL hoaëc ñaëc taû caùc bieåu thöùc luaän lyù (Boolean). Töø caùc ngoõ vaøo ban ñaàu moâ taû maïch ñöôïc chuyeån thaønh daïng chuaån nhö caùc bieåu thöùc boolean sau ñoù ñöôïc xöû lyù baèng coâng cuï toái öu luaän lyù, chuùng ruùt goïn caùc bieåu thöùc, sau ñoù caùc bieåu thöùc Boolean ñaõ toái öu ñöôïc truyeàn tôùi caùc khoái luaän lyù cuûa FPGA thoâng qua chöông trình aùnh xaï coâng ngheä (technology mapping). Boä aùnh xaï thöïc hieän toái thieåu soá khoái ñöôïc duøng, tieáp theo chöông trình saép xeáp (Placement) thöïc hieän ñaët moãi khoái vaøo trong daõy FPGAs. Böôùc cuoái cuøng trong heä thoáng CAD ñöôïc thöïc hieän baèng phaàn meàm ñieàu khieån luoàng (routing) chuùng aán ñònh caùc ñoaïn daây FPGA vaø choïn caùc chuyeån maïch coù theå laäp trình phuø hôïp vôùi caùc keát noái trong khoái luaän lyù. Sau khi thöïc hieän thaønh coâng caùc böôùc saép xeáp vaø tuyeán ngoõ ra cuûa heä thoáng CAD ñöôïc naïp vaøo ñôn vò laäp trình taïo ra chíp FPGA.
Moâ hình heä hoáng CAD cuûa FPGA
Hình 4.
1. Caùc loaïi FPGA
Caùc loaïi FPGA cuûa nhieàu coâng ty khaùc nhau coù caùc ñaëc tính rieâng chuùng coù theå ñöôïc chia laøm 4 loaïi chính:
Caáu truùc maûng ñoái xöùng (symmetrical array)
Caáu truùc haøng (row-based )
Caáu truùc PLD phaân caáp (PLD laø vieát taét cuûa Programmable Logic Divice)
Caáu truùc ña coång (sea-of-gates)
Hình 5.
1.1. Caùc coâng ngheä laäp trình chíp
Coù nhieàu caùch hieän thöïc caùc phaàn töû laäp trình, caùc coâng ngheä laäp trình ñang söû duïng hieän nay laø: RAM tónh, caàu chì nghòch (anti-fuse), EPROM transistor vaø EEPROM transistor. Maëc duø caùc coâng ngheä laäp trình khaùc nhau nhöng chuùng coù chung tính chaát laø coù theå caáu hình ôû moät trong hai traïng thaùi laøø: ON hoaëc OFF. Caùc phaàn töû laäp trình duøng ñeå hieän thöïc caùc keát noái laäp trình giöõa caùc khoái luaän lyù cuûa FPGA, moät FPGA thoâng thöôøng coù theå coù hôn 100.000 phaàn töû laäp trình. Do ñoù caùc phaàn töû laäp trình phaûi coù caùc tính chaát sau:
+ Chieám caøng ít dieän tích cuûa chíp caøn
Các file đính kèm theo tài liệu này:
- BaoCao.doc
- BaoCao.pdf