Ứng dụng VHDL trong xử lý tín hiệu số
Trang 1UNG DUNG VHDL TRONG XU LY TiN HIEU SO
SVTH : LƯU PHƯỚC DUY PHƯƠNG
TP.Hồ Chí Minh 06 -2006
Trang 2
L69 NOV PAN
Các mạch tích hợp hiện đại ngày càng thực hiện được nhiều chức năng do đó
mà vấn đề thiết kế mạch càng trở nên phức tạp Những phương pháp truyền thống như dùng phương pháp tối thiệu hoá hàm Boolean hay dùng sơ đồ các phần tử không còn đáp ứng được các yêu cầu đặt ra khi thiết kế Nhược điểm lớn nhất của các phương pháp này là chúng chỉ mô tả được hệ thống dưới dạng mạng nối các phần tử với nhau Người thiết kế cần phải di qua hai bước thực hiện hoàn toàn thủ công: đó là chuyển từ các yêu cầu về chức năng của hệ thống sang biểu diễn theo dạng hàm Boolean, sau các bước tối thiểu hoá hàm này ta lại phải chuyển từ hàm Boolean sang
SƠ đồ mạch của hệ thống Cũng tương tự 1 khi phân tích một hệ thống người phân tích cần phải phân tích sơ đô mạch của hệ thống, rồi chuyên nó thành các hàm Boolean, sau đó mới lập lại các chức năng, hoạt động của hệ thống Tất cả các bước nói trên hoàn toàn phai thực hiện thủ công không có bất kỳ sự trợ giúp nào của máy tính
Người thiết kế chỉ có thể SỬ dụng máy tính làm công cụ hỗ trợ trong viỆc vẽ so đồ
mạch của hệ thống và chuyển từ sơ đồ mạch sang công cụ tông hợp mạch vật lý dùng công cụ Synthesis Một nhược điểm khác nữa của phương pháp thiết kế truyền thống
là sự giới hạn về độ phức tạp của hệ thống được thiết kế -Phương pháp dùng hàm Boolean chỉ có thể dùng để thiết kế hệ thông lớn nhất biểu diễn bởi vài trăm hàm Còn phương pháp dựa trên sơ đồ chỉ có thể dùng để thiết kế hệ thống lớn nhất chứa khoảng vài nghìn phần tử
Phương pháp thiết kế, thử nghiệm, phân tích các hệ thống SỐ SỬ r dung cac ngôn
ngữ mô tả phần cứng nổi bật lên với các ưu điểm hơn hẳn và sẽ dần thay thế các
phương pháp truyền thống Sự ra đời của ngôn ngữ mô phòng, phần cứng đã giải
quyết được rất nhiều nhược điểm lớn của các phương pháp thiết kế trước đây: nếu các phương pháp cũ đòi hỏi phải chuyên đổi từ mô tả hệ thống (các chỉ tiêu về chức năng)
sang tập hợp các hàm logic bằng tay thì bước chuyển đó hoàn toàn không cần thiết khi ding VHDL
Việc tìm hiểu, nắm bắt các công nghệ hiện đại là một yêu cầu quyết định đối với sinh viên nhằm chủ động bắt kịp và làm chủ công nghệ hiện đại trên thế giới nhất
là trong giai đoạn đất Nước đang trong xu thế hội nhập cùng thế giới, chính vì vậy em
đã chọn để tài nghiên cứu về ngôn ngữ mô tả phần cứng VHDL không nằm ngoài
mục đích trên
Trang 3
TÓM TẮT ĐỀ TÀI
1 Mục đích đề tài:
Ưng dụng VHDL và công cụ tổng hợp, mô phỏng Quartus II thông qua vi mạch
lập trình số FPGA của Altera Ứng dụng trong các thiết kế mạch số cơ bản và xử lý tín hiệu số ( lọc FIR)
Do yêu cầu của đề tài là “ ứng dụng VHDL trong xử lý tín hiệu số” nên trong quá trình: thực hiện để tài tập trung vào các nội dung: tim hiểu ngôn ngữ phần cứng
trong đó tập trung vào ngôn ngữ VHDL, tìm hiểu phần mềm Quartus II, phần mềm hỗ
trợ ngôn ngữ mô tả phần cứng, thực hiện một Project, chạy kiểm tra và mô phỏng
hoạt động của một mạch điện
.Nghiên cứu về xử lý tín hiệu số, các loại tín hiệu, các hệ thống số cơ bản Các loại mạch lọc, thiết kế các mach loc FIR
3 - — Để tài bao gồm 5 chương:
- Chương I: tìm hiểu về ngôn ngữ mô tả phần cứng VHDL, sự khác biệt cơ bản _ của VHDL với các loại ngôn ngữ mô tả phần cứng khác Tìm hiểu cấu trúc chương trình VHDL và tập lệnh
- Chương II: tim hiéu vé phần mềm nhỗ trợ ngôn ngữ mô tả phần cứng Quartus II
Thực hiện một Project sử dụng VHDL, chạy kiểm tra và thực hiện mô phỏng một
thiết kế
- Chương II: Tìm hiểu về xử lý tín hiệu số Tìm hiểu các định nghĩa cơ bản, một
hệ thống xử lý tín hiệu số cơ bản Tìm hiểu lọc FIR
- Chương IV: tìm hiểu về Board mạch Apex DSP Tập trung vào cách thực hiện chương trình đã được biên dịch
- Chương V: thực hiện các thiết kế mạch số cơ bản sử dụng ngôn ngữ VHDL: mạch dồn kênh, mạch mã hoá, mạch đếm v.v Thực hiện thiết kế mạch lọc thông thấp FIR
4.” Kết quả đạt được: để tài đã hoàn thành những nhiệm vụ sau:
-_~_ Tìm hiểu về ngôn ngữ VHDL,
- Tìm hiểu phần mềm Quartus II của Altera
- Tìm hiểu về KIT Apex DSP Development của Altera |
_- Ứng dụng VHDL trong thiết kế mạch số cơ bản và xử lý tín hiệu số.
Trang 4
MỤC LỤC
NỘI DUNG
_ Chương ï: NGÔN NGỮ VHDL (Very High Description Language)
Phần A: Giới thiệu chung
Các lệnh đồng thời Phép gán tín hiệu
Bản sao hợp phần Lệnh khối
10 Gọi thủ tục đồng thời
11.Lệnh GENERATE
12 Sự tương thích chung GENERIC
ChươngI: GIGI THIỆU PHẦN MỀM QUARTUS H:
Trang 5TÌM HIỂU VỀ DSP ( Digital Signal Processing)
Phan A: Mét số khái niệm cơ bản
Biến đổi A/D
Lấy mẫu và giữ mẫu
.Lượng tử hóa và mã hoá
Biến đổi D/A
Hiện tượng Aliasing
Định lý lấy mẫu
Phan B: Tìm hiểu về ễ lọc số và thiết kế bộ lọc FIR
L Giới thiệu mạch lọc số
II Ưu điểm so với mạch lọc tương tự
Il Loc FIR:
1
2
Thiết kế mạh lọc Fir bằng phương pháp cửa sổ _
Thiết kế mạh lọc Fir bằng phương pháp lấy mẫu trong miền tần số
._ Thiết kế mạh lọc Fir bằng phương pháp lặp |
Trang 6Chương IV: Tìm hiểu về bo mạch thí nghiệm Apex DSP Development
Các bộ chuyển đổi A/D
Các bộ chuyển đổi D/A
- Các bộ khuếch đại điện áp
Clocks và phân phối clock
Bộ nhớ Nguồn cung, cấp
Giao tiếp nối tiếp
10 Giao tiếp số
11.Công tắc chuyển mạchngõ vào _
12 Giao tiếp bộ phân tích logic _
IV Điều chỉnh các thông số của mạch lọc thông thấp có 117
Il | Mach dén 4 kénh sang 1
IH Mach so sanh 4 bit
IV Mạch giải mã 2 đường sang 4 đường
V Mạch giải mã từ mã BCD sang mã Led 7 doan
VI Machchot dữ liệu
_ VII Mạch đếm
1 Mạch đếm lên
2 Mạch đếm lên đếm xuống
3 Mạch đếm lên, đếm xuống
4 Mach đếm lên đếm xuống hiển thị ra Led 7 đọan | - 132
Phin B: Ung dụng VHDL trong xử lý tín hiệu số: thực hiện mạch lọc FIR | 133
Kết luận và định hướng phát triển TS |
Trang 7142-CHƯƠNG I: NGÔN NGỮ VHDL (VERY HIGH SPEED INTEGARTED CIRCUIT DESCRIPTION LANGUAGE)
PHAN A: GIGI THIEU CHUNG
L ĐẶT VẤN ĐỀ:
Ngày nay ngành công nghệ chế tạo phần cứng luôn có những đột phá không ngừng Từ các mạch điện đơn giản đến các mạch số, mạch tích hợp, kiến trúc mạch trở nên ngày một phức tạp hơn Nhờ những | ưu điểm hơn hắn so với các phương pháp
phân tích, mô hình hoá, thiết kế mạch số kiểu truyền thống mà phương pháp sử dụng các ngôn ngữ mô phỏng phần cứng (HDL-Hard ware Description Languages ) đang
trở thành một phương pháp thiết kế các hệ thống điện tử số phổ biến trên toàn thé
giới Trong khuôn khổ phạm vi của đề tài chỉ xin giới thiệu một loại ngôn ngữ mô
phỏng phân cứng đó là VHDL (Very high speed intergrated circuit Hardware
Description Language), loại ngôn ngữ chủ yêu được sử dụng để mô phỏng phần cứng trong công nghệ CPLD, FPGA, ASIC
U NHOUNG UU DIEM CUA PHUONG PHAP THIET KE DUA TREN NGON NGU MO TA PHAN CUNG:
Các mạch tích hợp hiện đại ngày càng thực hiện được nhiều chức năng do đó
mà vấn đề thiết kế mạch càng trở nên phức tạp Những phương pháp truyền thông như
dùng phương pháp tối thiêu hoá hàm Boolean hay dùng sơ đồ các phần tử không còn đáp ứng được các yêu cầu đặt ra khi thiết kế Nhược điểm lớn nhất của các phương
pháp này là chúng chỉ mô tả được hệ thống dưới dạng mạng nổi các phân tử với nhau
Người thiết kế cân phải di qua hai bước thực hiện hoàn toàn thủ công: đó là chuyền từ các yêu cầu về chức năng của hệ thống sang biểu diễn theo dạng hàm Boolean, sau các bước tối thiểu hoá hàm này ta lại phải chuyên từ hàm Boolean sang sơ đồ mạch
của hệ thống Cũng tương tự khi phân tích một hệ thống người phân tích cần phải
phân tích sơ đồ mạch của hệ thống, rồi chuyên nó thành các hàm Boolean, sau đó mới lập lại các chức năng, hoạt động của hệ thống Tắt cả các bước nói trên hoàn toàn phải
thực hiện thủ công không có bất kỳ sự trợ giúp nào của máy tính Người thiết kê chỉ
có thể sử dụng máy tính làm công cụ hỗ trợ trong việc vẽ sơ đồ mạch của hệ thống và
chuyên từ sơ đồ mạch sang công cụ tổng hợp mạch vật lý dùng công cụ Synthesis Một nhược điểm khác nữa của phương pháp thiết kế truyền thống là sự giới hạn về độ
phức tạp của hệ thống được thiết kế -Phương pháp dùng hàm Boolean chỉ có thể dùng
để thiết kế hệ thống lớn nhất biểu diễn bởi vài trăm hàm Còn phương pháp dựa trên
sơ đỗ chỉ có thể dùng dé thiết kế hệ thống lớn nhất chứa khoảng vài nghìn phần tử
Phương pháp thiết kế, thử nghiệm, phân tích các hệ thống số sử dụng các ngôn ngữ mô tả phan cứng nổi bật lên với các ưu điểm hơn han va sé dan thay thé cac phương pháp truyền thống Sự ra đời của ngôn ngữ mô phỏng phần cứng đã giải quyết
SVTH: Lưu Phước Duy Phương Trang 1
Trang 8Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
được rất nhiều nhược điểm lớn của các phương pháp thiết kế trước đây: Nếu các phương pháp cũ đòi hỏi phải chuyển đổi từ mô tả hệ thống (các chỉ tiêu vê chức năng)
sang tập hợp các hàm logic bằng tay thì bước chuyển đó hoàn toàn không cần thiết
khi dùng HDL Hầu hết các công cụ thiết kế đùng ngôn ngữ mô phỏng phan cung x déu cho phép sử dụng biểu đồ trạng thái( finite-state- machine) cho các hệ thông tuân tự
cũng như cho phép sử dụng bảng chân lý cho hệ thống tổng hợp Việc chuyên đổi từ các biểu đồ trạng thái và bảng chân lý sang mã ngôn ngữ mô phỏng phần cứng được
thực hiện hoàn toàn tự động Ngôn ngữ mô phỏng phần cứng được dùng nhiều để thiết kế cho các thiết bị logic lập trình được (PLD- -Programmable Logic Device) từ
loại đơn giản đến các loại phức tạp như ma trận công lập trình được (Field
Programmable Gate Array)
Nhờ tính dễ kiểm tra thử nghiệm hệ thống trong suốt quá trình thiết kế mà -
người thiết kế có thể dễ dàng phát hiện các lỗi thiệt kế ngay từ những giai đoạn đầu, - giai đoạn chưa đưa vào sản xuất thử, do đó tiết kiệm được lượng chỉ phí đáng kê bởi
từ ý thiết kế đến tạo ra sản phẩm đúng như mong muốn là một việc rất khó tránh khỏi
những khó khăn, thất bại
PHAN B:NGÔN NGỮ VHDL,
I GIỚITHIỆU:
VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là
một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC ( Very High Speeditergrated Circuit) của bộ quôc phòng Mỹ Mục tiêu của việc phát
trién VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các
- hệ thông đó vào ứng dụng trong thực tế Ngôn ngữ VHDL được ba công ty
1983 Phiên bản đầu tiên được công bố vào tháng 8-1985 Sau đó VHDL được đề xuất
dé tổ chức IEEE xem xét thành một tiêu chudn chung Nam 1987 da dua ra tiéu chuan
về VHDL( tiêu chuẩn IEEE-1076-1987)
VHDL được phát triển để giải quyết các khó khăn trong việc phát: triển, thay đổi và lập tài liệu cho các hệ thống số Như ta đã biết, một hệ thống số có rất nhiều tài
liệu mô tả Để có thể vận hành bảo trì sửa chữa một hệ thông ta cân tìm hiểu tài liệu
đó kỹ lưỡng Với một ngôn ngữ mô phỏng phân cứng tốt việc xem xét các tài liệu mô
tả trở nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng hoạt động của hệ thống Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động
Trang 9
phỏng phần cứng đó được các nhà cung cấp thiết bị phát triển, nên mang các đặc trưng găn với các thiết bị của nhà cung cấp đó và thuộc sở hữu của nhà cung cấp
Trong khi đó, VHDL được phát triển như một ngôn ngữ độc lập không gắn với
bat ky mot phuong phap thiết kế, bộ mô phỏng hay công nghệ phần cứng nào Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi vẫn sử dụng một t ngôn ngữ duy nhất
I UU DIEM CUA VHDL SO VỚI MỘT số NGÔN NGỮ MÔ TẢ | PHAN CUNG KHAC:
1 ‘Tinh công cộng
VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một
tiêu chuẩn của IEEE, VHDL không thuộc sở hữu của bat ky cá nhân hay tô chức nào
Do đó VHDL được hỗ trợ của nhiều nhà sản xuất thiết bị cũng, như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống Đây là một ưu điểm nỗi bật của VHDL, giúp , VHDL tro nén ngay cang phé biến
2 Khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế:
VHDL cho phép thiết kế băng nhiều phương pháp như phương pháp thiết kế từ
trên xuống, hay từ dưới lên dựa vào các thư viện có săn VHDL cũng hỗ trợ cho nhiều loại công nghệ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ,
sử dụng mạ trận lập trình được hay sử dụng mảng logic ngầu nhiên Như vậy VHDL
có thé phục vụ tốt cho nhiều mục đích thiết kế khác nhau, từ việc thiết kế các phần tử phổ biến đến việc thiết kế các IC ứng dụng đặc biệt (Application Specified IC)
3 Độc lập với công nghệ
VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô ta hệ thống dùng VHDL thiết kế ở mức công có thể được chuyên thành các bản: tông hợp
mạch khác nhau tuỳ thuộc vào công nghệ chế tạo phần cứng nào được sử dụng (dùng
_ CMOS, nMOS, hay GaAs) Đây cũng la mét uu diém quan trong cla VHDL nó cho
phép người thiết kế không cần quan tâm đến công nghệ phần cứng khi thiết kế hệ
thống, như thế khi có một công nghệ chế tạo phần cứng mới ra đời nó có thể được áp đụng ngay cho các hệ thống đã thiết kế
4, Khả năng mô tả mở rộng
VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số (hộp đen)
cho đến mức cổng VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức Như thế ta có thê
mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả ở mức cao và các hệ
con được mô tả chỉ tiết
SVTH: Lưu Phước Duy Phương Trang 3
Trang 10
Chương I: Ngôn ngữ VHDL, Luận văn tốt nghiệp
Ss: Khả năng trao dỗi kết quả
‘Vi VHDL 1a mét tiêu chuẩn được chấp nhận, nên một mô ô hình VHDL có thể chạy trên mọi bộ mô phỏng đáp ứng được tiêu chuẩn VHDL-các kết quả mô tả hệ thống có thé được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo chuẩn VHDL Cũng như, một nhóm thiết kế có thê trao đôi mô
tả mức cao của các hệ thống con trong một hệ thống: trong khi các hệ con đó được thiết kế độc lập
6 Khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế
'VHDL được phát triển như một ngôn ngữ lập trình bac cao, vi vậy nó có thê sử
dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chi sẻ thiết kế VHDL cũng cho phép dùng lại các phần đã có sẵn
Trên đây ta đã xem xét một số đặc điểm của ngôn ngữ VHDL, sau u đây ta sẽ đi sâu vào xem xét một số khái niệm thiết kế cơ bản trong VHDL
II CÁC ĐẶC ĐIỂM CHÍNH CUA NGON NGU VHDL:
1 Đặ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
2 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 va quan ly 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 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ế
3 Có thư viện hỗ trợ:
Ngôn ngữ VHDL cung cấp cơ chế để duy cập tới nhiều thư viện khác nhau, thư viện không chỉ chứa đặc tả giao điệ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 nay, 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
Trang 11
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
-4 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ả chỉ 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 caqc _ 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ó
được phối hợp tốt hơn
5 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 tinh tải, và môi trường hoạt động của thiết kế
6 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ư: bit, boolean, _ integer, floating point, kiểu liệt kê, kiểu dãy,kiểu 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 nghĩa
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
7 Sử dụng các chương 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ữ VHSL 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
§ Đ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 bộ 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 để 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
SVTH: Lưu Phước Duy Phương ' Trang 5
Trang 12Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
9 Đặ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
IV CẤU TRÚC MỘT CHƯƠNG TRÌNH SỬ DỤNG NGÔN NGỮ VHDL:
Một thiết kế dùng ngôn ngữ VHDL thông thường bao gồm những thành
ARCHITECTURE (Bắt buộc): Mô tả kiến trúc
CONFIGURATIONS (Tuỳ chọn): Mô tả liên kết các hợp phần tới
thực thể
Trong các thành phần trén thi: ENTITY va ARCHITECTURE 1a 2 thanh
phần bắt buộc phải có trong tất cả các thiết kế PACKAGE và
CONFIGURATIONS 1a 2 thanh phan tuỳ chọn và được sử dụng trong những thiết
kế phức tạp |
1 PACKAGE (Khối):
Package là một vùng lưu trữ các dữ liệu để dùng chung cho các Entity
M6 tả dữ liệu bên trong một package cho phép được tham khảo bởi một entty -
- khác Vì vậy dữ liệu có thể được dùng chung
Một package bao gồm 2 phần: phần mô tả định nghĩa giao diện cho package, phan
ấn định các hoạt động cụ thể của package
“ Cu pháp khai báo khối được xác định là:
PACKAGE example_arithmetic IS
các khai báo khối có thể chứa các khai báo ssau:
- Subprogram declaration
- Type, subtybe declaration
- Signal declaration creates a global signal
Trang 13- Use clause
END example_ arithmetic;
4 Tt cd di tudng khai bdo trong package c6 thé dudc truy xuat béi bat ky
Std_logic_arith: là thư viện chứa tập các phép toán và hàm
2 ENTITY (thitc thé):
Khai báo thực thể trong VHDL là câu lệnh định nghĩa các chỉ tiêu phía ngoài
của một phân tử hay một hệ thống Các thông tin có trong phân khai báo thực thê cho
phép kết nối phần tử (hệ thống) mà thực thê đó đại diện với các phần tử (hệ thống)
khác Thực chất việc khai báo thực thê chính là khai báo giao diện của hệ thống với bên ngoài Hoạt động thực chất của hệ thống không được mô tả trong khai báo thực
thê
Lưu ý là trong khai báo ENTITY, tên của file lưu trữ phải trùng với tên theo
sau của từ khoá entity
Vỉ dụ: mô tả khai báo ENTITY của một cổng NAND như sau:
Trang 14Chương I: Ngôn ngữ VHDL _ Luận văn tốt nghiệp
Câu lệnh LIBRARY IEEE va USE IEEE std _logic_1164.ALL cho phép
ENITY sử dụng các định nghĩa trong thư viện về các tiêu chuẩn cua IEEE Khai bao
thực thể bao gồm tên của thực thê (NAND) và một tập các công va phan chung Trong đó phần chung GENERIC là các hằng số được truyền cho phần tử (hệ thống) Phần chung có thể coi là các tham số định trước của phần tử, chăng hạn như độ trễ Các cổng là phần giao diện vào ra của phần tử Các công có thé tuong ứng với các -
chan IC, hay cac đâu nỗi trên bảng mạch Các công được khai báo là công vào, công
ra, công hai chiều hay bộ đệm
Trong khai báo ENTITY có 4 kiểu khai báo tín hiệu vào ra:
> _IN: mô tả các ngõ vào entity Kiểu IN thì được sử dụng cho các ngõ
vào clock, các ngõ vào điều khiển
.> OUT: mô tả dòng dữ liệu dữ liéu di ra khdi entity, entity sé không
thể đọc các tín hiệu này, kiểu OUT chỉ được sử dụng khi tín hiệu không được sử dụng bởi bất kỳ kiểu nào trong entity
> BUFFER: kiéu tin hiéu này mô tả dòng dữ liệu đi ra khỏi entity, nhung entity có thể đọc những tín hiệu này (mục đích đọc lại tín hiệu ngõ ra ở bên trong của cấu trúc) Tuy nhiên, tín hiệu sẽ không thể diéu khiển từ ngõ ra của entity, vì vậy nó không thể được sử dụng
— cho các dữ kiệu ngõ vào
> INOUT: kiểu tín hiệu này cho phép tín hiệu có thể có hai kiểu: vào
và ra, khi khai báo tín hiệu theo kiểu INOUT thì tín hiệu có thể được điều khiển từ ngõ ra của entity Kiểu tín hiệu này chỉ nên được sử - dụng khi cần thiết ( ví dụ như bus dữ kiện 3 trạng thái) ,, và khi sử dụng kiểu tín hiệu này thì mã của chương trình sẽ tở nên khó hiểu hơn đối với người thiết kế _
Loại tín hiệu cũng phải được mô tả trong khai bao PORT, loai tin hiéu sé
mô tả các giá trị mà tín hiệu đó có thể được ấn định, ngoài ra có thể mô tả một vector những tín hiệu có cùng loại
3 ARCHITECTURE (Mô tả cấu trúc):
Mỗi một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tương
ứng Trong ngôn ngữ VHDL cho phép tạo hơn 1 kiến trúc cho một ENTITY nhung
chỉ một trong số đó có khả năng xuất hiện trong mã VHDL Phần khai báo kiến trúc có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong
hệ thống hay các hàm, thủ tục mô tả hoạt động của hệ thống Nói cách khác
_ ACHITECTURE mô tả mối liên hệ giữa tín hiệu ngõ vào và tín hiệu ngõ ra (bao gồm cả những tín hiệu BUFFER) ARCHITECTURE cé 3 dang m6 ta:
Trang 15
tả cấu trúc (Structure)
tả dòng dữ liệu ( Data flow)
tả hành vi (Behavioral)
3.1 Mô tả ARCHITECTURE dưới dạng cẩu trúc:
Mô tả dưới dạng cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm
_ nhiều cấp cấu trúc bắt đầu từ một cổng logic đơn giản đến việc xây dựng mô tả cho một hệ thống hoàn thiện Thực chất của việc mô tả theo mô hình cầu trúc là
mô tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó Ví dụ; mô tả cấu trúc của một Flip Flop RS gồm 2 cổng NAND, ta có thể mô tả cấu trúc, mối liên hệ giữa các phần tử bên trong của từng cổng sau đó mô tả liên kết
| giữa 2 cổng NAND tạo thành FlipFlop RS
| -Ví dụ: mô tả cấu trúc chương trình mô tả bộ cộng:
| - ENTITY half_adder IS
| SUM,CARRY: OUT BIT);
X1: XOR2 port map(A,B,SUM);
Al: AND2 port map(A,B,CARRY), END HA_STRUCTURE;
3.2 Mé ta ARCHITECTURE dudi dang dong dit ligu (Data Flow):
Mô tả Architecture dưới dang dong dif liéu (data flow)
Vi dụ: chương trình bộ cộng trên sẽ có dạng:
_ SVTH: Lưu Phước Duy Phương - — Trang9
Trang 16Chương I: Ngôn ngữ VHDL _ Luận văn tốt nghiệp
ENTITY hafl_adder IS
PORT (A,B: IN BIT;
SUM,CARRY: OUT BIT):
END half_adder;
ARCHITECTURE HA_STRUCTURE OF half_adder IS
SUM<=A xor B; © CARRY<= A and B;
END HA_STRUCTURE;
Mô hình dòng đữ liệu sử dụng phát biểu gán tín hiệu đồng thời, ký hiệu <= chỉ được gán cho tín hiệu Phép gán được thực hiện khi có 1 sự kiện tín hiệu của
biểu thức bên phải
3.3 Mô tả ARCHITECTURE dưới dạng hành vi:
Mô tả ARCHITECTURE dưới dạng hành vi mô tả các hoạt động của hệ
thống (hệ thống đáp ứng các tín hiệu vào như thế nào và đưa ra kết quả gì ở đầu ra) dưới dạng ngôn ngữ lập trình bậc cao Các câu lệnh đó có thể là: PROCESS,
WAIT, IF, CASE, FOR, LOOP
Vi du: M6 ta ARCHITECTURE dưới dạng hành vi của một cổng NAND
như sau:
ARCHITECTURE behaviour OF NAND IS
| BEGIN ˆ C<= NOT (a AND b) AFTER delay;
Ví dụ: chương trình bộ cộng dưới dạng hành vi trên sẽ có dạng:
ENTITY half_adder IS
PORT (A,B: IN BIT;
SUM, CARRY: OUT BIT);
Trang 17Process là khối cơ bản của việc mô tả theo hoạt động Process được xét đến
như là một chuỗi các hành động đơn trong suốt quá trình dịch
Cấu trúc tổng quát:
SVTH: Lưu Phước Duy Phương : | Trang 11
Trang 18Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
Trong đó các thành phần đặt trong dấu [ ] thì có thể có hoặc không
- Sensitivity_list: danh s4ch cdc yéu té kích thích hoạt động
3.4 Mô tả ARCHITECTURE dưới dạng hỗn hop (Mixed style):
Mô tả Architecture dưới dạng hỗn hợp (mixed style): có thể trộn lẫn 3 kiểu
trong một Architecture ˆ_
Ví dụ: mô tả mạch cộng toàn phan (FULL_ADDER
_ ENTITY FULL_ADDER IS
_ PORT (A,B,CIN: IN BIT;
SUM,COUNT: OUT BIT);
Configuration dùng để liên kết các hợp phần tới Entity Configuration ban -
đầu có thể được ấn định tới rất nhiều Architecture trong một entity
SVTH: Lưu Phước Duy Phương _ Trang 12
Trang 19Định cấu hình cho phép mô phỏng các thiết kế ở thh phần con, dễ dàng
kiểm tra được thiết kế hơn một chương trình lớn
-Một cấu hình được dùng để nối từng cặp như sau:
> Một thân Architecture tới khai báo entity của nó
»> Một Component với một entty
Ví dụ: Entity FULL_ADDER ở trên có thể tách ra làm 3 Architecture_body: |
FA_BEHAVIOR FA_STRUCTURE FA_MIXED Một Architecture bất kỳ có thể được chọn bằng cách đặc tả một Configuration thich hợp
Library HS_LIB,CMOS_LIB;
ENTITY FULL_ADDER IS PORT (A,B,CIN: IN BIT;
SUM,COUNT: OUT BIT);
Trang 20Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
liên kết thực thể với nhiều đối tượng của một thành phần
For A3: AND2
PORT MAP (HS_B=> AI, HS_Z=>Z; Hồ ARP AO)
End for;
liên kết thực thể với các đối tượng đơn của một thành phần
For all: OR2
Use entity CMOS_LIB OR2CMOS(OR2STR);
‘End for;
liên kết thực thể với tất cả các đối tượng của thành phần
OR2
For others: AND2
Use entity WORK.A_GATE(A_GATE_BODY), PORT MAP(AO,/ A1,Z);
End for;
liên kết thực thể vớo tất cả các đối tượng khôn được liên
X1: XOR2 port map(S1,Cin,SUM);
A1: AND2 port map(S2,A,B);
A2: AND2 port map(S3,B,Cin);
A3: AND2 port map(S4,A,Cin);
O1: OR2 port map(S2,S3,S5);
O2: OR2 port map(S3,B,Cin);
NAND_GATE port map(S4,S5 ;COUNT),
Trang 21> Đặc tả thứ nhất chỉ rằng đối tượng có nhãn XI và X2 của component
XOR2x liên kết với entity bởi cặp entity-architecture XOR2 và XOR2BEH có san trong thu vién WORK
> Đặc tả thứ hai liên kết đối tượng component AND2 có nhãn A3 đến entity bởi cặp entity-architecture AND2HS và AND2STR đã có sẵn trong thư viện thiết
kế HS_LIB Anh xạ của cổng thành phần (AND2) và các cổng thực thể
(AND2HS) được thiết kế theo tên (name association)
> Pic ta thi ba chi rằng tất cả các đối tượng của component.OR2 được liên © kết với entity bởi cặp entity — architecture có sẵn trong thư viện thiết kế CMOS_LIB
> Đặc tả cuối cùng chỉ rằng tất cả các đối tượng không liên kết (unbound) cia component AND2, đối tượng A1 và A2được liên kết tới entity khác là: A_GATE _ có Architecture A_GATE_BODY, kiế n trúc này có sẵn trong thư viện WORK ˆ
Trong ví dụ này đã chỉ ra các đối tượng của cùng một thành phần |
(component) có thể được liên kết (bound) véi các thực thể khác nhau
Type STD_ULOGIC is (‘U’,’X’,’0’,"1",’2’,’ W’,’L’,’H’,’_’); :
¬- std_ uplogic 14 1 kiéu liệt kê bao gồm 9 giá trị được khai báo là U<X<0<1<Z<W<L<H<_
Signal S: STD_LOGIC;
‘Type STATE_TYPE is (HALT, READY, RUN ERROR):
HALT<READY<RUN<ERROR
Variable STATE: STATE_TYPE;
Type CODE_TYUPE is (NUL,’0’,’1”);
Function CODE (C: IN INTEGER) return CODE_TYPE;
Kiểu STD_UPLOGIC và STSTE_TYPE là 2 kiểu liệt kê; tuy nhiên mức độ
trừu tượng của STATE_TYPE cao hơn của STD_UPLOGIC
Trật tự các giá trị xuất hiện trong khai báo ligt kê định nghĩa thứ tự của chúng, giá
trị bên trái nhỏ hơn giá trị bên phải
SVTH: Lưu Phước Duy Phương Trang 15
Trang 22Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
s* Kiểu nguyên
Kiểu nguyên là 1 tập hợp các giá trị rơi vào vùng số nguyên được chỉ ra
Ví dụ:
Type BYTE_INT is range -128 to 127;
Type MY_INTEGER is range -2147483647 to 2147483647;
s* Kiểu dãy nhiều chiều
Kiểu dãy nhiều chiều được VHDL hỗ trợ để định nghĩa một tập chỉsơic
Tuy nhiên chỉ có dãy một chiều được công cụ tổng hợp cho phép Vậy phải khai báo hai dãy một chiểu thay vì một dãy hai chiều
Vi du:
Type WORD is array (31 downto 0) of BIT;
Type RAM is array (1023 downto 0) of WORD;
Thay vi:
‘Type OTHER_ RAM i is array (1023 downto 0, 31 downto 0) of BIT;
“> Kiéu ban ghi
Kiểu bản ghi định nghĩa tập các kiểu khác nhau Mỗi thành phần bản ghi được định vị bằng tên của nó, và có thể dịch bởi công cụ tổng hợp như là giá trị độ _ đời không đối hoặc được biến đổi trong vài trường hợp ( khái niệm bản ghi không ©
còn tôn tại nữa, địa chỉ thành phân được tính toán chỉ một lần và trở thành mã cố
định) ,
Vi du:
Architecture A of E is
Type CODE_TYPE is (NONE, DATA, STATMT),;
Type ITEM_TYPE is racord;
Trang 23%% Tiêu chuẩn IEEE
Khối STD_LOGIC_1164 định nghĩa các giá trị kiểu đa luận lý Khối này
được hổ trợ bởi tất cả công cụ tổng hợp
‘U’, Don’t care
*X’,’1’,’O’ 1a gia trị manh và trội hơn các giá trị yếu “W','L, HỆ và : chúng
lại trội hơn “Z°: “1”,°0° có thể hiểu như nối nguồn và nối đất -
Giá trị 'U' và °W' được gọi là giá trị gần luậnlý, chủ yếu có chức năng mô phỏng
và hiển nhiên không có ý nghĩa phần cứng Giá trị “U là chữ tận cùng bên trái
trong định nghĩa STD_ULOGIC liệt kê, và là giá trị mặc định cho các biến số hoặc
các tín hiệu ban đầu trước khi được gán các giá trị “X? và “W' biểu diễn trạng thái _
- mà bộ mô phỏng không thể xác định được “W' có ảnh hưởng it hơn có thể bị gán
đến “0,1 và 'X' -
Do các công cụ tổng hợp chưa thể phân biệt giữa các độ mạnh yếu, nên các
giá trị 'L và 'H' không có ngữ nghĩa tổng hợp chuẩn
*“Z* có thể được dùng trong mô phỏng như là kết quả khi không có bộ điều
khiển nào đang hoạt động Đối với tổng hợp phần cứng đặc biệt được ám chỉ khi -
gán ghép gán giá trị vô hướng “Z* được dùng, mục đích của phép gán là đặt đầu ra
2 CAC KIEU KHONG HO TRO:
Vài kiểu đữ liệu không được dùng cho mục đích tổng hợp (ví dụ tất cả kiểu
vật lý định nghĩa bởi người thiết kế không được hỗ trợ), kiểu vật lý định nghĩa
trước TIME không được hỗ trợ Ngay cả sự ràng buộc thời gian đối với tổng hợp
không được biểu diễn trong VHDL với các biểu thức thời gian Do đó mệnh để
after va reject khong dude dịch và không có công cụ tổng hợp nào có thể đảm bảo
rằng tín hiệu sẽ thay đổi sau một khoảng thời gian chính xác
Nếu các mệnh để này được sử dụng trong mô tả VHDL, công cụ tổng hợp
sẽ bỏ qua và kết quả phần cứng có thể mâu thuẫn với mô tả đầu vào Điều này nói
_ §VTH: Lưu Phước Duy Phương | Trang l7
Trang 24Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
rằng kiểu mẫu chính xác cho tổng hợp không dùng bất kỳ biểu thức thời gian nào, bao gồm lệnh biểu thức thời gian wait for Trong mô phỏng quá trình bị tạm ngưng trong thời gian định nghĩa bởi biểu thức for Trong suốt thời gian này, tất cả tín hiệu giữ các giá trị mới của chúng Trong miền tổng hớp không thể phỏng đoán phần cứng với các kết quả như vậy mà không cung cấp phần cứng ví nó quá phức tạp và quá đặc biệt ( như bộ định thời thời gian)
-3 CÁC KIỂU CON:
Các kiểu con rất hữu dụng cho tổng hợp Ở mỗi bước mô phỏng, các kiểu con _ cung cấp khả năng mạnh mẽ cho việc kiểm tra sử dụng kiểu Các kiểu con còn thừa hưởng tất cả toán tử định nghĩa từ các kiểu cơ bản của chúng
Ví dụ: chức năng thao tác trên kiểu BIT_VECTOR có thể được dùng với bất kỳ kiểu con của BIT_VECTOR dài bằng giá trị còn lại trong khoảng thích hợp
VI CÁC ĐỐI TƯỢNG TRONG VHDL:
1 HẰNG SỐ:
Các khai báo hằng số:
Constant constant_name: type_ name Ị: =value]
Ví dụ:
Constant rise_time : time:=10 ns;
Constant bus_width: integer: =8;
Vi du:
Type TAB? is array (BIT, BIT) of BIT;
Constant AND_TAB: TAB2:= (C0°,0°), Œ0°,1° i
Giá trị hằng số được tính toán chỉ một lần Quá trình tổng hớp chấp nhận hằng số của bất kỳ kiểu tổng hợp nào
Trong trường hợp khai báo như vậy không tạo ra bất kỳ phần cứng nào Nếu hằng số được dùng trong phép gán tín hiệu như các lệnh dưới đây thì phần cứng được suyra:
Ví dụ: phía bên phải của phép gán tín hiệu
Constant COD1: BIT_VECTOR: = X”EA”;
SVTH: Lưu Phước Duy Phương | : Trang 18
Trang 25Constant MASK: BIT_VECTOR:="01111111”;
Signal V, R, A: BIT_VECTOR (7 downto );
Begin
V<= COD1; R<=A and MASK;
Ví dụ: trong biểu thức lênh if hoặc case
_—— §=CSTI then
Case VALUE is
When CST_N =>
Ví dụ: trong lệnh đồng thời có điều kiện:
Z<= CST1 when A=’1’ else S when B= CST2 else CST3;
2 KHAI BAO BIEN VA HANG SO:
Variable variable_ name : type_name [:=value];
Vi du:
Variable CTRL_STATUS: BIT_ VECTOR (10 downto 0);
Ở đây biến CTRL_STATUS là một dãy có 11 phân tử, mỗi phần tử trong dãay có kiểu là BIT
If CLOCK =’ 1’ and CLOCK’ event then
Al:= DATA and K1;
A2:= DATA and K2;
Trang 26Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
End process;
End A;
Các biến số sử dụng trong ví dụ trên không tạo ra bất kỳ phần cứng nào
Thật ra quá trình tương đương có thể được cho mà không có bất kỳ biến nào, ở đó tất cả các biến được thay thế bởi các phương trình của chúng Chúng ta có thể viết
lại như sau:
Signal CLOCK : BIT;
khai báo tín hiệu CLOCK của kiểu BIT lấy giá trị 1, 0
‘Signal data_bus : BIT_VECTOR (0to7);
khai báo tín hiệu data_bus thuộc kiểu bit_vector có độ rộng 8 bit
3 CÁC GIÁ TRỊ KHỞI ĐỘNG :
Trong VHDL, có 3 loại giá trị ban đầu:
> Giá trị mặc định từ định nghĩa kiểu hay kiểu con
> Giá trị ban đầu khi đối tượng được khai báo
> Giá được gán khi sử dụng một phát biểu lúc bắt đầu quá trình
Trường hợp thứ nhất và thứ hai sẽ bị bỏ qua bởi côngcụ tổng hợp, nên có
thể phát sinh mâu thuẫn giữa hoạt động mô phỏngvà kết quả tổnghợp Do đó để
nghị phải khởi động một cách rõ ràng và có hệ thống các biến và tín hiệu với các
lệnh đặc biệt Điều này đạt đựơc trong phần mã tổng hợp phục vụ cho việc xử lý/
thiết lập lại và sự khởi động phải được trình bày trong phần này
Nếu cổng Out hoặc thôngsố Out của chương trình con có giá trị mặc định, chúng hoạt động giống như một giá trị khởi động cho tín hiệu hoặc biến và sẽ bị công cụ tổng hợp bỏ qua
SVTH: Lưu Phước Duy Phương Trang 20
Trang 27
4 CÁC TOÁN TỬ SỐ HỌC:
4.1 Tổng quát:
Toán tử logic và toán tử bit là một phần của toán tử số học VHDL định
nghĩa 7 loại toán tử Chúng được chỉ ra ở bảng dưới đây v với sự tăng dan mức ưu
tiên
Luận lý Or and nor nand xor xnor | Thấp nhất
Quan hé =/=>< >= <=
Mộtngôi _ +-
Nhân - * / mod rem
Hỗn hợp | ** abs not Cao nhất |
4.2 — Toán tử luận lý: ¬
Toán tử luận lý và toán tử NOT chấp nhận các toán' hạng có các kiểu BỊ,
BOOLEAN và VECTOR với kích thước giống nhau Một quy ước được chấp nhận rộng rãi cho giá trị BOOLEAN: TRUE tương đương với giá tri BIT ‘1’ va nguge
Toán tử NAND và NOR không kết hợp với nhau trong một cú pháp liên tục,
chúng phải được ngăn cách bằng dấu Q:
A and B nand C; trái luật
(A and B) nand C; đúng luật;
Signal S, X,Y : BIT_ VECTOR (1 downto 0);
Trang 28Chương I: Ngôn ngữ VHDL, Luận văn tốt nghiệp
và khác được định nghĩa rõ ràng cho các kiểu Kết quả là TRUE nếu hai toán hạng
có cùng giá trỊ
Các toán tử quan hệ được định nghỉa cho tất cả các kiểu vô hướng và dãy
một chiều Thứ tự của kiểu vô hướng được định nghĩa bởi khai báo của nó, kiểu
‘LEFT’ thap hdn kiéu ‘RIGHT’
-Đối với dãy một chiều, thứ tự bậc quan hệ của chúng được định nghĩa bởi bậc ngữ nghĩa
Ví dụ:
“QO” < “1” 1s true
“A” < “BC” — is true
“10” < “101” — is also true Toán tử quan hệ này không thể dùng để so sánh các vector bit mã hóa cic
giá trị liệt kê Toán tử này nếu thực hiện với khối số học thì kết quả của lệnh cuối cùng “10” < “101” sẽ được thôngdịch khác nhau đối với số không dấu hoặc số có dấu
44 Các toán tử cộng:
Toán tữ cộng và trừ được định nghĩa cho các toán hạng s số nguyên Tất cả các công cụ tổng hợp đều cài đặt các toán tử này và thường sử dụng với một số ràng buộc
Lưu ý, đôi khi dùng các dấu ngoặc đơn để nhóm một tập hợp các các cổng lại Nói cách hai biểu thức khác nhau chạy như nhau nhưng tạ tạo ra phầ cứng khác _ nhau
Ví đụ:
Architecture
-Signal A, B, C : BIT_VECTOR ( 2 downto 0);
Signal B, S, R : BIT_ VECTOR (0 to 5);
Signal D : BIT;
Begin -
A <=D & not D& D;
S<=S&B(0to2);
R <=C (1 downto 0) & “000” & D;
Các toán tử dịch chuyển hỗ trợ cho BIT_VECTOR Các toán tử dịch chuyển
và quay 1A sll, srl, sla, sra, tol va a rir
Trang 29đối với tất cả các kiểu số nguyên Đối với vài công cụ tổng hợp, nhiều chiến lược nhân được đề nghị để tạo ra phần cứng
“/” mod, và rem được hỗ trợ có hạn chế đối với các giá trị của toán hạng
vế phải, các công cụ tổng hợp đòi hỏi các giá trị này là dương và là lũy thừa của 2 Hơn nữa chúng thường là các hằng số toàn cục Kết quả phan cứng của toàn tử
này dựa trên các toán tử dịch bit
46 Cac todn tit t6 hop:
— Abs: giá trị tuyệt đối được hỗ trợ cho tất cả các giá trị số nguyên
Toán tử số mũ “**” được hỗ trợ với hạn chế toán hang t trái là hằng Số toàn cục,
gidtri của nó phải bằng 2
5s CÁC LỆNH TUẦN TỰ:
$1 Phép gán biến số:
Biến không dùng chung được khai báo trong quá trình hoặc trong phần khai
báo chương trình con
Phép gán biến được thực hiện bởi toán tử :=, thao tác này xảy ra ngay lập tức khi tính toán Do đó, giá trị của biến chỉ thay đổi bởi lệnh gán tiếp theo nếu giá
trị mới khác với giá trị cũ
SVTH: Lưu Phước Duy Phương _—_ Trang 23
Trang 30Chương I: Ngôn ngữ VHDL, Luận văn tốt nghiệp
Ví dụ: cách gán biến khác nhau
A:=0; gid tr] integer 0 được gán cho biến A
REC.FIELD := B; B được gán cho ban ghi FIELD cia REC
VECTOR := X “AA”; phép gán vector toàn cục
WBUS(1) := F(A) ; phép gán phần tử của vector
_WORD (3 to 4) := “10” phép gán một nhóm phần tử vector /
REC := (‘A’, 3, “10”) ; phép gán giá trị theo vi tri cla vector
REC := (LETTER=> ‘C’, FIELD => 3, BIT => “11”); phép gán với tên -
Hơn nữa, ở phần bên trái của lệnh gán, nhiễu biến số có thể gộP lại
ra một phần tử nhớ nếu thời điểm đồng bộ xảy ra trước khi chương trình con kết thúc ,
5.2 Phép gan tin higu:
— Mục đích của gán tín hiệu giống như phép gán biến Hiệu quả của _ phép
gán tín hiệu chỉ xảy ra sau lệnh đồng bộ ( lệnh wait) Điều này có hai kết quả: thứ nhất, giá trị tín hiệu không đổi giữa hai lệnh đồng bộ, thứ hai là sau lệnh đồng bộ tín hiêu lấy giá trị của phép gán cuối cùng Dạng gán tín hiệu được chấp nhận bởi các công cụ tổng hợp được biểu diễn đơn giản nhất:
Signal <= a_waveform_with_one_item_and_ without -delay_expression
5.3 Lệnh đồng bộ:
Trong VHDL lệnh duy nhất để đồng bộ là lênh wait Một qua trình phải chứa ít nhất một lệnh wait
Có hai cách dùng lệnh wait khác nhau là:
-> Đợi một sự kiện trên một tín hiệu tuỳ thuộc vào danh sách độ nhạy
rõ ràng Đây là cách để có được phần cứng tổ hợp Trong trường hợp
SVTH: Lưu Phước Duy Phương _ Trang 24
Trang 31này, lệnh wait này phải là độc nhất Danh sách độ nhạy của wait
phải bao gồm tất cả tín hiệu được đọc trong quá trình:
Vi dụ:
Process Begin
_ > Đợi một sự kiện xảy ra trên tín hiệu coi như là tín hiệu đồng hổ Tin
hiệu đông hổ phải được là duy nhất và các công cụ tổng hợp phát
hiện ra nó với sự giúp đỡ của việc phân tích cú pháp đặc biệt Đồng
hồ được xác định bởi các sự kiện và sường xung Như vậy, nếu mô tả
sử dụng lệnh wait để cảm ứng với sườn lên xung đồng hồ thì một
biến cố sườn lên sẽ gây ra quá trình hoạt động ví dụ lệnh wait có
điễu kiện sau đây ám chỉ một tín hiệu đồng hồ:
Wait until CLK='1’;
Nếu kiểu của tín hiệu đồng hồ khong | 14 BOOLEAN hặoc BIT, mà là kiểu
_ đa giá trị, thì để phù hợp với sự mô phỏng, điều kiện sau pảhi được thêm vào lệnh _
CLK’LAST_VALUE =’0’ Điều này xác định sườn lên hợp lệ cho
tổng hợp Điều kiện xung đồng hồ trở thành:
Ví dụ
Wait until CLK=’1’ and CLK’ LAST_VALUE =’0’;
Nếu lệnh wait rõ ràng, lệnh đồng bộ đựơc mô tả bởi một lệnh điều kiện if:
Process (S1, S2, S3, R1, R2, R3, R4)
SVTH: Lưu PhướcDuyPhươg _ _ — Trang25
Trang 32-Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
Trong lệnh case, mỗi nhánh có cùng cấp với nhau (lệnh if va lệnh elseif,
| mỗi nhánh được kiểm tra một cách tuân tự) Trong lệnh case, tất cả các gid t trị CÓ
| thể phải được đưa vào hết và chúng là duy nhất, không có tru tiên
| : Để nhóm lại tất cả các gid tri “don’t care”, ménh dé others có thể được sử _
| dụng Lưu ý, others không bao giờ nên dùng nếu tất cả giá trị đã được liệt kê trước
Vi dụ: thiết kế mạch sau
| Chèn hình vào
| , Type CODE_TYPE is (ADD, SUB, RST, INCX);
-_ Subtype WORD ¡s INTEGER range 0 to 3;
Signal CODE: CODE_TYPE;_
Trang 335.4.3 Tạo ra bộ nhớ:
Đôi khi một vài giá trị điều kiện khôn đúng, vì thế các giá trị có kết quả từ các điều kiện này ở trạng thái không đổi Trong trường hợp này, phải có phần tử nhớ Si
- Ví dụ
If CONDITION (11, 12, 13) then RESULT <= DATA(I, 1, 13);
End if;
Bởi chức năng CONDITION không luôn luôn trả về hằng số TRUE, nên
đôi khi RESULT sẽ khô ghtay đổi và giữ nguyên giá trị Với các dòng lệnh trên thi
loại phần tử nhớ được tạo ra sẽ phụ thuộc vào biểu diễn đồng bộ Phần tử nhớ cũng được ám chỉ nếu tín hiệu đầu ra không xuất hiện trong bất kỳ rẽ nhánh nào
có thể của chương trình
—— RESULT là tín hiệu được đọc ( phía bên phải của phép gán tín hiệu) và
- được viết ( phía bên trái của phép gán tín hiệu) Vì vậy, phần tử nhớ là cần thiết Nếu tín hiệu này phụ thuộc vào đanh sách, thì chỉ có mạch cài đặt được tạo ra
Ngược lại, nếu chỉ phụ thuộc vào các giá trị đầu vào ( 11, 12, 13) thì phần tử nhớ
mạch lật được tạo ra
RESULT <= DEFAULT_VALUE; default assignment
If CONDITION (11,12,13) then RESULT <= DATA(1,12,13, RESULT);
End if;
SVTH: Luu Phuéc Duy Phuong Trang 27
Trang 34Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
Phép gán tín hiệu đầu tiên này không được nhầm lẫn vơi giá trị ban đầu đã
Ví dụ: một rẽ nhánh else được tạo ra rõ ràng
If CONDITION (11,12,13) Then RESULT <=DATA(I1,12,13,RESULT);
Else RESULT <=DEFAULT_VALUE;
End if;
5.5 Lệnh lặp lại:
Trong VHDL có 2 loại lệnh lặp lại, vòng lặp for và vòng lặp while Vòng
lặp vô hạn loop end loop có thể được xem xét như một vòng lặp while với điều
kiện luôn luôn là TRUE "
— Lệnh lặp vòng for được trợ giúp bởi các công cụ tổng hợp khi các - giá trị biên là tĩnh (static) toàn cục Phép gán trong vòng lặp for được minh họa như sau:
5.6 — Gọi chương trình con:
Chương trình con là thủ tục, hoặc hàm Đây là cách mô tả các thuật toán độc lập, không có phân cấp trong chương trình con Tất cả các lệnh trong thân chương trình con là ngang nhau Phần cứng tạo ra luôn là mạch tổ hợp
Gọi thủ tục cũng tạo ra phân cứng tổ hợp nếu có các thông số IN và OUT
và nếu thân của thủ tục không có lệnh wait, và chỉ thao tác với các đối tượng hoặc các thông số cục bộ ( không có hiệu ứng lể) Trong các các trường hợp khác, các phần tử nhớ và điểu khiển tuần tự được tạo ra Do đó, các phần tử nhớ và tín hiệu đồng hồ phải được tạo ra tự động
6 LENH DONG THỜI:
“Tất cả các lệnh đồn thời được mô tả trong phần này phải Ở trong vùng lệnh của kiến trúc, lệnh khối hoặc lệnh phát sinh
6.1 'Lệnh quá trình và lệnh đồng bộ:
_ Từ lệnh quá trình đến phần cứng
Các lệnh quá trình là các cấu trúc VHDL cho kiểu hành vi mạnh nhất
Chúng cũng là cơ sở cho mọi lệnh đồng thời Khi viết một lệnh như vậy, cần thiết
phải có ý tưởng rõ ràng về phần cứng tương ứng của nó
SVTH: Lưu Phước Duy Phương | Trang 28
Trang 35Lệnh quá trình có tạo raphần tử bộ nhớ hay không? Nó là phần cứng tổ hợp hay đồng bộ? Những câu hỏi như vậy có thể được trả lời khi nhìn vào một số đặc điểm của lệnh quá trình Một lệnh quá trình bao gồm 3 phần: danh sách độ nhạy tuỳ chọn, phần khai báo cục bộ và phần lệnh tuần tự Mỗi phần phải đựơc tính _ toán khi thiết lập đặc tính (phân cứng tổ hợp hay đồng bộ) của quá trình
Danh sách độ nhạy:
Một quá trình vớ một danh sách độ nhạy rõ ràng tương đương với một quá trình với một lệnh đồng bộ đơn được đặt trước từ dành riêng end Quá trình đựơc hoạt động mỗi khi một biến cố xảy ra trên một tín hiệu của dạnh sách này Các quá trình như sau:
Process (A, B, C) - -sensitivity list of signals
trình với các điểm đa đồng bộ,nghĩa là nhiều lệnh đợi sẽ tạo ra bộ nhớ
Sự khai báo cục bộ:
Trong tất cả các khái báo có thể có bên trong phần khai báo quá trình, các
khai báo biến là cần thiết, chúng ta có thể bao hàm phần tử nhớ Thật ra, các biến
có thể sử dụng trong hai cách khác nhau:
> Giống như các biến “working”, chúng không tạo ra phần cứng nào: Process (A,B,C) - - no memorization for this and gate
Variable VAR: BIT; -
Trang 36Chương I: Ngôn ngữ VHDL Luận văn tốt nghiệp
- - before being read S<= A and VAR;
Ung dụng của biến đựơc chấp nhận bởi các công cụ tổng hợp và không có -
phần cứng tương ứng Trong trường hợp tổng quát thì giữa 2 lệnh đồng bộ, nếu một biến luôn đựơc gán trước khi được đọc, thì biến này không tạo ra bất kỳ phần
cứng nào
» Khi cất dữ liệu từ quá trình này đến quá trình khác, các biến ám chỉ
rõ ràng các phần tử nhớ đối với các bộ phần cứng tương ứng :
Process - - synchronuos finite state machine with two states
Type T_STATE is (STOP, GO);
Variable STATE: T_STATE;
Begin
Wait until CLK=’1’;
Case STATE is - - variable STATE is read
- - before being target of
assignment - when STOP => STATE:=GO;
when GO => STATE:= STOP; |
end case;
end process;
“Vi du nay chỉ ra rằng việc đọc các biến không có nghĩa là có nó trong phần
bên phải của phép gán Biểu thức case, điểu kiện if hoặc thông số in của thủ tục hoạc hàm là cách khác để đọc nó Vì thế, giữa hai lệnh đồng bộ, nếu một số biến được đọc ít nhất một lần trước khi đựơc gán thì biến này tạo ra phần tử nhớ
Trang 37thể tạo ra phần tử nhớ: ví dụ, mạch lật với các dòng mô tả dưới day | là pahn cứng tuần tự, phần tử nhớ được tạo ra chính là mạch lật
7 PHÉP GÁN TÍNH HIỆU:
71 Phép gán tín hiệu đơn giản:
Dạng đơn giản nhất của một phép gán tín hiệu đồng htời là , định nghĩa tín hiệu đíchnhận được các giá trị của tín hiệu nguồn mỗi lần một sự kiện xảy ra:
S<=A; - - S thì là một nối tới A bởi phần cứng
Z<= “1”; - - trong trường hợp này tín hiệu Z là một hằng số
Mặc dù phần cứng tổ hợp đường như được tạo ra một cách hệ thống bởi một
lệnh tín hiệu không điểu kiện,nó có thể phát sinh các vòng lặp phản hổi trong phần cứng, nhưng điều kiện này không phải lúc nào cũng đuợc dé nghị, À Một ví dụ đơn giản-về một phần tử nhớ như vậy được chỉ ra trong mã sau:
DATA <=R nand NDATA;
NDATA<=§ nand DATA;
'Nhiễu công cụ tổng hợp diễn giải mã này như là mạch tổ hợp chứ không là _ phần cứng bất đồng bộ Lệnh quá trình sử dụng với các lệnh đồng bộ đựơc để nghị mạnh : mẽ để tạo ra các bộ nhớ đồng bộ
_7.2 Các phép gán tín hiệu chọn lựa và có điều kiện: :
Hai phép gán tín hiệu đồng thời được định nghĩa cho mục đích có điều kiện
của tín hiệu; phép gán chọn lựa và có điểu kiện Cách tốt nhất để có khái niệm
kết quả phần cứng là quay lại các quá trình tương đương của các lệnh này Ta xem
xét một ví dụ sau:
S<=a when x=’1’ else B when Y="1’ else C
Nếu A, B, C, X, Y được định nghĩa như là các tín hiệu, quá trình tương
Trang 388 BANSAO HOP PHAN:
Mục đích của lệnh sao hợp phần là sử dụng một mẫu đã mô tả trước Đây |
là cách chính để xây dựng sự phân thứ bậc thiết kế Trước khi sao chép, hợp phần
-_ phải được khai báo cục bộ trong phần khai báo kiến trúc, hặoc riêng biệt trong một -
khối Sự khai báo hợp phần định nghĩa cách nối dây cục bộ, chúng có thể ít tổng
quát hơn so vớ sự khai báo thực thể Trong suốt giai đoạn cấu hình, một s6 tin hiệu có thể ở vế trái nếu chúng ở chế độ out hặoc in, hoặc bị bỏ qua nếu chúng ở chế độ in với giá trị mặc định
“Trong quá trình tổng hợp, bản sao hợp phần có thể được dịnh khác nhau Khi sử dụng lệnh riêng và đặc biệt của công cụ tổng hợp, một bản sao hợp phần
Architecture SYNTHESIZABLE of DRIVE is
Signal ORDER: ORDER_TYPE;
Signal CONTROL: BIT;
Signal DATA_IN, DATA_ OUT: BIT_VECTOR (1 to N);
Component CTRL
SVTH: Lưu Phước Duy Phương | : Trang 32
Trang 39
O: out BIT_VECTOR), End component;
Generic map(N);
Begn _
two component instanatiation statements
CONTROLER: CTRL port map (CONTROL, ORDER);
OPERATIVE_PART: OPRT port map (ORDER, DATA_IN);
Trang 40Chương I; Ngôn ngữ VHDL Luận văn tốt nghiệp
End block BLOCK_NAME;
Dưới một số điều kiện, một vài công cụ tổng hợp có thể dịch lệnh block như một cấp của tổng hợp Trong trường hợp này nhãn của lệnh khối được dùng như một thông số cho cấu trúc lệnh
Ưng dụng khác của lệnh block là định nghĩa phần lệnh đồng thời được điều khiển bởi một tín hiệu đồng hỗ Trong trường hợp này phần bảo vệ được yêu cầu
để mô tả chính xác tín hiệu đồng hồ và điều kiện liên quan tới nó ( cạnh: xung lên hoặc xuống) Hơn nữa, phép gán tín hiệu đồng thời được bảo vệ và hoạt động bởi
biểu thức bảo vệ Điều này được chỉ ra trong ví dụ kế tiếp, ở đó nó được giả thiết rằng tín n hiệu CLK là đa giá trị
B: block (not CLK’ state and CLK=’0’ and CLK’ last_value=’ 1’)
Ung dung thứ 3 của lệnh block được dùng trong mạch 3 trang thái Liên kết
với lệnh không nối (disconnect) và tín hiệu resolved, phép gán bảo vệ có thể đựơc
định nghĩa hành vi 3 trạng thái Khi điểu kiện bảo vệ không thỏa, tín hiệu đích không được tại thời điểm điều kiện bảo vệ không thỏa Đây là hành vi mặc định
của mệnh để không nối Sự không nối được cho phép nếu kiểu tín hiệu đích được resolved Đối với tổng hợp, vấn để được giải quyết là giá trị cuối cùng khi tất cả tín hiệu nguồn không đựơc nối Giá trị này phụ thuộc vào hai yếu tố: kết quả của hàm resolved khi trả về (khi độ dài của vector đầu vào là null) và loại tin resolved (bus hoặc register) Tóm tắt hành vi của loại tín hiệu này như sau:
> Kết quả cuối cùng là giá trị được trả về bởi hàm resolved với vector đầu vào null nếu kiểu tín hiệu đích là bus
> Kết quả cuối cùng là giá trị trước nếu chỉ có một tín hiệu nguồn và kiểu của tín hiệu nguồn là register
_ §VTH: Lưu Phước Duy Phương | ‘Trang 34