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 1BỘ 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 2BỘ 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 5Chươ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 63.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 75.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 86.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 9MỤ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 103.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 12Chươ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 14Hì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 15Nhấ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 16dụ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 17Hì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 18f : 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 19Bướ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 20Bướ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 21Nhấ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 22Hì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 23Bướ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 25Từ 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 261.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 281.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 29END 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 30Begin 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 31u1: 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 32End 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 33Sơ đồ 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 35IF (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 362 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 37Chươ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 38Dự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 40SIGNAL 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