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

Ứng dụng VHDL trong xử lý tín hiệu số

150 767 2
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Ứng Dụng Vhdl Trong Xử Lý Tín Hiệu Số
Thể loại Luận Văn
Định dạng
Số trang 150
Dung lượng 8,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứng dụng VHDL trong xử lý tín hiệu số

Trang 1

UNG 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 5

TÌ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 6

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

142-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 8

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

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

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

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

Process 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 18

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

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

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

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

Constant 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 26

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

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

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

nà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 33

5.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 34

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

Lệ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 36

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

thể 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 38

8 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 40

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

Ngày đăng: 26/04/2013, 11:23

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w