Có hai loại PROM cơ bản, loại thứ nhất là Mask-Programmable là loại lập trình bởi nhà sản xuất và loại thứ hai là Field- Programmable PROM có thể lập trình bởi nhà sử dụng.Đối với loại P
Trang 1
BỘ GIÁO ĐỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP.HCM
KHOA ĐIỆN - ĐIỆN TỬ
NGÀNH ĐIỆN TỬ - VIEN THONG
DEN GIAO THONG
GVHD: KS.TRUGNG NGOC BAO SVTH : NGUYEN THANH QUANG MSSV : 02DHDT158
Trang 2Tế VỤ cực tp i pp ay aa tap ie te ie app pa se at Ö
LOT BAN ON
Trong thời gian thực hiện để tài, các thầy cô trong khoa Điện- Điện
Tử, đặc biện là thây hướng dẫn: K.s Trương Ngọc Bảo đã giúp đỡ em rất
nhiệt tình Với một lượng kiến thức nhất định, nếu không có những sự
giúp đỡ đó em đã không thể hoàn thành được luận văn của mình, vì vậy
em xin được nói lời cảm ơn chân thành nhất đến các thầy cô
Em cũng xin gởi lời cảm ơn tới văn phòng khoa Điện- Điện Tử đã
tạo mọi điều kiện tốt nhất để giúp sinh viên có thể hoàn thành luận văn
Trang 3ĐÔ ĐˆĐ©Ð6AÔ00060000000A®006000000006000000000000000060000000000000000000000000000000000000000090000000690009e0©e-0e 651 1966%6%096®%®66® P9 PĐbbe0000090000006009000000000600000000000000600000000000000000000000000000G00000000000900000000000060009600609000900©ee®® ĐĐ20ÔÂAĐĐe0Đ00600000400000000000000000000000000000000000000000000000000000000000000000000000900660000060600060061516060990906669%96®®66® ĐÔÖÐĐÔĐ000b006600000000000000000000000000000000000000000000000000000000000000000000000000000000006060000060000000009560060606006
ĐC ĐĐ”»ĐĐG00006000000009090000000000000000 060000000000 00000000000600009600000000000000000000000900909009060006090e0096°091ee°066®686
“ĐA ĐĐ00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900009060060”e°e09090®606e6® Đ00000000000009000000000000090000000000000000600000000000000000000000000900000000000000000000000000000006060606699ee.e009060666 ĐÔĐE00AĐAAGOeÔ00000000000000000000000000000006000000000000000000000090000000000000000000000000000060060000006060060000e.e°666® ĐÔĐeĐeĐĐĐ0Đ06000600000000000000000000000000000000000060000000006000009000000000000000000000000000000000060000000000eeee6618 6 ÓĐÔĐÐĐACbĐĐĐĐÔĐ0000%060000000000600000000006000000000000000000000000000000000000000000000000000900000066000000060000006000560606606 ẺAEÔĐĐĐĐ©ĐĐĐĐeG000000000000000000000000600000000000000000000000000000000000000000000000000009000000000000006900960609001® 666 ĐÔĐĐĐĐGÔÉЮР000 0006000000000006600000000000000000000000000000000000000000900000G00000000000009000000000000600606009e9e0.e9906®66® Đ»ĐôĐĐĐĐĐ0600006000000020000000906090060000000000000000006000000000000000000000000000000000009600000900000900900600069606000169®9600%®ee9® ĐÔôĐĐôÔPObĐbee006000000000000000000000000000900000000060000000000000000000600000000000000000090900000060006 SOS BOOS BOOS SHES PTUTTETITITITTT TITS TTT TTT rrr
ĐẺĐĐĐĐĐĐĐĐĐeĐÓ000000000006000000000000000000000000000000000000000000000000000000000000000000000006000006960060000960e.e.6601966 ĐẺÔSÔ6G0A0060000040000000000009600000090600000000000000000000606000000900000000000000000000000000000909000009600066060Đ%06001%%96006616
Trang 4‹{°ợ⁄9 i9 9 9 919 000006 000010.000406 060 00000090009009960009090000000000 00060 0000090000000990 090000960000 00960900/0096 00069960006 6660606 ĐÔ» Đ©tÓ00006000600000000000000000009000900000000000000000000600000000000000000000000000000000000000000000090004e00.6000e”eeeÓ®ee66
ĐÓ ĐÓ ĐA” ^^ 2006 000900660000000000000000000600000000000000000000000000000000000000000090000000000000®0660”e90069690600009606® ĐÓ0ĐAeÔbÐ0Đ00000000000600000000000000000000060000000000000000090000000000000000000000000600069.e0e0000900000061860600Đ%1%660060666666% ĐÔẺĐĐÔÔ@0bPeEbbb0000060000600000000000000000060600000000000000000000000000000000000000000000000090006000000006060000600001916°009©60666 ĐẺĐôÔBbECÔĐCĐb0000000000000600000000000000000000000000600000000000000000000000000000000000000000000900000000096000606006000900665 6660 ÓêĐĐeẺÔAĐ0000000000060000000000090000060600000000000000000000000000000000006000000000000000000060000000006400006969699ee900®660% ĐÔbĐÓCôbĐĐ000000900009600069000000000000006006000000060000000000000000000000090000000000009006000000000000606606000000cv600960066°066% ĐôAôÔeeeÐPObd000000000000606000000006000000000000000000000000000000000000000000000000000000069000000000006000000096000909601060690606°e6 ĐÔ@AĐĐĐOĐĐĐ0600600000000000000000000000000060000000000000000090000000000000000000000000000000000000000906060060060000600900606®6666 ĐôÔBSbÐebebÔbbnĐebÐBEĐĐEDĐAG000000000000000000060000000000000000000000000000000060000606000000900000000000090006000000600e-e.so-e0s0e666% ĐẺÔĐBEGPGCebbĐĐ0000600000000000000600000000000000000000000000090000000000009000000000000000060009060060000600600ee00e°e6061606060906096% 66% ĐẺAĐOBObÔoDPbbDbĐ00800000006000000000600000000000000000000000600000000060000000000000000000000000000900009000000606©01”°°-e1"ee°e°ee® ˆÝ“ HP b2 0000 0000400000000000000000000000000000000090000000000000000000000000 00000000 000000000000000069096060090000%6606%66966 ĐÔÔôOĐeGGƠÔb00%0000000006000000000000000000000000000660000000000000000000000000000000000000000090990000090006006060606906 1000969960656
ĐÓ 0 Đo ủ" Đo b1 ĐĐĐ0 0000 00699 000000000060000000000000006000000000000000000009000009000000009000000000000900090009006000e9 6 s961e® 696 ÔĐĐĐG000600000000000000000000000000000000000000000000000000000000900000000000000000000000000000090000090006060090©e°ee60 0%
Ô©Ôe°eÐeeẢed°eesee©o09000000600000000000000000006060000000000000000000000000000000940000000000000000600000000009000606090600006906696®606006
ĐHKTCN,Ngày tháng năm 2007 Giáo viên phản biện
Trang 5BỘ GIÁO DỤC VÀ ĐÀO TẠO _ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
*x‡w*+**#*+*
NHIỆM VỤ ĐỎ ÁN TÓT NGHIỆP
(Sinh viên phải đóng bản nhiệm vụ này vào trang thứ nhất của đô án)
UNG DUNG VHDL TRONG THIET KE SO THIET KE VI MACH (IC) DUNG DIEU KHIEN DEN GIAO THONG
2 Nhiệm vụ đồ án tốt nghiệp (Yêu cầu về nội dung và số liệu ban đầu):
- Tìm hiểu tổng quan về CPLD và FPGA
- Tìm hiểu phần mềm MaxPluslI lập trình cho vi mạch FPGA
- Thiết kế, lập trình chức năng điều khiển cho vi mạch FPGA
- Thực hiện mô phỏng trên PC, mỉnh họa cho các chức năng của vỉ mạch
3 Ngày giao nhiệm vụ đồ án : 02/10/2006
Nội dung và yêu cầu của ĐATN đã được thông qua
Ngày.⁄Ô tháng 21Onăm 2006
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
Trang 6
MỤC LỤC
Li Gi 000008 1
HO 18 c0 PB 2
30118090) 0i, 07 2
Phan Il: Thue hi6n oo 2
Từ khoá sử dụng, _— 2
PHẦN I: CƠ SỞ LÝ THUYẾT dc HH Ki TK ch n3 4 10 3 CHUONG 0: TONG QUAN e0 07.0 ec 0n 4
TL Téng quan a9 4
Il Tổng quan vé EPGA ì.eeieierrrrrrrrrrrrrrrrrrrrrrrrrrrrrrre 4 CHƯƠNGI: MÔ TẢ PHẦN CỨNG VÀ CÔNG NGHỆ FPGA - 6
I Giới Thiệu Về Quá Trình Tự Động Hoá Thiết Kế - - 6
Il Sự phát triển của các thiết bị lập trình -ccccsrerererrrrrri 6 Ill Giới thiệu sơ lược về các công nghệ lập trình -s 8
IV Các công cụ phần mềm hổ trƠ - 5-5-5522 tteerrrrrrrrrrrrrre 9 CHƯƠNG II: NGÔN NGỮ LẬP TRÌNH VHDIL -. 65-5 5+2 2>czzxze+ereee 11 1 608i 0 11
II —- Khai bdo thute thé voce cccccccccecesecsceceeseecseaeeeecseaeneseeenesstereeeesenens 13 II) hi ca 7a 13
ILI1 Đặt tả cấu trúc của mô hình . - 22+ + nierrsreerrerrere 14 IMH.2 Đặt tả mô hình dòng dữ liệu 2-5 ee eee e entree renee ee taeees 15 IH.3 Đặt trưng mô hình mô tả hành vi - 2s eects eee eee eneees 16 IH.4 Kiểu hỗn hợp của mô hình . recess eee eeereeteeeesneeeeeeesees 19 in 14/0, (ii na he 20
hi T40 c0 an ae 22
im vy 0.0 24
II.§ Kiểu phân tích cà HH re 25 086 ,0050.1 25
CHƯƠNG III: CAC PHAN TU NGON NGU CO BAN . -c5c-+2 27 I e0 01 ccce ec ccc cece ccc cseecssececceceenenseeceteeeccecescueesaneeseseeseeecenesaeeneneces 27 I 211016/0158:18:/1) 008 28
TED HAN g —= .,Ô 28 II :›r.EHdẶẮÃẶỶÃẮ 28
Trang 7
li a4 i87 1 30
IL4.5 Các cách khác để khai báo đối tượng -s> 30 TH Các loại đữ liệu - 5 ẶSsnnhhhhnhhhhHtrrrrdhrreihihthiee 31 IIẶN con e 32
TH.2 G00 717875 32
THD.3 ‹ 1 51a 35
II3.1 Kiểu Array type -. -o- nen con 36 I6 {con 37
HL4 Kiểu truy cập -5Ặ Set 37 II.5 Kiểu incomplete type -5- + cnennrrrrtrrrrrrtrtirrrrreirrirrrree 39 II ca 39
1 Š.ðẻ an 4 40
là NH0: 0 40
lv 0ï 0 1 a 40 Hi co 0 .ố.ố ố 41 TV.4 Todi tt CONG .ố 42 II bì ải 8 42
là 1 NuY ó1 43
'9?(8/900/€50/2968):7.) 2012:0007 44
I HH Yỗ ho ng ôn 44
LL Khai Báo Thực ThỂ St 22tr 44 y8 <0 45
I9) 0ì 8 ẽ 46 1.4 Lénh Gar na 41
L5 Phép Gán Tín Hiệu nen HhưHưhthre 49 I1 .Đ 49
cm 0 50
I.§ Lệnh Case - 2 sS.S In Hư th Hà HH 10 1111111 51 L9 Lệnh Null 2-5522 1S ghi Hư 52 I.10 Lệnh LLOOp - + như tr th HH Hi hit 52 LIL L@nh Exit o ccccc 52
IV 00 i1 53
Trang 8II Mô hình mô tả luồng dữ liệu - 5-5 ccsstertrrrerrrrrrrrrrrrrim 54
II.1 Phát biểu gán tín hiệu đồng thời -. -ssserrirrrrrrrrree 55 IL.2 Phat biểu gán tín hiệu tuần tự -. -++eneserrerrrerrrrrrrrrre 56
I4 Phép gán tín hiệu có sự lựa chọn -. -srerhrerrrrtrrrrrrrrre 57
088.4 ï0 11.0) 1 58
IV Định cấu hình và khai báo cấu hình -+ scsenhrertrrrrrrrrrrtr 60
TV.2.Dat t& CHU WIND .ố 61
Xã: 65
VILL Khai b&0 KGL 71 VI2.Khai báo thân khối -snsccennreerrrrrrrrtrrtrtrrtrrrrrrrrrrrrr 71
CHƯƠNG V: PHẪN MÊM MAX+PLUS II -. -+-°5+>tsenserrrrrrrerrrrre 77
VI Tổng hợp cho chức năng mô phồng - -5 52->+snsrerttrrrerrrrrerrte 79
IX Thiết lập và xem các tầm mô phỏng thời gian -+-cccsrrrrn 81
XI Mô phỏng eerenrrrrrrrrrrrrrrrrrrdtrrdrrrrdtrrrrern 83
PHẦN II: THIẾT KẾ VÀ MÔ PHỎNG 5-22-22 2222 trtrrtrrrrrrrrrirrre 85
Trang 10
Lời nói đầu
LỜI NÓI ĐẦU
VHDL là một ngôn ngữ mô tả phần cứng rất mạnh, hỗ trợ cho các vi mạch lập trình như các họ CPLDs, FPGAs Được phát triển từ thập niên 70, với khả năng
mềm dẻo, cấu trúc ngôn ngữ lập trình của VHDL gần giống với ngôn ngữ tự nhiên
đã giúp cho người thiết kế rất dễ dàng linh hoạt các thiết kế của mình Cấu trúc cú
pháp trong ngôn ngữ VHDL tương tự như các ngôn ngữ cấp cao như C++, Pascal, Java nên người thiết kế rất dễ dàng làm quen, vận dụng vào các thiết kế cụ thể Tuy ngôn ngữ VHDL xuất hiện trên thế giới đã lâu nhưng nó vẫn còn là khá
mới mẽ so với Việt Nam nhất là đối với sinh viên Với mong muốn các bạn sinh
viên tiếp cận được những kỹ thuật tiên tiến của thế giới và giúp các bạn có thêm một công cụ hữu ích trong học tập, tôi đưa ra để tài “Ứng dụng ngôn ngữ VHDL
trong thiết kế số, thiết kế vi mạch (IC) dùng điều khiển đèn giao thông”, mô phỏng trên phần mềm Max+plus II Để tài được trình bày theo quá trình nghiên cứu
của tôi
Trang 11PHAN II: THỰC HIỆN
Viết chương trình VHDL thiết kế (IC) điều khiển đèn giao thông
Mô phỏng kết quả trên phần mềm MAXPLUS H
Từ khoá sử dụng:
Trang 12Phân] Cơ sở lý thuyết
PHANI:
CƠ SỞ LÝ THUYẾT
Trang 13Chương 0 : Tổng quan về CPLD, FPGA
CHƯƠNG 0: TỔNG QUAN VỀ CPLD, FPGA
là PAL, like boclk
CPLD 1a ho vi mach co nhiều ngõ vào và nhiều ngõ ra Nó có nhiều khối mạch trên các chip các khối nối dây bên trong kết nối với các khối mạch
Các CPLD thương mại có kích thước từ chỉ 2 khối giống PAL đến 100 khối giống PAL.Một khi CPLD được lặp trình thi no sé giữ trạng thái được lập trình đó ngay ca khi không mất nguồn Tính chất này gọi là lập trình nonvolatile
Il TONG QUAN VE FPGA
FPGA gém mét day cac phan tử rời rạc có thể được kết nối với nhau theo một cách chung Giống như PLD các kết nối giữa các phan tử là có thể lập trình được
FPGA 1a chip co dung lugng kha lớn, các FPGA hoàn toàn khác với các CPLD không chứa các mặt phẳng AND,OR mà FPGA cung cấp các khối logic để cài đặt các hàm mong
muốn
Trang 14Từ mô hình lý thuyết của một FPGA ta thấy nó bao gồm một dãy hay nhiều các khối
logic (logic block) cé thể được kết nối bằng các nguồn kết nối chung (tài nguyên kết nối), được tổ chức tạo thành các kênh dẫn Bên trong các kết nối là các chuyển mạch lập trình được (/O cell) dùng để kết nối các logic block với các đoạn dây, hoặc dùng để nối các đoạn dây với nhau theo nhiều cách
Mạch logic được cài đặt trong FPGA bằng cách ánh xạ logic vào các logic block riêng lẽ và sau đó nối các logic block cần thiết qua các chuyển mạch
Công nghệ FPGA là một thiết bị cấu trúc logic cho phép người sử dụng lập trình trực tiếp mà không phải thông qua bất kỳ một công cụ chế tạo nào do đó nó cho phép chế tạo nhanh và giá thành sản phẩm được giảm đáng kể và đây là ưu điểm lớn nhất của công nghệ này và hiện nay đang được sử dụng rộng rãi và phổ biến
Trang 15
CHƯƠNG I: MÔ TẢ PHẦN CỨNG VÀ CÔNG NGHỆ FPGA
I Giới thiệu về quá trình tự động hoá thiết kế:
Để quá trình thiết kế hệ thống số được đễ dàng hơn, người ta dùng các công cụ CAD
(computer aided design:công cụ thiết kế trợ giúp bởi máy tính ) Thông thường thì
các công cụ: nhập yêu cầu thiết kế, tổ hợp , tối ưu hoá, mô phỏng và thiết kế vật lý
Có 3 phương pháp để nhập yêu câu thiết kế:dùng các bàng chân trị, dùng cách vẽ sơ
mạch hoặc dùng các ngôn ngữ mô tả phần cứng (HDL: hardware decription languages) HDL (hardware decription languages): tương tự các ngôn ngữ lập trình thông thường
trên máy tính nhưng HDL được dùng để mô tả phần cứng hơn là thực thi chương trình
trên máy tính
Sau khi các mô hình phần cứng HDL được mô phỏng, kiểm tra, tổng hợp sẽ được ánh
xạ công nghệ vào các thiết bị lập trình
Công nghệ mạch tích hợp cao (VLSI) có thể cho phép ta chế tạo các mạch số phức
tạp giá thành thấp với số lượng transistor trên một chip Tuy nhiên các công nghệ này cần có chi phí ban đầu cao và thời gian sản xuất lâu làm cho giá thành của mỗi đơn vị sản phẩm cao
II Sự phát triển của các thiết bị lập trình:
Các thiết bị lập trình được đóng vai trò quan trọng lâu dài trong thiết kế các phần cứng số Chúng là các chip đa dụng có thể được cấu hình theo nhiều cách cho nhiều ứng dụng
Loại đầu tiên của thiết bị có thể lập trình ứng dụng rộng rãi là PROM(programmable
read only memory).PROM là thiết bị lập trình chỉ một lần gồm một dãy các ô nhớ chỉ
đọc PROM có thể thực hiện bất kỳ hàm logic theo bang sy that nao bằng cách sử dụng các đường địa chỉ như các ngõ nhập và ngõ xuất được xác định bởi nội dung các ô nhớ
Có hai loại PROM cơ bản, loại thứ nhất là Mask-Programmable (là loại lập trình bởi nhà sản xuất) và loại thứ hai là Field- Programmable (PROM có thể lập trình bởi nhà sử dụng).Đối với loại PROM được lập trình bởi nhà sản xuất có ưu điểm là có hiệu suất tốc
độ cao vì các kết nối bên trong của thiết bị này được thực hiện bằng phần cứng khi sản xuất , ngược lại các kết nối của Field- “Programmable luôn cần đến một số loại chuyển mạch lập trình được do đó tốc độ kết nối bị chậm hơn so với Mask-Programmable
e Các chip Eield-Programmable: rẽ hơn các loại chip Mask-Programmable khi sản xuất với số lượng nhỏ
Trang 16
e_ Các chip Field-Programmable: có thể lập trình nhanh trong vài phút, trong khi các chip Mask-Programmable khi san xuất phải hàng tuần hoặc hàng tháng
Hai biến thể của Field-Programmable của PROM là Erasable Programmable Read- Only Memory (EPROM) Electrically Programmable Read-Only Memory (EEPROM) cung cấp thêm một ưu điểm khác: cả hai loại PROM này có thể xoá và lập trình nhiều lần
Một loại thiết bị lập trình khác được thiết kế đặc biệt để thực hiện các mạch logic là Programmable Logic Deevice (PLD) Một PLD thông thường gồmmột dãy các cổng AND được nối với một dãy các cổng OR Mạch logic có thể được thực hiệntrong PLD dưới dạng tổng các tích (sum of products) Loại cơ bản nhất là Progarmmable Array Logic (PAL) PAL gồm một khối các cổng AND lập trình được nối đến một khối các cổng OR cố định Một loại khác linh hoạt hơn là Progarmmable Logic Array (PLA).PLA
cũng có cấu trúc giống như PAL nhưng kết néi 1a Jap trinh dudc, PLA 6 ca hai loại là
Mask và Field Programmable
Cả hai loại PLD cho phép thực hiện các mạch logic có tốc độ cao, tuy nhiên cấu trúc
của các mạch này đơn giản (các mạch logic nhỏ)
Loại thiết bị lâp trình tổng quát nhất gồm một dãy các phần tử rời rạc có thể được kết
nối với nhau theo mô tả của người sử dụng Loại thiết bị này được gọi là Mask- Programmable Gate Array (MPGA) Các MPGA phổ biến nhất gồm các hang transistor
có thể được kết nối để thực hiện các mạch logic Cáckết nối do người dùng định nghĩa có
thể có cả trong các hàng và cột Ưu điểm lớn nhất của MPGA so với cấu trúc cha PLD la
nó cung cấp một cấu trúc tổng quát cho phép thực hiện với những mạch logic lớn hơn Vì cấu trúc kết nối của nó có thể mở rộngcủa cùng với số lượng logic Fleld-Programmable Gate Array (FPGA) kết hợp khả năng lập trình củaPLD và cấu trúc kết nối có thể mở
rộng của MPGA Các thiết bị lập trình loại này có mật độ tích hợp logic cao, logic vào các logic block riêng lẽ và sau đó nối các logic block cần thiết qua các chuyển mạch
Điểm bắt đầu cho quá trình thiết kế là mạch logic ban đầu cần thiết Bước này đòi một sơ dé biểu diễn mạch hay một mô tả VHDL hoặc đặt tả các biểu thức Boolean Các biểu thức Boolean sau đó được rút rgọn bằng công cụ tối ưu logic nhằm tối ưu
về mặt diện tích và tăng tốc độ của mạch Các biểu thức Boolean được tối ưu hoá sẽ được truyền tới mạch logic block của FPGA bằng cách ánh xạ công nghệ (techonology mapping)
Khối logic tối thiểu số khối được dùng tức giảm tối đa về mặt diện tích hoặc giảm
các đường kết nối kết nối để tăng tốc độ cho mạch
Trang 17Chương I : Mô tả phần cứng và công nghệ FPGA
Sau khi đã có được số khối cần thiết thì chương trình placement sẽ quyết định đặt các
khối này ở đâu trong FPGA, có nhiều giải thuật đặt ra cho chương trình placement này
Bước cuối cùng của quá trình thiết kế hệ thống số là chương trình routing nhằm tạo
ra các đoạn dây FPGA và chọn các chuyển mạch có thể lập trình được phù hợp với các nối khối logic Sau khi thực hiện thành công các bước routing và placement, ngõ ra của
hệ thống CAD được nạp vào các đơn vị lập trình tạo ra chip FPGA cuối cùng Toàn bộ quá trình cài đặt mạch trong FPGA chỉ mất khoảng vài phút đến một giờ, phụ thuộc vào loại FPGA đang dùng
IIL Giới Thiệu Sơ Lược Về Các Công Nghệ Lập Trình:
Prog.trans lớn
giữa các khối logic của FPGA và thông thường thì một FPGA có thể lớn hơn 100.000
phần tử lập trình
e Chiếm càng ít diện tích của chip càng tốt
e Có trở kháng thấp khi ở trạng thái ON và trở khángcao ở trang thái OFF
e C6 dién dung ký sinh thấp khi nối các đoạn dây
Trang 18Chương I :
Tùy thuộc vào ứng dụng của EPGA các phần tử lập trình có thể có các đặc tính khác
một chip
Mô tả phần cứng và công nghệ FPGA
nhau Ví dụ như các phần tử bay hơi có thể lập trình đuợc
Các loại FPGA trên thị trường :
e_ Có thể chế tạo một cách tin cậy số lượng lớn phần tử lập trình trên
Có rất nhiều hãng đầu tư nghiên cứu và ứng dụng ngôn ngữ VHDL để thiết kế
các mạch lập trình theo nhiều tiêu chuẩn công nghệ khác nhau Một số phần mềm thông dụng của các hãng như: Exemplar Logic's Leonardo, Synopsys FPGA
Exeoress, Synplify, Max+Plusll
Trang 19
Trong đó Max+PlusIl là phần mêm đa chức năng thực tiễn thiết kế, tổng hợp
mạch cho một số loại FPGA của hãng Altera
Max+PluslI hỗ trợ biên dịch, mô phỏng, phân tích định thời và tổng hợp cho một
số thiết bị: EPM7128LC84-7,EPF10K20RC240-4 Và đây là phần mềm được sử dụng trong luận văn này để hỗ trợ cho phần thiết kế
Trang 20
-10-Chương II: Ngôn ngữ lập trình VHDL
CHUONG II: NGÔN NGU LAP TRINH VHDL
Một ý tưởng phân cứng của hệ thống số được gọi là một thực thể và việc mô tả
kết cấu của mô hình phần cứng được gọi là kiến trúc (architecture) Một thực thể X
, khi được sử dụng trong một thực thể khác (thực thể Y) thì nó trở thành một thành phần / hợp phần (component) của thực thể Y Do đó một thành phần cũng là một thực thể, thực thể này còn phụ thuộc vào cấp độ của mô hình thiết kế
Đối với quá trình mô tả một thực thể VHDL cung cấp 5 loại cấu trúc cơ bản khác nhau được gọi là các đơn vị thiết kế gốc (design units) bao gồm:
Thực thể (entity): được mô hình hoá bằng cách sử dụng sự khai báo một thực
thể và ít nhất là phần thân kiến trúc (architecture)
Sự khai báo thực thể mô tả hình dáng bên ngoài của thực thé
Thân kiến trúc (architecture body): mô tả cấu trúc, kết cấu bên trong của một
thực thể
Ví dụ: một tập hợp các mối liên kết giữa các thành phẩn: là biểu hiện cho việc mô
tả cấu trúc của thực thể đó,hoặc là một tập hợp các lệnh gán tín hiệu đồng thời hay các lệnh tuần tự để mô tả hành vi cho thực thể Mỗi cách mô tả thực thể có thể
được mô tắ trong một thân kiến trúc khác nhau hoặc tổng hợp nhiều thân kiến trúc
khác nhau, hoặc tổng hợp nhiều thân kiến trúc đơn Thực thể là một mô hình có thể tồn tại dưới dạng sau:
Trang 21
Thân kiến trúc( architectare bodies)
Khai báo cấu hình (configuration): được dùng để tạo cấu hình cho thực thể Nó
mô tả mối liên kết của một thân kiến trúc từ thân kiến trúc bất kỳ có thể liên kết
với thực thể đó
Nó cũng dùng để mô tả các kết nối của thành phần (component) trong việc
chọn một thân kiến trúc cho các thực thể khác Một thực thể có thể có một số cấu hình khác nhau
Khai báo khối (package) tập hợp các khai báo liên hệ nhau như là: khai báo
kiểu, khai báo kiểu con và khai báo chương trình con , các khối khai báo này có thể được dùng chung cho nhiều đơn vị thiết kế đơn vị thiết kế riêng biệt
Thân khối (package body): bao gồm những định nghĩa của các khai báo cho chương trình con chứa đựng bên trong khai báo khối
Khi một thực thể được khai báo, nó cần một hệ thống VHDL công nhận Hệ
thống VHDL tiêu biểu là quá trình phân tích và mô phỏng
Phân tích (analyzer): là đọc một hay nhiễu bản thiết kế bao gồm file riêng và
file dịch này sang thư viện khác của chúng sau khi kiểm tra lỗi cú pháp và ngữ nghĩa Thư viện thiết kế là vùng trong môi trường chủ (hệ thống VHDL, hỗ trợ cho môi trường chủ) tại đây lưu trữ các bản thiết kế đã được biên dịch
Quá trình mô phỏng (simulator): là mô phỏng một thực thể được mô tả bằng cặp thực thể- kiến trúc (entity-architecture) , hoặc cấu hình (configuration) bằng cách đọc bản biên dịch từ thư viện thiết kế và quá trình thực hiện bao gồm các bước sau:
Trang 22
Il KHAI BAO THUC THỂ:
Khai báo thực thể là xác định tên thực thể được mô hình hoá và tập hợp các cổng của nó (ports) Ports là nơi xác nhận và truyền đi các tính hiệu để mô hình thực thể có thể trao đổi thông tin với các mô hình khác ở môi trường trong môi trường thiết kế
Sau đây là đoạn khai báo thực thể half-adder
liệt kê bao gồm bai loại ký tự :”0” và “1”
Từ thí dụ trên ta thấy khai báo nbmô hình thực thể không có xác định được những cấu trúc bên trong của thực thể ( nó chỉ cung cấp một cái nhìn tổng quát về bên ngoài của một mô hình hoá trong ngôn ngữ của VHDL) tức là chỉ khai báo tên
và các cổng giao tiếp của thực thể
Il THAN KIEN TRUC (ARCHITECTURE BODY):
Chỉ tiết bên trong của một thực thể được khai báo bởi thân kiến trúc bằng cách
dùng một vài mô hình sau:
1 Tập hợp các kết nối bên trong các thành phần (mô tả cấu trúc)
2 Tập hợp các phát biểu gán đồng thời (mô tả dòng đữ liệu)
3 Tập hợp các phát biểu gán tuần tự (mô tả hành vì)
4 Sự kết hợp các dạng trên
Trang 23
II Đặt tả cấu trúc của mô hình (structural) :
Trong đặt tả cấu trúc của mô hình , một thực thể (entity) được mô tả bằng một tập hợp các kết nối bên trong các thành phần (compoment)
Ví dụ: đặc tả cấu trúc cho mô hình thực thể bộ cộng HALF-ADDER:
khai báo thực thể bộ cong HALF—ADDER:
Entity HALF—-ADDER is
Port (A,B:in BIT; SUM,CARRY: out BIT);
End HALF-ADDER;
đặc tả thân kiến trúc cho bộ cộng HALF-ADDER;
Architecture HA-STRUCTURE of HALR-ADDER is
X1:XOR2 port map (A,B,SUM);
A1:AND2 port map (A,B,CARRY):
End HA-STRUTURE;
Tên của thân kiến trúc là HA-STRUTURE: được khai báo cho thực thé HALF-
ADDER thì chỉ ra các cổng giao diện cho thân kiến trúc này
Thân kiến trúc bao gồm hai phần : Phân khai báo( trước từ begin) và phần phát biéu (sau tif begin) , hai khai báo hợp phân (compoment) được thể hiện ở phân khai
Trang 24
báo của thân kiến trúc Những khai báo hợp phần (XOR và AND) mô tả giao điện
bên ngoài các hợp phần (compoment) được sử dụng trong thân kiến trúc đó Cả hai hop phan này có thể là đã có sẵn trong thư viện hoặc nếu chúng không có ,
chúng phải được liên kết (pind) đến một thành phân khác trong thư viện
XI và AI là các nhãn của thành phân cụ thể Trong phát biểu đầu tiên nhãn XI chỉ ra tín hiệu A và B (các cổng vào của HALF-ADDER) được nối kết với các cổng
X và Y (là các cổng vào) của hợp phần XOR2, trong khi đó cổng ouiput Z của hợp phân này được kết nối tới cổng output SUM của thực thể HALF- ADDER Tương tự
phần AND2, còn cổng N liên kết tới cổng ra CARRY của HALF-ADDER
Chú ý trong trường hợp này các tín hiệu trong port map (ánh xạ cổng) của đối tượng thành phần này và các tín hiệu cổng trong thành phần khai báo phải được liên kết theo vị trí Mô tả cấu tric cho HALF-ADDER 14 chưa mô tả đến bất kì chức năng của nó
Một mô hình thực thể chuyên biệt sẽ được dùng để mô tả cho compoment XOR2 và AND2, do đó mỗi một thành phần sẽ có phần khai báo thực thể và một thân kiến trúc riêng của nó
Sự khai báo các thành phân được tạo nấc (phân cấp) trong phần phát biểu của
thân kiến trúc bằng cách sử dụng các phát biểu đối tượng thành phần Các phát biểu đối tượng thành phần là các phát biểu đồng thời , vì thế thứ tự phát biểu của chúng là không quan trọng Một mô hình thực thể cấu trúc chỉ để dùng cho mô tả các kết nối của các hợp phần, nó không mô tả hành vi cho các hợp phần hay thực thể nào
II.2 Đặt tả mô hình dòng dữ liệu (data flow):
Đặt trưng của mô hình này là dòng dữ liệu qua entity là được mô tả là chủ yếu bằng cách sử dụng các phát biểu gán tín hiệu đồng thời Cấu trúc của thực thể không được mô tả chi tiết trong mô hình loại này
Ví dụ :thân kiến trúc cho thực thể HALF-ADDER theo mô hình dòng dữ liệu là:
Architecture HA-CONCURRENT of HALF-ADDER is begin
SUM <=A xor B after 8 ns ;
CARRY<= A and D AFTER 4 ns;
Trang 25
Một mô hình dòng đữ liệu của thực thể HALF-ADDER được mô tả bằng cách
sử dụng hai phát biểu gán tín hiệu đồng thời Trong phép gan tín hiệu đồng thời thì
tín hiệu “<=” là chỉ ra giá trị được gán cho tín hiệu
Gia trị của biểu thức ở bên tay phải của phát biểu được tính toán được gán vào tín hiệu ở phần bên trái, gọi lá tin hiéu dich ( target signal) Phép gan tín hiệu đồng
thời được thi hành khi xuất hiện 1 sự kiện tín hiệu của biểu thức bên phải, giá trị
của tín hiệu được thay đổi
Thông tin trì hoãn ( delay) thêm vào trong phát biểu gán tín hiệu bằng cách dùng mệnh để after Nếu 2 tín hiệu A và B xuất hiện tại thời điểm T thì khi đó cả 2 biểu thức bên phải của phép gán tín hiệu được tính toán Tín hiệu SUM được gắn giá trị mới sau 8 ns, đồng thời tín hiệu CARRY cũng được gán giá trị mới sau 4 ns
Do đó khi mô phỏng tới thời điểm (T+4) ns CARRY sẽ được gán giá trị mới , và tại thời điểm (T+8) ns thì SUM sẽ được gan gan giá trị mới Vì vậy cả hai phát
biểu gán được phát biểu đồng thời
Các phát biểu gán tín hiệu đồng thời cũng là các phát biểu đồng thời, do đó thứ
tự các phát biểu trong architecture là không quan trọng , ngoài ra trong architecture HA-CONCURRENT còn có sự liên kết đến khai báo của entity HALF-ADDER HI.3 Đặt trưng mô hình mô tả hành vi (behavioral style oŸ moding):
Một mô hình mô tả hành vi tương phản với mô hình mô tả hành vi data của thực thể, mô hình mô tả hành vi bao gồm một tập hợp thứ tự cáv phép gán tín hiệu tuần
tự được khai báo trong phát biểu process Nó chỉ đơn thuần mô tả chức năng của
thực thể chứ không mô tả chỉ tiết cho cấu trúc của thực thé
Một phát biểu process là một phát biểu đồng thời có thể thêm vào architecture
Ví dụ hành vi cho thực thể DECODER 2x4 bao gồm:
Giả sử ta đã có một entity DECODER2x4 đã được khai báo, ta mô tả thân kiến trúc của nó theo kiểu hành vi:
Architecture DEC-SEQUENTIAL of DECODER2X4 is Begin
Process (A,B,ENABLE)
Trang 26
-16-Chuong IT: Ngôn ngữ lập trình VHDL
Variable ABAR, BBAR:BIT;
Z(0) <= not (ABAR and BBAR);
Z(2) <=not (A and BBAR);
Z(1) <= not (ABAR and B);
Một phát biểu process có 1 phần khai báo (trước từ begin) và một phần phát
biểu (giữa từ begin và end process) Các phát biểu được đưa vào phân phát biểu là các phát biểu tuần tự và sẽ được thực thi 1 cach tuần tự
Danh sách các tín hiệu trong hoặc sau từ process thiết lập danh sách 1 cách có tuần tự phát biểu process thực thi khi có một sự kiện trên bất kỳ tín hiệu nào trên danh sách xuất hiện
Trong ví dụ trên khi có một sự kiện xảy ra trên tín hiệu A, B hoặc ENABLE thì các phát biểu trong process sẽ thực thi một cách tuần tự
Khai báo biến (bắt đầu bằng từ khoá variable) trước từ begin : ta khai báo 2
biến ABAR và BBAR, biến khác với tín hiệu là nó luôn được gán giá trị ngay tức khắc và toán tử cho phép gán tín hiệu, ký hiệu “ :=” Trong khi đó tín hiệu thường được gán giá trị sau của biểu thức được gán sau khoảng thời gian được trì hoãn delay ( được xác định do người sử dụng hoặc mặc định là khoảng delta)
Trang 27
Biến được khai báo trong process ( hoặc chương trình con) thì chỉ có ảnh hưởng trong phạm vi khai báo mà thôi (khai báo biến cục bộ) Ngoài ra biến có thể khai báo ở bên ngoài lệnh process hoặc chương trình con thì có ảnh hưởng toàn cục và được gọi là biến chung (shared variable)
Chú ý tín hiệu không được khai bao trong process
Các phát biểu gán tín hiệu xuất hiện trong process được gọi là phát biểu gan tin hiệu tuần tự, kể cả phát biểu gán biến ( phát biểu đồng thời), sẽ thực hiện tuần tự độc lập với việc xuất hiện các sự kiện trên mỗi tín hiệu trong biểu thức bên tay phải, khác với việc thực thi của các phát biểu gán tín hiệu đồng thời trong phần
trước
Trong kiến trúc dec-sequential, nếu l sự kiện xuất hiện trên tín hiệu A,B hoặc
ENABLE, thì phát biểu thứ nhất được thực thi , sau đó phát biểu thứ hai mới được
thực thi và cứ thế tiếp tục.Với phát biểu thứ 3 (lệnh ¡f) được điều khiểu bởi giá trị
của tín hiệu ENABLE, nếu ENABLE lên “1” thì 4 phép gán tín hiệu kế tiếp được
thực hiện và gán các giá trị một cách độc lập khi tín hiệu À,B ,ABAR,BBAR thay đổi tín biệu đích sẽ được gán cho chúng từng giá trị sau khoảng delay Nếu ENABLE là “0” thì giá trị “1” được gán cho mọi phan ti output trong day Z Khi thực hiện xong process , process ở trong trạng thái treo và đợi đến khi có sự kiện khác xuất hiện
Có tổn tại phát biểu case hoặc loop trong process , thì ngữ nghĩa và cấu trúc của phát biểu này cũng giống như trong ngôn ngữ cấp cao khác là C hoặc Pascal Có
thể sử dụng phát biểu wait trong process Nó có thể sử dụng để chờ cho một giá trị
thời gian, cho tới khi điểu kiện thành true, hoặc đến khi có một sự kiện xuất hiện trên tín hiệu.Process này không có trong danh sách độ nhạy bởi vì xuất hiện của phat biéu wait trong process (tương đương với một độ nhạy của danh sách độ nhạy ) Đồ là điểu quan trọng để nhớ rằng trong process không bao giờ kết thúc Tất cả các process thực hiện suốt quá trình mô phỏng cho đến khi có trạng thái treo
Trang 28-18-Chương II : Ngôn ngữ lập trình VHDL
Begin
Process(D,CLK) Begin
If CLK =’1’ then
Q<=D End if;
End process;
End LS-DFF-BEH, Process dudc thực hiện khi có 1 sự kiện trên tín hiệu D hoặc CLK Nếu CLK='1' thì giá trị của D được gán cho Q Nếu CLK='0' thì không thực hiện phép gán Trong khi CLK=”1” thì mọi thay đổi trên D đều xuất hiện trên Q, chỉ khi
CLK='0' thì giá trị Q vẫn không đổi
I4 Kiểu hỗn hợp của mô hinh :( mixed style modeling)
Có thể trộn lẫn 3 kiểu trên trong 1 architecture , với architecture này thì chúng ta có thể sử dụng các phát biểu đối tượng hợp phần đó là biểu hiện
structure(compoment instantiation), phat biéu gán tín hiệu đồng thời ( biểu hiện đataflow) và phát biểu process (biểu hiện hành vì)
Ví dụ: kiểu hỗn hợp cho 1 bit FULL-ADDER
Entity FULL-ADDER is Port (A,B , CIN :in BIT; SUM, COUT: out BIT);
-19-
Trang 29Chú ý rằng bản thân của phát biểu processs là 1 phát biểu đồng thời , còn các phát
biểu bên trong được thực thi 1 cách tuần tư
HI.5 Khai báo định dạng (configuration)
Khai báo định dạng là dùng để chọn một trong những thân kiến trúc (mô tả cấu trúc cho một thân kiến trúc ) mà entity đã có và liên kết các thành phần với thực thể bằng cặp “ entity-architecture” hoặc bằng cấu hình “ configuration” tất cả có
trong một thư viện thiết kế
Sau đây là một khai báo cấu hình cho thực thể HALF-ADDER:
Library CMOS-LIB, MY-LIB;
Configuration HA-BINDING of HALF-ADDER is For HA-STRUCTURE
For X1:XOR2
Trang 30
Architecture này gồm 2 component, 2 component bắt buộc phải có
Phát biểu đầu tiên (for XI End for), liên kết giữa đối tượng thành phần cụ thể của nhãn XI tới thực thể được mô tả trong cặp entity-architecture ,( thực thể XOR-GATE va than kiến trúc dataflow và chúng đã có trong thư viện thiết kế CMOS-LIB)
Tương tự với hợp phần cụ thể của nhãn A1 được liên kết với một thực thể đã được định nghĩa bằng cấu hình AND-CONFIG (AND-CONFIG có trong thư viện
MY-LIB)
Không có hành vi hoặc ngữ nghĩa mô phỏng kết hợp với khai báo configuration
Nó đơn thuần mối liên kết được dùng để liên kết các hợp phân với 1 entity Khi
Vi du : architecture DEC-DATDFLOW c6 thể chọn thực thể DECONER2x4 để
khai báo cấu hình :
Configuration DEC-CONFIG of DECONDER 2x4 is For DEC-DATAFLOW
Trang 31Chương lÏ : Ngôn ngữ lập trình VHDL
Khai báo cấu hình DEC-CONFIG đó được chọn thân cấu trúc DEC- DATAFLOW cho thực thể Cấu hình DEC-CONFIG được thay trong entity
DECODER2x4, nó có thể được mô phỏng tại thời diém hién tai
MI.6 Khai Báo Khối (paskage):
Một khai báo khối được đùng để lưu trữ những khai báo chung
Ví dụ : component , các type, các procedure, và các function Các khai báo này
có thể đưa váo đơn vị thiết kế khác bằng cách sử dụng mệnh đề USE
Sau đây là ví dụ cho khai báo pakage:
Function INT2BIT-VEC (INT-VALUE : INTEGER)
Gia sử pakage này đã được biên dịch vào thư viện thiết kế tên là DESIGN-LIB, các mệnh để sau kết nối tới khai báo entity
Library DESIGN-LIB;
Use DESIGN-LIB.EXAMBLE-PACK.aH;
Trang 32
Architecture RX-STRUCTURE of RX is
Hai mệnh để Use dùng cho 2 khai báo component là: D-FLIP-FLOP và hằng PIN2PIN-DELAY có thể được nhìn thấy trong thân kiến trúc
Tương tự trong khi chọn khai báo từng phần trong pakage bằng các tên chọn
Ví dụ :
Library DESIGN-LIB;
Package ANOTHER-PACKAGE is Function POCKET-MONEY
la deferrend constant Gia trị của constant thay đối theo pakage tương ứng
-23-
Trang 33
HI.7 Thân khối (pakage body):
Thân khối được dùng để chứa những định nghĩa của function và procedure,
chúng được khai báo trong pakage tương ứng và khai báo thời hằng trì hoãn xuất
hiện trong khai báo pakage Thân khối luôn gắn liễn với khai báo khối , 1 khai báo
khối duy nhất chỉ có một thân khối liên kết với nó Điễu này khác với sự liên kết
architecture và entity vì nhiễu architecture có thể liên kết với 1 khai báo entity
Ngoài ra thân khối có thể chứa các khai báo khác
Đây là thân khối của khai báo pakage EXAMBLE-PACK cho ví dụ trước :
Pakage body EXAMBLE-PACK is Function INT2BIT-VEC (INT-VALUE:INTEGER) Return BIT-VECTOR is
Begin
Behavior of function described here
End INT2BIT-VEC;
End EXAMBLE-PACK;
Tên của pakage body phải trùng với tên của khai báo pakage body mà nó liên
kết Đó là điểu quan trọng, chú ý thân khối chỉ không cần thiết nếu như trong khai
báo pakage tương ứng không có các function, procedure và thời hằng trì hoãn Sau
đây là pakage body liên kết với gói ANOTHER-PACK trong phần trước:
Pakage body ANOTHER-PACK 1s
Constant TOTAL-ALU:INTEGER:=10;
Function POCKET-MONEY (MONTH:DESIGN-LIB.EXAMBLE-PACK.SUMER) Reture INTEGER is
Trang 34
When JƯNISEP=> RETURN 6;
When others =>return 2;
End case;
End POCKET-MONEY;
End ANOTHER-PACK;
HI.§ Kiểu phân tích (Analysis):
Để một thực thể được mô tả trong VHDL nó phải được xác nhận trong VHDL
bằng cách phân tích và mô phỏng chúng Bước đầu tiên để có quá trình xác nhận là
sự phân tích
Phân tích tạo 1 file bao gồm 1 hoặc nhiều đơn vị thiết kế và chúng được biên
dịch vào trong form trung gian của ngôn ngữ cấp thấp và cấp cao Hình thức mô tả
quá trình dịch trung gian này không định nghĩa trong ngôn ngữ
Thư viện thiết kế với tên gọi là STD được định nghĩa trước của ngôn ngữ trong
môi trường VHDL Thư viện này có 2 pakage STANDARD và TEXTIO Pakage STANDARD gôm những khai báo cho tất cả kiểu định nghĩa trước của ngôn ngữ (BIT,TIME,INTEGER ) ,pakage TEXTIO bao gồm các procedure và các functon
cần thiết để đọc và viết trong quá trình hoạt động
Ở đây còn có IEEE pakage chuẩn , gọi STD-LOGIC-1164, pakage nay dOinh nghĩa 1 nine-value của kiểu logic, gọi là STD-ULOGIC và các kiểu con của nó điều khiển các function và các tiện ích khác Tiêu chuẩn này gọi là IEEE.STD- 1164.1993
111.9 M6 phong ( simulation ):
Mô tả mô hình thành công là đưa kết quả biên địch vào trong một hoặc nhiều
thư viện thiết kế , bước kế tiếp của quá trình thực hiện là mô phỏng
Sự mô phỏng có thể thực hiện 1 trong 2 mô hình sau:
e Mot khai bdo entity va architecture body
e MéO6t configuration
Elaboration phase: trong phan nay phan cap entity 1a m6 rong va lién kết ,các
component liên kết đến các entity trong thư viện và thực thể mức cao sẽ tạo nên mạng hành vi để đọc cho quá trình mô phỏng Ngoài ra còn cung cấp vùng lưu trữ cho các tín hiệu , các biến và hằng trong đơn vị thiết kế Gía trị ban đầu gán cho
Trang 36-26-Chương III : Các phần tử ngôn ngữ cơ ban
——
CHƯƠNG IIH:CÁC PHẦN TỬ NGÔN NGỮ CƠ BẢN
Cũng như các ngôn ngữ lập trình cấp cao khác như: C, PASCAL, VISUAL
BASIC HGDL cũng có tử cơ bản của ngôn ngữ cẩu nó Những phần tử cơ bản này
bao gồm các đối tượng dữ liệu , các phân tử này cũng mô tả những giá trị hằng số,
các toán tử của đối tượng data
Mỗi đối tượng dữ liệu phụ thuộc vào kiểu đặc trưng Những cú pháp và các loại
data khác nhau do những kiểu đặc trưng này được người sử dụng qui định Phần
cũng mô tả phương pháp làm thế nào để kết hợp kiểu với đối tượng bằng cách sử
dụng những khai báo đối tượng
Một việc rất quan trọng là hiểu được những lưu ý về kiểu dữ liêu và đối tượng
Vì VHDL là ngôn ngữ kiểm tra kiểu chặt chẽ Do đó những toán tử và các phép
gán hợp lệ trong ngôn ngữ khi kiểu của toán hạng và kiểu kết quả tính toán trả về
phải phù hợp với những qui tắc đã xác định trướ, nó không cho phép đối tượng và
literals của những kiểu khác nhau được trôn lẫn tự do trong biểu thức
I DANH HIỆU (identifiers):
Có hai loại danh hiệu trong VHDL gỗm : danh hiệu cơ bản và danh hiệu mở
rong
Một danh hiệu cơ bản trong VHDL bao gồm những phối hợp của một hoặc nhiều kí
tự Những ký tự cho phép là một ký tự hoa (A Z), một ký tự thường( a z), một số
digit (0 9) hoặc ký tự gạch đưới (-) Ký tự đầu tiên trong một danh hiệu cơ bản
phải là một ký tự và ký tự cuối cùng có thể không là ký tự gạch dưới Chữ hoa và
chữ thường được xem như đồng nhất khi sử dụng trong một danh hiệu cơ bản
Ví dụ : Count, COUNT, CouNT tất cả đều được xem như nhau trong danh hiệu
cơ bản Tương tự, hai ký tự gạch dưới không thể xuất hiện liên tiếp nhau
Ví dụ : cho identifiers cơ bản:
DRIVE-BUS Selectsignal RAM-ADDRESS SET-CK-HIGH CONST32-59 r2d2
Một danh hiệu mở rộng là phối hợp của những ký tự được viết giữa hai dấu (//),
có thể sử dụng các ký tự bất kỳ bao gồm những ký tự như:,!, ®, “, and $ Trong một danh hiệu mở rộng , ký tự hoa và ký tự thường được phân biệt là khác nhau rõ ràng
Lời chú giải phải được đặt trước bằng hai dấu (-) liên tiếp nhau, lời chú thích thường đặt ở cuối dòng hoặc đặt tại một vị tr1i bất kỳ
-27-
Trang 37
Ngoài ra VHDL cũng dành ra một số từ được khai báo trước dùng để làm các từ
khóa cho ngôn ngữ ( process, library, type )
Il ĐỐI TƯỢNG DỮ LIỆU (data objects):
Một đối tượng dữ liệu giữ một giá trị của một dữ liệu cụ thể Nó được tao ra bởi
ý nghĩa của một khai báo đối tượng
Ví dụ như:
Variable COUNT:INTEGER;
Kết quả này trong phần tạo ra của một đối tượng đữ liệu gọi là COUNT, nó có
thể giữ giá trị nguyên Đối tượng COUNT cũng được khai báo là lớp biến
Mỗi một đối tượng dữ liệu phụ thuộc vào trong một bốn lớp sau:
H.1 Constant (hing):
Một đối tượng của lớp constant c6 thé giữ một giá trị duy nhất của kiểu đã cho
Gía trị này được gán cho một constant trước khi bắt đầu và giá trị này không thể
thay đổi trong suốt quá trình mô phỏng Để khai báo một constant trong một
subprogram, giá trị sẽ được gán cho constant 6 mỗi thời điểm chương trình con
được gọi
H2 Variable ( biến ) :
Một đối tượng của lớp constant có thể giữ một giá trị duy nhất của kiểu đã cho
Tuy nhiên trong trường hợp này giá trị khác nhau có thể được gán vào biến tại
những thời điểm khác nhau
H.3 Signal ( tín hiệu ):
Một lớp đối tượng phụ thuộc vào lớp tín hiệu giữ một loạt các giá trị , những giá trị này bao gồm giá trị hiện hành của tín hiệu và một tập hôp các giá trị tương lai có
thể có.Những giá trị tương lai có thể được gán cho tín hiệu bằng cách sử dụng một
phép gán tín hiệu Tín hiệu được dùng cho việc truyển các giá trị có thể có trong các hợp phần (components) théng qua cac céng (port)
IL4 File (tap tin):
Một đối tượng tuỳ thuộc vào lớp tap tin Bao gdm những giá trị liên tiếp nhau
Những giá trị có thể được đặt hoặc viết vào file sử dụng cho những chương trình con đọc và những chương trình con viết tương ứng
-28-
Trang 38
Tín hiệu có thể xem như là dây dẫn trong mạch điện , trong khi các biến và
hằng thì tương tự như các biến và hằng trong các ngôn ngữ khác : C, PASCAL, tín hiệu được dùng như một mô hình dây dẫn và các flip-flop, trong khi biến và hằng
được dùng như là mô hình hành vi của mạch Một tập tin được dùng như là một tập tin trong môi trường chủ
Biến hằng thứ hai được khai báo là BUS-WIDTH, với kiểu số nguyên, có giá trị
là 8
11.4.2 Khai báo biến số:
Cú pháp khai báo cho biến số:
Variable variable-name: type-name [:=value] ; Thí dụ khai báo biến như sau:
Variable CTRL-STATUS:BIT-VECTOR (10 downto 0);
Variable SUM:INTEGER range 0 to 100 :=10;
Khai báo đầu tiên chỉ rõ là một đối tượng biến CTRL-STATUS là một dãy có
11 phần tử, với mỗi phần tử trong dãy có kiểu 1a BIT
Trong khai báo thứ hai giá trị đầu thể hiện được gán vào biến SUM Nều
không có giá trị đầu rõ ràng cho mọi biến Gía trị mặt định sẽ được sử dụng như
một giá trị khởi đầu
Gia trị mặt định này la T’LEFT Khi T là đối tượng được khai báo và “LEFT là thuộc tính được xác định trước của kiểu được đặt ra cho giá trị cực trái trong tẬp hợp giá trị phụ thuộc có kiểu T
Trang 39
11.4.3 Khai Bao Tin Hiéu:
Cú pháp khai báo cho tín hiệu:
Signal signal-name: type-name [:=value];
Sau đây là những ví dụ khai báo tín hiệu:
Signal CLOCK: BIT;
Signal DATA-BUS :BIT-VECTOR(0 to 7);
Signal GATE-DELAY : TIME:=10ns, Khai báo tín hiệu đầy tiên là khai báo tín hiệu CLOCK của kiểu BIT và lấy giá
11.4.4 Khai bao file:
Một file được khai báo sử dụng khai báo filevới cú pháp khai báo file là:
File file-name : file-type-name [[open mode] is string-expression ];
Chuỗi biểu thức được giải thích rõ bởi môi trường chủ là tên vật lý của file
Open mode chỉ ra cho file ở chế độ mở, đóng , hay đọc
Thí dụ:
File STIMULUS : TEXT open READ-MODE is “ usr/home/jiames/add.vec ”; IL4.5 Các cách khác để khai báo đối tượng :
Không có đối tượng nào trong một mô tả VHDL được tạo ra rõ ràng để sử dụng
cho khai báo đối tượng , các đối tượng khác được khai báo bằng một trong những
cách sau:
1 Những cổng thực thể, tất cả cổng là đối tượng tín hiệu
2 Generic của thực thể , chúng là đối tượng không đổi
3 Thông số hình thức của hàm và thử tục thông số hàm là hằng số hoặc tín hiệu „ trong khi thông số thủ tục có thể phụ thuộc vào bất kỳ đối tượng nào
Trang 40
Các khai báo trên là các khai báo đối tượng rõ ràng Ngoài ra ta còn có loại
khai báo đối tượng ẩn
Thí dụ khai báo ẩn trong một phát biểu lặp for:
For COUNT in 1 to 10 loop SUM:=SUM+COUNT;
End loop;
Trong phát biểu lặp for này, COUNT là một hằng được khai báo ẩn kiểu
COUNT được tạo ra khi vòng lặp đầu tiên và không còn tổn tại khi thoát khỏi vòng lặp
Il CÁC LOẠI DỮ LIỆU (Data type):
Mỗi đối tượng dữ liệu trong VHDL có thể giữ một giá trị phụ thuộc vào tập giá trị Những giá trị này được xác định bởi việc sử dụng một khai báo kiểu Một kiểu
là một tên kết hợp với một tập hợp giá trị và một tập tác vụ Những kiểu nào đó và những tác vụ được trình bày trong đối tượng của kiểu đó thì được định nghĩa trước trong ngôn ngữ
trong phạm vi khai báo được cung cấp bởi hệ thống VHDL Vùng tối thiểu phải được cung cấp là —(2 -1) đến (2-1)
Các tác vụ thường xuyên sử dụng là '+` cho phép cộng, “-“ cho phép trừ, “* cho phép nhân, “/ cho phép chia, và những toán tử được định nghĩa trước là : and,
or, not
Boolean cũng là loãi được định nghĩa trước : có hai giá trị ‘true’ va ‘false’
Khai báo cho 1 kiểu định nghĩa trước được khai báo trong gói chuẩn
STANDAR Những toán tử cho những kiểu này được định nghĩa trước trong ngôn ngữ
Ngoài ra ngôn ngữ VHDL cũng cung cấp cho ta những loại đối tượng data mới bằng cách dùng khai báo kiểu và cũng như định nghĩa một tập các toán tử trong một loại mới này bằng cách viết hàm và trả về giá trị của loại mới đó Các loại
đối tượng thường được phân thành 4 loại chính
1 Kiểu vô hướng (scalar type) : những giá trị phụ thuộc vào những kiểu
xuất hiện theo thứ tự liên tục