Tuy nhiên vì là một ngôn ngữ mô tả phần cứng nên nó đòi hỏi người thiết kế cần có sự hiểu biết nhất định về kỹ thuật số, VHDL có thể được ví như một ngôn ngữ thực hành, sử dụng ngôn ngữ
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP.HCM
KHOA ĐIỆN - ĐIỆN TỬ
NGANH DIEN TU - VIEN THONG
LUAN VAN TOT NGHIEP
DE TAI:
ỨNG DỤNG VHDL TRONG THIẾT KẾ SỐ
THIET KE VI MACH (IC) DUNG DIEU KHIỂN CUA GARAGE XE
GVHD : Ks TRUGNG NGOC BAO
SVTH : LÊ PHƯỚC THỌ MSSV : 02DHDT192 LỚP :02DT1
Trang 2Eh Np EER xà in Sa RES AY A xà 0c AES cà a TS Ao ER Aes i aie i A a Ne AO eR i he ee i ch Ee
" SII, -LÁo li & sa, 56 -hạyg địm, chai Í8u, ưấc
Trang 4
LỜI CẢM ƠN !
Để hoàn thành luận văn tốt nghiệp này, thầy hướng
dẫn, các thầy cô trong phòng thí nghiệm về tất cả các bạn đã
giúp đổ em rất nhiều, đặc biệt là thầy hướng dẫn
Tôi xin chân thành ghỉ nhớ ơn của Trương Ngọc
Bảo,Thầy đã rất nhiệt tình giúp đỡ em trong suốt quá
trình nghiền cứu và làm luận văn Em xin cắm ơn các
thầy cô trực các phòng thí nghiệm, đã tạo mọi điều kiện
cho em trong những buổi cân chỉnh mạch Tôi xin cắm
ơn tất cả các bạn cách này cách khác đã giúp đỡ tôi, góp
phần làm cho đề tài tôi được phong phú hơn
Một lần nữa em xin chân thành cám ơn Trương
Ngọc Bảo, các Thầy cô và toàn thể các bạn
Lê Phước Thọ
Trang 5BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐHDL KỸ THUẬT CÔNG NGHỆ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN - ĐIỆN TỬ - 0O -
k#**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)
Họ và tên SV : Lê Phước Thọ MSSV :
1 Đầu đề đồ án tốt nghiệp:
ỨNG DỤNG VHDL TRONG THIẾT KÉ SÓ THIẾT KÉẺ VI MẠCH (IC) DÙNG ĐIÊU KHIỂN CỬA GARAGE XE
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ề GAL, PAL và FPGA
- Tìm hiểu phần mềm MaxPlusII lập trình cho vi mach 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, minh 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
4 Ngày hoàn thành đồán : 30/01/2007
1/ Ks Trương Ngọc Bảo l/ Toàn bộ
Nội dung và yêu cầu của ĐATN đã được thông qua
Ngàyvh tháng AQ nim 2006
Trang 6LỜI NÓI ĐẦU
Các Ngôn ngữ lập trình hiện nay như : Visual Basic, C++, Pascal đã trở thành
những ngôn ngữ lập trình chủ yếu trong máy vi tính, tính linh hoạt, mềm dẻo và
gần với ngôn ngữ tự nhiên của con người đã cho phép người lập trình ngày càng tạo
ra nhiều sản phẩm trên phần mềm ứng dụng Tuy nhiên, các ngôn ngữ trên chủ yếu
ứng dụng cho máy vi tính Đối với ngành điện tử, các ngôn ngữ trên đôi khi không
thật sự hiệu quả, do đặc thù xây dựng các phần cứng, nên một ngôn ngữ lập trình
dùng cho phần cứng sẽ thật sự hiệu quả hơn
VHDL là một ngôn ngữ mô tả phần cứng rất mạnh, hỗ trợ các vi mạch lập trình
cho các họ như CPLDs, FPGAs 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 Tuy nhiên vì là một ngôn ngữ
mô tả phần cứng nên nó đòi hỏi người thiết kế cần có sự hiểu biết nhất định về kỹ
thuật số, VHDL có thể được ví như một ngôn ngữ thực hành, sử dụng ngôn ngữ này
đòi hỏi người thiết kế phải đọc đi đọc lại rất nhiễu lần mới có thể hiểu, nhưng khi
đã nắm vững các cú pháp ngôn ngữ này thì nó cho phép người thiết kế biết những
khả năng mô tả phần cứng tuyệt vời
Ngôn ngữ mô tả phần cứng VHDL và các vi mạch có khả năng lập trình với mật
độ tích hợp cổng logic bên trong rất cao như các họ IC theo công nghệ CPLDs,
FPGAs cho phép giải quyết những bài toán lớn đã xuất hiện trên thị trường Việt
Nam nhiều năm nay nhưng chúng vẫn chưa được những người thiết kế các vi mạch
khai thác, điều này một phần là do đây là các vi mạch tương đối mới, thêm vào đó
là do ngôn ngữ VHDL vẫn chưa phổ biến rộng rãi Chính vì thế đã làm cho việc
vận dụng khả năng tuyệt vời của ngôn ngữ VHDL vào trong các thiết kế số vẫn còn
hạn chế
Chính vì những yếu tố trên nên em quyết định tìm hiểu và chọn để tài “Ứng
dụng VHDL trong thiết kế số, thiết kế vi mạch (IC) dùng điều khiển cửa garage
xe” để có cơ hội tiếp cận kỹ thuật thiết kế mới
Trang 7TÓM TẮT NỘI DUNG CỦA ĐỀ TÀI
Dé tài đã khảo sát cấu trúc và chức năng của vi mạch số lập trình FPGA, sử
dụng phần mềm MaxPluxII cuả ALTERA lập trình cho vi mạch FPGA, từ đó ứng
dụng VHDLằ trong thiết kế vi mạch (IC) điều khiển cửa garage xe
Đề tài được chia làm 2 phần:
Phan 2: THIET KE VA MO PHONG
Viết chương trình VHDL thiết kế (IC) diéu khién Garage xe
Mô phỏng trên phần mềm MAXPLUS II
Trang 8MỤC LỤC
Lời nói đầu
Tóm tắt nội dung của để tài
PHẨNI: CƠ SỞ LÝ THUYẾT
CHUONG I: TONG QUAN VE PAL, GAL, FPGA ———
L1 Logic lập trình được (PAL) . c5-
II Tổng quan về FPGA .S22Stt 2222225 EEcecee
CHUONG II: TONG QUAN VE VHDL
I Cac dac diém chinh cia ng6n ngif VHDL eeccececccececcceeees
L1 Đặc tính tổng quát 2c s22 xe crec
L2 Hỗ trợ phân cấp thiết kế 72s secscnceccscc
L4 Có lệnh tuần tự - -QSc SH S2Tnen ng ngan,
L5 Thiết kế tương thích chung 2+2 csvzcz c5:
L6 Khai báo kiểu và cách đùng c.ccccec
L8 Điều khiển định thời - 2-22scccccccccreree
L9 Đặc tả cấu trÚc + s- chen nghe
II Cac cong cu phan mém AG trd eeeeeeesceesseceeseceseeeseseeseeeees
CHƯƠNG III: CẤU TẠO CUA MOAT CHUONG TRINH VHDL
I, TẨY Đà HH HH HT HT HH TH KHE KT nàng
I ATChIt€CEUC€ QC HH n1 HH TH HH TH HH ờy
IL1 Gán tín hiệu đồng thời - 22 Ss St nen sec:
H2 Thiết kế cấu trÚc - + + sec Stvx 2323 cEsEcEcsseceea
I3 Kiến trúc tuẫn tự
HH Phát biểu Process Q2 SH
IH.1 Danh sách cảm nhận -Q St TH nen re
IH.2 Vùng khai báo Process Sc cv
HI.3 Vùng phát biểu Process -.s ccccss se căc
IV Các phát biểu tuần tự trong Process sccccccscccccez
IV.I Phát biểu [F cu re
IV.2 Phát biểu Case s son tre sec,
IV.3 Phát biểu Loop T on non ngoc
Trang 9
IV.3.2 Vòng lặp For -S-
IV.4 Phátbiểu wait
IV.4.1 Walton signal <S2
V PaCKaB€ eeeccecsecssecseccseeesessseeessessccssessscssecssessecsacees
V.1 Khai báo góI - c2 SH,
CHUONG IV: DOI TUGNG CUA VHDL
CHƯƠNG V:_ CÁC KIỂU DỮ LIỆU c-c-s ccc
L Kiểu vô hướng -L.k tt TT 1112111211111 xe
L1 Kiểu nguyên Sàn TH tre
I2 Kiểu thực
I3 Kiểulệtkê
L4 Kiểu vật lý - - cs s HH HT 2211 treo
H Kiểu kếthợp St HH nen TH
II Kiểu mắng ghi G5 St SE SE E112 cEcrcey
IV KiỂucon Ăn SH HH ra
CHƯƠNG VI: CHƯƠNG TRÌNH CON -c-s<cccsee
Ill Khai bao chương 000)0809: 0 4
CHƯƠNG VII: PHẪN MỀM MAX+PLUS lI c-cccccce
L Bắt đầu với Project mới ¿+ s2 tt 21x xe re
H Mở một project đang tỔn tại cv serxrseereee
I Mở bắt đầu từ một file nguồn VHDL - cccsczscscc
IV Nhap source VHDL vào trong project -s<s<cs+
V Tạo mới một file source VHDL mới cho Project
VI Tổng hợp cho chức năng mô phỏng 2: 2z 22222
VIH Thiết lập tín hiệu ngõ vào - S22 212x211 cret
IX Thiết lập và xem các tầm mô phỏng thời gian
Trang 10
X Gán giá trị cho các tín hiệu ngõ vào - cào 71
ILI Giải thích thiết kế 2252 css¿ 76
IL2 Sơ đồ khối - + «sec rcrsez 77
I3 Mô tả VHDIL 52-22222225 22z2cze2 T1
H4 Kết quả m6 phong .- 82
J 72M ':°ô 0e a a4ă 83
CHƯƠNG II: BỘ ĐIỀU KHIỂN CỔNG CHẮN BÃI DAU XE 84
L Mô hình và sơ đổ khối - + 5 cà k kg ngay 84
Ll Mô hình 2-22 Et22E52 22522552 EEczse2 84 L2 Sơ đỗ khối -2 2-22 222n SE 2x2 csrsrse2 84
L3 Lưu đồ ASM csccececckeesei 85
I — Giải thích thiGt KE oes cecceccccccccccscssccseessecssessecssesuvessesssecseessseen 86
IH — Chương trình VHDIL o G5555 S5 5 9956068056555 88 87
KẾTT LUẬN 2 ©C2e+E2s€ESE+sd€tEEZeeEESssevEEvessvtvvzseerrcse 97
TÀI LIỆU THAM KHẢO 2° < << s9SSSsE se vsese eesessesssse 98
Trang 11Phan II Thiết kế và mô phỏng
PHAN II:
THIET KE VA MO PHONG
Trang 74
Trang 12Chương I Tổng quan về PAL, GAL và FPGA
CHUONG I: TONG QUAN VE PAL, GAL VA FPGA
I TONG QUAN VE PAL VA GAL
I.1 Logic dãy lập trình được (PAL-Programmable Array Logic)
PAL là trường hợp đặc biệt của PLA mà trong đó dãy AND lập trình
được và dãy OR là cố định Cấu trúc cơ bản của PAL thì giống như PLA ở hình
1-18 Bởi vì chỉ có đãy AND là lập trình được, do đó PAL ít mắc tiền hơn các
PLA tổng quát hơn, và dễ lập trình PAL hơn Vì lý do này, các nhà thiết kế
logic thường sử dụng các PAL để thay thế các cổng logic khi phải cài đặt nhiều
Trang 13Chương I Tổng quan về PAL, GAL va FPGA
Phần lớn các nhà sản xuất PAL có chỉ ra thiết kế nội của PAL ở ký hiệu tên
của nó Thí dụ: PAL16L8B4 có 16 là số ngõ vào; L chỉ cấu trúc ngõ ra (tích cực
thấp); 8 là số ngõ ra; B là tốc độ và 4 chỉ tiêu tán công suất
+ Với cấu trúc ra, thí dụ như :
H: (High) chỉ ngõ ra tích cực cao (acitve high)
L: (Low) chỉ ngõ ra tích cực thấp (active low)
C : (Complement) chỉ ngõ ra có cả 2 đường tích cực cao và thấp
+ Tốc độ : A = tốc độ cao; B = tốc độ rất cao; và D = tốc độ cực cao
+ Tiêu tán công suất: để trống chỉ day đủ; 2 chỉ 1/2; 4 chỉ 1/4
OE OE
Registered Active Low Registered Active High
Combinatorial I/O Active Low Combinatorial /O Active High
Trang 14Chương I Tổng quan về PAL, GAL và FPGA
L2 GAL:
GAL, 16V8 có hình dạng 20 chân ,vi mạch này có 8 tổ hợp ngõ ra, mỗi
ngõ ra được đảo với 7 tích số ngõ vào, 6 trong 8 ngõ ra được hồi tiếp với mảng
AND.Cho phép các chân này được sử dụng với chức năng I/0.Do GAL16V8 có
ngõ ra tác động mức thấp nên có thể kết hợp với các IC khác cùng một mức tác
động Các vi mạch GAL đều hổ trợ các thanh ghi “Preload” điều này có ích cho
việc kiểm tra vi mạch
Trang 4
Trang 15
DIP & PLCC Package Pinouts
ES
0LRIE
SOR 2061
16
tiêu
OLMC
SOR.2023 1-2135
DLME
XOEF 4 1-2123
13
nag
OLMC
sR es ẨI;1.2127
Sơ đồ logic GAL 16V8
Trang 5
Trang 16Chương Ï Tổng quan về PAL, GAL và FPGA
II TONG QUAN FPGA:
FPGA 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ách chung Giống như PLD các kết nối giữa các phần tử là có thể lập
trình được
FPGA được giới thiệu đầu tiên bởi công ty Xilinx vào năm 1985, kể từ
đó có nhiều loại FPGA đã được nhiễu công ty phát triển: Actel, Altera,
Crosspoint, Solutions
Từ mô hình lý thuyết của một FPGA tas 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 (I/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 day 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
Để tính toán mức độ tích hợp, người ta thường dùng đơn vị cổng tương
đương (nghĩa là cổng NAND 2 ngõ vào), khi đó CPLD cứ mỗi macrosell biểu
diễn 20 cổng tương đương và một PAL tiêu biểu với 8 macrosell có thể dùng để
thực hiện mạch cần 160 cổng Với CPLD có 1000 macrosell có thể cài đặt các
mạch lên đến khoảng 20.000 cổng tương đương
Theo tiêu chuẩn hiện đại thì một mạch logic với 20.000 cổng thì không
lớn Để cài đặt mạch lớn hơn người ta dùng một loại chip khác có dung lượng
logic lớn hơn, đó là FPGA Họ FPGA được Signetic giới thiệu vào năm 1977
được sử dụng để thay thế cho những cổng nhiều ngõ vào tiêu chuẩn, cấu trúc
của nó bao gồm một mảng AND lập trình, với lập trình cực tính ở ngõ ra Chỉ
với một cổng AND có thể biến đổi thành cổng NAND hay cổng OR Mỗi cổng
AND trong FPGA có thể biến đổi thành các cổng logic khác nhau
FPGA 1a chip c6 dung lượng khá 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
(logic block) để cài đặt các hàm mong muốn
FPGA có thể được dùng để cài đặt các cổng logic có hơn vài trăm ngàn
cổng tương đương
Trang 6
Trang 17Chương II Tổng quan về VHDL
CHUONG IL: TONG QUAN VE VHDL
VHDL (VHSIC Hardware Description Language) là một ngôn ngữ chuẩn
trong công nghiệp, được sử dụng để mô tả phần cứng từ mức trừu tượng tới mức
cụ thể VHDL đã nhanh chóng trở thành một ngôn ngữ được sử dụng rộng rãi
trên thế giới cho những thiết kế có độ phức tạp trung bình Các thiết kế sử dụng
VHDL được hỗ trợ bởi máy tính, FPGA, các tiêu chuẩn trên VHDL được hỗ trợ bởi các công cụ của nó, các công cụ này bao gồm: công cụ mô phỏng, tổng hợp, định đường đi
VHDL là một nhánh của chương trình “ Very High Speed Integrated Circuit( VHSIC) ”, được phát triển bởi Department of Defense vào cuối thập niên 70, đầu thập niên 80 Mục tiêu của chương trình VHSTIC là tạo ra những mạch điện được tích hợp thông dụng mới Những người tham gia vào chương trình này muốn đẩy mạnh hơn nữa việc các giới hạn của công nghệ trong mỗi
giai đoạn thiết kế và sản xuất ra các vi mạch tích hợp
Chương trình đã đạt được những thành công đáng ngạc nhiên, nhưng trong
quá trình phát triển những mạch điện có độ phức tạp lớn, người thiết kế căn cứ
vào những công cụ đã được sử dụng để tạo ra những thiết kế lớn thì không có đầy đủ, các công cụ hỗ trợ cho người thiết hầu hết ở mức cổng Tạo ra một thiết
kế sử dụng hàng trăm ngàn cổng mà sử dụng mức cổng thì that sự là một nhiệm
vụ cực kỳ khó khăn nếu không muốn nói là không thể Chính vì vậy một
phương pháp mô tả mới đã được ra đời, đó là VHDL Ban đầu VHDL được thiết
kế như một ngôn ngữ dùng để cung cấp các tài liệu và mô phỏng Sau đó VHDL
đã bao gồm các công cụ tổng hợp để mô tả các thiết kế ở mức thanh ghi (
Register Transfer Level)
Vào năm 1981, một ngôn ngữ mô tả phần cứng đã được đề nghị và được gol
la VHSIC Hardware Description Language va ngày nay chúng ta gọi là VHDL
Mục đích của ngôn ngữ mới này bao gồm 2 phần: Đầu tiên người thiết kế muốn
có một ngôn ngữ giúp họ có thể vận dụng để mô tả các mạch điện phức tạp, kế
tiếp họ muốn ngôn ngữ đó trở thành một chuẩn để tất cả mọi người là việc
trong chương trình VHSIC có thể phân phối các thiết kế của họ tới những người khác trong một định dạng chuẩn Từ những chương trình con có thể sắp xếp để
tạo thành một chương trình chính với một định dạng chuẩn duy nhất
Trang 7
Trang 18
Vào năm 1986, VHDL đã để ra một chuẩn gọi là IEEE, chuẩn này đã qua
một số lần thay đổi, sửa chữa và đã được công nhận là chuẩn IEEE 1076 vào
thang 12 nam 1987
I CAC ĐẶC ĐIỂM CHÍNH CỦA NGON NGU VHDL
VHDL có thể được sử dụng để lập tài liệu thiết kế, thiết kế mức độ cao,
mô phỏng, tổng hợp và kiểm tra phần cứng, nó cho phép mô tả phần cứng từ
mức hệ thống tới mức cổng Hỗ trợ tính đồng thời, nghĩa là các hợp phần từ nhỏ
đến lớn hoạt động tại mọi thời điểm
L2 Hỗ trợ phân cấp thiết kế:
Khi thiết kế bằng VHDL người thiết kế có thể phân bài toán lớn thành
những bài toán nhỏ hơn sao cho có thể giải quyết và quản lý dễ dàng Đây là
đặc tính thiết yếu của ngôn ngữ phần cứng đa cấp, thiết kế chứa một mô tả giao
diện và một số phần độc lập để mô tả hoạt động Hoạt động của hệ thống có thể
được đặc tả dựa trên cấu trúc của của những hợp phần nhỏ hơn của chúng, đặc
tả cấu trúc có thể thực hiện ở tất cả các cấp thiết kế
Ngôn ngữ VHDL cung cấp cơ chế để truy cập tới nhiều thư viện khác nhau, thư
viện không những chỉ chứa đặc tả giao diện thiết kế, mà còn chứa một số đặc tả
hoạt động của hệ thống, các đặc tả và các mẫu có thể dựa vào thư viện để sau
khi dịch bởi chương trình dịch Với đặc điểm này người thiết kế có thể tạo ra
những thư viên riêng có chứa các thành phần cần cho những thiết kế sau này
mà không cần phải thiết kế lại, điều này cho phép người thiết kế rút ngắn thời
gian thiết kế và quá trình thiết kế sẽ trở nên đơn giản hơn rất nhiều
L4 — Có lệnh tuần tự:
Khi người thiết kế phân chia hệ thống thành những hợp phần đồng thời
hay những phần con, tiếp đó người thiết kế có thể mô tả chi tiết hoạt động bên
trong bằng những cấu trúc ngôn ngữ lập trình tuân tự như: case, if- then — else,
loop các lệnh tuần tự cung cấp phương pháp đơn giản để tạo ra các hợp phần
phần cứng dựa trên chức năng của chúng Với các lệnh tuần tự người thiết kế có
thể mô tả hệ thống một cách dễ dàng và linh hoạt, ngoài ra còn giúp cho những
người làm việc chung trong một nhóm có thể dễ dàng hiểu được ý tưởng thiết
kế của nhau để có sự phối hợp tốt hơn
Trang 8
Trang 19
L5 Thiết kế tương thích chung:
Để thiết kế tổng quát, ngôn ngữ VHDL cho phép người thiết kế đặt cấu hình mô tả hợp phần có thông số chung trong thiết kế, mô tả tương thích chung
có thể thay đổi kích thước, đặc tính vật lý, định thời , đặc tính tải, và môi trường hoạt động của thiết kế
L6 Khai báo kiểu và cách dùng:
Ngôn ngữ VHDL cho phép mô tổ các biến số ở các kiểu như: bịt, boolean, integer, floating point, kiểu liệt kê, kiểu dãy, bản ghi, ngoài ra còn hỗ
trợ các kiểu do người thiết kế định nghĩa, VHDL cũng cho phép người thiết kế
định nghiã các loại toán tử cho riêng mình để phục vụ cho quá trình thiết kế linh hoạt hơn
VHDL cho phép sử dụng các hàm, thủ tục, chương trình con có thể sử dụng để biến đổi kiểu, định nghĩa đơn vị luận lý, định nghĩa lại các toán tử, định
nghĩa toán tử mới, với đặc điểm này ngôn ngữ VHDL sẽ trợ giúp cho người
thiết kế trong việc linh hoạt các thiết kế của mình
I8 Điều khiển định thời:
Một đặc điểm đặc biệt của ngôn ngữ VHDL, là cho phép đặc tả định thời
ở tất cả các cấp, nó cho phép người thiết kế đặt giá trị của tín hiệu với thời gian
giữ chậm, định nghĩa tín hiệu đồng bộ, đặt độ rộng xung, các ràng buộc thời
gian khác người thiết kế có thể căn cứ vào đặc điểm này để định các giá trị
tín hiệu sao cho phù hợp với các thiết kế cho phần cứng
Trang 20
Il CAC CONG CU PHAN MEM HO TRO
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 được theo nhiều tiêu chuẩn công nghệ Một số
phần mềm của các hãng lớn như:
Exemplar Logic°s Leonardo là một công cụ tổng hợp, tối ưu hóa và phân tích rất linh hoạt và mềm dẻo Nó được sử dụng để thiết kế các vi mạch ASICs, FPGÁ, CPLDs Người thiết kế có thể thực hiện nhiều mức thiết kế
trên một bản thiết kế, lưu trữ và điều chỉnh bằng tay các cấp thiết kế, sử dụng ngôn ngữ mô tả phần cứng để cài đặt thiết kế Leonardo cung cấp một môi
trường thiết kế Top - Down bắt đầu từ VHDL hay Verilog, có khả năng thông
báo kết quả bằng việc sử dụng tập tin định thời SDF va thu viện mô phỏng
Vital Leonardo được tích hợp đầy đủ môi trường mô phỏng các kiểu công
nghệ Công cụ tổng hợp Exemplar giải quyết các mức tổng hợp tới cổng logic,
tối ưu hóa tốc độ và điện tích, ánh xạ tới một loại công nghệ cụ thể
Snopsys FPGA Express có các chức năng chuyển ngôn ngữ VHDL thành
các khối luận lý Tối ưu hóa các khối đó bằng một phương pháp tối ưu Anh
xạ các cấu trúc luận lý vào thư viện cong nghệ đặc biệt FPGA
Synplify là phần mềm tổng hợp mạch dùng ngôn ngữ VHDL và Verilog
có ưu điểm là rất dễ sử dụng, tốc độ tổng hợp rất nhanh so với các công cụ tổng hợp khác Ngõ ra là sơ đỗ liên kết mức cổng cung cấp cho các công cụ place và route FPGA sử dụng
MAX + PLUS II là phần mềm đa chức năng thực hiện thiết kế tổng hợp
mạch cho một số loại CPLDs và FPGAs của hãng Altera Nó hỗ trợ biên dịch,
mô phỏng, phân tích, định thời và tổng hợp mạch cho một số thiết bị như:
EPM7128LC84-7, EPF1OK20RC2404
Cypress Semiconductor Warp là chương trình dịch cho thiết kế CPLDs
và FPGAs, Warp nhận đầu vào là tập tin VHDL, nó sẽ tổng hợp và tối ưu
thiết kế để tạo ra phần cứng Warp xuất ra sơ đỗ liên kết QDIF cho việc place
và route Công cụ SpDE trong Warp thực hiện tối ưu hóa, sắp xếp và đi dây
cho loai vi mach FPGA Pasic80
Mentor Graphic 14 hang phan mém lớn chuyên cung cấp các công cụ
tổng hợp phức tạp để thiết kế phần cứng cho các loại thiết bị CPLDs và
FPGAs
Trong khuôn khổ đề tài, em tập trung sử dụng phần mền Max+plus II vì
những ưu điểm của nó
Trang 10
Trang 21Chương II Cấu tạo của một chương trình VHDL
CHƯƠNG II : CAU TAO CUA MOT CHUONG TRINH VHDL
Tất cả các thiết kế (design) được biểu diễn ở hình thức ENTITY
ENTITY là khối xây dựng cơ bản nhất của một thiết kế Tất cả các thiết kế
được tạo ra bằng cách sử dụng một hoặc nhiều ENTITY ENTITY mô tả Sự giao
tiếp với mô hình VHDL ENTITY chỉ ra sự giao tiếp với thế giới bên ngoài Nó
chỉ ra các PORT, hướng của PORT
Một ENTITY gồm có 3 phần : ENTITY_NAME; PORTS và các thông
tin liên quan đến ENTITY Xét ví dụ sau :
ENTITY là từ khoá chỉ ra sự bắt đầu của một phát biểu ENTITY
ENTITY_name 14 mux; cac PORT 18 a, b, c, d, sO, sl va x
ARCHITECTURE mô tả chức năng nằm bên dưới của ENTITY và nó
chứa các phát biểu trình bày hành vi của ENTITY Một ARCHITECTURE luôn
liên hệ với một ENTITY và mô tả hành vi của ENTITY đ Sau đây là một
ARCHITECTURE cho một ENTITY mux ở trên
ARCHITECT
URE dataflow of mux IS
SIGNAL sel : INTEGER;
BEGIN
sel <= 0 WHEN s0 = '0' AND s1 ='0' ELSE
1 WHEN sO ='l' AND s1 ='0' ELSE
2 WHEN sO ='0' AND s1 ='1' ELSE
Trang 11
Trang 22
x<= a AFTER 0.5 NS WHEN sel =0 ELSE
b AFTER 0.5 NS WHEN sel =1 ELSE
c AFTER 0.5 NS WHEN sel =2 ELSE
d AFTER 0.5 NS;
END dataflow;
ARCHITECTURE 1a ti khóa chỉ ra rằng phát biểu ARCHITECTURE là
của một ENTTTY nào đó
Tén cia ARCHITECTURE 1a dataflow
ARCHITECTURE dang mé ta cho ENTITY cé6 tén 14 mux OF mux 14 su kết nối giữa ARCHITECTURE với ENTITY có tên là mux
Cấu trúc của một ARCHITECTURE :
khai OF ENTITY _name IS
báo
Các BEGIN
phát
Trong phần khai báo ta khai báo các tín hiệu nội bộ và các thành phần cho sử dụng sau này Ví dụ :
ARCHITECTURE dataflow OF mux IS SIGNAL sel : INTEGER ; khai báo 1 tín hiệu sel
Trang 12
Trang 23
H.1 Gán tín hiệu đồng thời (concurrent signal asignment architecture) :
Trong kiến trúc VHDL không có thứ tự cho các phép gán Thứ tự thực
hiện độ nhất được chỉ ra bởi các sự kiện trên các tín hiệu mà các phát biểu gán
bị ảnh hưởng Ví dụ :
sel <= 0 WHEN s0 = '0' AND s1I ='0' ELSE
1 WHEN s0 ='1!' AND s1 ='0 ELSE
2 WHEN s0 ='0 AND s1 ='1' ELSE
3;
Sự kiện trên tín hiệu là sự thay đổi giá trị của tín hiệu đó
Một phép gán tín hiệu bị ảnh hưởng bởi sự thay đổi của các tín hiệu nằm bên phải dấu <=
Ở ví dụ trên tín hiệu sel được gán một giá trị phụ thuộc vào giá trị sÖ và s1 Việc gán này xảy ra bất kỳ lúc nào có một sự kiện xảy ra trên s0 hoặc sĨ
Tất cả phát biểu gán khác trong ví dụ này bị ảnh hưởng bởi tín hiệu sel
Kiến trúc gán tín hiệu đồng thời còn gọi là kiến trúc luồng dữ liệu Cấu
trúc luồng đữ liệu nó không có cấu trúc, không có thành phần làm sẵn trong
kiến trúc
Vấn để gán tín hiệu đồng thời : khi người thiết kế dùng phát biểu gán tín
hiệu gặp phải một vấn để đó là giá trị được gán vào phát biểu sau cùng không
xuất hiện tức thì Làm cho hành vi của mô hình bị lỗi nếu người thiết kế đang
phụ thuôc vào giá trị mới này
Ví dụ :
LIBRARY IEEE;
USE IEEE.Sdt_logic _1164.ALL;
ENTITY mux4_la is Port (10, il, 12, 13, a, b : IN std_logic;
q : out std_logic);
END mux4_la;
Trang 13
Trang 24Chương II Cấu tạo của một chương trình VHDL
architecture Behavioral of mux4_la is
SIGNAL sel : INTEGER;
BEGIN
PROCESS (40, il, 12, 13, a, b) BEGIN
Mô hình này viết cho mux 4:1 Phụ thuộc vào giá trị a, b một trong 4 ngõ
vào được đưa đến ngõ ra ARCHITECTURE bắt đầu PROCESS bằng việc khởi
Trang 14
Trang 25Chương IH Cấu tạo của một chương trình VHDL
tao tín hiệu nội bộ sel = 0; dựa vào giá trị a và b Giá trị 1 hoặc 2 được cộng vào
sel để chọn ngõ vào Phát biểu CASE được chọn bởi giá trị của sel Tuy nhiên
ARCHITECTURE không làm việc đúng vì giá trị của sel không bao giờ được
khởi tạo bởi dòng đầu tiên sel <= 0 cho đến khi PROCESS hoàn tất lần đầu
tiên Chúng ta có 2 cách để khắc phục : cách một Chèn một phát biểu wait sau
mỗi phép gán tín hiệu tuần tự
LIBRARY IEEE;
USE IEEE.Sdt_logic _1164.ALL;
ENTITY mux4_la is Port (10, il, i2, 13, a, b : IN std_logic;
q : out std_logic);
END mux4_ la;
architecture Behavioral of mux4_la is
SIGNAL sel : INTEGER;
Trang 26q : out std_logic);
END mux4_la;
architecture Behavioral of mux4_la is
BEGIN PROCESS (i0, il, 12, 13, a, b) VARIABLE sel : INTEGER RANGE 0 TO
Trang 27Khi sel được khai báo là biến thì việc gán xảy ra tức thì Nên các phát
biểu sau sử dụng giá trị đúng
IL2 Thiết kế cấu trúc (netlist design) :
Một cách khác để viết thiết kế mux ở trên là ta sử dụng các thành phần
con (subcomponent) Mỗi thành phần con thể hiện một thao tác nhỏ hơn của mô
Trang 28U3 : andgate (a, sO_inv, s1_inv, x1);
U4 : andgate (b, sO, sl_inv, x2);
U5 : andgate (c, sO_inv, sl, x3);
U6 : andgate (d, sO, sl, x4);
U7: orgate (x2 => b, xl => a, x4 => d, x3 =>
Cách này dùng cho một số thành phần mức cổng (gate-level) để mô hình
hóa hành vi của thiết bị Mỗi thành phần cổng được khai báo trong phần khai
báo ARCHITECTURE Phần này nằm giữa phát biểu ARCHITECTURE và từ
khóa BEGIN
Các tín hiệu cục bộ được dùng để kết nối các thành phần để hình thành
nên mô tả kiến trúc Các tín hiệu này được khai báo sử dụng khai báo SIGNAL
Vùng phát biểu kiến trúc được đặt sau từ khoá BEGIN
Đối với ví dụ trên các phát biểu được đánh nhãn u1 — u7 Phát biểu ul thuyết minh cho thành phần inverter, phát biểu này nối port sO tới ngõ đầu tiên
Trang 18
Trang 29
của thành phần ¡nverter Kết quả là ngõ in1 của inverter được nối đến ngõ s0
cia ENTITY mux và ngõ x được nối với tín hiệu nội bộ s0_inv
Phát biểu lý thuyết minh cho cổng orgate x => x nghĩa là nối ngõ ra x của cổng or với ngõ ra x của ENTITY
IL3 Kiến trúc tuần tự (sequential architecture) :
Cách thứ 3 để mô tả chức năng của ARCHITECTURE đó là dùng phát biểu PROCESS để mô tả chức năng được thể hiện ở dạng thuật toán (
algorithmic ) Xét vi du :
ARCHITECTURE sequential OF mux IS
BEGIN
PROCESS (a, b, c, d, sO, s1)
VARIABLE sel : INTEGER ; BEGIN
Trang 30Chương II Cấu tạo của một chương trình VHDL,
END sequential;
ARCHITECTURE nay chi chifa mét phát biểu được gọi là phát biểu
PROCESS Nó bắt đầu với từ khóa PROCESS và kết htúc ở dòng END
PROCESS; Tat cd các phát biểu giữa 2 dòng này được xem là phần của
PROCESS
Trong 1 ARCHITECTURE cho một ENTITY tất cả các phát biểu là
đồng thời Như vậy phát biểu tuần tự nằm ở đâu? Có một phát biểu PROCESS
nó chỉ chứa các phát biểu tuần tự Bảng thân phát biểu PROCESS là phát biểu đồng thời Một phát biểu PROCESS có thể tổn tại trong một ARCHITECTURE
Một phát biểu PROCESS gồm có 3 phần : danh sách cảm nhận, khai báo
PROCESS và phần phát biểu PROCESS
HH.1 Danh sách cảm nhận(sensitivity lis) :
Là một danh sách gồm các tín hiệu được đặt trong dấu ngoặc sau từ khoá
PROCESS Danh sách nàyliệt kê chính xác các tín hiệu mà nó làm cho phát
biểu PROCESS thực thi Chỉ có những sự kiện xảy ra trên các tín hiệu trong danh sách cảm nhận mới làm cho các phát biểu trong PROCESS thực thi
IH.2 Vùng khai báo PROCESS :
Vùng nằm giữa kết thúc danh sách cảm nhận và từ khoá BEGIN khai
báo các biến, hằng, khai báo kiểu, khai báo chương trình con
IH.3 Vùng phát biểu PROCESS:
Trang 20
Trang 31
Vùng này bắt đầu với từ khóa BEGIN và kết thúc với dòng END
PROCESS Tất cả các phát biểu được bao trong vùng này là các phát biểu tuần
tự ( IF, ELSE, LOOP ) Thứ tự thực thi là thứ tự các phát biểu trong
PROCESS với danh sách cảm nhận là
VARIABLE temp : std_logic; Khai bao 1
biến temp BEGIN
temp := NOT(a AND b); phat biéu 1
IF (temp ='l') THEN , phát biểu tuần
Trang 32Chương II Cấu tạo của một chương trình VHDL,
c <=temp AFFER 6 ns;
END IF;
END PROCESS;
END behavial;
IV Các phát biểu tuần tự trong PROCESS
IV.1 Phat biéu IF :
Phát biểu IF bắt đầu với từ khóa IF và kết thúc với từ khóa END IF, Có 2
mệnh đề tùy chọn trong phát biểu IF : ELSIF và ELSE Mệnh để ELSIF có thể
lập lại nhiều hơn 1 lần, còn mệnh để ELSE thì chỉ có 1 Điểu kiện trong tất cả
các trường hợp là biểu thức Boolean Bất kỳ khi nào giá trị của biểu thức là
đúng thì phát biểu theo sau được thực thi, Nếu không có điều kiện đúng thì phát
biểu theo sau mệnh để ELSE được thực thi nếu nó tôn tại
Ví dụ l1 :
IF (X < 10) THEN
A:=b;
END IF;
Phát biểu bắt đầu với từ khóa IF tiếp theo là điều kiện ( X < 10) và theo
sau là từ khóa THEN Nếu điều kện là đúng X < 10 thì phát biểu giữa THEN và
END IF được thực thi Trong ví dụ này phát biểu gán a := b được thực thi, nếu
X >=l0 thì điều kiện sai Trong ví dụ này không có mệnh đề ELSE Vì vậy
không có phát biểu được thưc thi, điều khiển được chuyển đến sau END IE
Trang 33
Trong ví dụ này có 2 biến weekend và weekday Nó được thiết lập phụ
thuộc vào tín hiệu day Weekday = true bất kỳ khi nào day = Sunday hoặc day
= Saturday Ngoài ra biến weekday = true Việc thực thi phát biểu IF được bắt
đầu bằng việc kiểm tra xem biến day = cái gì Nếu day = Sunday thì phát biểu
theo sau được thi thi và điều khiển được chuyển đến phát biểu sau END IF Nếu
điều kiện của IF không đúng thì điều kiện được chuyển đến phát biểu ELSIF và
day được kiểm tra cho Saturday Nếu day = Saturday thì phát biểu theo sau
được thực thi và điều khiển được chuyển đến phát biểu sau END IF Cuối cùng
nếu day không bằng Sunday hoặc Saturday thì phát biểu ELSE được thực thi
IV.2 Phát biểu CASE :
Phát biểu CASE được dùng bất kỳ khi nào giá trị biểu thức được dùng để
Phát biểu được thực thi phụ thuộc vào giá trị của biểu thức instruction
Nếu giá trị của instruction là một trong các lựa chọn được đưa ra sau WHEN thì
phát biểu của giá trị đó được thực thi Ngoài ra, phát biểu sau mệnh để
OTHERS được thực thi Chương trình sẽ bị lỗi nếu không có mệnh đề OTHERS,
vì các lựa chọn của chúng ta không bao hàm hết mọi giá trị của 1nstruction
Ví dụ 2:
TYPE vectype IS ARRAY (0 TO 1) OF BIT
Trang 23
Trang 34Trong ví dụ này phát biểu CASE không cần mệnh để OTHERS vì tất cả
các giá trị có thể của bit_vec đã được đưa ra
IV.3 Phát biểu LOOP :
Phát biểu này được dùng bất kỳ khi nào một thao tác cần được lặp lại
Có kiểu phát biểu LOOP
IV.3.1 Vòng lặp WHILE LOOP :
WHILE condition LOOP : vòng lặp này được thực thi với số lần lặp không biết trước miễn là điều kiện còn đúng Ví dụ :
WHILE (day- weekday) LOOP
Day: = get- net- day (day);
Trang 35Chương II Cấu tạo của một chương trình VHDL
kiểm tra trở lại, nếu đúng vòng lặp lại được thực thi, nếu sai điểu khiển được
chuyển tới phát biểu sau mệnh đề End Loop
Vòng lặp được thực thi 10 lần bắt kỳ khi nào vòng lặp được thực thi Chỉ
số ¡ bắt đầu từ giá trị bên trái nhất của tầm và được tăng dân lên phía biến phải
Một điểm cần lưu ý về phát biểu For Loop là giá trị chỉ số ¡ được khai
báo nội bộ bởi phát biểu FOR Nếu một biến khác cùng tên tổn tại trong
Process, Function, Proceddure, thì hai biến này được đối xử như là hai biến tách
biệt nhau và được truy xuất bởi ngữ cảnh
Khi ¡ trong danh sách được cảm nhận thay đổi giá trị thì phát biểu x«i+
1 được thực thi Tiếp theo với vòng lặp FOR được thực thi, giá trị chỉ số ¡ không
giống với giá trị ¡ được dùng để tính giá trị cho x hai đối tượng này tách biệt
nhau, chúng được truy xuất bởi ngữ cảnh Bên trong vòng lặp LOOP, khi một sự
tham chiếu đến I thì chỉ số nội bộ được lấy lại Nhưng bên ngoài vòng lặp FOR,
khi tham chiếu đến ¡ giá trị của ¡ trong danh sách cảm nhận của PROCESS được
Trang 25
Trang 36Chương II Cấu tạo của một chương trình VHDL
s* Ghỉ chú: Giá trị được chỉ ra tầm của vòng lặp FOR không cần thiết phải
là giá trị INTEGER Tầm này có thể là một tầm riêng biệt bất kỳ Hãy xem một
Sun <mov- lawn;
ELSIF i= Sun THEN Church <= family;
Khoảng của tầm được chỉ ra là kiểu Bằng việc chỉ ra kiểu như là tầm,
trình biên dịch xác định rằng giá trị bên trái nhất là Sun và giá trị bên phải nhất
là sat Do đó tầm xác định là Sun to Sat
Chúng ta có thể tạo một tầm giảm dần bằng mệnh để Downto
Trang 37
Với x, y khác nhau ta có một tầm khác nhau
IV.4 Phat biéu wait:
Phát biểu wait cho phép người thiết kế khả năng treo (suspend) việc thực
thi tuần tự của PROCESS hoặc một Subprogram Điều kiện để khôi phục việc
thực thi PROCESS hoặc subprogram bị treo có thể chỉ ra bởi ba cách khác nhau
Wait On signal Changes Wait Until an expression is true Wait for a specfic amount of time Phát biểu wait được dùng cho một số các mục đích khác nhau, vệc sử
dụng phổ biến nhất ngày nay là chỉ ra các ngõ vào clock cho Synthesis tool
Phát biểu wait chỉ ra clock cho một phát biểu process mà nó được đọc bởi
synthesis tool để tạo ra logic tuần tự chẳng hạn như thanh ghi hay Flip- Flop
Các sử dụng khác là làm trễ việc thực thi process mét khỏang thời gian hoặc để
chỉnh sửa động danh sách cảm nhận của PROCESS
Sau đây là phát biểu của process với một phát biểu wait được dùng để tạo logic
tuần tự
PROCESS Begin
Wait untill Clock= ‘1’ and clock Event;
q <d;
End process;
PROCESS nay dudc dùng để tạo một FF mà nó đưa giá trị của d ra q khi
ngõ vào clock có một cạnh lên Thuộc tính EVENT được buộc với ngõ vào
clock có một sự kiện trong suốt delta timepoint hiện tại Việc kết hợp nhìn vào
giá trị 1 và 1 sự thay đổi trên clock tạo ra một chức năng cân thiết để nhìn vào
cạnh lên của ngõ vào clock Kết quả là PROCESS bị treo tại phát biểu wait cho
đến khi clock có một cạnh lên thì giá trị hiện tại của d được gán cho q
Để một FF có ngõ vào không đồng bộ reset cho FF trên ta có thể làm như sau :
PROCESS
Trang 27
Trang 38Chương HI Cấu tạo của một chương trình VHDL
Begin
Wait until clock= ‘1’ and clock EVENT;
IF (reset= ‘1’) THEN
qed END IF;
END process;
Khi clock xảy ra, tín hiệu reset được kiểm tra đầu tiên, nếu nó tích Cực
thì “o' được gán cho q ngoài ra ngõ vào q được gán= d
Một FF có ngõ vào reset như sau :
PROCESS BEGIN
IF (reset= ‘1’) THEN
q=’0’
ELSIF clock Event and clock = ‘1’ THEN
qed END IF;
wait on reset, clock
END PROCESS;
Phát biểu process chứa một phát biểu wait on, làm cho process treo viéc
thực thi cho đến khi một sự kiện xảy ra trên ngõ vào reset hoặc clock, phát biểu
LF sau đó được thực thi và nếu reset tinh cuc, FF bi reset vé ‘o’ ngoai ra clock
được kiểm tra cạnh lên thì nó chuyển ngõ vaò d sang ngõ ra q
Phát biểu wait cũng được dùng để điều khiển các tín hiệu một process
hoặc một subprogram bị ảnh hưởng tại bất kỳ điểm nào trong việc thực thi xét
Trang 39Chương IH Cấu tạo của một chương trình VHDL,
Wait ON b; 2
End process;
Việc thực thi các phát biểu trong phát biểu PROCESS tiếp tục cho đến
điểm 1, phát biểu wait làm cho process treo việc thực thi tại điểm này Process
không tiếp tục thực thi cho đến khi một sự kiện xảy kiện xảy ra trên tín hiệu a
Do đó process bị ảnh hưởng bởi sự thay đổi trong tín hiệu a Khi có một sự kiện
xảy ra trên tín hiệu a, việc thực thi bắt đầu trở lại tại phát biểu ngay sau phát
biểu wit tại điểm 1 Việc thực thi tiếp tục cho đến khi bắt gặp phát biểu wait tại
điểm 2 Một lần nữa, việc thực thi bị treo, bà PROCESS bây giờ bị ảnh hưởng
bởi tín hiệu b Do đó, bằng việc thêm vào 2 phát biểu wait, chúng ta có thể thay
đổi danh sách cảm nhận của PROCESS một cách linh động
Ta có 3 lựa chọn cho phát biểu wait : Wait on signal, wait until
expression, wait for time expression
IV.4.1.Wait on signal [, signal] :
Loại nay chỉ ra 1 danh sách các tín hiệu mà phát biểu wait sẽ đợi sự
kiện trên chúng Nếu có bất kỳ sự kiện nào xảy ra trên danh sách tín hiệu này
thì việc thực thi tiếp tục với phát biểu theo sau phát biểu wait
WAITT ON a, b; Khi có sự kiện xảy ra trên a hoặc b, PROCESS bắt đầu
lại việc thực thi với phát biểu sau phát biểu wait
IV.4.2 Wait untill expression :
Mệnh để này treo việc thực thi PROCESS cho đến khi biểu thức trả về
giá trị đúng Phát biểu này tạo ra một danh sách cảm nhận các tín hiệu ẩn tàng
được sử dụng qua các biểu thức Khi có bất kỳ tín hiệu nào trong biểu thức xây
ra sự kiện, biểu thức được định giá Khi biểu thức trả về một giá trị đúng, việc
thực thi tiếp tục với phát biểu theo sau phát biểu wait, nhoài ra PROCESS tiếp
tục bị treo
Trang 29
Trang 40Chương IH Cấu tạo của một chương trình VHDL
|
WAIT UNTIL ((x*10) < 100); Khi gid tri của x lớn hơn hoặc bằng 10 thì
PROCESS vẫn còn bị treo, cho đến khi x < 10 thì PROCESS được thực thi tại
phát biểu sau phát biểu wait
IV.4.3.Wait for time expression :
Ménh dé WAIT FOR time — expression treo việc thực thi PROCESS
trong một khoảng thời gian được chỉ ra trong biểu thức thời gian Sau khoảng
thời gian được chỉ ra trong biểu thức trôi qua, việc thực thi được tiếp tục ở phát
biểu theo sau phát biểu wait Ví dụ :
WAIT FOR 10ns; PROCESS bi treo 10ns Sau 10 ns viéc thuc thi tiếp
;tục ở phát biểu sau WAIT
WAITT FOR (a*(b+c)); Biểu thức thời gian trước hết phải được tính toán
để trả về 1 giá trị thời gian, sau khi giá trị này được tính, phát biểu sử dụng giá
trị này là khoảng thời gian phải chờ
Multiple WAIT condition: ching ta có thể ding | phát biểu WAITT với
nhiều điều kiện
Ví dụ :
WAIT ON nmi, interrupt UNTILL (nmi = TRUE) or (interrupt = TRUE)
FOR 5 Hs ; Chỉ khi có sự kiện xảy ra trén nmi, 1ntrrupt hoặc nmi = true hoặc
interrupt = true hoặc 5 Hs trôi qua thì phát biểu sau WAIT mới được thực thi
Trong một phát biểu WAIT dùng với nhiều điểu kiện thì phải đảm bảo
rằng ít nhất một trong các giá trị của biểu thức phải là tín hiệu để đảm bảo rằng
lên WAIT khong bi chd mai mii
Vidu:
WAIT UNTILL interrupt = true) OR (old_clk = ‘1’);
WAIT time_out : Có 1 số trường hợp , ta không biết chắc rằng điều kiện
của phát biểu wait có thể được đáp ứng hay không Để tránh phát biểu wait chờ
mãi mãi ta thêm vào mệnh để time_out Mện để này cho phép việc thực thi
được tiếp tục sau khoảng thời gian time_out bất chấp điều kiện có được đáp ứng
hay không
Trang 30