1. Trang chủ
  2. » Giáo án - Bài giảng

Các hệ phần mềm thiết kế chuyên dụng, Tự động thiết kế điện tử và lập trình FPGA

231 76 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 231
Dung lượng 8,22 MB

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

Nội dung

MỤC LỤC 1 Chương 1: TỔNG QUAN VỀ EDA VÀ FPGA ....................................................15 1.1. Giới thiệu tổng quan về lĩnh vực tự động thiết kế điện tử ............................. 15 1.2. Linh kiện logic khả trình, công nghệ và công cụ phát triển........................... 16 1.3. Các chủng loại linh kiện khả trình.................................................................. 16 1.3.1. Linh kiện CPLD....................................................................................... 16 1.3.2. Linh kiện ASIC........................................................................................ 17 1.3.3. Linh kiện pSoC........................................................................................ 17 1.3.4. Linh kiện FPGA....................................................................................... 18 1.4. Các công ty hàng đầu hoạt động trong lĩnh vực EDA.................................... 18 1.5. Các họ linh kiện CPLD và FPGA của Xilinx................................................. 19 1.5.1. CPLD ....................................................................................................... 19 1.5.1.1. CoolRunner ....................................................................................... 20 1.5.1.1.1. CoolRunner XPLA3................................................................... 20 1.5.1.1.2. CoolRunner-II ............................................................................ 20 1.5.1.2. XC9500 series................................................................................... 21 1.5.1.2.1. XC9500 ...................................................................................... 21 1.5.1.2.2. XC9500-XV ............................................................................... 22 1.5.1.2.3. XC9500-XL................................................................................ 23 1.5.2. FPGA của Xilinx ..................................................................................... 24 1.5.2.1. Spartan .............................................................................................. 24 1.5.2.1.1. Spartan-XL ................................................................................. 24 1.5.2.1.2. Spartan-II.................................................................................... 25 1.5.2.1.3. Spartan-IIE ................................................................................. 25 1.5.2.1.4. Spartan3...................................................................................... 26 1.5.2.1.5. Spartan-3L.................................................................................. 26 1.5.2.1.6. Spartan-3 .................................................................................... 26 1.5.2.1.7. Spartan-3E.................................................................................. 27 1.5.2.1.8. Spartan-3A, -3A DSP, -3AN...................................................... 27 1.5.2.2. Virtex ................................................................................................ 29 1.5.2.2.1. Virtex / E / EM........................................................................... 29 1.5.2.2.2. Virtex™-II.................................................................................. 29 1.5.2.2.3. Virtex-II Pro FPGAs .................................................................. 29 1.5.2.2.4. Virtex-II Pro X FPGAs .............................................................. 30 1.5.2.2.5. Virtex-4 Multi-Platform FPGA.................................................. 31 1.6. Tổng kết chương và câu hỏi ôn tập ................................................................ 35 2 Chương 2: NGÔN NGỮ LẬP TRÌNH MÔ TẢ PHẦN CỨNG........................... 36 2.1. Giới thiệu chung về ngôn ngữ mô tả phần cứng ............................................ 36 2.2. Ngôn ngữ mô tả phần cứng VHDL ................................................................ 37 2 2.2.1. Mở đầu .................................................................................................... 37 2.2.2. Cấu trúc chương trình VHDL................................................................. 38 2.2.2.1. Entity - Thực thể ............................................................................. 39 2.2.2.2. Architecture - Kiến trúc ................................................................... 39 2.2.2.3. Gán tín hiệu đồng thời...................................................................... 40 2.2.2.4. Định thời các sự kiện ....................................................................... 41 2.2.2.5. Phát biểu đồng thời .......................................................................... 41 2.2.2.6. Thiết kế có cấu trúc.......................................................................... 41 2.2.2.7. Hành vi tuần tự................................................................................. 42 2.2.2.8. Các phát biểu tiến trình .................................................................... 43 2.2.2.9. Các phát biểu cấu hình ..................................................................... 43 2.2.3. Tiến trình tuần tự .................................................................................... 44 2.2.3.1. Phát biểu tiến trình .......................................................................... 44 2.2.3.2. Danh sách tín hiệu tác động ............................................................. 44 2.2.3.3. Ví dụ về tiến trình ............................................................................ 44 2.2.4. Gán tín hiệu và gán biến ......................................................................... 46 2.2.5. Các phát biểu tuần tự .............................................................................. 49 2.2.5.1. Phát biểu IF ...................................................................................... 49 2.2.5.2. Phát biểu CASE................................................................................ 51 2.2.5.3. Phát biểu LOOP ............................................................................... 53 2.2.5.4. Phát biểu NEXT............................................................................... 55 2.2.5.5. Phát biểu EXIT................................................................................. 56 2.2.5.6. Phát biểu ASSERT

Trang 1

BỘ QUỐC PHÒNG TRUNG TÂM KHOA HỌC KỸ THUẬT–CÔNG NGHỆ QUÂN SỰ

VŨ LÊ HÀ (CHỦ BIÊN) NGUYỄN TRƯỜNG SƠN PHAN HỒNG MINH NGUYỄN QUANG HƯNG

GIÁO TRÌNH

CÁC HỆ PHẦN MỀM THIẾT KẾ CHUYÊN DỤNG (HỆ PHẦN MỀM TỰ ĐỘNG THIẾT KẾ ĐIỆN TỬ VÀ

LẬP TRÌNH FPGA)

Hà nội, năm 2007

Trang 2

MỤC LỤC

1 Chương 1: TỔNG QUAN VỀ EDA VÀ FPGA 15

1.1 Giới thiệu tổng quan về lĩnh vực tự động thiết kế điện tử 15

1.2 Linh kiện logic khả trình, công nghệ và công cụ phát triển 16

1.3 Các chủng loại linh kiện khả trình 16

1.3.1 Linh kiện CPLD 16

1.3.2 Linh kiện ASIC 17

1.3.3 Linh kiện pSoC 17

1.3.4 Linh kiện FPGA 18

1.4 Các công ty hàng đầu hoạt động trong lĩnh vực EDA 18

1.5 Các họ linh kiện CPLD và FPGA của Xilinx 19

1.5.1 CPLD 19

1.5.1.1 CoolRunner 20

1.5.1.1.1 CoolRunner XPLA3 20

1.5.1.1.2 CoolRunner-II 20

1.5.1.2 XC9500 series 21

1.5.1.2.1 XC9500 21

1.5.1.2.2 XC9500-XV 22

1.5.1.2.3 XC9500-XL 23

1.5.2 FPGA của Xilinx 24

1.5.2.1 Spartan 24

1.5.2.1.1 Spartan-XL 24

1.5.2.1.2 Spartan-II 25

1.5.2.1.3 Spartan-IIE 25

1.5.2.1.4 Spartan3 26

1.5.2.1.5 Spartan-3L 26

1.5.2.1.6 Spartan-3 26

1.5.2.1.7 Spartan-3E 27

1.5.2.1.8 Spartan-3A, -3A DSP, -3AN 27

1.5.2.2 Virtex 29

1.5.2.2.1 Virtex / E / EM 29

1.5.2.2.2 Virtex™-II 29

1.5.2.2.3 Virtex-II Pro FPGAs 29

1.5.2.2.4 Virtex-II Pro X FPGAs 30

1.5.2.2.5 Virtex-4 Multi-Platform FPGA 31

1.6 Tổng kết chương và câu hỏi ôn tập 35

2 Chương 2: NGÔN NGỮ LẬP TRÌNH MÔ TẢ PHẦN CỨNG 36

2.1 Giới thiệu chung về ngôn ngữ mô tả phần cứng 36

2.2 Ngôn ngữ mô tả phần cứng VHDL 37

Trang 3

2.2.1 Mở đầu 37

2.2.2 Cấu trúc chương trình VHDL 38

2.2.2.1 Entity - Thực thể 39

2.2.2.2 Architecture - Kiến trúc 39

2.2.2.3 Gán tín hiệu đồng thời 40

2.2.2.4 Định thời các sự kiện 41

2.2.2.5 Phát biểu đồng thời 41

2.2.2.6 Thiết kế có cấu trúc 41

2.2.2.7 Hành vi tuần tự 42

2.2.2.8 Các phát biểu tiến trình 43

2.2.2.9 Các phát biểu cấu hình 43

2.2.3 Tiến trình tuần tự 44

2.2.3.1 Phát biểu tiến trình 44

2.2.3.2 Danh sách tín hiệu tác động 44

2.2.3.3 Ví dụ về tiến trình 44

2.2.4 Gán tín hiệu và gán biến 46

2.2.5 Các phát biểu tuần tự 49

2.2.5.1 Phát biểu IF 49

2.2.5.2 Phát biểu CASE 51

2.2.5.3 Phát biểu LOOP 53

2.2.5.4 Phát biểu NEXT 55

2.2.5.5 Phát biểu EXIT 56

2.2.5.6 Phát biểu ASSERT 58

2.2.5.7 Phát biểu WAIT 61

2.2.5.7.1 WAIT ON 63

2.2.5.7.2 WAIT UNTIL 63

2.2.5.7.3 WAIT FOR 63

2.2.5.7.4 Ghép các điều kiện cho WAIT 64

2.2.5.7.5 WAIT time_out 64

2.2.5.8 So sánh danh sách tín hiệu tác động và phát biểu WAIT 66

2.2.6 Gán đồng thời 67

2.2.6.1 Tiến trình thụ động 70

2.2.7 Các hàm chuyển đổi 72

2.2.8 Các toán tử so sánh và số học 73

2.3 Tổng kết chương và câu hỏi ôn tập 74

3 Chương 3: THIẾT KẾ FPGA SỬ DỤNG MÔI TRƯỜNG PHẦN MỀM TÍCH HỢP ISE – INTEGRATED SOFTWAVE ENVIRONMENT 75

3.1 Chu trình thiết kế FPGA 75

3.2 Phần mềm thiết kế ISE của Xilinx 77

3.2.1 Trình tự thiết kế trên ISE qua các bài tập thiết kế 81

3.2.2 Những đoạn chương trình mẫu 84

Trang 4

3.2.4 Mô phỏng chức năng 87

3.2.5 Lập trình mô tả trạng thái 91

3.2.6 Thiết kế mức đỉnh của VHDL 97

3.2.7 Mô phỏng thiết kế 103

3.2.8 Thiết kế sơ đồ nguyên lý mức đỉnh 105

3.2.8.1 Tạo một thiết kế sơ đồ nguyên lý mức đỉnh 106

3.2.8.2 Đánh dấu các cổng vào ra 108

3.2.8.3 Mô phỏng thiết kế sơ đồ nguyên lý mức đỉnh 110

3.3 Tổng kết chương và câu hỏi ôn tập 112

4 Chương 4: MÔ PHỎNG THIẾT KẾ FPGA SỬ DỤNG MODELSIM 113

4.1 Giới thiệu 113

4.2 Bài 1 – Mô phỏng cơ bản: Tạo thư viện thiết kế 114

4.3 Bài 2 – Các dự án ModelSim 123

4.4 Bài 3 – Làm việc với nhiều thư viện 132

4.5 Bài 4 - Quan sát mô phỏng trong cửa sổ Wave 138

4.6 Bài 5 - Quan sát và khởi tạo bộ nhớ 145

4.7 Bài 6 - Tự động mô phỏng 157

4.8 Tổng kết chương 161

5 Chương 5: THIẾT KẾ HỆ THỐNG DSP TRÊN NỀN FPGA SỬ DỤNG SYSTEM GENERATOR 162

5.1 Giới thiệu 162

5.2 Làm quen với System Generator 168

5.2.1 Bài 1: Các bước cơ bản để tạo một thiết kế 168

5.2.2 Bài 2: Các toán tử Bit và con trỏ tĩnh 174

5.2.3 Bài 3: Điều khiển hệ thống 180

5.2.4 Bài 4: Các hệ thống đa tốc độ 185

5.2.5 Bài 5: Sử dụng bộ nhớ 188

5.2.6 Bài 6: Thiết kế bộ lọc 192

5.3 Tổng kết chương và câu hỏi ôn tập 195

6 Chương 6: PHÁT TRIỂN HỆ THỐNG NHÚNG SỬ DỤNG EDK – EMBEDDED DEVELOPMENT KIT 196

6.1 Tổng quan về EDK 196

6.1.1 Các khái niệm cơ bản 196

6.1.2 Các công cụ hỗ trợ trong EDK 196

6.1.2.1 Thư viện nền XPS (Xilinx Platforme Studio) 196

6.1.2.2 Công cụ thiết kế phần cứng cơ bản Platgen (Hardware Platform Generation Tool) 197

Trang 5

6.1.2.3 Trình xây dựng hệ thống cơ bản BSB (Base System Builder) 197

6.1.2.4 Công cụ tạo mẫu mô phỏng Simgen (Simulation Model Generation Tool) 197

6.1.2.5 Tạo dựng ngoại vi người dùng (Create and Import Peripheral) 197

6.1.2.6 Công cụ khởi tạo thư viện Libgen (Library Generation Tool) 197

6.1.2.7 Công cụ tạo chuỗi bit Bitinit (Bitstream Initializer) 197

6.1.2.8 Công cụ phát triển phần mềm GNU (Software Development Tools) 197

6.1.2.9 Công cụ gỡ rối cho các bộ vi xử lý của Xilinx XMD (Xilinx Microprocessor Debugger) 197

6.1.3 Giao diện người dùng của XPS 198

6.1.3.1 Cửa sổ giao tiếp người dùng (1) 198

6.1.3.2 Cửa sổ thông tin project (2) 198

6.1.3.2.1 Danh mục Project (4) 198

6.1.3.2.2 Danh mục Applications (5) 198

6.1.3.2.3 Danh mục IP Catalog (6) 198

6.1.3.3 Cửa sổ ghép nối hệ thống (3) 199

6.1.3.4 Cửa sổ kết nối bus (7) 199

6.1.3.5 Filter (9) 199

6.1.4 Xây dựng nền phần cứng (Hardware Platform) 200

6.1.4.1 Nền phần cứng 200

6.1.4.2 Xây dựng nền phần cứng trong thư viện nền (Platform Studio) 200

6.1.5 Xây dựng nền phần mềm (Software Platform) 200

6.1.5.1 Nền phần mềm 200

6.1.5.2 Xây dựng nền phần mềm 200

6.1.6 Hỗ trợ phần mềm ứng dụng 201

6.1.7 Các hỗ trợ của EDK và yêu cầu cấu hình cho máy tính 202

6.2 Quy trình thiết kế một project trên XPS 202

6.2.1 Khái quát về quá trình thiết kế một Project 202

6.2.1.1 Thiết kế project trên hai môi trường ISE và XPS 202

6.2.1.2 Thiết kế project chỉ với XPS 203

6.2.2 Xây dựng project trong môi trường XPS 204

6.2.2.1 Phát triển phần cứng 204

6.2.2.2 Xây dựng phần mềm ứng dụng 205

6.2.2.3 Xây dựng phần mềm ứng dụng trong XPS 205

6.2.2.4 Mô phỏng và gỡ rối cho phần mềm ứng dụng 206

6.2.2.4.1 Mô phỏng - Simulation 206

6.2.2.4.2 Gỡ rối - Debug 207

6.2.2.5 Khởi tạo và ghép nối phần mềm, phần cứng 208

6.2.3 Giới thiệu vê công cụ thiết kế hệ thống nền với BSB 209

6.2.3.1 Xây dựng một project không sử dụng BSB 209

6.2.3.2 Xây dựng project với BSB 210

Trang 6

6.3.1 Yêu cầu chung 211

6.3.2 Các bước tiến hành 211

6.3.2.1 Khởi tạo XPS 211

6.3.2.2 Xậy dựng project với BSB 212

6.3.2.3 Xây dựng và sử dụng ngoại vi người dùng 217

6.3.2.4 Phát triển thiết kế trên XPS 220

6.3.2.5 Thiết kế phần mềm 222

6.3.2.5.1 Cấu hình BSP 222

6.3.2.5.2 Xây dựng phần mềm ứng dụng 224

6.3.2.5.3 Biên dịch phần mềm ứng dụng 225

6.3.2.5.4 Nạp file biên dịch lên board 225

6.4 Tổng kết chương 226

Phụ lục: CÁC BÀI TẬP THỰC HÀNH 227

Bài 1 Thiết kế bộ đếm 227

Bài 2: Thiết kế đồng hồ báo thức – Alarm Clock 228

TÀI LIỆU THAM KHẢO 230

Trang 7

DANH MỤC HÌNH VẼ

Hình 1.1: Cấu trúc cơ bản của một FPGA 18

Hình 1.2: Các chủng loại linh kiện họ spartan3 26

Hình 3.1: Chu trình thiết kế FPGA 75

Hình 3.2 Project Navigator - Giao diện chính của phần mềm ISE 78

Hình 3.3: Các cửa sổ file nguồn và quản lý các tín trình thiết kế dự án 78

Hình 3.4: Cửa sổ quản lý tiến trình và các ký hiệu thông báo trạng thái biên dịch 79

Hình 3.5: Chọn kiểu mô phỏng và công cụ mô phỏng 79

Hình 3.6: Quan sát chi tiết các tiến trình và công cụ biên dịch 80

Hình 3.7: Cửa sổ báo cáo kết quả tổng hợp 80

Hình 3.8: Tạo file lập trình cho chip 81

Hình 3.9: tạo một dự án mới 82

Hình 3.10: Khai báo thuộc tính linh kiện 82

Hình 3.11: Chọn kiểu file nguồn 83

Hình 3.12: Khai báo các cổng vào ra 83

Hình 3.13: File nguồn được đưa và trong thiết kế 84

Hình 3.14: Cửa sổ soạn thảo mã nguồn HDL (HDL Editor ) 84

Hình 3.15: Mã chương trình sau khi sửa đổi 86

Hình 3.16: Tạo file testbench cho mô phỏng 87

Hình 3.17: Cài đặt các tham số thời gian và tín hiệu cho mô phỏng 88

Hình 3.18: Biểu đồ tín hiệu mô phỏng theo thời gian 88

Hình 3.19: Cài đặt các tín hiệu đầu vào 89

Hình 3.20: Chọn chế độ mô phỏng hành vi (Behavioral Simulation) 89

Hình 3.21: Thực hiện mô phỏng Behavioral Simulation 90

Hình 3.22: Kết quả mô phỏng 90

Hình 3.23: Chụp lại trạng thái dự án 91

Hình 3.24: Tạo file nguồn mô tả trạng thái 91

Hình 3.25: Thiết kế mô tả trạng thái sử dùng State Machine Wizard 92

Hình 3.26: Thiết lập số trạng thái của hệ thống 92

Hình 3.27: Cài đặt các bước chuyển trạng thái 93

Hình 3.28: Sửa trạng thái 93

Hình 3.29: Xác định giá trị đầu ra 94

Hình 3.30: Lưu đồ mô tả trạng thái hệ thống 94

Hình 3.31: Sửa đổi điều kiện trạng thái 95

Hình 3.32: Sửa đổi vector 95

Hình 3.33: Thiết kế mô tả trạng thái hoàn chỉnh 96

Hình 3.34: Kết quả biên dịch từ lưu đồ trạng thái sang dạng mã HDL 96

Hình 3.35: Mã HDL được biên dịch từ lư đồ trạng thái 97

Hình 3.36: File mô tả trạng thái (*.dia) được thêm vào thiết kế 97

Hình 3.37: Lấy snapshot của dự án 98

Hình 3.38: Tạo file mức đỉnh 98

Hình 3.39: Định nghĩa các tín hiệu vào ra của module mức đỉnh 99

Hình 3.40: Mã nguồn khai báo entity của module mức đỉnh - top 99

Hình 3.41: Sử dụng Instantiation Template để tạo component Counter 100

Hình 3.42: Đặt component Counter vào trong entity top 100

Hình 3.43: Kết nối counter và state machine vào entity top 101

Trang 8

Hình 3.45: Thay đổi STAT_MAC Behavior và SHELL_STAT_MAC BEHAVIOR 103

Hình 3.46: Các file nguồn thành phần đã nằm trong file nguồn mức đỉnh 103

Hình 3.47: Tạo file mô phỏng thiết kế 104

Hình 3.48: Thiết lập các tham số mô phỏng 104

Hình 3.49: Thiết lập ESET 105

Hình 3.50: Kết quả mô phỏng 105

Hình 3.51: Các file nguồn thành phần khi chưa có sơ đồ nguyên lý mức đỉnh 106

Hình 3.52: Tạo sơ đồ nguyên lý mức đỉnh 106

Hình 3.53: Tạo các symbol cho các file nguồn HDL thành phần 107

Hình 3.54: Các symbol của các file nguồn HDL thành phần 107

Hình 3.55: Kết nối các component 108

Hình 3.56: Đặt tên các tín hiệu 108

Hình 3.57: Sơ đồ nguyên lý hoàn thiện 109

Hình 3.58: Mã nguồn HDL được tạo tự động từ sơ đồ nguyên lý mức đỉnh 109

Hình 3.59: Tạo file mô phỏng sơ đồ nguyên lý mức đỉnh 110

Hình 3.60: Khởi tạo các tham số mô phỏng 110

Hình 3.61: Cài đặt tín hiệu đầu vào 111

Hình 3.62: Chạy mô phỏng 111

Hình 3.63: Kết quả mô phỏng 111

Hình 4.1: Hộp thoại Welcome to ModelSim 115

Hình 4.2: Hộp thoại tạo thư viện mới 116

Hình 4.3: Thư viện làm việc mới tạo 116

Hình 4.4: Hộp thoại biên dịch các file nguồn HDL 117

Hình 4.5: Các moduleVerilog được biên dịch vào thư viện work 118

Hình 4.6: Tải thiết kế vào bộ mô phỏng .118

Hình 4.7: Tải thiết kế với hộp thoại Start Simulation 119

Hình 4.8: Ô tab biểu diễn một thiết kế Verilog .119

Hình 4.9: Đặt các tín hiệu vào cửa sổ Wave 120

Hình 4.10: Các dạng sóng được vẽ trong cửa sổ Wave 120

Hình 4.11: Một điểm dừng ở cửa sổ Source 121

Hình 4.12: Hộp thoại Restart .122

Hình 4.13: Để con trỏ chuột lên một biến trong cửa sổ Source 122

Hình 4.14: Các giá trị biểu hiện trong cửa sổ Objects 123

Hình 4.15: Hộp thoại tạo một dự án 123

Hình 4.16: Hộp thoại thêm các file vào dự án 124

Hình 4.17: Thêm các file vào dự án 125

Hình 4.18: Các file mới được đặt hiển thị một kí hiệu’?’ cho ô cửa sổ trạng thái 125

Hình 4.19: Thư viện work chứa các file nguồn của dự án 126

Hình 4.20: Quan sát các module thành phần trong các file 127

Hình 4.21: Thêm thư mục mới 128

Hình 4.22: Thư mục mới xuất hiện trong vùng làm việc 128

Hình 4.23: Đạt tên thư mục 128

Hình 4.24: Tên thư mục đã được thêm mới 129

Hình 4.25: Hộp thoại Simulation Configuration 130

Hình 4.26: Tạo cấu hình mô phỏng mới 131

Hình 4.27: Biểu diễn tuỳ chọn cho Simulation Configuration 131

Hình 4.28: Các dẫn hướng biên dịch dòng lệnh 132

Trang 9

Hình 4.29: Biên dịch counter vào thư viện tài nguyên .133

Hình 4.30: counter đã được đưa vào thư viện tài nguyên 134

Hình 4.31: Lỗi mô phỏng Verilog được thông báo trên cửa sổ Main 135

Hình 4.32: Cảnh báo mô phỏng VHDL trên cửa sổ Main 135

Hình 4.33: Ánh xạ tới thư viện parts_lib 136

Hình 4.34: Thiết lập một thư viện mới 137

Hình 4.35: Mã nguồn của testbench 138

Hình 4.36: Cửa sổ wave 139

Hình 4.37: Phóng to 140

Hình 4.38: Thu nhỏ 141

Hình 4.39: Sử dụng 1 con trỏ 142

Hình 4.40: Đổi tên con trỏ 143

Hình 4.41: Đo khoảng thời gian giữa hai con trỏ 143

Hình 4.42: Khóa con trỏ 144

Hình 4.43: quan sát bộ nhớ 146

Hình 4.44: Nội dung bộ nhớ 146

Hình 4.45: Bộ nhớ khi mô phỏng 147

Hình 4.46: Thay đổi cơ số giá trị địa chỉ 147

Hình 4.47: Nội dung bộ nhớ 148

Hình 4.48: Hộp thoại GOTO 148

Hình 4.49: Thay đổi địa chỉ trực tiếp 149

Hình 4.50: Tìm giá trị dữ liệu 149

Hình 4.51: Hộp thoại lưu bộ nhớ 150

Hình 4.52: Hộp thoại nạp bộ nhớ 151

Hình 4.53: Khởi tạo bộ nhớ từ file và gán giá trị 152

Hình 4.54: nạp file dữ liệu bộ nhớ 153

Hình 4.55: Viết đè dữ liệu bộ nhớ 153

Hình 4.56: Nội dung bộ nhớ gốc 154

Hình 4.57: Thay đổi nội dung bộ nhớ trong một giải địa chỉ 154

Hình 4.58: Nội dung bộ nhớ bất kỳ 155

Hình 4.59: Thay đổi nội dung bộ nhớ 156

Hình 4.60: Nhập giá trị mới 156

Hình 4.61: Thay đổi nội dung tại một địa chỉ xác định 156

Hình 4.62: Mở tập dữ liệu 159

Hình 5.1: Thiết kế trên cơ sở mô hình sử dụng System Generator 163

Hình 5.2: Các khối chức năng trong System Genrator 163

Hình 5.3: Khối chức năng biên dịch bộ lọc số 164

Hình 5.4: Kết hợp với MatLAB 165

Hình 5.5: Đánh giá tài nguyên hệ thống 166

Hình 5.6: Đồng mô phỏng phần cứng và phần mềm 166

Hình 5.7: Tích hợp hệ thống 167

Hình 5.8: Chu trình thiết kế sử dụng System Generator 169

Hình 5.9: Tập công cụ của SysGen 169

Hình 5.10: Xác định đường biên cho các khối chức năng FPGA 170

Hình 5.11: Khối Token trong System Generator 171

Hình 5.12: Cấu trúc của một thiết kế DSP sử dụng System Generator 171

Trang 10

Hình 5.14: Thiết kế trên cơ sở mô hình hóa 173

Hình 5.15: Thiết lập các vector đầu vào sử dụng MATLAB 173

Hình 5.16: biến đổi kiểu double từ Simulink sang dạng số dấu phảy tĩnh 175

Hình 5.17: Lượng tử hóa con trỏ tĩnh 176

Hình 5.18: Các mode tràn (Overflow) và làm tròn (Round) 177

Hình 5.19: Khối Reinterpret 178

Hình 5.20: Khối Convert (biến đổi) 178

Hình 5.21: Khối Concat (ghép nối) 178

Hình 5.22: Khối Slice 179

Hình 5.23: Khối BitBasher 179

Hình 5.24: Điều khiển một hệ thống DSP 181

Hình 5.25: Khối MCode 181

Hình 5.26: Máy trạng thái 182

Hình 5.27: Khối Expression 183

Hình 5.28: Các cổng Reset và Enable 184

Hình 5.29: Bursty Data 184

Hình 5.30: Các hệ thống đa tốc độ 185

Hình 5.31: Up Sampling 186

Hình 5.32: Down Sampling 186

Hình 5.33: Quan sát sự thay đổi tốc độ trong Simulink 187

Hình 5.34: Các công cụ gỡ rối 187

Hình 5.35: Các qui tắc về chu kỳ lấy mẫu 188

Hình 5.36: Block và Distributed RAM (RAM khối và RAM phân tán) 189

Hình 5.37: Khởi tạo các bộ RAM và ROM 189

Hình 5.38: Các khối RAM trong System Generator 190

Hình 5.39: Các khối ROM trong System Generator 191

Hình 5.40: Khối giữ chậm 191

Hình 5.41: Cấu trúc khối SRL16E bên trong khối giữ chậm 191

Hình 5.42: Khối FIFO 192

Hình 5.43: Khối DSP48 193

Hình 5.44: Khối biên dịch bộ lọc số 193

Hình 5.45: Thiết kế bộ lọc số sử dụng FDA Tools 194

Hình 5.46: Sử dụng kết quả tính toán hệ số bộ lọc 195

Hình 6.1: Giao diện XPS 199

Hình 6.2: Trình tự thiết kế một project 201

Hình 6.3: Các luồng thiết kế khác nhau trên ISE và XPS .204

Hình 6.4: Tạo mới một project .206

Hình 6.5: Tiến hành các bước mô phỏng cho thiết kế .207

Hình 6.6: Tạo một project trắng không sử dụng BSB .209

Hình 6.7: Lựa chọn họ thiết bị FPGA 210

Hình 6.8: Tạo mới một project với BSB 212

Hình 6.9: Lựa chọn board phát triển 212

Hình 6.10: Thiết lập các tham số cho MicroBlaze .213

Hình 6.11: Cấu hình các giao tiếp vào ra 214

Hình 6.12: Cấu hình các giao tiếp vào ra 215

Hình 6.13: Thiết lập phần mềm .216

Hình 6.14: Cấu hình phần mềm ứng dụng kiểm tra bộ nhớ .216

Trang 11

Hình 6.15: Tóm tắt hệ thống .217

Hình 6.16: Đặt tên và phiên bản cho ngoại vi tạo dựng 218

Hình 6.17: Lựa chọn các dịch vụ IPIF 219

Hình 6.18: Cấu hình các thanh ghi cho ngoại vi 219

Hình 6.19: Các file được tạo ra khi xây dựng một thiết bị ngoại vi người dùng .220

Hình 6.20: Bổ sung ngoại vi mới tạo dựng vào thiết kế .221

Hình 6.21: Kết nối Bus cho ngoại vi mới .221

Hình 6.22: Kết nối các cổng vào ra cho ngoại vi 222

Hình 6.23: Cấu hình các tham số cho nền phần mềm 223

Hình 6.24: Lựa chọn hệ điều hành và thư viện cho các ngoại vi 223

Hình 6.25: Lựa chọn driver và phiên bản cho các ngoại vi .224

Hình 6.26: Phần mềm ứng dụng cho kiểm tra bộ nhớ .224

Hình 6.27: Kết quả biên dịch project .225

Hình 6.28: Kết quả chạy project đã xây dựng 225

Trang 12

DANH MỤC BẢNG BIỂU

Bảng 1-1: Các sản phẩm của dòng CoolRunner XPLA3 20

Bảng 1-2: Các sản phẩm dòng CoolRunner-II 21

Bảng 1-3: Các sản phẩm dòng XC9500 22

Bảng 1-4: Các sản phẩm dòng XC9500-XV 23

Bảng 1-5: Các sản phẩm dòng XC9500XL 23

Bảng 1-6: Danh mục linh kiện Spartan 3……… 28

Bảng 1-7: Danh mục linh kiện Virtex4 ……… 33

Bảng 1-8: Danh mục linh kiện Virtex5 ……… 34

Trang 13

BẢNG DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT

APU Auxiliary Processor Unit

ASIC Application Specific Integrated Circuit

ASMBL Advanced Silicon Modular Block

Bitinit Bitstream Initializer

BSB Base System Builder

BSP Board Support Package

CPLD Complex Programable Logic Devices

CLB Configurable Logic Block

DCM Digital Clock Manager

DLL Delay Locked Loop

DSP Digital Signal Processing

EDA Electronic Design Automation

EDK Embedded Development Kit

FIFO First In First Out

FPGA Field Programable Gate Arrays

FPU floating point unit

GPIO General Purpose Input Output

GUI Graphic User Interface

HDL Hardwave Description Language

IOB Input Output Block

ISE Integrated Software Environment

JTAG Joint Test Action Group

Libgen Library Generation Tool

LUT Look Up Table

MAC Media Access Control

MHS Microprocessor Hardware Specification

MIPS Mega Instruction Per Second

MSS Microprocessor Software Specification

OPB On-Chip Peripheral Bus

PLL Phase Locked Loop

Platgen Hardware Platform Generation Tool

PSOC Programable System On Chip

Simgen Simulation Model Generation Tool

UCF User Constraints File

UART Universal Asynchronous Receiver-Transmitter

VHDL Very High Speed Hardwave Description Language

XMD Xilinx Microprocessor Debugger

XPS Xilinx Platform Studio

Trang 14

PHẦN MỞ ĐẦU

Giáo trình “Các hệ phần mềm thiết kế chuyên dụng – Hệ phần mềm tự

động thiết kế điện tử và lập trình FPGA” đề cập tới các lĩnh vực cơ bản bao gồm

các phương pháp thiết kế và kiểm tra các hệ thống điện tử trên cơ sở đồ hoạ (graphic-based), các ngôn ngữ miêu tả phần cứng (hardware description languages - HDLs), các mạch tích hợp chuyên dụng (application specific integrated circuits - ASICs), các linh kiện logic khả trình (complex programable logic devices - CPLDs)

và các mảng cổng khả trình trường (field programable gate arrays - FPGAs)

Giáo trình đi sâu vào giới thiệu các công cụ thiết kế FPGA của hãng Xilinx, một hãng hàng đầu trên thế giới trong lĩnh vực chế tạo các chủng loại linh kiện FPGA cũng như cung cấp các công cụ phần mềm thiết kế với đầy đủ các chức năng cần thiết cho một chu trình thiết kế FPGA từ cơ bản đến nâng cao

Nội dung giáo trình được phân chia thành 6 chương:

Chương 1: Giới thiệu tổng quan về lĩnh vực tự động thiết kế điện tử

(Electronic Design Automation - EDA), bao gồm các công nghệ chế tạo tiên tiến Các hệ công cụ phần mềm với các chức năng khác nhau được sử dụng trong các lĩnh vực thiết kế, mô phỏng và chế tạo các hệ thống điện tử Giới thiệu chi tiết về công nghệ FPGA và các chủng loại linh kiện FPGA của Xilinx

Chương 2: Giới thiệu về ngôn ngữ lập trình mô tả phần cứng Mặc dù có

nhiều phương pháp thiết kế hệ thống khác nhau như thiết kế trên cơ sở đồ họa, mô

tả máy trạng thái,…các ngôn ngữ mô tả phần cứng là một công cụ rất quan trọng cho người thiết kế để xây dựng nên các hệ thống điện tử từ đơn giản đến phức tạp Ngôn ngữ VHDL được giới thiệu chi tiết

Hai chương tiếp theo, giáo trình giới thiệu các công cụ thiết kế FPGA cơ bản, bao gồm:

Chương 3: Giới thiệu môi trường phần mềm tích hợp ISE của Xilinx

Nội dung cơ bản đi sâu vào giới thiệu hệ công cụ ISE – Integrated Sofware Environment – Môi trường phần mềm tích hợp Đây là môi trường tích hợp nhiều phần mềm công cụ khác nhau phục vụ cho chu trình thiết kế FPGA cơ bản, từ bước xác định yêu cầu hệ thống đến bước nạp chương trình cho phần cứng

Chương 4: Giới thiệu chương trình mô phỏng ModelSim của MentorGraphics

Đây là một chương trình mô phỏng được sử dụng nhiều cho các thiết kế FPGA Hai chương cuối giới thiệu các nội dung nâng cao, bao gồm:

Chương 5: Giới thiệu phần mềm thiết kế System Generator, sử dụng để thiết

kế các hệ thống DSP nâng cao trong môi trường MatLAB

Chương 6: Giới thiệu phần mềm thiết kế nâng cao của Xilinx trong lĩnh vực

thiết kế hệ thống nhúng (EDK – Embedded Development Kit)

Nội dung giáo trình phù hợp với thời lượng học 90 tiết Đối tượng học viên phù hợp là các kỹ sư chuyên ngành điện, điện tử, công nghệ thông tin, có kiến thức

cơ sở về kỹ thuật số và các ngôn ngữ lập trình thông dụng như C/C++, Assemble, VisualBasic

Trang 15

Trong tài liệu, đối với nhiều thuật ngữ chuyên ngành mới chưa có trong các từ điển chuyên ngành, bên cạnh việc dịch sang tiếng Việt, các tác giả giữ nguyên nghĩa tiếng Anh để người đọc tiện tham khảo trong các tài liệu khác

Trang 16

1 Chương 1: TỔNG QUAN VỀ EDA VÀ FPGA

1.1 Giới thiệu tổng quan về lĩnh vực tự động thiết kế điện tử

Trong những năm gần đây, sự phát triển rất nhanh về độ phức tạp của các hệ thống điện tử đòi hỏi sự phát triển các phương pháp mới trong lĩnh vực thiết kế, mô phỏng và sản xuất linh kiện cũng như các thiết bị điện tử, đặc biệt trong lĩnh vực số (digital) Cùng với sự phát triển mạnh mẽ về công nghệ chế tạo mạch tích hợp, các công cụ phần mềm trong lĩnh vực tự động thiết kế điện tử (EDA – Electronic Design Automation) cũng phát triển không ngừng, cung cấp cho người thiết kế những phương tiện ngày càng mạnh mẽ hơn trong lĩnh vực thiết kế điện tử Đi tiên phong trong lĩnh vực này có thể kể đến các công ty hàng đầu như Mentor Graphics, Xilinx, Altera, Cadence,…

Với sự hỗ trợ của các công cụ thiết kế mới, các phương thức thiết kế cũng có những thay đổi mang tính cách mạng và các vấn đề mới trong chu trình thiết kế cũng nảy sinh Bởi vì độ phức tạp và dung lượng của linh kiện hay thiết bị điện tử ngày một nâng cao, các công cụ thiết kế mới cần phải đáp ứng được những yêu cầu thiết kế như:

- Hỗ trợ tốt cả thiết kế hệ thống và phân vùng thiết kế;

- Hỗ trợ các phương thức thiết kế từ trên xuống (top-down) hoặc từ dưới lên (bottom-up);

- Cung cấp khả năng tái sử dụng (reused), phát triển thiết kế và vấn đề tích hợp mạch ảo;

- Hỗ trợ được nhiều mức độ trừu tượng khác nhau của thiết kế, từ mức hành vi tới mức vật lý;

- Thiết kế hệ thống số (Digital System Design);

- Mô phỏng hệ thống số (Digital System Simulation);

- Tổng hợp trên cơ sở ngôn ngữ mô tả phần cứng (HDLs);

- Thiết kế kiểm tra (Design For Test);

- Thiết kế mạch tương tự (Analog System Design);

- Mô phỏng mạch tương tự (Analog System Simulation);

- Thiết kế tín hiệu trộn (Mixed-signal Design);

- Kiểm tra chức năng (Functional Verification);

- Thiết kế hệ thống nhúng (Embedded System Design);

Co-simulation);

- Thiết kế hệ thống trên một chíp đơn (System On-chip);

- Thiết kế mạch tích hợp (IC Design);

- Thiết kế mạch tích hợp chuyên dụng (ASIC);

Trang 17

- Thiết kế linh kiện mảng cổng khả trình (FPGA)

Sự tích hợp các công cụ cũng là một vấn đề rất quan trọng Bởi lẽ không một nhà sản xuất hay một công ty nào có thể cung cấp hoàn toàn tất cả các công cụ thiết

kế cũng như công nghệ chế tạo phần cứng trong mọi lĩnh vực thiết kế, việc thống nhất các khuôn dạng tiêu chuẩn thiết kế để cho các công cụ thiết kế khác nhau có thể được tích hợp trong một hệ thống duy nhất trở nên rất cấp thiết

1.2 Linh kiện logic khả trình, công nghệ và công cụ phát triển

Trong lĩnh vực EDA nói chung, một mảng công nghệ đóng một vai trò rất quan trọng và hiện nay đang là một trong những xu hướng phát triển chính, đó là lĩnh vực công nghệ liên quan đến các linh kiện logic khả trình

Một linh kiện logic khả trình (Programable Logic Device - PLD) là một linh kiện điện tử có thể được sử dụng để xây dựng các mạch điện tử bên trong Không giống như các linh kiện truyền thống có sẵn các chức năng cố định tại thời điểm xuất xưởng (ví dụ như các linh kiện số họ 74xx, 40xx,…), các PLD có các chức năng ‘chưa được xác định’ sau khi sản xuất tại nhà máy, hay nói một cách khác, chúng là một linh kiện ‘trắng’ Người thiết kế sau đó sẽ sử dụng các công cụ phần mềm thiết kế phù hợp để tạo cho linh kiện PLD một chức năng xác định Vì vậy, trước khi PLD có thể được sử dụng trong hệ thống điện tử, chúng cần được lập trình

Những PLD đầu tiên xuất hiện vào khoảng thập niên 1970, được phát triển bởi một số công ty của Mỹ như Texas Instrument, National Semiconductor Từ đó đến nay, với sự phát triển của khoa học công nghệ, PLD ngày càng đóng một vai trò quan trọng trong các hệ thống điện tử Các xu hướng phát triển cả về công nghệ chế tạo và phương thức thiết kế liên quan đến PLD ngày càng được mở rộng và khả năng ứng dụng của nó ngày càng được nâng cao

Phân loại về công nghệ chế tạo, các PLD có thể được phân chia thành những chủng loại chính: PAL, pSoC, CPLD, ASIC, FPGA Các công cụ thiết kế và ngôn ngữ lập trình cũng được phát triển theo để trợ giúp người thiết kế một cách tối đa trong vấn đề lập trình và thiết kế hệ thống

1.3 Các chủng loại linh kiện khả trình

1.3.1 Linh kiện CPLD

CPLD là viết tắt của thuật ngữ “complex programmable logic device” – linh kiện logic khả trình phức tạp Xét về mặt tính năng, nó có khá nhiều điểm tương tự với các họ linh kiện logic có thể lập trình khác như FPGA, PAL hay ASIC CPLD

là tiền thân của FPGA Ngày nay, ranh giới phân biệt giữa CPLD và FPGA ngày một nhỏ đi Một vài điểm chính có thể dùng để so sánh (một cách tương đối) giữa CPLD và các chủng loại linh kiện khác là:

Các đặc điểm giống với FPGA:

• Cung cấp một số lượng lớn các cổng Thông thường số lượng cổng trong một CPLD nhỏ hơn trong một FPGA

Trang 18

• Hỗ trợ các tính năng nâng cao cho lập trình các mạch phức tạp Ví dụ như các thanh ghi số học, các bộ nhân, bộ nhớ,…

Một điểm khác biệt nữa giữa một CPLD lớn và một FPGA nhỏ là CPLD có chứa bộ nhớ không mất thông tin khi ngắn nguồn điện, trong khi FPGA cần phải kết hợp với một bộ nhớ ROM bên ngoài cho việc tải dữ liệu cấu hình lúc khởi động

1.3.2 Linh kiện ASIC

Một “application-specific integrated circuit” (ASIC) là một mạch tích hợp được thiết kế đặt hàng cho một chức năng chuyên dụng nào đó, chứ không phải được sản xuất ra cho mục đích sử dụng đại trà Ví dụ, một mạch tích hợp được thiết

kế chuyên chỉ để sử dụng trong mạch điện tử của điện thoại di động Ngược lại, các mạch tích hợp họ 74xx hay 40xx là các linh kiện logic được xây dựng sẵn, và có thể được kết nối với nhau để tạo nên rất nhiều các mạch điện ứng dụng khác nhau Mặc dù ASIC có thể là linh kiện tương tự hoặc số, nhưng người ta thường sử dụng ASIC để chỉ các mạch số Nhờ sự phát triển của công nghệ chế tạo, hiện nay một ASIC có thể tích hợp từ 5000 đến 100 triệu cổng logic Các ASIC hiện đại có thể tích hợp các những vi xử lý 32-bit Các loại ASIC được coi như những SoC Các nhà thiết kế ASIC dùng HDL (hardware description language) như Verilog hay VHDL để miêu tả các chức năng của ASIC

1.3.3 Linh kiện pSoC

“System-on-a-chip” hoặc “system on chip” (SoC or SOC) mô tả việc tích hợp toàn bộ các thành phần cần thiết của một máy tính hoặc một hệ thống điện tử vào trong một mạch tích hợp đơn nhất Nó có thể chứa đựng các thành phần là số, tương

tự, các tín hiệu trộn,… trong cùng một linh kiện

PSoC - (Programmable System-on-Chip) là một SoC có thể lập trình, được phát triển bởi công ty Cypress Semiconductor, và là một họ linh kiện tích hợp các mảng tín hiệu trộn, bao gồm một bộ vi điều khiển và các thành phần ngoại vi số và tương tự khả trình Bộ vi điều khiển bên trong chip có tên là M8C Đây là một vi xử

lý 8 bít được xây dựng theo kiến trúc Harvard PSoC có 3 vùng nhớ: SRAM cho dữ liệu, bộ nhớ Flash cho các lệnh và dữ liệu cố định, và các thanh ghi I/O cho các thao tác điều khiển và truy nhập vào các hàm chức năng và các khối logic có thể cấu hình Linh kiện được thiết kế sử dụng công nghệ SONOS

PSoC giống với một ASIC ở mức độ tích hợp và độ mềm dẻo của nó: các khối

có thể được gán một dải rộng các chức năng và gắn kết các khối trong chíp Điểm khác biệt là không có một tiến trình sản xuất đặc biệt nào để tạo ra một linh kiện được cấu hình tùy biến theo nhu cầu sử dụng, mà nó chỉ sử dụng các đoạn mã được thiết kế bởi phần mềm Cypress' PSoC Designer IDE

PSOC giống FPGA ở chỗ nó được cấu hình tại thời điểm bật nguồn, thông qua việc nạp chương trình từ bộ nhớ flash bên trong Không giống như FPGA, vùng tín hiệu số bên trong PSoC không được lập trình bằng các ngôn ngữ HDLs, thay vào

đó, nó được cấu hình thông qua việc cài đặt các thanh ghi

PSoC giống với một bộ vi điều khiển nhất, xét về công năng sử dụng

Trang 19

1.3.4 Linh kiện FPGA

FPGA là một vi mạch tích hợp, có thể lập trình được để thực hiện các chức năng khác nhau FPGA được xây dựng nên từ hai phần là PLD (Programmable Logic Device) và ASIC (Application Specific Integrated Circuit), ngoài ra nó còn

có một đặc điểm nổi bật là có thể tái lập trình Về cấu trúc FPGA bao gồm các CLB (Configurable Logic Block) và IOB (Input Output Block) liên kết với nhau theo dạng ma trận như hình dưới đây

Hình 1.1: Cấu trúc cơ bản của một FPGA

Các CLB là các cổng logic khả trình Nó bao gồm một số các flip-flop và một mạch logic tổ hợp Các CLB được liên kết với nhau theo cách thức mà người sử dụng lập trình cho nó Các IOB là các khối vào/ra được lập trình như cổng vào hoặc

ra hoặc theo cả hai hướng

1.4 Các công ty hàng đầu hoạt động trong lĩnh vực EDA

Các công ty sản xuất linh kiện FPGA hàng đầu:

Xilinx: được biết đến như công ty dẫn đầu trong công nghệ chế tạo

linh kiện FPGA Các dòng linh kiện của Xilinx bao gồm Virtex (2, 2Pro,

-4, -5), Spartan (-2, -3), CoolRunner, XC9500 Xilinx cũng cung cấp một loạt các công cụ lập trình có tính năng mạnh cho các thiết kế sử dụng linh kiện của hãng như ISE, EDK, System Generator, ChipScope, PlanAhead,…

Altera: được đánh giá như đối thủ của Xilinx trong lĩnh vực FPGA

Các chủng loại linh kiện của Altera bao gồm các FPGA Cyclone (-III, -II), Stratix (-III, -II), ASIC HardCopy (-III, -II), CPLD Max

Ngoài ra, một số công ty khác với qui mô nhỏ hơn như:

Lattice Semiconductor

QuickLogic

Cypress Semiconductor

Atmel

Trang 20

Aldec: cung cấp các công cụ thiết kế và kiểm tra FPGA

Altium: cung cấp các công cụ tổng hợp và mô phỏng

Annapolis Micro Systems: cung cấp các lõi IP (IP core) trong lĩnh vực xử lý

số tín hiệu

Celoxica: cung cấp các công cụ SystemC và Handel-C cho bài toán thiết kế và

kiểm tra mức cao

Gedae: cung cấp các công cụ lập trình cho DSP và FPGA mức cao

Impulse: cung cấp bộ biên dịch Impulse C compiler và các công cụ tối ưu hóa

thiết kế và kiểm tra thiết kế

LogicSim: cung cấp bộ mô phỏng và gỡ rối Verilog miễn phí, hữu ích cho bài

toán kiển tra thiết kế mức RTL

Lyrtech: cung cấp các phần cứng tích hợp công nghệ FPGA và DSP cùng với

các công cụ thiết kế trên nền Matlab, Simulink, Xilinx Sysgen và Texas Instruments CCS

MathWorks: cung cấp công cụ Simulink, là một công cụ được sử dụng như

một môi trường thiết kế mức cao các dự án FPGA

Mentor Graphics: cung cấp một loạt các công cụ tổng hợp, mô phỏng, gỡ rối

HDL như FPGA Advantage, ModelSim,…

Nallatech: cung cấp các giải pháp tính toán thiết kế COTS FPGA cho quân

đội, quốc phòng cũng như các ngành công nghiệp công nghệ cao

National Instruments: cung cấp các bo mạch phát triển trên nền FPGA, công

cụ phần mềm LabVIEW FPGA hỗ trợ ngôn ngữ lập trình đồ họa sử dụng các khối chức năng IP dựng sẵn

Synopsys: cung cấp các công cụ tổng hợp và kiểm tra

Synplicity: cung cấp các công cụ tổng hợp HDL, tổng hợp vật lý và kiểm tra

1.5 Các họ linh kiện CPLD và FPGA của Xilinx

1.5.1 CPLD

Linh kiện CPLD của Xilinx có hai họ chính: CoolRunner và XC9500

Họ CoolRunner có hai chủng loại hoạt động ở các mức điện áp khác nhau là CoolRunner-II hoạt động ở mức điện áp 1.8V và CoolRunner XPLA3 hoạt động ở mức điện áp 3.3V CoolRunner-II tiêu thụ công suất hoạt động và chế độ standby

nhỏ nhất, cỡ hàng microAmpe Tương tự như thế, CoolRunner XPLA3 cũng được

sử dụng rất rộng rãi trong các ứng dụng đòi hỏi công suất tiêu thụ thấp CoolRunner XPLA3 còn bao gồm cả công nghệ thiết kế Fast Zero Power (FZP), kết hợp cả tính năng tiết kiệm nguồn và khả năng hoạt động tốc độ cao của linh kiện

Họ XC9500 bao gồm 3 chủng loại hoạt động ở 3 mức điện áp khác nhau: XC9500XL hoạt động ở 3.3V, XC9500XV ở 2.5V và XC9500 ở 5V

Trang 21

1.5.1.1 CoolRunner

1.5.1.1.1 CoolRunner XPLA3

Điện áp nguồn 3.3V, chịu được vào/ra 5V, duới 100uA Tốc độ thi hành lệnh 4.5 ns

Dòng CoolRunner XPLA3 có khả năng đáp ứng yêu cầu về tiêu thụ công suất thấp, tốc độ cao, mật độ cao, linh hoạt trong thay đổi thiết kế tại mọi trạng thái của quá trình thiết kế

Được hỗ trợ trong tất cả các phiên bản ISE của Xilinx, kiểm tra và mô phỏng bằng MXE, HDL Bencher, Xpower và iMPACT

Bảng 1-1: Các sản phẩm của dòng CoolRunner XPLA3

Feature/Product 3032XL XCR 3064XL XCR 3128XL XCR 3256XL XCR 3384XL XCR 3512XL XCR

Package User I/O

VQ44 36 36

PC44 36 36

CS48 36 40

CP56 48

VQ100 68 84

CS144 108

TQ144 108 120 118

PQ208 164 172 180 FT256 164 212 212 CS280 164

1.5.1.1.2 CoolRunner-II

• Công nghệ bộ xử lý 0.18m, 0.16uA

• Tiêu thụ công suất thấp

• CPLD có kích thước nhỏ nhất

• 323MHz xung nhịp

• Bảo mật cao với các thiết kế bên trong

• Số lượng cổng vào/ra trên macrocell cao

Trang 22

XC9500 là họ sản phẩm CPLDs giá rẻ, cung cấp hiệu suất cao, tập hợp các đặc tính

mở rộng, linh hoạt đối với các đòi hỏi về giảm bớt thiết kế hệ thống hiện nay Cho phép người thiết kế thay đổi các thiết kế của họ mà không cần thay đổi bố trí của bo mạch XC9500 series cung cấp thêm trên 12% mật độ phần tử logic mà không tăng giá

XC9500 Series có 3 dòng sản phẩm là : XC9500 -5 Volt

XC9500 XL 3.5 Volt XC9500 XV 2.5 Volt

1.5.1.2.1 XC9500

Họ XC9500 có thể sử dụng cho các giải pháp toàn diện trong một phạm vi rộng lớn các ứng dụng: các loại biến áp, chuẩn hóa vào/ra, các bộ thu phát, ASIC, rời rạc tín hiệu, bộ thống nhất PAL/GAL, chuẩn giao tiếp bus (I2C, SPI, 8b/10b), giao tiếp với

vi xử lý, điều khiển DRAM, phát xung nhịp cho video, điều khiển hình ảnh, điều khiển logic và trạng thái

Trang 23

XC9500-XV có cùng kiến trúc và các đặc tính với dòng XC9500-XL, với 36, 72,

144, và 288 macrocells XC9500-XV được hỗ trợ tối đa cho ISP thông qua chuẩn IEEE 1149.1 JTAG và IEEE 1532

Các đặc tính riêng của XC9500-XV:

• 54 khối đầu vào làm tăng khả năng pin-locking

• Xây dựng trên hiệu ứng trễ để cải thiện tín hiệu, loại bỏ bớt nhiễu

• Bus-hold thực hiện tốt hơn việc điều khiển vào/ra

• Khả năng Hot-plugging cần cho việc quản lý công suất

• Điều khiển Clock cục bộ và tổng thể tạo sự linh hoạt tối đa

Trang 24

User I/O

User I/O

Cung cấp tối đa sự mềm dẻo, linh hoạt trong thiết kế XC9500 bao gồm:

Thế hệ thứ hai của công nghệ pin-locking cho việc thiết kế lại trở nên dễ dàng mà không cần thay đổi bố trí trên bo mạch

ISP và IEEE 1149.1 JTAG hỗ trợ hiệu quả trong gỡ rối và thiết kế lại

Khả năng cấu hình lại cho phép cập nhật hệ thống, giải quyết các vấn đề phát sinh cản trở hoạt động của hệ thống

XC 95144XL

XC 95288XL

Trang 25

Package User I/O User I/O User I/O User I/O

1.5.2 FPGA của Xilinx

So với CPLD, các sản phẩm FPGA của Xilinx cung cấp:

• Mật độ tích hợp các cổng logic nhiều hơn

• Nhiều tính năng hơn

• Hiệu suất cao hơn

• Công nghệ FPGA : Sản phẩm Virtex của Xilinx tích hợp lên đến 8 triệu "system gates" với một số tính năng mới như các bộ vi xử lý cứng tích hợp sẵn (built-in hardwired processors - IBM Power PC), các hệ thống quản

lý clock, dung lượng bộ nhớ, hỗ trợ công nghệ fast device-to-device signaling

• ứng dụng FPGAs: hầu hết các lĩnh vực ứng dụng điện tử như: xử lý tín hiệu

và lưu trữ, các thiết bị điện tử, truyền thông, xử lý tín hiệu số,

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

Spartan: gồm các chủng loại -XL,-II,-IIE, -3L, -3, -3E

Virtex: gồm các chủng loại /E, /EM, - II, -II Pro / Pro X,-4, -5

• Trong các thiết bị ngoại vi của máy tính

• Trong các hệ thống lái tự động hoặc hệ thống định vị toàn cầu GPS

• Trong truyền hình kỹ thuật số

• Trong các thiết bị thu thập và xử lý hình ảnh

• Trong các đầu đọc thẻ thông minh hoặc credit card

Trang 26

Hiện nay, Spartan-XL được ứng dụng vào các thiết bị như: điện thoại di động, các thiết bị ghép nối trong mạng, bộ đàm, các bo mạch ghép nối với máy tính, các thiết bị chuyển đổi tín hiệu số

Các đặc tính của dòng sản phẩm spartan-XL này là:

• Nguồn cung cấp nhỏ, giảm xuống chỉ có 3.3 V Công suất tiêu thụ ít hơn một nửa so với các thiết bị 5V

• Sử dụng SelectRAM nên có tính linh hoạt Spartan-XL là dòng sản phẩm FPGA đầu tiên dùng để thay thế ASIC và được cho sử dụng RAM dưới dạng bộ nhớ SelectRAM Bộ nhớ RAM phân tán có thế được sử dụng nhằm tăng hiệu quả của FIFOs, thanh ghi dịch,…

Spartan-II có rất nhiều đặc tính, hiệu suất cao, giá thành thấp, được ưa chuộng trong giải pháp điều khiển HDLC cho việc phân tách dữ liệu trong các ứng dụng mạng Ngoài ra Spartan-II cũng là một giải pháp cho việc điều khiển và chuyển đổi logic cho các liên kết giữa các CPU và các kiến trúc SRAM kiểu mới (QDR SRAM)

1.5.2.1.3 Spartan-IIE

Giải pháp cho phát triển các ứng dụng có giá thành thấp nhất

Dòng Spartan-IIE có:

- Từ 50,000 đến 600,000 “system gates”

- Tối đa 514 cổng vào/ra – nhiều nhất trong FPGA giả rẻ

- Hỗ trợ 19 chuẩn, bao gồm LVDS, HSTL, và PCI

- Tích hợp các DLLs, Distributed RAM và block RAM

- Phù hợp với các ứng dụng dùng MicroBlaze™ soft processor – Giảm bớt tổng giá thành thiết kế và số lượng thiết bị, dễ dàng sử dụng các giải pháp

“soft processor”

Trang 27

1.5.2.1.4 Spartan3

Hình 1.2: Các chủng loại linh kiện họ spartan3

Dòng Spartan 3 được chia thành các chủng loại chính như sau:

1.5.2.1.5 Spartan-3L

Là sản phẩm FPGAs công suất thấp và có giá thành thấp

- Tiêu thụ công suất thấp

o Giảm tới 98% công suất khi không hoạt động

o Dễ dàng quản lý công suất với chế độ “Hibernate” độc đáo

o ISE giúp thiết kế ngắn hơn và chính xác về thời gian

o XPower và Web Power Tools cho phép phân tích và đánh giá một cách chính xác và chi tiết về công suất tiêu thụ

o Có thể sử dụng hoặc tham khảo hàng trăm IP sẵn có

Với sự tích hợp của công suất thấp, giá rẻ, và các đặc tính nền tảng FPGA, dòng Spartan-3L cho phép bạn sử dụng FPGAs trong nhiều các ứng dụng hơn trước

1.5.2.1.6 Spartan-3

- Công nghệ chế tạo chíp: 90nm

- Từ 50K tới 5M “system gates”

- Có thể lên tới 1.8Mbits block RAM

- Từ 124 tới 784 cổng vào ra

Trang 28

- Quản lý clock - đưa ra các DLLs/PLLs rời rạc, các bộ dịch pha

- Công cụ: Các công cụ thiết kế hàng đầu và các IP

o ISE giúp giảm bớt thời gian thiết kế

o ChipScope Pro – môi trường gỡ rối hệ thống

o Công cụ phát triển DSP như System Generator for DSP hoặc tốt hơn như các công cụ từ MathWorks và Cadence

Dòng sản phẩm Spartan-3 thường được sử dụng trong video kỹ thuật số, công nghiệp, y học, truyền thông và máy tính

1.5.2.1.7 Spartan-3E

Đây là dòng sản phẩm được kết hợp tốt nhất các tính năng nền tảng và có giá

rẻ Dòng sản phẩm thứ 3 của Xilinx có công nghệ bộ xử lý 90nm Spartan-3E có thể

có tới 1.6 triệu “system gates”, 376 cổng vào/ra và một nền tảng kiến trúc FPGA linh hoạt

Các tính năng chính của Spartan-3E FPGAs:

- 5 sản phẩm từ 100K đến 1.6M “system gates”

- Từ 66 đến 376 cổng vào ra với “density migration”

- Có thể lên tới 648K block RAM hay 231K distributed RAM

- Có thể tới 36 bộ nhân 18x18 cho các ứng dụng DSP hiệu suất cao

- Có thể tới 8 hệ thống quản lý clock - DLLs/PLLs rời rạc, các bộ dịch pha

1.5.2.1.8 Spartan-3A, -3A DSP, -3AN

Đây là các chủng loại Spartan thế hệ mới mang đầy đủ các tính năng, đặc tính

kỹ thuật của các dòng Spartan3 Ngoài ra, tính năng nâng cao của chúng là:

- Tiết kiệm công suất tiêu thụ: giảm tới 40% trong chế độ (suspend – nghỉ)

và tới 98% trong chế độ (hibernate – ngủ) so với thế hệ trước

- Công nghệ Dynamic Input Delay cho phép lập trình độ trễ đầu vào một cách mềm dẻo Phù hợp cho các ứng dụng yêu cầu vấn đề đồng bộ cao như giao tiếp DDR, DDR2

- Dòng -3AN tích hợp bộ nhớ flash cực lớn, lên tới 11MB

- Dòng -3A DSP phù hợp cho các ứng dụng DSP, tích hợp các khối DSP48

và bộ nhớ hiệu năng cao

Trang 29

B

Trang 30

1.5.2.2 Virtex

Họ linh kiện FPGA Virtex bao gồm các dòng chính: Virtex-4, Virtex-II Pro, Virtex-II, and Virtex-E, được sử dụng trong rất nhiều các ứng dụng công nghệ cao khác nhau như mạng, truyền thông, lưu trữ, máy tính, hệ thống không dây, video,

xử lý ảnh, thiết bị y tế, công nghiệp hay quốc phòng

1.5.2.2.1 Virtex / E / EM

Dòng sản phẩm Virtex-E được giới thiệu năm 1998 và xây dựng ở 2.5V, công nghệ bộ xử lý 0.22µm, họ Virtex trở thành chuẩn của FPGA mật độ và hiệu suất cao Năm 1999, đánh dấu việc dòng sản phẩm Virtex E 1.8V, 0.18µm xuất hiện Dòng sản phẩm Virtex-EM được ra mắt năm 2000 (1.8V, công nghệ bộ xử lý 0.18µm) Dòng sản phẩm này được mở rộng khả năng bộ nhớ, bộ đệm địa chỉ hoạt động tương đương một chuyển mạch 160Gpbs và nó ứng dụng trong công nghệ hình ảnh có độ nét cao

1.5.2.2.2 Virtex™-II

Xilinx cung cấp đầy đủ tất cả các công cụ cần thiết để thiết kế một hệ thống có hiệu suất cao với Virtex™-II FPGAs trong một khoảng thời gian ngắn nhất Từ các nhân IP sẵn có, các công cụ kiểm tra, mô phỏng và thông tin về tài nguyên, ISE giúp phát triển nền tảng phần mềm một cách nhanh nhất, nạp tốc độ nhanh để hoàn thành quá trình thiết kế

Xilinx hỗ trợ toàn bộ quá trình thiết kế với một bộ tài liệu lớn về thiết kế với Virtex-II, công cụ phát triển phần mềm, thư viện IP và thông tin tài nguyên thiết kế Xilinx Development Boards cho phép người thiết kế kiểm tra và thử nghiệm đặc tính của các thiết bị Virtex-II FPGA như: SelectIO™, công nghệ XCITE, bộ quản lý Clock, bộ nhớ block SelectRAM, và các bộ nhân nhúng để xác định khả năng thực hiện trong các ứng dụng riêng của họ

1.5.2.2.3 Virtex-II Pro FPGAs

- Kiến trúc khả trình cao cấp:

o Xây dựng trên công nghệ 130nm, 9 lớp

o Từ 3K tới 99K các phần tử logic

o Clock có tốc độ trên dưới 400MHz

o Hiệu suất cao, tiêu thụ công suất thấp

- Các đặc tính mở rộng của hệ thống:

o Nhúng và bộ nhớ phân tán

o Quản lý Clock nhằm tổng hợp và đồng bộ clock để đóng mở chip

o Điều khiển vào/ra số với XCITE và giảm kích thước bo mạch

o Toàn bộ hoặc một phần FPGA có khả năng cấu hình lại đem lại

cho bạn khả năng nâng cấp sản phẩm

- Ghép nối:

o Có thể có tới 20 bộ thu phát nối tiếp 2 chiều: Các bộ thu phát nối tiếp 2 chiều RocketIO từ 622Mbps tới 3.125Gbps cho thiết bị

Trang 31

Virtex-II Pro, RocketIO X từ 2.488Mbps tới 6.25Gbps cho thiết bị Virtex-II Pro X

o Cầu nối chuyển đổi giữa các chuẩn khác nhau

- Lập trình DSP:

o Có thể nhúng vào tới 444 bộ nhân 18x18

o Thư viện thuật toán DSP mở rộng

Xilinx System Generator for DSP, và Cadence SPW

- Khả năng xử lý cao cấp:

o 2 vi xử lý lõi cứng 400 MHz, 600+ DMIPS IBM PowerPC 405

o Giải pháp xử lý mềm với lõi MicroBlaze™

- Công cụ phát triển thiết kế nhanh:

o Các công cụ dễ dàng cho việc lập trình logic và nhúng các phần mềm

o Hơn 200 lõi IP sẵn có cung cấp bởi Xilinx và các đối tác

o Công cụ gỡ rối - thời gian thực - sử dụng ChipScope™ Pro

o Thực tế cho thấy, sự liên kết giữa các khối cho phép bạn quyết định ASSP phù hợp nhất

1.5.2.2.4 Virtex-II Pro X FPGAs

Virtex-II Pro X là dòng sản phẩm mở rộng từ dòng Virtex-II Pro với 2 loại là 2VPX20 và 2VPX70 Những thiết bị này những sản phẩm FPGAs đầu tiên trong công nghiệp sử dụng bộ thu phát nối tiếp 6.25Gbps Tới 20 bộ thu phát RocketIOTM X từ 2.488Gbps đến 6.25Gbps trên kênh, Virtex-II Pro X cung cấp các đặc tính như một Virtex-II Pro hoàn thiện Ngoài ra còn cung cấp một đường truyền liền mạnh cho công suất cao hơn với các ứng dụng truyền nối tiếp

Các đặc tính nền tảng Virtex-II Pro là:

- Khung FPGA hiệu suất cao

- Có thể nhúng tới 2 vi xử lý IBM PowerPC 405

- Các bộ thu phát nối tiếp RocketIO X

- 8 hoặc 20 kênh trên 1 thiết bị

- Từ 2.488Gbps tới 6.25Gbps trên 1 kênh

- Clock 16X và 20X

- Mã hóa 8b/10b và 64b/66b

- SONET/SDH OC-48 jitter compliance

- Lập trình thu nhận giúp nâng cao độ tin cậy của tín hiệu

Trang 32

Rất thích hợp với 10G Ethernet, SONET OC-48, và ứng dụng cho các bo mạch chủ (backplane) đa năng

Virtex-II Pro X là IC khả trình đầu tiên có thể giao tiếp trực tiếp với các module quang để xây dựng các hệ thống chấp hành OC-48 SONET Thêm nữa, Virtex-II Pro X cho phép các ứng dụng nối tiếp lên tới 3.125Gbps kể cả các bo mạch chủ 5/6/10Gbps, kênh lưu lượng cao tới 10Gbps sử dụng cáp quang

1.5.2.2.5 Virtex-4 Multi-Platform FPGA

Được đưa ra vào năm 2004 và được xây dựng trên công nghệ 90nm, 1.2V, công nghệ bộ xử lý “triple-oxide”, dòng sản phẩm Virtex-4 đem lại hiệu suất cao nhất trong công nghiệp, tiết kiệm năng lượng với giá cả phù hợp

Virtex-4 tích hợp tới 200K phần tử logic, 500 MHz, các đặc tính tốt nhất với mật độ được tăng gấp đôi, hiệu suất tăng gấp đôi, giảm một nửa công suất tiêu thụ

so với các thế hệ FPGAs trước

Dòng Virtex-4 cung cấp 3 nền tảng với tổng cộng 17 loại thiết bị cho nhu cầu của các lĩnh vực ứng dụng khác nhau

Virtex-4 có kiến trúc “Advaned Silicon Modular Block” (ASMBL) với công nghệ bộ xử lý 90nm

Kiến trúc ASMBL cho phép Xilinx chế tạo các nền tảng FPGA với các đặc tính có thể thay đổi nhằm phù hợp với các lĩnh vực ứng dụng khác nhau

Virtex-4 FPGAs cung cấp khả năng theo cấp của hệ thống tích hợp, rút ngắn các chu trình thiết kế và giảm chi phí cho hệ thống Sử dụng Virtex-4 FPGAs để thay thế cho các ASICs và ASSPs trong các ứng dụng như: mạng, truyền thông, lưu trữ dữ liệu, các máy chủ, công nghệ không dây, phát thanh truyền hình, video, xử lý ảnh, y học, công nghiệp và quân sự

Khả năng ghép nối

• Thực thi các "single-ended" và các chuẩn giao tiếp khác của hệ thống với công nghệ SelectIOTM và IP đã hoàn chỉnh

• Đơn giản các ghép nối đồng bộ với công nghệ ChipSync™

• Hỗ trợ một dải rộng nhất các chuẩn vào/ra nối tiếp với 24 bộ thu phát 2 chiều RocketIO™ và các IP đã hoàn chỉnh

• Đơn giản việc thiết bo mạch chủ với công nghệ XCITE

Vi xử lý

• Xây dựng các hệ thống nhúng có khả năng mạnh, công suất cao hoặc các chức năng điều khiển phức hợp với các lõi vi xử lý cứng và mềm, tất cả được hỗ trợ bới các công cụ triển khai toàn diện

• Thiết kế với vi xử lý IBM PowerPC™ 405

• Tăng tốc và xử lý phần cứng đơn giản với bộ điều khiển mới APU (Auxiliary Processor Unit) của vi xử lý PowerPC

• Chọn lựa đa dạng các lõi IP mềm, bao gồm vi xử lý 32-bit MicroBlaze™, bộ điều khiển 8-bit PicoBlaze™, IBM CoreConnect busses, và các thiết bị ngoại vi được phát triển bởi Xilinx và các đối tác

Xử lý số tín hiệu (DSP)

Trang 33

• Giải quyết các thách thức về đa kênh và DSP ultra-high-performance với XtremeDSP™ Slice

• Xây dựng công nghệ video, xử lý ảnh, không dây và các hệ thống mã hóa thời gian thực

• Lựa chọn từ các khối IP DSP đã được xây dựng như các bộ lọc, bộ chuyển đổi, codecs và thuật toán

• Các chức năng nhúng, tăng hiệu quả công suất logic và giảm chi phi thiết bị

Công suất tiêu thụ

• Công nghệ Triple-oxide : đặt được mục đích giảm 50% công suất tiêu thụ

• Tích hợp các IP cứng cho các chức năng bắt buộc của hệ thống, giảm 80% công suất tiêu thụ cho các chức năng tương đương xây dựng trên các phần tử logic

Xây dựng trên các chức năng được thiết kế đơn giản

• Công nghệ Xesium Clocking tạo ra sự linh hoạt, đa dạng trong các tài nguyên clock và các đặc tính quản lý clock

• Công nghệ ChipSync cho sự chính xác cao, đơn giản trong việc đồng bộ

• Block RAM xây dựng gồm kiểm tra lỗi và tính đúng đắn (ECC) và chuyển đổi FIFO không bị chi phối bởi các phần tử logic

• Tích hợp các khối Ethernet Media Access Controller (MAC) tăng khả năng truyền thông

• Thế hệ thứ 4 được thiết kế bảo mật, bảo vệ các sở hữu trí tuệ của bạn

Thế hệ tiếp theo của dòng Virtex mới được Xilinx phát triển là Virtex5 Dưới đây là danh mục các linh kiện thuộc dòng Virtex4 và Virtex 5 của Xilinx

Trang 34

B

Trang 35

B

Trang 36

1.6 Tổng kết chương và câu hỏi ôn tập

Trong chương này chúng ta đã tìm hiểu các vấn đề tổng quan về lĩnh vực EDA, FPGA, lịch sử phát triển, các công nghệ và linh kiện khả trình, các công

ty hàng đầu hoạt động trong lĩnh vực này Chúng ta cũng tìm hiểu chi tiết hơn

về các chủng loại linh kiện FPGA và CPLD của Xilinx, một công ty hàng đầu trong lĩnh vực chế tạo linh kiện phần cứng và các công cụ phần mềm thiết kế

đi kèm

Câu hỏi ôn tập:

1 Nêu các hướng phát triển chính trong lĩnh vực EDA

2 Nêu các công nghệ và chủng loại linh kiện khả trình chính Phân biệt

sự giống và khác nhau giữa chúng

3 Nêu các chủng loại linh kiện khả trình chính của Xilinx

Trang 37

2 Chương 2: NGÔN NGỮ LẬP TRÌNH MÔ TẢ PHẦN CỨNG

2.1 Giới thiệu chung về ngôn ngữ mô tả phần cứng

Ngày này 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, phương pháp sử dụng các ngôn ngữ mô phỏng phần cứng (HDL-Hardware 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 Các ngôn ngữ HDL thông dụng hiện nay là VHDL và Verilog HDL Ngoài

ra còn có một số ngôn ngữ ít thông dụng hơn như ABEL

Khi mạch điện được thiết kế ngày 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 đi qua hai bước thực hiện hoàn toàn thủ công:

- 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, thực hiện tối thiểu hoá;

- Chuyển thiết kế từ hàm Boolean sang sơ đồ mạch của hệ thống

Cũng tương tự như thế, 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ụ tổng hợp

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ử dụng các 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à đang dần thay thế các phương pháp truyền thống Sự ra đời của ngôn ngữ mô tả 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:

- Không cần 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;

- Hầu hết các công cụ thiết kế dùng ngôn ngữ mô tả phần cứng đề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ô tả phần cứng được thực hiện hoàn toàn tự động

Trang 38

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 chi phí đáng kể bởi

từ ý tưởng 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

Khi mọi lĩnh vực của khoa học đều phát triển không ngừng thì sự phức tạp của

hệ thống điện tử cũng ngày một tăng theo và gần như không thể tiến hành thiết kế thủ công mà không có sự trợ giúp của các loại máy tính hiện đại Ngày nay, ngôn ngữ mô tả phần cứng HDL được dùng nhiều để thiết kế cho các linh kiện logic khả

trình PLD từ loại đơn giản như CPLD đến các loại phức tạp như FPGA

2.2 Ngôn ngữ mô tả phần cứng VHDL

2.2.1 Mở đầu

Ngôn ngữ mô tả phần cứng VHSICDL (Very High Speed Integrated Circuit Description Language – Ngôn ngữ mô tả Mạch tích hợp có tốc độ rất cao), gọi ngắn gọn là VHDL, là một ngôn ngữ tiêu chuẩn công nghiệp được sử dụng để mô tả phần cứng từ mức độ trừu tượng cho đến cụ thể VHDL được phát triển đầu tiên vào những năm 1970 đến 1980 bởi Bộ quốc phòng Mỹ Ngày nay VHDL đã trở nên cực

kỳ thông dụng, được hàng chục nghìn kỹ sư điện tử trên toàn cầu sử dụng để tạo ra những sản phẩm điện tử có độ phức tạp rất lớn

Vào năm 1986, VHDL đã được giới thiệu như một tiêu chuẩn IEEE Qua nhiều bước thay đổi và hoàn thiện, VHDL được chấp nhận là tiêu chuẩn IEEE 1076 vào tháng 12/1987 Ngày nay, tiêu chuẩn mới nhất cho VHDL là IEEE 1993

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 kỹ lưỡng tài liệu đó Với một ngôn ngữ mô tả 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ô tả 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 trong một mô hình thống nhất

VHDL được phát triển như một ngôn ngữ độc lập khô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áp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất

So sánh với các ngôn ngữ mô tả phần cứng khác đã kể ra ở trên, VHDL có một

số ưu điểm sau:

- Tính 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 được sự 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ế hệ thống

- Khả năng hỗ trợ: 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, ví dụ phương pháp thiết kế từ trên xuống (Top-Down), hay từ dưới lên (Bottom-Up) dựa vào các thư viện sẵn có

- Tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế

Trang 39

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

- 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ô tả 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ẩ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 tiêu 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 lớn (trong đó các hệ con đó được thiết kế độc lập)

- 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

2.2.2 Cấu trúc chương trình VHDL

Các miêu tả VHDL bao gồm các đơn vị thiết kế cơ bản và các đơn vị thiết kế thứ cấp Các đơn vị thiết kế cơ bản là các Entity và các Package Các đơn vị thiết kế thứ cấp là Architecture và Package Body Các đơn vị thiết kế thứ cấp luôn có một mối quan hệ tới một đơn vị thiết kế cơ bản Các thư viện là các tập hợp của các đơn

vị thiết kế sơ cấp và thứ cấp Một thiết kế điển hình thường chứa đựng một hoặc nhiều thư viện khác nhau

Trước khi bắt đầu nghiên cứu ngôn ngữ VHDL, chúng ta hãy cùng tìm hiểu một số thuật ngữ cơ bản sẽ xuất hiện thường xuyên trong giáo trình Các thuật ngữ

sẽ được trình bày dưới dạng tiếng Anh nguyên gốc

Entity –Thực thể: Tất cả các thiết kế được thể hiện dưới dạng các Entity Một

Entity có thể được coi như một khối cơ bản trong một thiết kế Mức độ cao nhất của thiết kế được đại diện bởi thực thể mức đỉnh (top-level entity) Nếu một thiết kế có cấu trúc bậc thì một mô tả mức đỉnh sẽ bao hàm nhiều mô tả mức thấp hơn Các mô

tả mức thấp hơn này sẽ là các Entity mức thấp hơn nằm trong Entity mức đỉnh

Architecture – Kiến trúc: Các Entity mà có thể mô phỏng thì đều có một mô

tả Architecture Architecture mô tả hành vi của Entity Một Entity có thể có nhiều Architecture Một Architecture có thể là ở dạng mô tả hành vi (behaviour), trong khi Architecture khác được mô tả ở dạng cấu trúc (structure)

Configuration – Cấu hình: Một phát biểu Configuration được sử dụng để gắn

một khối thành phần đơn (một instance của một component) tới một cặp architecture Một Configuration có thể được xem như một danh sách các thành phần cho một thiết kế Nó mô tả hàng vi nào được sử dụng cho mỗi thực thể, giống như

Trang 40

entity-việc một danh sách các phần sẽ mô tả phần nào sẽ được sử dụng cho mỗi phần tương ứng trong thiết kế

Package – Bó: một Package là một tập hợp của các kiểu dữ liệu, các chương

trình con mã được sử dụng thường xuyên trong thiết kế Có thể coi nó như các hộp công cụ chức đựng các công cụ được sử dụng để xây dựng thiết kế

Driver – nguồn điều khiển: Là một nguồn tín hiệu gắn vào một tín hiệu Nếu

một tín hiệu bị điều khiển bởi 2 nguồn, thì khi cả hai nguồn ở chế độ hoạt động, tín hiệu sẽ có hai nguồn điều khiển

Bus – Trong thiết kế phần cứng, thuật ngữ bus được sử dụng để mô tả một

nhóm các đường tín hiệu có chức năng giống nhau hoặc một phương thức truyền thông nào đó Trong VHDL, một bus là một kiểu tín hiệu đặc biệt mà driver của nó

có thể ở trạng thái tắt

Attribute – Thuộc tính: Một Attribute là một dữ liệu được gắn với các đối

tượng VHDL hoặc là dữ liệu được định nghĩa trước về các đối tượng VHDL Ví dụ như khả năng tải của một bộ đệm, hay nhiệt độ làm việc tối đa của một linh kiện,…

Generic – Thuật ngữ sử dụng cho một tham số chuyển thông tin tới một entity

Ví dụ, nếu một entity là một cổng logic, với một giữ chậm lên và xuống, các giá trị cho thời gian giữ chậm lên và xuống có thể được chuyển vào bên trong entity bằng các generic

Process – Tiến trình Một process là một đơn vị thực thi cơ bản trong VHDL

Toàn bộ quá trình hoạt động mà được thực hiện trong mô phỏng một miêu tả VHDL được phân tách ra trong một hoặc nhiều process

Sau đây chúng ta sẽ đi vào nghiên cứu chi tiết cấu trúc của ngông ngữ VHDL

2.2.2.1 Entity - Thực thể

Một Entity chứa đựng thông tin về tên, các cổng và các thông tin liên quan đến

nó Tất cả các thiết kế được tạo ra bằng cách sử dụng một hoặc nhiều Entity

Một ví dụ đơn giản về một Entity:

và cổng ra x, tất cả đều có kiểu dữ liệu dạng BIT

Entity mô tả giao diện với thế giới bên ngoài Nó xác định số các cổng, hướng các cổng và kiểu của các cổng

2.2.2.2 Architecture - Kiến trúc

Ngày đăng: 14/04/2020, 07:26

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Tống Văn On, “Nguyên lý mạch tích hợp”. NXB Lao động Xã hội. 2005 Sách, tạp chí
Tiêu đề: Nguyên lý mạch tích hợp
Nhà XB: NXB Lao động Xã hội. 2005
[2] Douglas.L.Perry, “VHDL – Programming By Examples”, McGraw-Hill. 2002 Sách, tạp chí
Tiêu đề: VHDL – Programming By Examples
[3] Các tài liệu của hãng Xilinx (bao gồm: datasheets, user manuals, user guides, tutorials, application notes, white papers,...) Khác
[4] Các tài liệu của hãng Mentor Graphics (bao gồm: như [3]) Khác
[5] Các tài liệu của hãng Altera (bao gồm: như [3]) Khác
[6] Jim Whittington, Các tài liệu giảng dạy môn học Cơ sở thiết kế điện tử (Foundation Electronic Design – FED) bao gồm giáo trình, bài tập thực hành, các bài tập lớn,... Đại học LaTrobe – Úc Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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