1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng VHDL trong thiết kế số thiết kế vi mạch (IC) dùng điều khiển cửa xe garage xe

108 468 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 108
Dung lượng 3,69 MB

Nội dung

Trang 1

BỘ 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

“` em mt te

(TRUONG BMDL-KTCN|

Fil YES T Hồ Chí Minh Tháng 01 năm 2007 + th

|isố Ap 1003342 ;

Trang 2

Ñ Eh 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 4

7X

NHAN XET CUA GIAO VIEN HUONG DAN

IOC

" SII, -LÁo li & sa, 56 -hạyg địm, chai Í8u, ưấc

¬- Nephi Ro AUC eleven AN oe dA are he Ean io That RA

DHKTCN,Ngaythangotnam 2007

Giáo viên hướng dẫn

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à tồn thể các bạn

Lê Phước Thọ

Trang 5

BỘ 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 :

Ngành : Điện tử - Viễn thông Lớp

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

5 Họ tên người hướng dẫn : Phần hướng dẫn

1/ Ks Trương Ngọc Bảo l/ Toàn bộ

LH H111 11011, “

u10 tk ey 3Í ve

Nội dung và yêu cầu của ĐATN đã được thông qua Ngàyvh tháng AQ nim 2006

TRUONG KHOA NGƯỜI HƯỚNG DẪN CHÍNH

(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)

p— o Á vài ~

ĐẠI HỤC DỊ tý: Đ GNỀNGHỆ Í “Lá”

Pos ¬ ad a

TS Hồ Ngọc Bá Ks Trương Ngọc Bảo

Trang 6

LỜ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

Trang 7

TÓ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:

Phẩn1: CƠ SỞ LÝ THUYẾT

Tổng quan Pal, Gal và FPGA

Téng quan VHDL

Cấu tạo của một chương trinh VHDL Các đối tượng của VHDL,

Các kiểu dữ liệu

Chương trình con

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

Từ khoá sử dụng:

GAL PAL FPGA VHDL

: Generic Array Logic

: Programmable Array Logic Field Programmable Gate Array

Trang 8

MỤ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 ———

I TOng quan Vé Pal, Gal c c ccssecscssssssesssesseessessessssscecsessesseees

L1 Logic lập trình được (PAL) c5-

L2 1

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

1.3 C6 thu vién h6 tr oo ccc cececeeccsecsecseesesecseceeeeees

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

1.7 Sử dụng các chương trình con . -c+s se se:

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,

Trang 9

IV.3.1 Vòng lặp Whie loop

IV.3.2 Vòng lặp For .-S-

IV.4 Phátbiểu wait

IV.4.1 Walton signal .<S2

IV.4.2 Waituntill expression

IV.4.3 Wait for time expression

V PaCKaB€ eeeccecsecssecseccseeesessseeessessccssessscssecssessecsacees V.1 Khai báo góI - c2 SH,

V.2 Than Ca QOL ee ccecceceseesesceeessecseessecssscsssssscenecees

CHUONG IV: DOI TUGNG CUA VHDL

I na

II Biến n2 T HH HT H1 T011 0111111711112 keo

[H Hằng 2.2.2 Hee

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

I1 Kiểu mắng ¿- 52s cv t EEEEE TE2x E sercrec

IL2 Mang da hướng ĐÀ Snn SH ng rệt

I3 Mang khong bi rang buộc . -c sec sec

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

L so

H THU UC

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

VII Thực hiện biên dịch .- + 5-55 52c 2122 SE Ecrkre re

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

XT MG phon ooo — 72

PHAN IL: THIẾT KẾ VÀ MÔ PHỎNG 714

CHƯƠNG!I: CÁC ỨNG DỤNG . -k c+ c2 crererrree 75

L Mạch T_FEF - - LG TQ n TT HH HH HH HH ng ng rep 75

II Thiết kế mạch nhan G61 ccc cceesecececceeceseseeseseesesesenseenes 76

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

IV Kết quả mơ phống ¬ 94

KẾTT LUẬN 2 ©C2e+E2s€ESE+sd€tEEZeeEESssevEEvessvtvvzseerrcse 97

I Kết quả thực hiện đỀ tài 5 S1 Sky re 97

H Hướng phát triển để tài . - ĐÀ àSn nhe 97

Trang 11

Phan II Thiết kế và mô phỏng

PHAN II:

THIET KE VA MO PHONG

Trang 12

Chươ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 13

Chươ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 Veo Vee

Combinatorial Output Active Low Combinatorial Output Active High

Hình 1.22 Thứ dụ một số cấu trúc ngõ ra

Trang 14

Chươ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

Fsedtack $——————— Yeo

Active Pul-up Active Pulp

Circuit Chrewit

cm me Wœ mì

i Vo! Vret Ti-Shte —— Viet

ESD tr Control i Protection |} : Circuft } i ‡ } } "~ `" Peres PIN Datla = : Output PIN |ESP TÍ : Protection |: 1 Creu ị —.` TS s Feedback

Typ Vref = 3.2 Typ Veet = 3.29 ‘To Input Buffer)

Typical Input Typical Output

Sơ đồ ngõ vào Sơ đồ ngõ ra

Trang 15

Chương I Tổng quan về PAL, GAL và FPGA

DIP & PLCC Package Pinouts

OLNC xDR.2Ð AC 12122 ES 0LRIE SOR 2061 16 OLMC la Ai ;1.2124 15 tiêu OLMC SOR.2023 1-2135 1đ DLME XOEF 4 1-2123 13 nag OLMC sR es ẨI;1.2127 11 J-EAST UE FLEE See, A, co ETM, 210F Sh 2192 mee Rye En Eg M2186 Me 2 3 h0Q

Sơ đồ logic GAL 16V8

Trang 16

Chươ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 tố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 17

Chươ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 18

Chương II Tổng quan về VHDL

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

L1 Đặc tính tổng quát:

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ế

L3 Có thư viện hỗ trơ:

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, ngồ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 19

Chương H Tổng quan vé VHDL

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, ngồ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

L7 Sử dụng chương các trình con:

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

L9 Đặc tả cấu trúc:

Ngôn ngữ VHDL có các cấu trúc để đặc tả phân rã cấu trúc của phần cứng ở tất cả các cấp

Trang 20

Chương II Tổng quan về VHDL

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 21

Chươ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

L ENTITY :

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 mux IS

PORT (a, b, c, d: INTEGER BIT; SO, sl : IN BIT;

X : OUT BIT);

END mux;

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

Il ARCHITECTURE :

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 22

Chương II Cấu tạo của một chương trình VHDL

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 :

Các ARCHITECTURE ARCHITECTURE _name

khai OF ENTITY _name IS

báo

Các BEGIN

phát

biểu END ARCHITECTURE _name;

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 23

Chương IH Cấu tạo của một chương trình VHDL

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 24

Chươ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 sel <= 0; IF (a ='1') THEN sel <= sel + 1; END IF; IF (b ='1') THEN sel <= sel + 2; END IF; CASE muxval IS WHEN 0 => gq <=i0 AFTER 10 ns; WHEN 1=> q <=il AFTER 10 ns; WHEN 2 => q <=i2 AFTER 10 ns; WHEN OTHERS => NULL; END CASE; END PROCESS; END Behavioral;

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 25

Chươ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; BEGIN

PROCESS (10, il, i2, 13, a, b) BEGIN

sel <= 0;

Trang 26

Chương III Cấu tạo của một chương trinh VHDL

q <=10 AFTER 10 ns; WHEN l=> q <=il AFTER 10 ns; WHEN 2 => q <= 12 AFTER 10 ns; WHEN OTHERS => NULL; END CASE; END PROCESS; END Behavioral;

thay vì dùng tín hiệu ta dùng biến

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;

architecture Behavioral of mux4_la is

BEGIN

PROCESS (i0, il, 12, 13, a, b)

VARIABLE sel : INTEGER RANGE 0 TO

3;

Khai bdo 1 bién cho PROCESS BEGIN

Trang 27

Chương II Cấu tạo của một chương trình VHDL

sel := 0; IF (a ='1') THEN sel <= sel + 1; END IF; IF (b ='1') THEN sel <= sel + 2; END IF; CASE muxval IS WHEN 0 => q <=i0 AFTER 10 ns; WHEN l=> q <=il AFTER 10 ns; WHEN 2 => q <= 12 AFTER 10 ns; WHEN OTHERS => NULL; END CASE; END PROCESS; END Behavioral;

Khi 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ơ

hình hồn chỉnh Ví dụ :

ARCHITECTURE netlist OF mux IS

Trang 28

Chương II

C,X=>X);

Cấu tạo của một chương trình VHDL COMPONENT andgate

PORT(a, b, c : IN BIT; x : OUT BIT); END COMPONENT;

COMPONENT inverter

PORT(n1 : IN BIT; x : OUT BIT); END COMPONENT;

COMPONENT orgate

PORT (a, b, c, d: IN BIT; x : OUT BIT);

END COMPONENT;

SIGNAL sO_inv, sl_inv, x1, x2, x3, x4: BIT;

BEGIN

U1 : inverter (sO, sO_inv); U2 : inverter (sl, s1_inv);

U3 : 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 29

Chương 1H Cấu tạo của một chương trình VHDL

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

IF sO = ‘0’ AND s1 = ‘0’ THEN

Sel := 0;

ELSIF sO = ‘1’ AND s1 = ‘0’ THEN

Sel :=‘V;

ELSIF s0 = ‘0’ AND si = ‘1’ THEN

Trang 30

Chương II Cấu tạo của một chương trình VHDL,

WHEN 2 => X <=C; WHEN OTHERS => X <=d; END CASE END PROCESS; 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

Ill Phát biểu 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 31

Chương II Cấu tạo của một chương trình VHDL

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í dụ :

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY nand2 is

PORT (a: in std_logic; b : in std_logic; c : out std_logic); END nand2;

ARCHITECTURE behavial of nand2 is BEGIN

PROCESS (a, b) ; Phát biểu

PROCESS với danh sách cảm nhận là

; 2 tín hiệu a, b

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

tự IF

c€ <= temp AFTER 6 ns; ELSIF (temp = '0) THEN

Trang 32

Chươ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

Ví dụ 2 :

IF ( day = sunday) THEN

Weekend := true;

ELSIF (day := Saturday) THEN

Trang 33

Chương III Cấu tạo của một chương trình VHDL,

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 để

chọn giữa một số các hoạt động Vi dul: CASE instruction IS WHEN load_accum => Accum <= data; WHEN store_accum=> Data_out <= accum; WHEN load/store => Process_IO (addr); WHEN OTHERS => Process_error (instruction); END CASE;

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 Ngồ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 34

Chương II Cấu tạo của một chương trình VHDL

VARIABLE bit_vec : vectype

CASE bit_vec IS WHEN “001 => Return 0; WHEN ‘01’ => Return 1; WHEN ‘10 => Return 2; WHEN ‘11’ => Return 3; END CASE;

Trong 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);

End LOOP;

Khi vào vòng lặp điều kiện được kiểm tra trước khi vòng lặp được thực thi Nếu điều kiện là đúng, các phát biểu của vòng lặp được thực thi Sau đó

điều khiển được chuyển trở về tại vị trí bắt đầu của vòng lặp Điểu kiện được

Trang 35

Chươ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

IV.3.2 Vòng lặp FOR :

Lặp với số lần được xác định FOR identifier IN discrete- range

Ví dụ :

For i IN 1 to 10 Loop i_squared (i) := i*i; 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

nhất của tầm _

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

Ví dụ:

Process ()

Begin

X <=I1+l; x là một tính hiệu For i in 1 to a/2 Loop;

q6) := a; q là một biến

END LOOP; End PROCESS ;

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

lấy lại

Trang 36

Chươ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

số ví dụ:

Process (clk)

TYPE day- Of- Week IS (Sun, Mon, Tue, Wed, Thur, Fri, Sat); Begin

FOR 1 IN day- of- week Loop

IF [= Sat THEN

Sun <mov- lawn;

ELSIF i= Sun THEN Church <= family; ELSE

Dad < go to- work;

END IF;

End Loop;

END Process;

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

Ví dụ:

Process (x,y)

Begin

For i IN x downto Y Loop

D()= w(i);

| End Loop;

End Process;

Trang 37

Chương IH Cấu tạo của một chương trình VHDL

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 38

Chươ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

Trang 39

Chươ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 40

Chươ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

Ví dụ :

Ngày đăng: 02/07/2014, 02:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w