1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx

130 1,3K 17
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 đề Thiết kế số dùng ngôn ngữ mô tả phần cứng
Trường học Trường Đại Học Kinh Tế - Kỹ Thuật Công Nghiệp
Chuyên ngành Công nghệ Điện tử Viễn thông
Thể loại Bài giảng
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 130
Dung lượng 2 MB

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

Nội dung

VHDL có một số ưu điểmhơn so các ngôn ngữ mô phỏng phần cứng khác hẳn là: - Khả năng được hỗ trợ bởi nhiều công nghệ và nhiều phương pháp thiết kế: VHDL cho phép thiết kế bằng nhiều phươ

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC KINH TẾ - KỸ THUẬT CÔNG NGHIỆP

KHOA ĐIỆN - ĐIỆN TỬ - BỘ MÔN ĐIỆN TỬ

BÀI GIẢNG

THIẾT KẾ SỐ DÙNG NGÔN NGỮ

MÔ TẢ PHẦN CỨNG

Đối tượng: HSSV trình độ Đại học, Cao đẳng, TCCN

Ngành đào tạo: Dùng chung cho Khối ngành Công nghệ

Lưu hành nội bộ

Trang 2

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC KINH TẾ- KỸ THUẬT CÔNG NGHIỆP

KHOA ĐIỆN - ĐIỆN TỬ

Ngành đào tạo : CÔNG NGHỆ ĐIỆN TỬ VIỄN THÔNG

Trình độ đào tạo : ĐẠI HỌC

Năm 2012

Trang 3

-BỘ CÔNG THƯƠNG CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Trường Đại học Kinh tế - Kỹ thuật

Công nghiệp

Độc lập- Tự do- Hạnh phúc

CHƯƠNG TRÌNH TRÌNH ĐỘ ĐẠI HỌCNGÀNH ĐÀO TẠO: CÔNG NGHỆ ĐIỆN TỬ VIỄN THÔNG

-ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

1 Tên học phần: Thiết kế số dùng ngôn ngữ mô tả phần cứng Mã số:

2 Số tín chỉ : 02

3 Tính chất học phần: Bắt buộc.

4 Học phần thay thế, tương đương: Không.

5 Phân bổ thời gian giảng dạy trong học kỳ: 2(26, 8, 3)/ 12 (12 tuần thực học)

- Số tiết thực lên lớp: 34 tiết.

 Thảo luận: 8 tiết

- Số giờ sinh viên tự học: 4 giờ/tuần x 12 tuần = 48 giờ.

6 Đánh giá: Theo quy chế và quy định của Nhà trường.

Trang bị cho sinh viên những công cụ chính (các phần mềm chuyên dụng) phục

vụ cho thiết kế, tự động thiết kế các vi mạch chuyên dụng và các hệ điều hành, chương trình dịch tương ứng.

9 Mô tả vắn tắt nội dung học phần:

Trang bị cho người học những kiến thức mới về tối thiểu hoá hàm logic, các phương pháp biểu diễn và thiết kế mạch dãy Và cuối cùng là phương pháp thiết kế dùng vi mạch (ROM, PLA, GAL, MUX ).

10 Nhiệm vụ của Sinh viên:

- Dự lớp đầy đủ, đúng giờ

- Thực hiện tốt các bài tập theo yêu cầu của giáo viên

Trang 4

- Phải đọc và nghiên cứu trước giáo trình, tài liệu tham khảo, chuẩn bị các ý kiến

đề xuất khi nghe giảng.

11 Tài liệu học tập:

Bài giảng "Thiết kế vi mạch VLSI và ASIC”- Trường ĐH KT-KT CN

12.Tài liệu tham khảo:

[1] Một số Ebook VHDL

[2] Thiết kế VLSI và ASIC, NXB Giáo dục, 2000.

[3] Tống Văn On, Nguyên lý mạch tích hợp ASIC lập trình được, Tập 1, 2, NXB

TK.

[4] Thiết kế mạch logic – Nguyễn Thuý Vân

13 Tiêu chuẩn đánh giá Sinh viên:

- Theo quyết định số 43/2007/QĐ-BGD&ĐT ngày 15 tháng 08 năm 2007 của Bộ trưởng Bộ Giáo dục và Đào tạo.

- Theo quyết định số 25/2006/QĐ-BGD&ĐT ngày 26 tháng 06 năm 2006 của Bộ trưởng Bộ Giáo dục và Đào tạo.

- Theo quyết định số 29/QĐ-ĐHKTKTCN ngày 09 tháng 10 năm 2007 của Hiệu trưởng Trường Đại học Kinh tế - Kỹ thuật Công nghiệp.

- Hình thức thi kết thúc học phần: Thi viết

14 Cán bộ tham gia giảng dạy

Là giáo viên cơ hữu, giáo viên kiêm nhiệm, giáo viên thỉnh giảng do Khoa, Bộ môn quản lý, phân công giảng dạy khi có đủ các điều kiện, tiêu chuẩn, được Hiệu trưởng duyệt.

Hình thức học

1 Chương 1: Các loại mã sử dụng thiết kế mạch bằng

Trang 5

Chương 2: Cơ sở lý thuyết

2.1 Các cơ sở vi điện tử và giới thiệu công nghệ

MOS

2.1.1 Giới thiệu công nghệ IC

2.1.2 Quan hệ giữa MOS và công nghệ VLSI

2.1.3 Các chế độ làm việc của MOS transitor

2.1.4 Chế tạo nMOS và CMOS

2.2 Các thuộc tính điện cơ bản của mạch MOS

và BiMOS

2.2.1 Quan hệ giữa dòng điện và điện áp

2.2.2 Điện áp ngưỡng của MOS transitor

3 Chương 3: Quy trình thiết kế hê thống VLSI

3.2.2 Qui tắc bố trí CMOS và CMOS đảo

3.2.3 Bố trí các cổng NAND và NOR của

CMOS 3.2.4 Thiết kế các cổng logic phối hợp của

CMOS 3.3 Các thông số ảnh hưởng hiệu suất của hệ

thống

3.3.1 Điện dung MOSFET

3.3.2 Điện dung bề mặt

Trang 6

3.3.3 Điện dung ký sinh

3.3.4 Điện trở các mối nối

3.3.5 Trễ

5

3.4.1 Mô hình thu nhỏ và hệ số thu nhỏ

3.4.2 Hệ số thu nhỏ cho các thông số của hệ

thống 3.4.3 Giới hạn của việc thu nhỏ

3.4.4 Kiểm tra hệ thống

3.4.5 Giới thiệu

3.4.6 Qui tắc thập phân

3.4.7 Các lỗi thường gặp của CMOS

3.4.8 Kiểm tra mạch logic phối hợp

3.4.9 Công nghệ thiết kế quét

4.2 Cơ sở lý thuyết về các mạch lập trình được

4.2.1 Phân loại cấu trúc

4.2.2 Các thành phần cấu trúc

4.2.3 Khối logic lập trình được

4.2.5 Cell nhớ cấu hình

4.2.6 Kết nối và điểm kết nối

4.3 Tổng quan về cấu trúc FPGA

4.4 Các công nghệ chế tạo FPGA

4.5 Lựa chọn FPGA phù hợp với thiết kế

5.1.2 Sự ra đời của công nghệ ASIC

5.2 Phân loại ASIC

Trang 7

5.3 Một số dòng sản phẩm tiêu biểu hiện nay

5.3.1 Các sản phẩm của Xilinx

5.3.2 Các sản phẩm của Actel

5.3.3 Các sản phẩm của Altera

5.4 Qui trình thiết kế ASIC tổng quát

5.4.1 Đầu vào thiết kế ASIC

5.4.2 Đầu vào thiết kế logic mức thấp

5.5.1 Qui trình thiết kế của IBM

5.5.2 Qui trình thiết kế của hãng K-micro

6.3 Các phương pháp thiết kế ASIP

6.3.1 Phương pháp sử dụng lại các lõi CPU

off-the-shelf

riêng 6.3.3 Chi tiết phương pháp sử dụng lại các

lõi CPU off-the-shelf

Trang 8

6.5.1 Tối ưu hoá kích thước CPU và

memory trong các thiết kế hệ thống nhúng 6.5.2 Đánh giá độ rộng của tập các thanh

ghi trong thiết kế ASIP 6.6 Một vài công cụ trong hỗ trợ thiết kế ASIP

6.6.1 Bộ tổng hợp processor và sinh trình

biên dịch Satsuki 6.6.2 Trình biên dịch encc

Đề cương chi tiết này đã được thông qua bộ môn làm cơ sở giảng dạy cho các

lớp hệ đại học của các ngành và chuyên ngành nêu trên

…………, ngày … tháng … năm 2007

Người biên soạn

Trang 9

MỤC LỤC

Chương 1: Các loại mã sử dụng thiết kế mạch bằng VHDL 12

1.1 Giới thiệu công nghệ thiết kế mạch bằng VHDL 12

1.1.1 Ứng dụng của công nghệ thiết kế mạch bằng VHDL 12

1.1.2 Quy trình thiết kế mạch bằng VHDL 12

1.1.3 Công cụ EDA 12

1.1.4 Chuyển mã VHDL vào mạch 13

1.2 Cấu trúc mã thiết kế mạch bằng VHDL 14

1.2.1 Các đơn vị VHDL cơ bản 14

1.2.2 Khai báo Library 15

1.2.3 Entity ( thực thể) 16

1.2.4 ARCHITECTURE ( cấu trúc) 17

1.2.5 Các ví dụ 21

chương 2: Kiểu dữ liệu và các toán tử sử dụng trong ngôn ngữ 24

2.1 Các kiểu dữ liệu thường dùng 24

2.1.1 Các kiểu dữ liệu tiền định nghĩa 24

2.1.2 Các kiểu dữ liệu người dùng định nghĩa 27

2.1.3 Các kiểu con (Subtypes) 28

2.1.4 Mảng (Arrays) 28

2.1.5 Mảng cổng ( Port Array) 31

2.1.6 Kiểu bản ghi (Records) 32

2.1.7 Kiểu dữ liệu có dấu và không dấu ( Signed and Unsigned) 32

2.1.8 Chuyển đổi dữ liệu 34

2.1.10 Signal và Variable 35

2.1.11 Các ví dụ 38

2.2 Các toán tử và thuộc tính 43

2.2.1 Toán tử 43

2.2.2 Thuộc tính 44

2.2.3 Các Ví dụ 47

Chương 3: Câu lệnh song song và tuần tự 51

3.1 Các câu lệnh thực hiện song song 51

3.1.1 Mạch tổ hợp và mạch dãy 51

3.1.2 Mã song song và mã tuần tự 51

3.1.3 Sử dụng các toán tử 52

3.1.4 Mệnh đề WHEN 53

3.1.5 GENERATE 59

3.1.6 BLOCK 60

3.2 Câu lệnh tuần tự 63

3.2.1 PROCESS 63

3.2.2 Signals và Variables 64

3.2.3 Câu lệnh IF 64

3.2.4 Câu lệnh WAIT 66

Trang 10

3.2.5 Câu lệnh CASE 68

3.2.6 Câu lệnh LOOP 73

3.2.7 Bad Clocking 77

Chương 4: Thiết kế các mạch logic tổ hợp 81

4.1 Mạch mã hoá - mạch giải mã 81

4.1.1.Thiết kế mạch mã hoá 81

4.1.2 Thiết kế mạch giải mã 83

4.2 Mạch đa hợp - mạch giải đa hợp 87

4.2.1 Thiết kế mạch đa hợp 87

4.2.2 Thiết kế mạch giải đa hợp 88

Chương 5: Các Flip-Flop thanh ghi và bộ đếm 90

5.1 Thiết kế các loại Flip-Flop 90

5.1.1 Thiết kế Flip-Flop loại JK 90

5.1.2 Thiết kế flip-flop D có Enable 91

5.2 Thiết kế thanh ghi 92

5.2.1 Thanh ghi dịch 4 bit 93

5.2.2 Thanh ghi dịch 8 bit 95

5.1.3 Thiết kế mạch điều khiển 8 LED sáng dần - tắt dần 96

5.3 Thiết kế mạch đếm 98

5.3.1 Thiết kế mạch đếm vòng 8 bit 98

5.3.2 Thiết kế mạch đếm nhị phân 101

5.3.3 Thiết kế mạch đếm BCD và giải mã hiển thị LED thanh 102

Trang 11

LỜI NÓI ĐẦU

VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rấtcao 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ố VHDL là một ngôn ngữ độc lậpkhông gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả 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ápthiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất VHDL có một số ưu điểmhơn so các ngôn ngữ mô phỏng phần cứng khác hẳn là:

- Khả năng được hỗ trợ bởi nhiều công nghệ và nhiều phương pháp thiết kế: VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ 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 sẵn có VHDL cũng hỗtrợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ haykhông đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên

- Tính độ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ô tả 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 công nghệ chếtạo phần cứng mới ra đời nó được áp dụng ngay cho các hệ thống đã thiết kế

- 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ố 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ả chi tiết

- Khả năng trao đổi kết quả: Vì VHDL là 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ô tả đáp ứng được tiêu chuẩnVHDL 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 tiêu chuẩn VHDL Cũngnhư một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trongmột hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập)

- 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 bậc cao, vì vậy nó có thể được 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à chia sẻ thiết kế Và nó cũng cho phép dùng lại các phần đã có sẵn.

Nhóm biên soạn

Ninh Văn Thọ

Nhóm sửa chữa

Đào Hưng

Trang 12

Chương 1 CÁC LOẠI MÃ SỬ DỤNG THIẾT KẾ MẠCH BẰNG VHDL

MỤC TIÊU CỦA CHƯƠNG

- Hiểu rõ về quy trình thiết kế mạch bằng VHDL cho phép xuất, tạo và kết nốicác file nguồn để tạo ra các file chương trình Khả năng lập trình và nhận diệnlinh kiện

- Hiểu rõ phần mềm Quartus II sử dụng bộ tích hợp NativeLink@ với các công

cụ thiết kế cung cấp việc truyền thông tin liền mạch giữa Quartus với các công

cụ thiết kế phần cứng EDA khác Quartus II cũng có thể đọc các file mạch(netlist) EDIF chuẩn, VHDL và Verilog HDL cũng như tạo ra các file netlistnày

- Quartus II có môi trường thiết kế đồ họa giúp nhà thiết kế dễ dàng viết mã,biên dịch, soát lỗi, mô phỏng

NỘI DUNG BÀI GIẢNG LÝ THUYẾT

1.1 Giới thiệu công nghệ thiết kế mạch bằng VHDL

1.1.1 Ứng dụng của công nghệ thiết kế mạch bằng VHDL

Hiện nay 2 ứng dụng chính và trực tiếp của VHDL là các ứng dụng trongcác thiết bị logic có thể lập trình được (Programmable Logic Devices – PLD)(bao gồm các thiết bị logic phức tạp có thể lập trình được và các FPGA - FieldProgrammable Gate Arrays) và ứng dụng trong ASIC(Application SpecificIntegrated Circuits)

Khi chúng ta lập trình cho các thiết bị thì chúng ta chỉ cần viết mã VHDLmột lần, sau đó ta có thể áp dụng cho các thiết bị khác nhau (như Altera, Xilinx,Atmel,…) hoặc có thể để chế tạo một con chip ASIC Hiện nay, có nhiều thươngmại phức tạp (như các vi điều khiển) được thiết kế theo dựa trên ngôn ngữVHDL

1.1.2 Quy trình thiết kế mạch bằng VHDL

Đây là phần mềm đóng gói tích hợp đầy đủ phục vụ cho thiết kế logic vớicác linh kiện logic khả trình PLD của Altera, gồm các dòng APEX, Cyclone,FLEX, MAX, Stratix Quartus cung cấp các khả năng thiết kế logic sau:

 Môi trường thiết kế gồm các bản vẽ, sơ đồ khối, công cụ soạn thảo cácngôn ngữ: AHDL, VHDL, và Verilog HDL

 Thiết kế LogicLock

 Là công cụ mạnh để tổng hợp logic

 Khả năng mô phỏng chức năng và thời gian

 Phân tích thời gian

Trang 13

 Phân tích logic nhúng với công cụ phân tích SignalTap@ II.

 Cho phép xuất, tạo và kết nối các file nguồn để tạo ra các file chươngtrình

 Tự động định vị lỗi

 Khả năng lập trình và nhận diện linh kiện

 Phần mềm Quartus II sử dụng bộ tích hợp NativeLink@ với các công cụthiết kế cung cấp việc truyền thông tin liền mạch giữa Quartus với cáccông cụ thiết kế phần cứng EDA khác

 Quartus II cũng có thể đọc các file mạch (netlist) EDIF chuẩn, VHDL vàVerilog HDL cũng như tạo ra các file netlist này

 Quartus II có môi trường thiết kế đồ họa giúp nhà thiết kế dễ dàng viết

mã, biên dịch, soát lỗi, mô phỏng

Với Quartus có thể kết hợp nhiều kiểu file trong 1 dự án thiết kế phân cấp Cóthể dùng bộ công cụ tạo sơ đồ khối (Quartus Block Editor) để tạo ra sơ đồ khối

mô tả thiết kế ở mức cao, sau đó dùng các sơ đồ khối khác, các bản vẽ như:

AHDL Text Design Files (.tdf), EDIF Input Files (.edf), VHDL Design Files

(.vhd), and Verilog HDL Design Files (.v) để tạo ra thành phần thiết kế mứcthấp

Quartus II cho phép làm việc với nhiều file ở cùng thời điểm, soạn thảo file thiết

kế trong khi vẫn có thể biên dịch hay chạy mô phỏng các dự án khác Công cụbiên dịch Quartus II nằm ở trung tâm hệ thống, cung cấp quy trình thiết kế mạnhcho phép tùy biến để đạt được thiết kế tối ưu trong dự án Công cụ định vị lỗi tựđộng và các bản tin cảnh báo khiến việc phát hiện và sửa lỗi trở nên đơn giảnhơn

Sau khi cài Quartus II, giao diện như hình vẽ:

Trang 14

Hình 1.1 Giao diện Quartus II.

Mạnh điện trong Quartus có thể được thiết kế theo các cách sau:

a Sơ đồ khối (Block Diagram).

Trong cách mô tả này, mạch điện tạo nên từ các cổng logic rời rạc, hay các hàmgồm nhiều cổng logic tích hợp (megafunctions) Để vẽ mạch theo cách này,

nhấn New, chọn tab Device Design Files, chọn Block Diagram/ Schematic File, hiện:

Trang 15

Nhấn chọn Symbol Tool để hiện các cổng logic hay các hàm Megafuntions

Hình vẽ Các cổng logic, các hàm

Hình 4.2 Cửa sổ chọn đường dẫn và tên dự án

Khi đã chọn xong các cổng logic hay hàm thì dùng các công cụ nối dây để vẽmạch hoàn chỉnh

b Tạo một Project

Bước 1 : Chọn mục File > New Project Wizard để mở cửa sổ tạo mới dự án

giống như Hình 2 Chú ý là dự án cần có tên giống với tên của thực thể thiết

kế, nó cho thấy thực thể là mức đỉnh Chọn tên light làm tên cho dự án và thực thể mức đỉnh, nhấp chọn Next.

Hình 4.3 Cửa sổ chọn đường dẫn và tên dự án

Bước 2 : Trong cửa sổ Family & Device Settings, chúng ta sẽ chọn loại chip,

là chip FPGA Cyclone EP2C20F484C7N có trên kit DE1 mà chúng ta sử

Trang 16

dụng trong bài thí nghiệm Nhấp chọn Next để chuyển sang cửa sổ chọn kế

tiếp

Bước 3 : Trong của sổ kế tiếp, chúng ta có thể chọn lựa bất kỳ công cụ của

hãng thứ ba nào cần dùng Công cụ CAD thông dụng dùng cho phần mềm thiết kế mạch điện tử là EDA tools Vì chúng ta không cần thay đổi gì trong

việc lựa chọn công cụ, nhấp chọn Next.

Bước 4 : Quan sát bảng tổng kết các thiết lập vừa thực hiện Nhấp chọn Finish

để quay trở về màn hình chính của phần mềm Quartus II

Trang 17

Hình 1.4 Cửa sổ chọn loại chip FPGA dùng cho dự án

c Nhập thiết kế dùng mã VHDL

Trong bài thí nghiệm này, chúng ta sẽ tạo một mạch điều khiển đèn hai chiều như trong Hình 4 Mạch có thể dùng để điều khiển một đèn LED khi một

trong hai chuyển mạch x1 hoặc x2 đóng, tương ứng với mức logic “1” Chú

ý rằng chỉ cần dùng hàm XOR cho hai đầu vào x1 và x2, tuy nhiên chúng ta

sẽ xây dựng lại bằng các cổng logic rời rạc

Hình 1.5 Mạch logic điều khiển đèn và bảng chân lý của

mạch

Bước 1: Chọn mục File > New, trong cửa sổ New, chọn VHDL File, và nhấp

chọn OK Sau khi nhấp chọn OK thì cửa sổ soạn thảo sẽ hiện ra Nhập vào

mã VHDL như dưới đây vào trong cửa sổ soạn thảo văn bản

library IEEE;

useIEEE.STD_LOGIC_1164.all;

entity light isport( x1, x2: in std_logic;

Trang 18

f : out std_logic);

end light;

architecture Behavioral of light is begin

f <= (x1 and not x2) or (not x1 and x2);

end Behavioral;

Bước 2: Chọn mục File > Save As để mở cửa sổ Save As Trong phần Save

as type chọn VHDL File Trong phần File name nhập light Nhấp chọn Save

để đưa tệp này vào trong thư mục của dự án

d Thêm các tệp thiết kế vào một dự án

Bước 1: Chọn mục Assignments > Settings > Files, điều này dẫn đến cửa sổ như

trong Hình 4.4 Một cách khác là chọn Project > Add/Remove Files trong Project.

Nếu bạn dùng trình soạn thảo để tạo tệp và chọn vào hộp có nhãn Add file to

current project, thì tệp light.vhd đã có trong dự án, ngược lại tệp này cần thêm vào

dự án

Hình 1.6 Cửa sổ các cài đặt có thể dùng để nhập tệp thiết kế vào dự án

Bước 2: Nhấp chọn nút … bên cạnh phần File name để có cửa sổ chọn tệp

cần thêm vào Nhấp chọn tệp light.vhd và nhấp chọn Open Tệp đã chọn sẽ hiện tên trên phần File name Nhấp chọn Add và OK để đưa tệp này vào dự

án

e Biên dịch mã VHDL

Bước 1 : Nhấp chọn mục Processing > Start Complication Biên dịch thành

công (hay không thành công) sẽ được thông báo trên hộp thoại bung ra sau khi quá trình biên dịch kết thúc Xác nhận bằng cách nhấp nút OK

Trang 19

Bước 2: Khi biên dịch hoàn thành, một báo cáo biên dịch được đưa ra Cửa

sổ này cũng có thể mở ra bất kỳ lúc nào bằng cách nhấp chọn Processing >

Complication Report Trong báo cáo này bao gồm một số danh mục ở bên

trái cửa sổ, nhấp vào các danh mục này để thấy thông tin chi tiết của danh mục này hiện lên ở bên phải cửa sổ

e Sửa các lỗi

Bước 1 : Mở tệp light.vhd, dòng có câu lệnh gán biểu thức logic cho f, ta bỏ

dấu chấm phẩy ở cuối dòng lệnh, lưu thay đổi với tệp light.vhd rồi biên dịch

lại dự án Lúc này phần mềm sẽ thông báo là biên dịch không thành công và báo cáo tổng hợp đưa ra kết quả biên dịch dự án bị hỏng

Bước 2 : Chọn mục Analysis & Synthesis > Messages để hiển thị thông báo

lỗi Nhấp đôi vào thông báo lỗi đầu tiên, dòng lệnh lỗi sẽ được đánh dấu trêntrình soạn thảo văn bản, sửa lại cho đúng rồi biên dịch lại dự án

Bước 1 : Nhấp chọn Assignments > Assignment Editor Trong Category chọn

Pin Nhấp đôi vào <<new>> Nhấp chọn x1 từ danh sách trải xuống làm

chân đầu tiên được gán Tiếp đến nhấp đôi vào hộp bên phải hộp dành cho

x1 (cột Location) Chọn chân PIN_L22 từ danh mục hoặc có thể gõ trực tiếp L22 vào hộp Location.

Hình 1.7 Cửa sổ Assignment Editor dùng để gán chân

Bước 2: Tương tự như trên, thực hiện gán chân cho đầu vào x2 cho chân L21

và đầu ra f cho chân U22.

Trang 20

Bước 3: Sau khi hoàn thành việc gán chân, nhấp chọn File > Save Đóng

cửa sổ Assignment Editor, nhấp chọn Yes và biên dịch lại mạch.

g Mô phỏng mạch thiết kế

Bước 1 : Mở cửa sổ Waveform Editor bằng cách nhấp File > New, trong cửa

sổ chọn dạng tệp, chọn Vector Waveform File và nhấp OK.Cửa sổ Waveform

Editor sẽ hiện ra trên giao diện chính Lưu tệp này với tên Light.vwf.

Bước 2: Nhấp chọn Edit > End Time và nhập vào 200 ns trong hộp thoại

bung ra, điều này cho phép thời gian mô phỏng từ 0 dến 200 ns Nhấp chọn

View > Fit in Window để nhìn thấy toàn bộ phần mô phỏng từ 0 đến 200 ns.

Bước 3 : Nhấp chọn Edit > Insert > Insert Node or Bus để mở cửa sổ nhập

các đầu vào ra Nhấp nút Node Finder để mở cửa sổ như trong hình 7, đặt

phần Filter là Pins: all Nhấp chọn nút List để tìm các đầu vào và ra trên phầnbên trái cửa sổ

Bước 4 : Nhấp chọn các đầu vào ra bên cửa sổ bên trái rồi nhấp nút > để đưa

đầu tín hiệu đó vào dạng sóng kiểm tra Khi đã có đủ các đầu vào và ra, nhấp

chọn OK để quay trở lại cửa sổ Waveform Editor.

Bước 5 : Đặt x1 bằng ‘0’ trong đoạn từ 0 ns đến 100 ns, tiếp đến đặt x1 bằng

‘1’ trong đoạn từ 100 ns đến 200 ns bằng cách đặt chuột ở vị trí bắt đầu đoạnnày và nhấp kéo đến hết để đánh dấu vùng đặt giá trị, và chọn giá trị ‘1’ trên

thanh công cụ Tương tự như vậy đặt x2 bằng 1 từ 50 ns đến 100 ns và từ 150

ns đến 200 ns

Hình 1.8 Cửa sổ chọn các tín hiệu vào ra đưa vào dạng sóng mô phỏng

Bước 6: Thực hiện mô phỏng

Mô phỏng chức năng

Trang 21

Nhấp chọn Assignments > Settings Bên trái của cửa sổ Settings nhấp chọn

Simulator Settings để có cửa sổ như trong Hình 4.7, chọn Functional trong

mục chọn chế độ mô phỏng, và nhấp OK

Hình 1.9 Dạng sóng kiểm tra trước khi mô phỏng

Hình 1.10 Chọn chế độ mô phỏng chức năng cho trình mô phỏng

- Nhấp chọn Processing > Generate Functional Simulation Netlist Sau đó nhấp chọn Processing > Start Simulation để thực hiện mô phỏng Kiểm tra dạng song đầu ra f có đúng theo chức năng của mạch hay không.

Trang 22

Hình 1.11 Dạng sóng mô phỏng chức năng

Mô phỏng thời gian

- Nhấp chọn Assignments > Settings Bên trái của cửa sổ Settings nhấp chọn Simulator Settings để có cửa sổ như trong Hình 9, chọn Timing trong

mục chọn chế độ mô phỏng, và nhấp OK

- Sau đó thực hiện mô phỏng theo cách vừa thực hiện như trên, quan sát

dạng sóng đầu ra f và nhận xét sự khác biệt so với dạng sóng này khi thực hiện

mô phỏng chức năng

h Nạp và cấu hình FPGA

Bước 1: Gạt chuyển mạch RUN/PROG sang vị trí RUN Nhấp chọn Tools >

Programmer để có cửa sổ như trong Hình 11 Đánh dấu vào tùy chọn

Program/Configue để cho phép nạp tệp cấu hình light.sof

Hình 1.12 Giao diện của trình nạp và cấu hình FPGA

Trang 23

Bước 2: Nhấp nút Start bên trái cửa sổ để nạp tệp cấu hình này xuống FPGA.Sau khi nạp thành công xuống FPGA, hãy kiểm tra mạch điện này thực hiệntrên FPGA có chạy đúng theo chức nămg mong muốn hay không bằng cáchdùng các chuyển mạch SW0 và SW1 để nhập đầu vào rồi quan sát đầu rahiển thị trên LEDG0.

Một trong số lớn các ứng dụng của VHDL là chế tạo các mạch hoặc hệthống trong thiết bị có thể lập trình được (PLD hoặc FPGA) hoặc trong ASIC.Việc chế tao ra vi mạch sẽ được chia thành 3 giai đoạn như sau:

- Giai đoạn 1: Bắt đầu thiết kế bằng viết mã VHDL Mã VHDL này sẽ

được lưu vào file có đuôi là vhd và có tên cùng với tên thực thể Mã VHDL sẽđược mô tả ở tầng chuyển đổi thanh ghi

- Giai đoạn 2: Giai đoạn chế tạo gồm có 2 bước:

+ Biên dịch: Chuyển mã VHDL vào một netlist ở tầng cổng

+ Tối ưu: Thực hiện trên netlist ở tầng cổng về tốc độ và phạm vi

Trong giai đoạn này, thiết kế có thể được mô phỏng để kiểm tra phát hiệnnhững lỗi xảy ra trong quá trình chế tạo

- Giai đoạn 3: Là giai đoạn ghép nối đóng gói phần mềm Ở giai đoạn này

sẽ tạo ra sự sắp xếp vật lý cho chip PLD/FPGA hoặc tạo ra mặt nạ cho ASIC

1.1.3 Công cụ EDA

Các công cụ phục vụ cho quá trình thiết kế vi mạch sẽ là:

- Công cụ Active – HDL: Tạo mã VHDL và mô phỏng

Trang 24

- Công cụ EDA (Electronic Design Automation): là công cụ tự động thiết

kế mạch điện tử Công cụ này được dùng để phục vụ cho việc chế tạo, thực thi

và mô phỏng mạch sử dụng VHDL

- Công cụ cho đóng gói: Các công cụ này sẽ cho phép tổng hợp mã VHDLvào các chip CPLD/FPGA của Altera hoặc hệ ISE của Xilinx, for Xilinx’sCPLD/FPGA chips)

Bit s và cout được tính như sau: và

Từ công thức tính s và cout ta viết đoạn mã VHDL như dưới đây:

Trang 25

Từ mã VHDL này, mạch vật lý được tạo ra Tuy nhiên có nhiều cách đểthực hiện phương trình được miêu tả trong ARCHITECTURE OF, vì vậy mạchthực tế sẽ phụ thuộc vào bộ biên dịch/bộ tối ưu đang được sử dụng và đặc biệtphụ thuộc mục đích công nghệ Hình vẽ sau đây thể hiện một số dạng kiến trúccủa mạch cộng:

Trong trường hợp này, nếu mục đích công nghệ của chúng ta là thiết bịlgic có thê lập trình được (PLD, FPGA), thì 2 kết quả cho cout thoả mãn là ởhình (b) và hình (c) ( ) Còn nếu mục đích công nghệ

là ASIC, thì chúng ta có thể sử dụng hình (d) Hình D sử dụng công nghệ CMOSvới các tầng transistor và các mặt nạ phủ

Bất cứ một cái mạch nào được tao ra từ mã, thì những thao tác của nó sẽluôn luôn được kiểm tra ở mức thiết kế, như ta đã chỉ ra ở hình 1 Tất nhiên,chúng ta cũng có thể kiểm tra nó ở tầng vật lý, nhưng sau đó những thay đổi làrất tai hại

Mô phỏng kết quả của đoạn chương trình đã viết cho mạch bộ cộng đầy đủ:

Trang 26

1.2 Cấu trúc mã thiết kế mạch bằng VHDL

1.2.1 Các đơn vị VHDL cơ bản

Một đoạn Code chuẩn của VHDL gồm tối thiểu 3 mục sau:

- Khai báo LIBRARY: chứa một danh sách của tất cả các thư viện được sử dụng

trong thiết kế Ví dụ: ieee, std, work, …

- ENTITY: Mô tả các chân vào ra (I/O pins) của mạch

- ARCHITECTURE: chứa mã VHDL, mô tả mạch sẽ họat động như thế nào.

Một LIBRARY là một tập các đọan Code thường được sử dụng Việc có mộtthư viện như vậy cho phép chúng được tái sử dụng và được chia sẻ cho các ứngdụng khác Mã thường được viết theo các định dạng của FUNCTIONS,PROCEDURES, hoặc COMPONENTS, được thay thế bên trong PACKAGES

và sau đó được dịch thành thư viện đích

1.2.2 Khai báo Library

Để khai báo Library, chúng ta cần hai dòng mã sau:

LIBRARY library_name; (tên thư viện)

USE library_name.package_name.package_parts; (mệnh đề cần sử dụng) Thông thường có 3 gói, từ 3 thư viện khác nhau thường được sử dụng trongthiết kế:

 ieee.std_logic_1164 (từ thư viện ieee ),

 standard (từ thư viện std),

 work (work library)

Các thành phần cơ bản của một đoạn mã VHDL

Trang 27

Các phần cơ bản của một Library

Các khai báo như sau:

LIBRARY ieee; Dấu chấm phẩy (;) chỉ thịUSE ieee.std_logic_1164.all; kt của một câu lệnh LIBRARY std; hoặc một khai báo.một dấu 2 gạchUSE std.standard.all; ( )để bắt đầu 1 chú thích

LIBRARY work;

USE work.all;

Các thư viện std và work thường là mặc định, vì thế không cần khai báo chúng, chỉ có thư viện ieee là cần phải được viết rõ ra.

Mục đích của 3 gói/thư viện được kể ở trên là như sau: gói

std_logic_1164 của thư viện ieee cho biết một hệ logic đa mức; std là một thư

viện tài nguyên (kiểu dữ kiệu, i/o text ) cho môi trường thiết kế VHDL và thưviện work được sủ dụng khi chúng ta lưu thiết kế ( file vhd, các file được tạopbởi chương trình dịch và chương trình mô phỏng…)

Thực ra, thư viện ieee chứa nhiều gói như sau:

- std_logic_1164: định rõ STD_LOGIC ( 8 mức) và STD_ULOGIC ( 9 mức) là

các hệ logic đa mức

- std_logic_arith: định rõ các kiểu dữ liệu SIGNED và UNSIGNED, các giải

thuật liên quan và so sánh toán tử Nó cũng chứa nhiều hàm chuyển đổi dữ liệu,

mà cho phép một kiểu được chuyển đổi thành các kiểu dữ liệu khác:

conv_integer(p), conv_unsigned(p,b), conv_signed(p,b), conv_std_logic_vector(p, b)

- std_logic_signed: chứa các hàm cho phép làm việc với dữ liệu

STD_LOGIC_VECTOR để được thực hiện chỉ khi dữ liệu là kiểu SIGNED

- std_logic_signed: chứa các hàm cho phép làm việc với dữ liệu

STD_LOGIC_VECTOR để được thực hiện chỉ khi dữ liệu là kiểu UNSIGNED

Trang 28

1.2.3 Entity ( thực thể)

Một ENTITY là một danh sách mô tả các chân vào/ra ( các PORT) củamạch điện Cú pháp như sau:

ENTITY entity_name ISPORT (

port_name : signal_mode signal_type;

port_name : signal_mode signal_type;

);

END entity_name;

Chế độ của tín hiệu ( mode of the signal) có thể là IN, OUT, INOUT hoặcBUFFER Ví dụ trong hình dưới ta có thể thấy rõ các chân IN, OUT chỉ có mộtchiều (vào hoặc ra) trong khi INOUT là 2 chiều và BUFFER lại khác, tín hiệu raphải được sử dụng từ dữ liệu bên trong

Kiểu của tín hiệu ( type of the signal) có thể là BIT, STD_LOGIC,INTEGER, …

Tên của thực thể ( name of the entity) có thể lấy một tên bất kỳ, ngọai trừcác tù khóa của VHDL

Ví dụ: Xét cổng NAND ở hình dưới, khai báo ENTITY như sau:

ENTITY nand_gate ISPORT (a, b : IN BIT;

Trang 29

END architecture_name;

Như thấy ở trên, một cấu trúc có 2 phần: phần khai báo ( chức năng), nơicác tín hiệu và các hằng được khai báo, và phần mã (code - từ BEGIN trởxuống)

Ví dụ: Xét trở lại cổng NAND của hình trên:

ARCHITECTURE myarch OF nand_gate ISBEGIN

tả theo mô hình cấu trúc (Structure) Tuy nhiên một hệ thống có thể bao gồm cả

mô tả theo mô hình hoạt động và mô tả theo mô hình cấu trúc

Mô tả kiến trúc theo mô hình hoạt động:

Mô hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứngvới các tín hiệu vào như thế nào và đưa ra kết quả gì ra đầu ra) dưới dạng cáccấu trúc ngôn ngữ lập trình bậc cao Cấu trúc đó có thể là PROCESS , WAIT,

IF, CASE, FOR-LOOP…

Ví dụ1:

ARCHITECTURE behavior OF nand IS

Khai báo các tín hiệu bên trong và các bí danh

Trang 30

Begin ABAR := not A;

BBAR := not B;

If ENABLE = ‘1’ then

Z(3) <= not (A and B);

Z(0) <= not (ABAR and BBAR);

Z(2) <= not (A and BBAR);

Z(1) <= not (ABAR and B);

Mô tả kiến trúc theo mô hình cấu trúc:

Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiềucấp cấu trúc bắt đầu từ một cổng logic đơn giản đến 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ácphần tử con bên trong hệ thống và sự kết nối của các phần tử con đó

Trang 31

u1: nand cài đặt u1 là thành phần nand

GENERIC MAP(5 ns) giá trị delay có thể thay đổi

values

PORT MAP(s, qb, q); bản đồ I/O cho thành phần

u2: nand thiết lập u2 là thành phần nand

Trang 32

End component;

Begin G1 : Xor port map (A,B,Sum);

G2 : And port map (A, B, C);

End arc_mach_cong;

Mô tả kiến trúc theo mô hình tổng hơp

Đó là mô hình kết hợp của 2 mô hình trên

Cout := T1 or T2 or T3 ;End process;

End arc_mixed ;

1.2.5 Các ví dụ

Trong mục này, chúng ta sẽ trình bày 2 ví dụ đầu tiên về mã VHDL Mỗi

ví dụ đều được theo kèm bởi các chú thích diễn giải và các kết quả mô phỏng

Ví dụ 1: DFF với Reset không đồng bộ:

Trang 33

Sơ đồ của DFF không đồng bộ

Hình trên cho thấy sơ đồ của một flip-flop loại D (DFF), xung được kíchtheo sườn của tín hiệu đồng hồ (clk), và với một tín hiệu đầu vào reset khôngđồng bộ (rst) Khi rst = ‘1’, đầu ra luôn ở mức thấp bất kể clk Ngược lại, đầu ra

sẽ copy đầu vào ( q<=d) tại thời điểm khi clk chuyển từ ‘0’ lên ‘1’

Có nhiều cách để thực hiện DFF của hình trên, một giải pháp sẽ đượctrình bày dưới đây Sử dụng một PROCESS cho đọan mã sau đây:

Trang 34

* Kết quả mô phỏng:

Đồ thị có thể được giải thích dễ dàng Cột đầu tiên cho biết tên của tínhiệu, như đã được đinh nghĩa trong ENTITY Nó cũng cho biết chế độ ( hướng)của tín hiệu, lưu ý rằng các mũi tên ứng với rst, d và clk hướng vào trong, đây làphía input, còn q hướng ra ngoài tương ứng với phía output Cột thứ hai chứagiá trị của mỗi tín hiệu ở vị trí tương ứng với nơi con trỏ trỏ tới Trong trườnghợp hiện tại, con trỏ ở 0ns và tín hiệu nhận giá trị (1,0,0,0) Cột thứ 3 cho thấy

sự mô phỏng của toàn bộ quá trình Các tín hiệu vào (rst, d, clk) có thể đượcchọn một cách tự do và bộ mô phỏng sẽ xác định tín hiệu ngõ ra tương ứng

Ví dụ 2: DFF kết hợp với cổng NAND

Mạch điện ở hình dưới là sự kết hợp của DFF và NAND Trong lời giảisau đây, chúng ta đã giới thiệu một cách có chủ định một tín hiệu không cầnthiết (temp), chỉ để minh họa một tín hiệu sẽ được khai báo như thế nào

-ARCHITECTURE example OF example IS

SIGNAL temp : BIT;

BEGIN

temp <= a NAND b;

PROCESS (clk)BEGIN

Trang 35

IF (clk'EVENT AND clk='1') THEN q<=temp;

Câu1-3: Hãy liệt kê các kiểu dữ liệu khai báo khi viết chương trình, viết cú

pháp câu lệnh khai báo?

Câu1-4: Trình bày cấu trúc tổng thể một chương trình khi sử dụng viết chương

trình? cho ví dụ

Câu1-5: Hãy liệt kê các phần tử cơ bản để lập trình cho CPLD và FPGA?

NỘI DUNG PHẦN THẢO LUẬN

1: Hãy liệt kê các bước thiết lập một File dự án khi sử dụng ngôn ngữ VHDLứng dụng phần mềm Quartus II ?

2: Hãy liệt kê các kiểu dữ liệu khai báo khi viết chương trình, viết cú pháp câulệnh khai báo?

3: Trình bày cấu trúc tổng thể một chương trình khi sử dụng viết chương trình?

cho ví dụ

TÓM TẮT NỘI DUNG CỐT LÕI

1 Ứng dụng chính và trực tiếp của VHDL là các ứng dụng trong các thiết bịlogic có thể lập trình được (Programmable Logic Devices – PLD) (bao gồm cácthiết bị logic phức tạp có thể lập trình được và các FPGA - Field ProgrammableGate Arrays) và ứng dụng trong ASIC(Application Specific IntegratedCircuits) Khi chúng ta lập trình cho các thiết bị thì chúng ta chỉ cần viết mãVHDL một lần, sau đó ta có thể áp dụng cho các thiết bị khác nhau (như Altera,Xilinx, Atmel,…) hoặc có thể để chế tạo một con chip ASIC Hiện nay, có nhiềuthương mại phức tạp (như các vi điều khiển) được thiết kế theo dựa trên ngônngữ VHDL

Trang 36

2 Công cụ EDA (Electronic Design Automation): là công cụ tự động thiết kếmạch điện tử Công cụ này được dùng để phục vụ cho việc chế tạo, thực thi và

mô phỏng mạch sử dụng VHDL

3 Công cụ cho đóng gói: Các công cụ này sẽ cho phép tổng hợp mã VHDL vàocác chip CPLD/FPGA của Altera hoặc hệ ISE của Xilinx, for Xilinx’sCPLD/FPGA chips)

HƯỚNG DẪN TỰ Ở NHÀ

1 Làm bài tập chương 1

2 Chuẩn bị lý thuyết chương tiếp thep

Trang 37

Chương 2 KIỂU DỮ LIỆU VÀ CÁC TOÁN TỬ SỬ DỤNG TRONG NGÔN NGỮ MỤC TIÊU CỦA CHƯƠNG

- Giúp người dùng sử dụng và khai báo các kiểu dữ liệu thường sử dụng trongngôn ngữ Các kiểu dữ liệu có dấu và không dấu

- Giúp người dùng biết cách sử dụng các toán tử và các thuộc tính của toán tử.Cũng giống như các thuộc tính được định nghĩa bởi người dùng Trong VHDL

ta cũng có thể xây dựng chồng các toán tử toán học Để xây dựng chồng cáctoán tử này ta cần phải chỉ rõ loại dữ liệu tham gia

NỘI DUNG BÀI GIẢNG LÝ THUYẾT

2.1 Các kiểu dữ liệu thường dùng

2.1.1 Các kiểu dữ liệu tiền định nghĩa

VHDL bao gồm một nhóm các kiểu dữ liệu tiền định nghĩa, được định rõthông qua các chuẩn IEEE 1076 và IEEE 1164 Cụ thể hơn, việc định nghĩa kiểu

dữ liệu như thế có thể tìm thấy trong các gói/ thư viện sau:

INTEGER và REAL

và STD_ULOGIC

cộng thêm nhiều hàm chuyển đổi dữ liệu ví dụ: conv_integer(p),

conv_unsigned(p, b), conv_signed(p, b), và conv_std_logic_vector(p, b).

Gói std_logic_signed và std_logic_unsigned của thư viện ieee: Chứa các hàm

cho phép họat động với dữ liệu STD_LOGIC_VECTOR được thực hiện khi màkiểu dữ liệu là SIGNED họăc UNSIGNED

Tất cả các kiểu dữ liệu tiền định nghĩa đã nêu trên được mô tả như sau:

+ BIT và BIT_VECTOR: 2 mức logic (‘0’, ’1’)

Ví dụ:

SIGNAL x: BIT; x được khai báo như một tín hiệu số kiểu BIT

SIGNAL y: BIT_VECTOR (3 DOWNTO 0); y là một vec tơ 4 bit, vớibit bên trái nhất được gọi là MSB

SIGNAL w: BIT_VECTOR (0 TO 7); w là một véc tơ8 bit, phía bênphải nhất được gọi là MSB

Trang 38

Dựa vào các tín hiệu ở trên, các phép gán sau đây là hợp lệ ( để gán mộtgiá trị đến một tín hiệu, toán tử <= được sử dụng):

Lưu ý rằng toán tử ":=" được sử dụng để thiết lập giá trị khởi đầu

Hầu hết các mức std_logic là vô hướng chỉ đối với quá trình mô phỏng.Tuy nhiên ‘0’, ‘1’ và ‘Z’ là có thể kết hợp không hạn chế Đối với các giá trị

“weak”, chúng được giải quyết trong sự ưu tiên của các giá trị “forcing” trongcác nút đa chiều Thật vậy, nếu 2 tín hiệu std_logic bất kỳ được nối đến cùngmột node, thì các mức logic đối lập được tự động giải quyết theo bảng:

Hệ thống logic giải được

Trang 39

+ STD_ULOGIC( STD_ULOGIC_VECTOR): hệ thống logic 9 mức trongchuẩn IEEE 1164: (‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘–’) Thật vậy, hệSTD_LOGIC mô tả ở trên là một tập con của STD_ULOGIC Hệ thống thứ 2này thêm giá trị logic ‘U’.

BOOLEAN: đúng/sai

INTEGER: số nguyên 32 bits ( từ -2.147.483.647 đến +2.147.483.647)

NATURAL: msố nguyên không âm ( từ 0 đến +2.147.483.647)

REAL: số thực nằm trong khoảng ( từ -1.0E38 đến +1.0E38)

Physic literals: sử dụng đối với các đại lượng vật lý, như thời gian, điệnáp,…Hữu ích trong mô phỏng

Character literals: ký tự ASCII đơn hoặc một chuỗi các ký tự như thế

SIGNED và UNSIGNED: các kiểu dữ liệu được định nghĩa trong gói

std_logic_arith của thư viện ieee Chúng có hình thức giống như

STD_LOGIC_VECTOR, nhưng ngọai trừ các toán tử số học, mà tiêu biểu làkiểu dữ liệu INTEGER

Ví dụ:

x0 <= '0'; bit, std_logic, or std_ulogic value '0'

x1 <= "00011111"; bit_vector, std_logic_vector,

std_ulogic_vector, signed, or unsigned

x2 <= "0001_1111"; đường gạch dưới cho phép dễ hình dung hơn

x3 <= "101111" biểu diễn nhị phân của số thập phân 47

x4 <= B"101111" như trên

x5 <= O"57" biểu diễn bát phân của số thập phân 47

x6 <= X"2F" biẻu diễn số thập lục phân của số thập phân 47

n <= 1200; số nguyên

m <= 1_200; số nguyên, cho phép gạch dưới

IF ready THEN Logic, thực hiện nếu ready=TRUE

y <= 1.2E-5; real, not synthesizable

q <= d after 10 ns; physical, not synthesizable

Ví dụ: Các toán tử được phép và không được phép nằm giữa các kiểu dữ liệukhác nhau:

Trang 40

SIGNAL e: INTEGER RANGE 0 TO 255;

a <= b(5); được phép (cùng kiểu vô hướng: BIT)

b(0) <= a; được phép (cùng kiểu vô hướng: BIT)

c <= d(5); được phép (cùng kiểu vô hướng: STD_LOGIC)

d(0) <= c; được phép (cùng kiểu vô hướng: STD_LOGIC)

a <= c; không được phép (không thể kết hợp kiểu: BIT x STD_LOGIC)

b <= d; không được phép (không thể kết hợp kiểu: BIT_VECTOR x STD_LOGIC_VECTOR)

e <= b; không được phép (không thể kết hợp kiểu: INTEGER xBIT_VECTOR)

e <= d; không được phép (không thể kết hợp kiểu: INTEGER x STD_LOGIC_VECTOR)

2.1.2 Các kiểu dữ liệu người dùng định nghĩa

VHDL cũng cho phép người dùng tự định nghĩa các kiểu dữ liệu Hai loạikiểu dữ liệu người dùng định nghĩa được chỉ ra dưới đây bao gồm integer vàenumerated

Kiểu integer người dùng định nghĩa:

TYPE integer IS RANGE -2147483647 TO +2147483647;

Thực ra kiểu này đã được định nghĩa trước bởi kiểu INTEGER

TYPE natural IS RANGE 0 TO +2147483647;

Thực ra kiểu này được đã định nghĩa trước bởi kiểu NATURAL

TYPE my_integer IS RANGE -32 TO 32;

Một tập con các số integer mà người dùng định nghĩa

TYPE student_grade IS RANGE 0 TO 100;

Một tập con các số nguyên hoặc số tự nhiên người dùng định nghĩa._ Các kiểu đếm người dùng đinh nghĩa:

TYPE bit IS ('0', '1');

Được định nghĩa trước bởi kiểu BIT

TYPE my_logic IS ('0', '1', 'Z');

Một tập con của std_logic mà người dùng định nghĩa

TYPE bit_vector IS ARRAY (NATURAL RANGE <>) OF BIT;

đã được định nghĩa trước bởi BIT_VECTOR

RANGE <> được sủ dụng để chỉ thị rằng các mức.không giới hạn

Ngày đăng: 01/04/2014, 04:23

HÌNH ẢNH LIÊN QUAN

Hình thức học - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình th ức học (Trang 4)
Hình vẽ - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình v ẽ (Trang 14)
Hình 1.1. Giao diện Quartus II. - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.1. Giao diện Quartus II (Trang 14)
Hình 4.2. Cửa sổ chọn đường dẫn và tên dự án - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 4.2. Cửa sổ chọn đường dẫn và tên dự án (Trang 15)
Hình vẽ. Các cổng logic, các hàm. - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình v ẽ. Các cổng logic, các hàm (Trang 15)
Hình 1.4. Cửa sổ chọn loại chip FPGA dùng cho dự án - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.4. Cửa sổ chọn loại chip FPGA dùng cho dự án (Trang 17)
Hình 1.6. Cửa sổ các cài đặt có thể dùng để nhập tệp thiết kế vào dự án - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.6. Cửa sổ các cài đặt có thể dùng để nhập tệp thiết kế vào dự án (Trang 18)
Hình 1.7. Cửa sổ Assignment Editor dùng để gán chân - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.7. Cửa sổ Assignment Editor dùng để gán chân (Trang 19)
Hình 1.8. Cửa sổ chọn các tín hiệu vào ra đưa vào dạng sóng mô phỏng - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.8. Cửa sổ chọn các tín hiệu vào ra đưa vào dạng sóng mô phỏng (Trang 20)
Hình 1.10. Chọn chế độ mô phỏng chức năng cho trình mô phỏng - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.10. Chọn chế độ mô phỏng chức năng cho trình mô phỏng (Trang 21)
Hình 1.9. Dạng sóng kiểm tra trước khi mô phỏng - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.9. Dạng sóng kiểm tra trước khi mô phỏng (Trang 21)
Hình 1.11. Dạng sóng mô phỏng chức năng - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình 1.11. Dạng sóng mô phỏng chức năng (Trang 22)
Hình trên cho thấy giản đồ mức đỉnh của một bộ cộng 4 bit, mạch điện có - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Hình tr ên cho thấy giản đồ mức đỉnh của một bộ cộng 4 bit, mạch điện có (Trang 56)
Hình : RAM - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
nh RAM (Trang 98)
Bảng 4.4. Bảng trạng thái  mạch giải mã LED 7 đoạn loại Anode chung - BÀI GIẢNG THIẾT KẾ SỐ DÙNG NGÔN NGỮ MÔ TẢ PHẦN CỨNG docx
Bảng 4.4. Bảng trạng thái mạch giải mã LED 7 đoạn loại Anode chung (Trang 107)

TỪ KHÓA LIÊN QUAN

w