Luận văn Thiết kế hệ vi điều khiển lõi mềm 32-bit trên FPGA và cài đặt ứng dụng

Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
BỘ CÔNG THƯƠNG  
TRƯỜNG ĐẠI HỌC SAO ĐỎ  
NGUYỄN VĂN LĂNG  
THIT KHVI ĐIU KHIN LÕI MM  
MICROBLAZE 32 BIT TRÊN FPGA VÀ CÀI ĐẶT NG DNG  
LUẬN VĂN THẠC SĨ  
CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ  
NGƯỜI HƯỚNG DẪN KHOA HỌC:  
TS. HỒ KHÁNH LÂM  
HẢI DƯƠNG – NĂM 2018  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
LỜI CAM ĐOAN  
Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng cá nhân,  
là kết quả của quá trình học tập và nghiên cứu khoa học độc lập. Trong toàn bộ nội  
dung của luận văn, những nội dung được trình bày hoặc là của cá nhân hoặc là được  
tổng hợp từ nhiều nguồn tài liệu. Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và  
được trích dẫn hợp pháp. Các số liệu, kết quả nêu trong luận văn là trung thực và chưa  
từng được ai công bố trong bất kỳ luận văn nào khác.  
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định  
cho lời cam đoan của mình.  
Hải Dương, ngày 10 tháng 7 năm 2018  
TÁC GIẢ  
Nguyễn Văn Lăng  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
MỤC LỤC  
LỜI CAM ĐOAN  
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT  
DANH MỤC CÁC BẢNG  
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ  
MỞ ĐẦU  
1
4
CHƯƠNG 1: CÔNG NGHỆ FPGA  
1.1. Phân loại các vi mạch tích hợp  
1.1.1. Tổng quan phát triển các mạch tích hợp  
1.1.2. Các mạch tích hợp ứng dụng chuyên biệt (ASIC)  
1.1.3. Các thiết bị logic có thể lập trình được (PLD)  
1.2. FPGA  
4
4
6
7
7
1.2.1. Kiến trúc FPGA  
7
1.2.2. Định tuyến trong FPGA  
13  
15  
1.3. Phương pháp lập trình FPGA  
1.3.1. Lập trình dựa vào bộ nhớ SRAM (Static Random Access Memory)  
1.3.2. Lập trình dựa vào đốt cầu chì (anti-fuse)  
1.4. So sánh FPGA với các công nghệ vi mạch tích hợp khác  
1.4.1. FPGA và ASIC  
16  
16  
16  
16  
18  
18  
18  
19  
19  
21  
21  
21  
21  
22  
24  
25  
26  
1.4.2. FPGA và PLD  
1.5. Công nghệ FPGA của một số nhà công nghệ  
1.5.1. Xilinx FPGA  
1.5.2. Altera FPGA  
1.6. Kết luận chương  
CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG BẰNG VHDL  
2.1. Ngôn ngữ mô tả phần cứng VHDL  
2.1.1. Lịch sử của VHDL  
2.1.2. Ứng dụng của VHDL  
2.1.3. Đặc điểm của VHDL  
2.1.3.1. Các mức trìu tượng trong thiết kế mạch tích hợp  
2.1.3.2. Các tầng trìu tượng của thiết kế VHDL  
2.1.3.3. Mô tcủa các tâng trìu tượng trong thiết kế VHDL  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
2.2. Quá trình thiết kế phần cứng bằng VHDL  
2.2.1. Các công đoạn thiết kế bằng VHDL  
2.2.2. Thiết kế phần cứng trên Xilinx FPGA  
2.2.2.1. Tính năng thiết kế  
29  
29  
30  
30  
31  
32  
32  
32  
33  
35  
38  
39  
41  
45  
46  
52  
53  
2.2.2.2. Tài liệu liên quan  
2.2.3. Công cphần mềm thiết kế Xilinx ISE  
2.2.3.1. Khởi động (Startup)  
2.2.3.2. Trgiúp (Help)  
2.2.3.3. To mt Project mi  
2.2.3.4. Bxung mã ngun VHDL mi  
2.2.3.5. Son tho mã ngun VHDL  
2.2.3.6. Kiểm tra cú pháp  
2.2.3.7. Gán chân tín hiệu  
2.2.3.8. Synthesize, Translate, Map, và Place & Route  
2.2.3.9. Synthesize, Translate, Map, và Place & Route  
2.2.3.10. Chạy chương trình trên bảng Spartan-3E.  
2.3. Kết luận chương  
CHƯƠNG 3: THIẾT KẾ HỆ VI ĐIỀU KHIỂN LÕI MỀM MICROBLAZE  
32-BIT VÀ CÀI ĐẶT ỨNG DỤNG THỬ NGHIỆM  
3.1. Vi điều khiển Microblaze 32-bit  
54  
54  
54  
56  
57  
57  
57  
58  
59  
3.1.1. Kiến trúc của Microblaze  
3.1.2. Các định dạng dữ liệu và tập lệnh của Microblaze  
3.1.3. Hiệu năng của Microblaze  
3.2. Thiết kế hệ nhúng đơn giản với Microblaze  
3.2.1. Bảng phát triển trên FPGA Xilinx Starter-3E 500E  
3.2.2. Lựa chọn cấu hình hệ nhúng với Microblaze  
3.2.3. Các bước thiết kế và kết quả sử dụng Công cụ phần mềm Xilinx  
ISE14.1  
3.3. Xây dựng cài đặt các phần mềm ứng dụng  
3.3.1. Phần mềm Hello.c và cài đặt thử nghiệm  
3.3.2. Phần mềm kiểm tra bộ nhớ và cài đặt thử nghiệm  
3.3.3. Phần mềm kiểm tra các giao tiếp ngoại vi và cài đặt thử nghiêm  
69  
69  
72  
73  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
3.4. Kết luận chương  
74  
75  
76  
KẾT LUẬN VÀ KIẾN NGHỊ  
5. TÀI LIỆU THAM KHẢO  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT  
Từ viết tắt  
Nghĩa tiếng anh  
ABEL - Advanced Boolean Equation Language  
ALU - Arithmetic Logic Unit  
ASIC - Application Specific Integrated Circuit  
CLB - Configurable Logic Block  
DCM - Digital Clock Management  
DAC - Digital-to-Analog Converter  
DCR - Device Control Register  
DSP - Digital Signal Peocessor  
DXCL - Data side Xillinx Cache Link Interface  
EDK - Embedded Development Kit  
FPGA - Field programmable Gate Array  
FPU - Floating Point Unit  
IF - Interface  
IXCL - Instruction side Xillinx Cache Link Interface  
LMB - Local Memory Bus  
LUT - Look-Up Table  
MAC - Multiply-accumulate circuits  
NRE - Non Recurring Engineering  
OPB - On-Chip Peripheral Bus  
PLB - Processor Local Bus  
PC - Personal Computer  
PLD - Programmable Logic Device  
RISC - Reduced Instruction Set Computer  
SoC - System on Chip  
XPS - Xilinx Platform Studio  
XSD - Xilinx Software Development  
XCL - Xillinx Cache Link  
VHDL - Very High Speed Hardware Desription Luaguage  
VHSIC - Very High Speed Integrated Circuits  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
DANH MỤC CÁC BẢNG  
Trang  
18  
Bảng 1.1 Họ Spartan-3 FPGA mật độ cổng cao  
Bảng 2.1 Các cổng input/output của ENTITY top_level  
Bảng 2.2 Các giá trị để đưa vào cửa sổ I/O Ports  
42  
44  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ  
Luận văn Thạc sĩ  
Trang  
4
Hình 1.1  
Phát triển số lượng nhân xử lý trên chip  
Hình 1.2 Phân loại các mạch tích hợp  
Hình 1.3 Mảnh PLD  
6
7
Hình 1.4 Kiến trúc của FPGA dựa trên SRAM  
Hình 1.5 Xilinx Virtex-5 FPGA LUT- cặp FF  
Hình 1.6 Altera Stratix IV FPGA ALM  
Hình 1.7 Các loại LUT của Stratix ALM  
Hình 1.8 Định tuyến qua các hộp kết nối  
Hình 1.9 Định tuyến qua các khối chuyển mạch  
9
11  
11  
11  
13  
14  
Hình 1.10 Định tuyến theo các ma trận chuyển mạch và các đường dây dài  
đơn trong Xilinx FPGA.  
14  
Hình 1.11 Kiến trúc định tuyến của Xilinx FPGA  
15  
17  
24  
26  
26  
27  
28  
29  
31  
31  
32  
33  
34  
34  
35  
35  
36  
37  
37  
38  
Hình 1.12 Quá trình thiết kế trên FPGA và ASIC  
Hình 2.1 Các tầng trìu tượng thiết kế mạch tích hợp  
Hình 2.2 Các mức trìu tượng thiết kế VHDL  
Hình 2.3 Các mô tả ở các mức trìu tượng  
Hình 2.4 Ví dụ mô tả hành vi trong VHDL  
Hình 2.5 Các tiến trình ở mức RTL  
Hình 2.6 Quá trình thiết kế VHDL  
Hình 2.7 Bảng phát triển Spartan-3E 500K/1600K  
Hình 2.8 Cửa sổ khởi động ban đầu của Project  
Hình 2.9 Thực đơn Help  
Hình 2.10 New Project Wizard, Trang Create New Project  
Hình 2.11 New Project Wizard, trang Project Settings  
Hình 2.12 New Project Wizard, trang Project  
Hình 2.13 Project – New Source…  
Hình 2.14 New Source Project: Select Source Type:VHDL  
Hình 2.15 New Source Project: Define Module  
Hình 2.16 New Source Project, Summary  
Hình 2.17 file nguồn mới top_level.vhd hiển thị trong tab  
Hình 2.18 nội dung file top_level.vhd được hiển thị trong Project  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
Hình 2.19 nội dung file top_level.vhd hiển thị trong Project Navigator sau  
khi soạn  
39  
Hình 2.20 Project Navigator với mở rộng  
40  
40  
41  
42  
43  
43  
43  
44  
44  
45  
45  
Hình 2.21 Green tick next cho kiểm tra cú pháp  
Hình 2.22 Ví dụ, trong đó lỗi đã xuất hiện dấu chéo đỏ ở chỗ kiểm tra lỗi  
Hình 2.23 Một khoản của màn hình Project Navigator, với User  
Hình 2.24 Hộp hội thoại yêu cầy tạo UCF file  
Hình 2.25 Cửa sổ PlanAhead hiển thị lần đầu  
Hình 2.26 Hiển thị cửa sổ I/O Ports riêng  
Hình 2.27 Hiển thị cửa sổ I/O Ports mở rộng đến các cổng riêng  
Hình 2.28 Hiển thị cửa sổ I/O Ports với các giá trị đã được điền  
Hình 2.29 một khoản của màn hình Project Navigator, với mở ra  
Hình 2.30 Một khoản của màn hình Project Navigator, với mở ra  
Implement Design, sau đó Translate, Map và Place & Router đã  
chạy  
Hình 2.31 Một khoản của màn hình Project Navigator, với mở ra  
46  
46  
Hình 2.32 Một khoản của màn hình Project Navigator, sau khi Generate  
Programming File chạy xong  
Hình 2.33 Cửa sổ ban đầu của iMPACT  
47  
47  
48  
48  
49  
49  
Hình 2.34 Cửa sổ iMPACT, sau khi click hai lần lên  
Hình 2.35 Cửa sổ iMPACT, hiển thị chọn Initialize Chain  
Hình 2.36 Cửa sổ iMPACT, gán các file cấu hình  
Hình 2.37 Cửa sổ iMPACT, gán file cấu hình cho xc3e500e  
Hình 2.38 Cửa sổ iMPACT, hộp hội thoại yêu cầu có gắn SPI hay BPI  
PROM hay không.  
Hình 2.39 Cửa sổ iMPACT, bỏ qua xcf40s  
50  
50  
51  
51  
51  
52  
Hình 2.40 Cửa sổ iMPACT, bỏ qua xc2c64a  
Hình 2.41 Cửa sổ iMPACT, hộp hội thoại Device  
Hình 2.42 cửa sổ iMPACT, hiển th device chain  
Hình 2.43 Cửa sổ iMPACT, các lựa chọn khi click vào xc3s500e  
Hình 2.44 Cửa sổ iMPACT, sau khi tải thành công chương trình vào  
bảng Spartan-3E  
Hình 2.45 Bảng Spartan-3E với chương trình đang chạy  
53  
54  
59  
59  
Hình 3.1 Kiến trúc của Microblaze  
Hình 3.2 Cửa sổ Xilinx Platform Studio 14.1  
Hình 3.3 Tạo tên project Microblaze  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
Hình 3.4 Chọn I world like to create a new design -> next  
Hình 3.5 Chọn bảng Xilinx Spartan-3E Starter Board  
Hình 3.6 Chọn cấu hình 2 nhân cho Microblaze  
Hình 3.7 Chọn đồng hồ và dung lượng nhớ trong cho từng nhân  
Hình 3.8 Chọn cấu hình các thiết bị cho từng nhân  
Hình 3.9 Chọn dung lượng 2KB cache cho từng nhân  
Hình 3.10 Địa chỉ của Microblaze  
60  
60  
61  
61  
61  
62  
62  
63  
63  
64  
64  
65  
65  
66  
66  
Hình 3.11 Các giao tiếp bus của Microblaze  
Hình 3.12 Tạo địa chỉ của hệ thống Microblaze  
Hình 3.13 Các cổng của hệ thống Microblaze  
Hình 3.14 Sơ đồ mạch của hệ thống Microblaze 2-core  
Hình 3.15 Sơ đồ mạch của core Microblaze_0  
Hình 3.16 Sơ đồ mạch của core Microblaze_1  
Hình 3.17 Các giao tiếp mở rộng I/O của Microblaze  
Hình 3.18 Tạo thành công Netlist của project Microblaze  
Hình 3.19 Tạo thành công file cấu hình hệ thống Microblaze "system.bit"  
Hình 3.20 Kiểm tra các kết nối thiết của PC bằng Device Manager  
Hình 3.21 Chọn Export & Launch SDK  
67  
68  
68  
69  
69  
70  
70  
70  
71  
71  
72  
72  
73  
73  
Hình 3.22 Các file cấu hình của thiết kế từ XPS đã được Export vào SDK  
Hình 3.23 Thiết lập cổng COM-USB  
Hình 3.24 Cổng COM-USB đã kết nối sau khi thiết lập  
Hình 3.25 Chọn Program để nạp cấu hình lên FPGA  
Hình 3.26 Tạo tên project: hello_world_0  
Hình 3.27 Soạn file helloworld.c  
Hình 3.28 Kết quả chạy helloworld trên FPGA (trả về PC)  
Hình 3.29 Tạo ứng dụng memorytest  
Hình 3.30 Chạy memorytest trên FPGA thành công  
Hình 3.31 Tạo và biên dịch trình kiểm tra ngoại vi  
Hình 3.32 Chạy thành công kiểm tra các ngoại vi  
Học viên: Nguyễn Văn Lăng  
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
1.1. Lý do chọn đề tài  
Luận văn Thạc sĩ  
MỞ ĐẦU  
Thiết kế các mạch điện tử số theo cách truyền thống trở nên khó khăn khi công  
nghệ vi mạch có mức tích hợp rất lớn(VLSI), phức tạp, và tốc độ cao. Trong năm 1980,  
Bộ quốc phòng Mỹ (DoD) đã tài trợ dự án chương trình VHSIC (Very high Speed  
Integrated Circuit) để tạo ra ngôn ngữ mô tả phần cứng chuẩn hóa. Năm 1983, DoD  
thiết lập các yêu cầu cho ngôn ngữ mô tả phần cứng VHSIC, gọi là VHDL (Very High  
speed integrated circuit hardware Description Language). Theo các nguyên tắc của  
IEEE, cứ 5 năm thì một chuẩn phải được đề xuất lại và được tiếp nhận. Theo đó, chuẩn  
VHDL 1076-1993 ra đời.  
Kể từ năm 1980, các nhà công nghệ vi mạch tích hợp hàng đầu thế giới đã đẩy  
mạnh quá trình nghiên cứu về công nghệ vi mạch tích hợp mảng cổng lập trình được  
theo trường FPGA (field programmable Gate Array) và nhanh chóng cho ra các thế hệ  
FPGA với số lượng cổng và tốc độ ngày càng cao. FPGA được thiết kế đầu tiên bởi  
Ross Freeman, người sáng lập công ty Xilinx vào năm 1984. Các FPGA hiện nay, có số  
lượng cổng logic (logic gate) đủ lớn để có thể thiết kế thay thế cả một hệ thống bao  
gồm lõi CPU, Bộ điều khiển bộ nhớ (Memory Controller), các ngoại vi như SPI, Timer,  
I2C, GPIO, PWM, Video/Audio Controller…, tương đương với các hệ thống trên chip  
SoC (System on Chip) hiện đại. FPGA có thể được lập trình bằng các ngôn ngữ mô tả  
phần cứng HDL (Hardware Description Language) như VHDL, hay Verilog. HDL để  
tạo ra các thiết kế mạch số từ số lượng lớn cổng logic, và có thể cấu trúc lại mạch thiết  
kế khi đang sử dụng. Như vậy công đoạn thiết kế của FPGA đơn giản, chi phí giảm  
thiểu, rút ngắn thời gian đưa sản phẩm vào sử dụng. FPGA cũng rất phù hợp cho thiết  
kế thử nghiệm các hệ thống nhúng phức tạp và thông minh được ứng dụng trong nhiều  
lĩnh vực như tự động điều khiển, robot, điện tử dân dụng, viễn thông, các thiết bị di  
động, các phương tiện vận tải, thuật vi xử lý, các thiết bị thám mã, xử lý tín hiệu số,  
kiến trúc máy tính hiệu năng cao, v.v... Có thể thiết kế lõi mềm vi xử lý 32-bit kiến trúc  
RISC (Reduced Instruction Set Computer) đơn lõi hoặc lõi (Microblaze, ARM,  
Nios2,...), mạng trên chip NoC (network on chip), hay system on chip (SoC).  
Những năm gần đây, đào tạo lập trình thiết kế hệ thống số bằng ngôn ngữ HDL  
đã được đưa vào giảng dạy trong nhiều trường đại học kỹ thuật ở nước ta. Các ngôn  
Học viên: Nguyễn Văn Lăng  
1
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
ngữ VHDL và Verilog và FPGA trở nên hữu ích rất lớn trong trong đào tạo và nghiên  
cứu khoa học bậc nghiên cứu sinh, sau đại học, đại học và cả đào tạo nghề.  
Do đó, học viên chọn đề tài "Thiết kế hệ vi điều khiển lõi mềm 32-bit trên FPGA  
và cài đặt ứng dụng".  
1.2. Tính cấp thiết của đề tài  
Lõi mềm vi xử lý, hay vi điều khiển 32-bit khác với chip vi mạch vi xử lý hay vi  
điều khiển 32-bit (lõi cứng):  
- Lõi mềm có nghĩa là không cố định, có thể bằng lập trình cấu hình lại cấu trúc  
hay sửa đổi chức năng của vi xử lý (vi điều khiển) tùy biến phụ thuộc vào nhu cầu ứng  
dụng mong muốn, và có thể tạo ra các thiết kế linh hoạt cho các ứng dụng khác nhau.  
- Lõi cứng, chỉ có thể sử dụng sẵn chip vi xử lý (vi điều khiển) do nhà công  
nghệ cung cấp, người dùng chỉ còn cách hiểu biết qua các mô tả kỹ thuật của nhà công  
nghệ (đặc tính kỹ thuật, tập lệnh) để thiết kế các hệ thống lớn hơn, và chỉ đáp ứng cố  
định cho một ứng dụng.  
Do tính ứng dụng rộng rãi trong nhiều lĩnh vực, mà FPGA và các ngôn ngữ HDL  
trở nên cấp thiết trong đầu tư ứng dụng và đào tạo.  
2. MỤC TIÊU VÀ PHƯƠNG PHÁP NGHIÊN CỨU  
2.1. Mục tiêu của đề tài  
- Tìm hiểu một trong ngôn ngôn ngữ mô tả phần cứng là VHDL  
- Tìm hiểu công nghệ FPGA  
- Tìm hiểu một loại vi điều khiển lõi mềm 32-bit kiến trúc tập lệnh giảm thiểu  
(RISC)  
- Thiết kế được vi xử lý lõi mềm bằng công cụ phần mềm thiết kế dựa vào  
HDL  
- Xây dựng một ứng dụng phần mềm thử nghiệm hoạt động của vi điều khiển  
lõi mềm.  
2.2. Nội dung nghiên cứu  
- Công nghệ FPGA  
- Ngôn ngữ lập trình VHDL  
- Vi điều khiển Microblaze 32-bit kiến trúc tập lệnh rút gọn RISC  
- Công cụ phần mềm phát triển Xilinx ISE 14.1 dùng cho thiết kế các hệ thống  
số trên Xilinx FPGA  
Học viên: Nguyễn Văn Lăng  
2
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
-
Các bước thiết kế vi điều khiển Microblaze 32-bit nhờ sử dụng ISE 14.1  
- Xây dựng phần mềm ứng dụng trên ngôn ngữ C và cài đặt thử nghiệm hệ vi  
điều khiển đã cấu hình trên FPGA  
2.3. Phương pháp luận và phương pháp nghiên cứu  
2.3.1. Phương pháp luận  
Dựa vào các phương pháp chuyên môn:  
- Kỹ thuật điện tử và điện tử số  
- Kỹ thuật vi xử lý  
- Ngôn ngữ lập trình  
- Thiết kế các hệ thống số bằng ngôn ngữ mô tả phần cứng  
2.3.2. Phương pháp nghiên cứu  
- Khảo sát và đánh giá các công trình nghiên cứu, các tài liệu kỹ thuật liên quan  
với đề tài  
- Lựa chọn công nghệ FPGA của nhà công nghệ (Xilinx, Altera) cho đề tài  
- Lựa chọn ngôn ngữ lập trình thiết kế hệ thống số (VHDL, Verilog) cho đề tài  
- Trên cơ sở các mục tiêu của đề tài xây dựng kế hoạch thực hiện đề tài của  
luận văn, đánh giá kết quả thực hiện  
- Dựa trên các yêu cầu và đánh giá của giáo viên hướng dẫn, thực hiện các  
chỉnh sửa, và hoàn chỉnh luận văn.  
3. BỐ CỤC DỰ KIẾN CỦA LUẬN VĂN  
Nội dung luận văn gồm các chương và phần chính sau:  
Chương 1: Công nghệ FPGA  
Chương 2: Thiết kế phần cứng bằng VHDL  
Chương 3: Thiết kế hệ vi điều khiển lõi mềm Microblaze 32-bit và đặt ứng dụng  
thử nghiệm  
Kết luận chung và hướng nghiên cứu.  
CHƯƠNG 1: CÔNG NGHỆ FPGA  
1.1. PHÂN LOẠI CÁC VI MẠCH TỔ HỢP  
Học viên: Nguyễn Văn Lăng  
3
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
1.1.1. Tổng quan phát triển các mạch tích hợp  
Luận văn Thạc sĩ  
Một mạch tích hợp IC (thường được gọi là vi mạch) là một mạch điện tử được  
sản xuất bằng sự khuếch tán theo khuôn mẫu của các thành phần nhỏ lên bề mặt của  
màng tinh thể silicon. Các vật liệu bổ xung lắng đọng và được định khuôn hình thành  
các liên kết giữa các thiết bị bán dẫn. Các mạch tích hợp được làm trên màng silicon  
tròn mỏng (vài trăm microns), mỗi màng silicon chứa hàng trăm mảnh IC nhỏ (IC die).  
Các transistors và dây nối được làm từ nhiều lớp (thường có từ 10 đến 15 lớp) chồng  
lên nhau. Mỗi một lớp tiếp theo có một mẫu được xác định nhờ dùng một mặt nạ tươg  
tự như mảnh in chụp trong suốt. Sáu lớp đầu tiên (từ dưới lên) xác định các transistors.  
Các lớp trên còn lại xác định các dây nối bằng kim loại giữa transistors, gọi là các liên  
kết (interconnect) để tạo nên mạch tích hợp trên từng mảnh nhỏ (die).  
Kể từ mạch tích hợp đầu tiên do Jack Kilby (Texas Instrumens) phát minh ngày  
06/12/1959, sự phát triển của công nghệ từ cấp độ tích hợp nhỏ SSI (Small-Scale  
Integration) với một số ít bóng bán dẫn, đến cấp độ tích hợp siêu lớn ULSI (Ultra-  
Large-Scale Integration) với hàng triệu đến vài tỷ bóng bán dẫn trên một chip. Mật độ  
tích hợp các bóng bán dẫn trên vi mạch phù hợp với Định Luật Moore với một chu kỳ  
khoảng 18 tháng mật độ tích hợp các bóng bán dẫn trong diện tích 2.54 cm2 trên chip  
tăng gấp đôi, và do đó mức độ tích hợp nhân xử lý trên chip đa xử lý CMP (chip  
multiprocessor) hay chip đa nhân (chip multicore) cũng tăng lên gấp 1.3 lần hàng năm  
(hình 1).  
Hình 1.1: Phát triển số lượng nhân xử lý trên chip  
Nguồn: ITRS,”The international technology roadmap for semiconductors:  
2007”.  
Số lượng bóng bán dẫn (transistor) trong một chip vi mạch xác định cấp độ tích  
hợp của các vi mạch:  
Học viên: Nguyễn Văn Lăng  
4
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
SSI (small-scale integration): có tới 100 transistors trong chip  
Luận văn Thạc sĩ  
MSI (medium-scale integration): từ 100 đến 3,000 transistors trong chip  
LSI (large-scale integration): từ 3,000 đến 100,000 transistors trong chip  
VLSI (very large-scale integration): từ 100,000 đến 1,000,000 transistors  
trong chip.  
ULSI (ultra large-scale integration): từ vài triệu đến vài tỷ transistors trong chip  
Năm 2012 Intel công bố chip đa nhân 62-core XeonPhi quá trình 22 nm với 5 tỷ  
transistors, nhưng Nvidia đã giữ “kỷ lục thế giới” với chip xử lý đồ họa GPU (graphics  
processing unit) chứa 7.08 tỷ transistors.  
Có hai công nghệ lưỡng cực mà các vi mạch sử dụng: TTL (Transistor-  
Transistor Logic), CMOS (Complematary Metal-Oxide-Semiconductor).  
Các vi mạch TTL được xây dựng từ các transistor nối lưỡng cực BJT (bipolar  
junction transistors) và các điện trở (resistors). Chúng tiêu thụ công suất nguồn nuôi cao  
(+5v), tản nhiệt lớn. một mạch cổng trong chip TTL tiêu thụ khoảng 10mW, vì vậy  
không thể cho cấp độ tích hợp cao được. Tuy nhiên các BJT lại có ưu điểm là cho tốc  
độ cao, hệ số khuếch đại lớn, và trở kháng ra thấp, nên chúng rất phù hợp cho chế tạo  
các mạch tương tự, như các bộ khuếch đại công suất lớn.  
c vi mạch CMOS sử dụng cả hai loại transistor hiệu ứng trường, FET (Field  
Effect Transistor) n và p (nMOSFET, pMOSFET), trong đó một loại transistor được  
dùng làm điện trở. Transistor FET có trở kháng vào lớn, và tại một thời điểm chỉ có một  
loại transistor ở trạng thái ON. Vì vậy ở trạng thái tĩnh, CMOS tiêu thụ điện năng rất  
thấp. Chúng chỉ tiêu thụ điện năng đáng kể khi các transistor chuyển trạng thái giữa ON  
và OFF. Một mạch cổng trong chip CMOS tiêu thụ thấp chỉ 10nW. Vì vậy, CMOS cho  
cấp độ tích hợp cao, và chùng được ứng dụng phổ biến để chế tạo các chip vi xử lý, vi  
điều khiển, xử lý tín hiệu số (DSP), các chip CPU cho các thiết bị mobile,…Trễ lan  
tuyền trong khoảng 25ns đến 50ns. Mức tiêu thụ điện năng của CMOS phụ thuộc nhiều  
vào tần số của nhịp đồng hồ. Tần số càng lớn thì điện năng tiêu thụ càng cao. nên cho  
phép xây dựng các mạch cổng tiêu thụ điện năng thấp. CMOS có khả năng miễn nhiễu  
cao. Công nghệ CMOS được sử dụng để chế tạo các chip vi xử lý, vi điều khiển, xử lý  
tín hiệu số, các bộ nhớ SRAM, các chip CPU cho các thiết bị mobile,…  
Công nghệ BiCMOS là sự kết hợp hai loại công nghệ lưỡng cực (bipolar) và  
CMOS để tận dụng ưu điểm của cả TTL và CMOS. Ví dụ, các mạch tích hợp sử dụng  
Học viên: Nguyễn Văn Lăng  
5
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
công nghệ của BiCMOS là các bộ tạo dao động tần số radio, các chip vi xử lý Pentium,  
Pentium Pro, SuperSPARC.  
Với các cấp độ tích hợp của các chip IC thì công nghệ đóng vỏ cũng thay đổi. Có  
nhiều kiểu đóng vỏ: các chip SSI có kiểu đóng vỏ gốm hai hàng chân, DIP (Dual-in-line  
package), có số lượng cân cắm (pin) không nhiều. Những các chip VLSI, ULSI thì kiểu  
DIP không phù hợp.  
1.1.2. Các mạch tích hợp ứng dụng chuyên biệt (ASIC)  
Các mạch tích hợp là các sản phẩm công nghiệp hàng loạt được chế tạo theo chủ  
quan của các nhà sản xuất. Mặc dù chúng thỏa mãn nhiều ứng dụng khác nhau và rất đa  
năng, nhưng đối với rất nhiều ứng dụng trong nhiều lĩnh vực khác nhau thì chúng  
không thể thỏa mãn được đầy đủ, hiệu năng không cao. Do đó, từ những năm đầu 1980  
các nhà sản xuất chip đã thực hiện thiết kế chế tạo các mạch tích hợp có khả năng thiết  
kế cho các ứng dụng chuyên biệt, không phải cho mục đích sử dụng chung, những  
mạch này được gọi là ASIC (Application-Specific Integrated Circuit).  
INTEGRATED CIRCUITS  
ASIC  
User Programmable  
SIMI-CUSTOM  
GATE  
FULL-CUSTOM  
PLD  
FPGA  
STANDARD CELLS  
SPLD  
CPLD  
Hình 1.2: Phân loại các mạch tích hợp  
Tuy nhiên, đối với nhiều người dùng cá nhân thì chi phí để trả cho thiết kế chế  
tạo (tại nhà máy) các ASIC là rất cao. Nên một số nhà cung cấp đã tạo ra khả năng cho  
người sử dụng cá nhân, đó là cung cấp các mạch tích hợp mà người sử dụng có thể tự  
thiết kế và lập trình các vi mạch để tạo ra các thiết bị phù hợp nhất cho nhu cầu chuyên  
dụng của mình. Các mạch tích hợp đó được gọi là các mạch tích hợp có thể lập trình  
được cho người sử dụng (user programmable). Như vậy xét theo tính có thể lập trình  
được cho người sử dụng, các vi mạch có thể được chia thành hai loại chính, đó là ASIC  
và User Programmable (hình 1.2).  
Học viên: Nguyễn Văn Lăng  
6
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
1.1.3. Các thiết bị logic có thể lập trình được (PLD)  
Luận văn Thạc sĩ  
Các thiết bị logic có thể lập trình được PLD (Programmable Logic Device) là  
các mạch tích hợp chuẩn sẵn có trong các cấu hình chuẩn từ các catalog và được bán  
với số lượng lớn cho nhiều người dùng. Tuy nhiên, các PLD có thể được cấu hình hoặc  
được lập trình để tạo một phần cho ứng dụng chuyên biệt, và như vậy chúng có thể  
được coi là thuộc họ các ASIC. Nhưng PLD sử dụng các công nghệ khác so với ASIC  
để lập trình.  
Hình 1.3: Mảnh PLD.  
Các macrocells chứa logic mảng có thể lập trình được kèm theo một flip-flop  
hoặc một mạch chốt. Các macrocells được kết nối sử dụng khối liên kết có thể lập trình  
được lớn  
PLD là một dạng đặc biệt của mảng cổng, và nó có những đặc tính quan trọng như:  
các ô logic và các lớp mặt nạ không thể theo ứng dụng chuyên biệt, chuyển thiết kế  
nhanh chóng, một khối lớn của liên kết có thể lập trình được, ma trận các ô logic lớn  
(logic megacell) thường chứa logic mảng có thể lập trình được kèm theo một flip-flop  
hoặc mạch chốt. Có hai loại PLD: SPLD (Simple PLD), CPLD (Compled PLD).  
1.2. FPGA  
1.2.1. Kiến trúc FPGA  
FPGA (Field-Programmable Gate Array) là vi mạch dùng cấu trúc mảng các  
phần tử logic mà người dùng có thể lập trình được. Chữ “Field” ở đây chỉ khả năng tái  
lập trình “bên ngoài” của người sử dụng, không phụ thuộc vào dây truyền sản xuất phức  
tạp của nhà máy bán dẫn). FPGA thiết kế đầu tiên bởi Ross Freeman, người sáng lập  
công ty Xilinx năm 1984. Công nghhin nay ca FPGA tich hp số lượng ln các  
phn tlogic cho phép thiết kế các hthng thiết btrên chip phc tạp như: hệ thng  
trên chip (SoC), hthng nhúng (vi vi xlý và hệ điều hành nhúng), các hthng xử  
lý tín hiu và điều khin ng dụng trong hàng không vũ trụ, quc phòng, vin thông,  
Học viên: Nguyễn Văn Lăng  
7
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
công nghip sn xuất đồ điện tgia dng, các hthng máy tính tốc độ cao chuyên  
dng (mt mã, nhn dng tiếng nói,..)., đặc bit làm tin thiết kế mu cho ASIC (ASIC  
prototyping).  
hai phương pháp lập trình FPGA: lập trình dựa trên SRAM (SRAM  
programming) và lập trình dựa trên anti-fuse (Anti-fuse programming). Do đó, có hai  
loại FPGA trên thị trường hiện nay: FPGA dựa trên SRAM, và FPGA dựa trên anti-  
fuse. Trong loại FPGA với lập trình dựa trên SRAM, Xilinx và Altera là hai nhà sản  
xuất hàng đầu xét theo số lượng người dùng. Cạnh tranh chính là AT&T. Đối với loại  
FPGA với lập trình dựa trên anti-fuse, Actel, Quicklogic, Cypress, và Xilinx là những  
nhà sản xuất cạnh tranh.  
Lập trình dựa trên SRAM cần ít bit của SRAM cho từng phần tử lập trình. Sự ghi  
bit 0 làm tắt chuyển mạch (turns off a switch), trong khi sự ghi bit 1 bật chuyển mạch  
(turns on a switch). Đối với phương pháp thứ hai, khi lập trình, dòng lập trình tạo ra kết  
nối cầu chì anti-fuse (cầu trì bình thường có kết nối sẵn).  
FPGA dựa trên SRAM: do các SRAM của FPGA có thể được ghi đọc như  
SRAM bình thường ngay cả khi chúng ở trong hệ thống, nên các FPGA có thể được lập  
trình lại nhiều lần. Tuy nhiên trễ định tuyến lớn trong các FPGA lại này. Loại FPGA  
này thường được sử dụng cho lập trình cấu hình các mẫu thử của các thiết kế phần cứng  
trên ASIC.  
FPGA dựa vào anti-fuse: duy trì cố định nội dung lập trình ngay cả khi mất  
nguồn (non-volatile), và trễ định tuyến nhỏ. Tuy nhiên chúng yêu cầu một quá trình sản  
xuất phức tạp, và nếu đã lập trình xong một lần thì không thể thay đổi được nữa.  
Kiến trúc chung của FPGA dựa trên SRAM cơ bản gồm có (hình 1.4): CLB  
(configurable logic block) - các khối logic có thể cấu hình được, IOB (Input/output  
block) - các khối vào ra có thể cấu hình được, Programmable interconnect hay routing -  
mạng liên kết có thể lập trình được, các khối RAM (Block RAM). Ngoài ra có thể còn  
có các mạch điều khiển các tín hiệu đồng hồ số (DCM – Digital Clock Management)  
phân phối cho từng khối logic và khối vào ra, các khối mạch logic bổ xung như các  
ALU, memory,  
(MUX), các  
các bộ ghép kênh  
thanh ghi dịch, các  
mạch giải mã.  
Học viên: Nguyễ
gành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
Hình 1.4: Kiến trúc của FPGA dựa trên SRAM  
CLBs (configurable Logic Blocks): các khối logic được sắp xếp theo ma trận dọc  
và ngang đều nhau, và chúng có thể cấu hình được. Các CLB là tài nguyên chính của  
FPGA. Mỗi CLB có các LUT (Look-up table). Ví dụ trong Xlinx FPGA của họ  
Spartan-3E, mỗi CLB có 8 LUT. Mỗi LUT cơ bản có 4 input và 1 output. LUT có thể  
được lập trình tạo ra các mạch tổ hợp logic, RAM phân tán, thanh ghi dịch,v.v…Trong  
hầu hết các FPGA, mỗi một CLB chứa một số các mảnh, mà mỗi mảnh lại chứa một số  
(thường là 2 hoặc 4) ô logic (logic cell) với một số thành phần nhớ (Flip-Flop) hoặc bộ  
ghép kênh (Multiplexer) nếu không dùng FF. Mỗi ô logic có thể được cấu hình để thực  
hiện các chức năng logic cơ bản (như AND, OR, NOT) trên các tín hiệu số nhờ sử dụng  
bảng LUT (look-up Table). Các CLB liên kết với nhau qua mạng liên kết có thể lập  
trình được (Programmable Interconnect hay routing).  
Progammable Interconnect (hay Routing): mạng liên kết hay định tuyến được  
lập trình, là các mạng các đường dây nối dọc theo sắp xếp của các CLB với các chuyển  
mạch có thể lập trình tạo tại các nút giao tiếp các đường ngang và dọc để tạo các kết nối  
các khối logic. Tùy thuộc vào công nghệ FPGA của nhà sản xuất, mạng liên kết lập  
trình này có thể có các cấu trúc khác nhau (chúng ta sẽ xét ở sau đây). Lập trình định  
tuyến kết nối trên FPGA là một công đoạn phức tạp, nhưng được các công cụ thiết kế  
của các nhà sản xuất FPGA thực hiện tự động theo thiết kế của người dùng. IOBs  
(Input/Output Blocks): các khối vào/ra nằm bao xung quanh của miếng FPGA và nối  
với các chân tín hiệu vào/ra (I/O pin). Như vậy từng chân I/O của FPGA có thể được  
lập trình để đảm bảo các giao tiếp điện cần thiết cho kết nối FPGA với hệ thống mà nó  
là thành phần.  
Học viên: Nguyễn Văn Lăng  
9
Chuyên ngành: Kỹ thuật Điện tử  
Trường Đại học Sao Đỏ  
Luận văn Thạc sĩ  
Block RAM: khối RAM, là RAM có dung lượng vài kilobits (trong Xilinx FPGA,  
block Ram 2-port), được nhúng ở vị các vị trí cố định trên FPGA để lưu trữ dữ liệu  
(không được sử dụng để thực hiện các chức năng logic khác).  
Ngoài các thành phần trên, FPGA còn các logic nhỏ khác, như:  
MAC (Multiply-accumulate circuits): các khối logic nhân tích lũy, để thực hiện các  
phép nhân và cộng hiệu quả.  
DCM (Digital Clock Manager) (có trong Xilinx FPGA): quản lý đồng hồ số.  
Trong Xilinx PGA thực hiện lặp khóa trễ (delay locked loop), tổng hợp tần số số  
(digital frequency synthesizer), dịch pha số (digital phase shifter), hoặc tải phổ số  
(fdigital spread spectrum). Các khối DCM được đặt xung quanh trên FPGA để cho  
EDK tool suite sử dụng).  
Các khối thực hiện các chức năng đặc biệt: xử lý tín hiệu số và tương tự, ví dụ  
các bộ biến đổi tương tự-số ADC (Analog-to-Digital Converter) và các bộ biến đổi số-  
tương tự DAC (Digital-to-Analog Converter), cho phép FPGA vận hành như là một  
SoC. Một FPGA chứa từ 64 đến hàng chục ngàn khối logic và các flip-flop.  
LUT giống như một RAM nhỏ, cũng được gọi là các bộ tạo chức năng, FG  
(Function generator), được sử dụng để thực hiện các chức năng logic nhờ cất giữ trạng thái  
logic ra đúng ở trong một vùng nhớ, mà trạng thái logic ra tương ứng với từng tổ hợp của  
các biến vào. LUT thường có 4 đầu vào có thể thực hiện bất kỳ chức năng logic 4-đầu vào.  
Các nhà sản xuất có xu hướng thiết kế các khối logic của FPGA thực hiện các  
chức năng lớn hơn để giảm liên kết cục bộ, đồng nghĩa với số lượng chân tín hiệu đầu  
vào của khối logic tăng lên, và nó cũng cho phép lập trình các khối logic linh hoạt hơn.  
Ví dụ, Xilinx có kiến trúc Virtex-5 FPGA dựa trên cặp LUT 6-đầu vào với tổng  
số 64 bits của không gian lập trình và 6 đầu vào độc lập, và logic liên quan đảm bảo ưu  
việt trong sử dụng các tài nguyên so với các kiến trúc khác. Nó có thể thực hiện bất kỳ  
chức năng nào từ 6 đầu vào độc lập và các tổ hợp số của một hoặc hai chức năng nhỏ.  
LUT 6-đầu vào cũng bao gồm cả các bộ cộng (adder) với logic carry, các bộ dồn kênh  
(MUX), và flip-flop. Nó có thể được sử dụng bổ xung như là RAM 64-bit hay thanh ghi  
dịch 32 bit (hình 1.5).  
Học viên: Nguyễn Vă
ành: Kỹ thuật Điện tử  
Tải về để xem bản đầy đủ
pdf 86 trang yennguyen 30/03/2022 6980
Bạn đang xem 20 trang mẫu của tài liệu "Luận văn Thiết kế hệ vi điều khiển lõi mềm 32-bit trên FPGA và cài đặt ứng dụng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfluan_van_thiet_ke_he_vi_dieu_khien_loi_mem_32_bit_tren_fpga.pdf