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 1BỘ 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 2MỤ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 32.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 43.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 56.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 66.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 7DANH 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 8Hì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 9Hì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 10Hì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 11Hì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 12DANH 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 13BẢ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 14PHẦ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 15Trong 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 161 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 191.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 20Aldec: 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 211.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 22XC9500 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 24User 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 25Package 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 26Hiệ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 271.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 29B
Trang 301.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 31Virtex-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 32Rấ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 35B
Trang 361.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 372 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 38Nhờ 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 39tạ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 40entity-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