Trước đây, một hệ thống điện tử ví dụ như hệ thống máy tính thường bao gồm nhiều vi mạch gắn trên các bản mạch in khác nhau, được ghép nối với nhau để thực hiện các chức năng của hệ thốn
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
VŨ THỊ KIM NHUNG
NGHIÊN CỨU VÀ TRIỂN KHAI HỆ VI XỬ LÝ TRÊN
CƠ SỞ LÕI XỬ LÝ MICROBLAZE, THỬ NGHIỆM
ỨNG DỤNG TRÊN FPGA
LUẬN VĂN THẠC SĨ
Hà Nội - 2010
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
VŨ THỊ KIM NHUNG
NGHIÊN CỨU VÀ TRIỂN KHAI HỆ VI XỬ LÝ TRÊN
CƠ SỞ LÕI XỬ LÝ MICROBLAZE, THỬ NGHIỆM
ỨNG DỤNG TRÊN FPGA
Ngành: Công nghệ Điện tử - Viễn thông
Chuyên ngành: Kỹ thuật điện tử
Mã số: 60 52 70
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Trần Xuân Tú
Hà Nội - 2010
Trang 3LỜI CẢM ƠN
Trước tiên tôi xin bày tỏ lời cảm ơn sâu sắc tới Tiến sĩ Trần Xuân Tú, người đã tận tình chỉ bảo, hướng dẫn tôi trong suốt quá trình thực hiện luận văn tại Phòng thí nghiệm mục tiêu Hệ thống tích hợp thông minh (PTN SIS), thuộc trường Đại học Công nghệ, Đại học Quốc gia Hà Nội Thầy đã định hướng, gợi mở và trang bị cho tôi nhiều kiến thức và kinh nghiệm về thiết kế hệ thống xử lý trên chip dựa trên công nghệ FPGA, một lĩnh vực mà trước khi thực hiện luận văn tôi chưa được biết đến
Tôi xin trân trọng cảm ơn các thầy cô khoa Điện tử - Viễn thông, trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã nhiệt tình truyền giảng cho tôi những kiến thức và kinh nghiệm chuyên ngành trong suốt thời gian tôi học cao học tại trường
Đặc biệt tôi xin dành lời cảm ơn chân thành nhất tới các thành viên của Nhóm nghiên cứu Thiết kế vi mạch tích hợp (VLSI Systems Design Group) thuộc Phòng thí nghiệm mục tiêu Hệ thống tích hợp thông minh, trường Đại học Công nghệ, những người đã cùng thảo luận, hỗ trợ và chia sẻ kinh nghiệm cho tôi trong suốt quá trình nghiên cứu và làm việc tại đây
Cuối cùng, tôi xin cảm ơn gia đình và bạn bè đã luôn sát cánh và động viên tôi
để tôi có thể hoàn thành luận văn của mình
Hà Nội, ngày 15 tháng 7 năm 2010
Vũ Thị Kim Nhung
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu, kết quả nêu trong luận văn là hoàn toàn trung thực và chƣa từng đƣợc công bố ở bất kỳ công trình nào khác
Hà Nội, ngày 15 tháng 7 năm 2010
Tác giả
Vũ Thị Kim Nhung
Trang 5MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT v
DANH MỤC BẢNG BIỂU vii
DANH MỤC HÌNH VẼ viii
LỜI MỞ ĐẦU 1
Chương 1 Tổng quan về hệ vi xử lý và hệ thống trên một chip 3
1.1 Tổng quan về hệ vi xử lý 3
1.1.1 Kiến trúc một hệ vi xử lý 3
1.1.2 Kiến trúc bên trong của một vi xử lý 6
1.2 Hệ thống trên một chip 9
1.2.1 Giới thiệu về hệ thống trên chip 9
1.2.2 Hạn chế của Hệ thống trên chip 10
1.3 Phương pháp thiết kế vi mạch tích hợp VLSI 11
1.3.1 Giới thiệu về công nghệ và phương pháp thiết kế vi mạch tích hợp VLSI 11
1.3.2 Công nghệ FPGA và quy trình thiết kế VLSI với công nghệ FPGA 13
1.3.3 Giới thiệu về ngôn ngữ mô tả phần cứng VHDL và ứng dụng của VHDL trong thiết kế VLSI 17
Chương 2 Lõi vi xử lý mềm MicroBlaze 20
2.1 Giới thiệu về MicroBlaze 20
2.2 Kiến trúc cơ bản của MicroBlaze 20
2.2.1 Kiến trúc lõi MicroBlaze 20
2.2.2 Kiến trúc bộ nhớ 22
2.2.3 Cấu trúc đường ống 23
2.2.4 Các thanh ghi trong MicroBlaze 24
2.2.5 Kiểu dữ liệu trong MicroBlaze 27
2.2.6 Hoạt động ngắt trong MicroBlaze 28
Trang 62.3 Các giao tiếp tín hiệu của MicroBlaze 29
2.3.1 Giới thiệu chung 29
2.3.2 Bus xử lý nội PLB 30
2.3.3 Bus nhớ nội LMB (LMB: Local Memory Bus) 31
2.3.4 Bus ngoại vi on-chip OPB (On-chip Peripheral Bus) 32
2.3.5 Bus XCL 33
2.4 Giao diện nhị phân ứng dụng 34
2.4.1 Các kiểu dữ liệu 34
2.4.2 Các quy ước sử dụng ngăn xếp và thanh ghi 34
2.5 Tập lệnh của MicroBlaze 37
2.5.1 Khuôn dạng lệnh 37
2.5.2 Các nhóm lệnh 37
Chương 3 Triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze 39
3.1 Thực thi hệ thống vi xử lý trên kit FPGA sử dụng phần mềm EDK 39
3.2 Ý tưởng xây dựng hệ vi xử lý sử dụng lõi xử lý MicroBlaze 41
3.3 Thực thi thiết kế 43
3.3.1 Kết nối giữa MicroBlaze và hệ thống bus PLB 43
3.3.2 Kết nối giữa hệ thống bus PLB và các khối ngoại vi 46
3.3.3 Bộ giao tiếp truyền thông nối tiếp UART Lite 47
3.3.4 Giao tiếp ngoại vi nối tiếp SPI (Serial Peripheral Interface) 51
3.3.5 Bộ chuyển đổi tín hiệu số -tương tự DAC 55
3.3.6 Thực thi trên công cụ EDK 60
3.4 Một số kết quả thực thi phần cứng 60
Chương 4 Kiểm thực hệ thống với một số ứng dụng minh hoạ 62
4.1 Thực hiện truyền thông dữ liệu hai chiều giữa hệ vi xử lý và máy tính qua cổng nối tiếp RS232 62
4.2 Thực hiện chuyển đổi dữ liệu dạng số sang dạng tương tự qua bộ chuyển đổi tín hiệu DAC 66
4.3 Kết hợp dùng máy tính để điều khiển hệ thống chuyển đổi dữ liệu qua DAC
70
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 73
Trang 7DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Viết tắt Viết đầy đủ
ADC Analog-to-Digital Converter
ALU Arithmetic Logic Unit
ASIC Application Specific Integrated Circuit
CAD Computer Aided Design
CPU Central Processing Unit
DAC Digital-to-Analog Converter
DCE Data Circuit-terminating Equipment
DPLB Data interface, Processor Local Bus
DMA Direct Memory Access
DTE Data Terminal Equipment
EAR Exception Address Register
FIFO First In First Out
FPGA Field Programmable Gate Array
FPU Float Point Unit
FSM Finite State Machine
GALS Globally Asynchronous Locally Synchronuos
HDL Hardware Description Language
IC Integrated Circuit
IEEE Institute of Electrical and Electronic Engineers
IP Intellectual Property
IPLB Instruction interface, Processor Local Bus
LCD Liquid Crystal Display
LMB Local Memory Bus
LSI Large Scale Integration
LUT Look Up Table
MMU Memory Manage Unit
MSI Medium Scale Integration
MSR Machine Status Register
MOSI Master Out Slave In
MISO Master In Slave Out
NoC Network on Chip
PLB Processor Local Bus
RAM Random-Access Memory
Trang 8Viết tắt Viết đầy đủ
RF Radio Frequency
ROM Read Only Memory
RTL Register Transfer Level
SDK Software Development Kit
SoC System on Chip
SSI Small Scale Integration
SPI Serial Peripheral Interface
VHDL Very-High-Speed-Integrated-Circuit Hardware Description
VHSIC Very High Speed Integrated Circuit
VLSI Very Large Scale Integration
XCL Xilinx Cache Link
XPS Xilinx Platform Studio
Trang 9DANH MỤC BẢNG BIỂU
Bảng 1: Cấu trúc đường ống 3 bước 23
Bảng 2: Cấu trúc đường ống 5 bước 24
Bảng 3: Kiểu dữ liệu Word 28
Bảng 4: Kiểu dữ liệu Half Word 28
Bảng 5: Kiểu dữ liệu Byte 28
Bảng 6: Các kiểu dữ liệu MicroBlaze 34
Bảng 7: Bảng quy ước ngăn xếp 35
Bảng 8: Các tín hiệu giao tiếp của DAC 56
Bảng 9: Vô hiệu các thiết bị khác trên FPGA khi kết nối với DAC 57
Bảng 10: Số lượng tài nguyên phần cứng đã sử dụng 61
Trang 10DANH MỤC HÌNH VẼ
Hình 1: Sơ đồ khối hệ vi xử lý đơn giản 3
Hình 2: Hệ vi xử lý lõi MicroBlaze [4] 5
Hình 3: Cấu trúc bên trong một vi xử lý 7
Hình 4: Sơ đồ khối máy trạng thái kiểu Mealy 8
Hình 5: Hệ thống trên chip xây dựng trên cơ sở bộ vi xử lý [14] 9
Hình 6: Quy trình thiết kế VLSI [5] 12
Hình 8: Sơ đồ khối một đơn vị logic của FPGA 14
Hình 9: Quy trình thiết kế VLSI với công nghệ FPGA [18] 15
Hình 10: Các mức trừu tƣợng trong mô tả phần cứng 19
Hình 11: Cấu trúc lõi xử lý MicroBlaze [6] 21
Hình 12: Hệ thống chuyển mạch tăng tốc sử dụng MicroBlaze điển hình [9] 22
Hình 13: Không gian địa chỉ các vùng nhớ của MicroBlaze 23
Hình 14: Ví dụ về một hệ thống Bus điển hình của Micro Blaze 30
Hình 15: Cấu trúc hệ thống Bus PLB hỗ trợ 16 Bus chủ và một vài Bus tớ [2] 31
Hình 16: Mô tả kết nối giữa liên kết XCL và các bộ đệm FSL tích hợp 33
Hình 17: Ví dụ mô tả giá trị thay đổi con trỏ ngăn xếp trong các lệnh 36
Hình 18: Quy trình thiết kế hệ thống trên FPGA 40
Hình 19: Sơ đồ khối hệ vi xử lý đề xuất 42
Hình 20: Sơ đồ khối hệ vi xử lý thực nghiệm 42
Hình 21 : Sơ đồ khối hệ thống giao tiếp bus PLB_V46 Master 44
Hình 22: Thiết lập tín hiệu giao tiếp lệnh đọc IP client [3] 45
Hình 23: Thiết lập tín hiệu giao tiếp lệnh viết IP client [3] 45
Hình 24: Sơ đồ khối hệ thống giao tiếp bus PLB_V46 slave 46
Hình 25: Sơ đồ khối bộ giao tiếp UART Lite 48
Hình 26: Các cổng nối tiếp RS232 [8] 49
Hình 27: Minh họa kết nối các chân tín hiệu RS232 với hệ thống 50
Hình 28: Thiết lập định dạng khung và tốc độ truyền dữ liệu RS232 51
Hình 29: Sơ đồ khối của lõi XPS SPI [11] 52
Trang 11Hình 30: Định dạng thanh ghi điều khiển SPI 53
Hình 31: Minh họa kết nối các chân tín hiệu SPI với hệ thống 55
Hình 32: Sơ đồ kết nối bộ chuyển đổi số-tương tự [8] 56
Hình 33: Giản đồ biểu diễn dạng tín hiệu sự truyền thông SPI 57
Hình 34: Lựa chọn tần số xung clock, tín hiệu SStrong cấu hình phần cứng 58
Hình 35: Giao thức truyền thông SPI với LTC2624 DAC 59
Hình 36: Mô hình ứng dụng hệ vi xử lý trong truyền thông theo chuẩn RS232 62
Hình 37: Lưu đồ thuật toán triển khai ứng dụng với RS232 63
Hình 38: Kết quả truyền dữ liệu từ MicroBlaze đến máy tính 65
Hình 39: Kết quả truyền dữ liệu từ máy tính đến MicoBlaze 65
Hình 40: Mô hình thực hiện ứng dụng hệ vi xử lý với DAC 66
Hình 41: Lưu đồ thuật toán triển khai ứng dụng với DAC 66
Hình 42: Tín hiệu đầu ra trên DAC là xung vuông 69
Hình 43: Tín hiệu đầu ra trên DAC là xung răng cưa 69
Hình 44: Mô hình thực hiện ứng dụng kết hợp của hệ vi xử lý 70
Hình 45: Lưu đồ thuật toán triển khai ứng dụng kết hợp 71
Trang 12LỜI MỞ ĐẦU
Thiết kế và phát triển các vi mạch tích hợp (IC) và các hệ thống điện tử là lĩnh vực không thể thiếu được trong việc công nghiệp hóa, hiện đại hóa một đất nước Sự
ra đời và phát triển của công nghệ FPGA (Field-Programable Gate Array) với các chip
có thể lập trình được tạo điều kiện cho những nước bước đầu làm quen với thiết kế vi mạch tích hợp như chúng ta có thể nhanh chóng hoà nhập với cộng đồng các nước có ngành công nghiệp điện tử phát triển Công nghệ FPGA cho phép chế tạo thử hay triển khai một số ứng dụng với quy mô vừa phải với giá thành phải chăng Tất nhiên, chúng
ta cũng cần lưu ý là FPGA chỉ cho phép triển khai các ứng dụng không đòi hỏi đáp ứng những yêu cầu quá khắt khe về hiệu năng của hệ thống
Trước đây, một hệ thống điện tử (ví dụ như hệ thống máy tính) thường bao gồm nhiều vi mạch gắn trên các bản mạch in khác nhau, được ghép nối với nhau để thực hiện các chức năng của hệ thống Ngày nay, nhờ sự phát triển nhanh chóng của công nghệ bán dẫn và các kỹ thuật thiết kế mạch tích hợp, chúng ta đã có thể tích hợp cả hệ thống hoàn chỉnh đó lên trên một vi mạch đơn Hệ thống tích hợp trên một vi mạch
đơn này được gọi là Hệ thống trên một chip (trong tiếng Anh gọi là "System-on-Chip"
và viết tắt là "SoC")
Hầu hết các hệ thống trên chip đều chứa đựng ít nhất một vi xử lý (dù đơn giản hay phức tạp) và các ứng dụng của chúng đều được xây dựng như là một hệ vi xử lý
(trên chip hoặc bán trên chip) Trong khuôn khổ đề tài “ Nghiên cứu và triển khai hệ
vi xử lý trên cơ sở lõi xử lý MicroBlaze, thử nghiệm ứng dụng trên FPGA”, tôi
triển khai xây dựng một hệ vi xử lý tương đối đơn giản trên cơ sở lõi vi xử lý MicroBlaze của hãng Xilinx, các ứng dụng được thực hiện trên kit phát triển FPGA Spartan-3E của hãng Xilinx, tạo tiền đề cho việc thiết kế các hệ thống trên chip và
triển khai các ứng dụng cụ thể của hệ vi xử lý về sau
Báo cáo luận văn được trình bày gồm 4 chương:
Chương 1 Tổng quan về hệ vi xử lý và hệ thống trên một chip: Chương này
giới thiệu chung về vi xử lý, hệ vi xử lý, hệ thống trên một vi mạch, phương pháp và công nghệ thiết kế vi mạch VLSI và ngôn ngữ VHDL, một ngôn ngữ thiết kế phần cứng được sử dụng trong quá trình thực thi đề tài
Chương 2 Lõi vi xử lý mềm MicroBlaze: Chương này nghiên cứu, tìm hiểu cụ
thể về lõi xử lý mềm MicroBlaze như cấu trúc bộ nhớ, các thanh ghi và các giao tiếp tín hiệu cũng như tập lệnh của MicroBlaze
Trang 13Chương 3 Triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze: Chương này
trình bày cụ thể quá trình thiết kế hệ vi xử lý thực nghiệm trên cơ sở lõi xử lý MicroBlaze từ ý tưởng xây dựng hệ vi xử lý đến các bước dùng phần mềm EDK để kết nối các thành phần trong hệ và thực thi hệ trên kit FPGA Spartan-3E của hãng Xilinx
Chương 4 Kiểm thực hệ thống với một số ứng dụng minh hoạ: Chương này
triển khai một số ứng dụng của hệ vi xử lý đã xây dựng ở chương 3
Trang 14Chương 1 Tổng quan về hệ vi xử lý và hệ thống trên một chip
Trước khi đề cập đến việc triển khai thiết kế hệ vi xử lý, chương này trình bày những vấn đề cơ bản nhất về vi xử lý, hệ vi xử lý, hệ thống trên một vi mạch Bên cạnh đó, phương pháp và công nghệ thiết kế vi mạch VLSI cũng được trình bày nhằm làm sáng tỏ phương pháp thiết kế về sau Trong chương này, tôi cũng dành một phần mục nhỏ để đề cập đến ngôn ngữ VHDL, một ngôn ngữ thiết kế phần cứng được sử dụng trong quá trình thực thi đề tài
1.1 Tổng quan về hệ vi xử lý
1.1.1 Kiến trúc một hệ vi xử lý
Một hệ vi xử lý hoàn chỉnh bao gồm bộ vi xử lý (µP: MicroProcessor) kết hợp với các bộ phận điện tử khác như các mạch nhớ để lưu trữ chương trình và dữ liệu cho
vi xử lý thực hiện, các mạch ngoại vi giúp con người làm việc, giao tiếp với vi xử lý,
hệ thống các bus địa chỉ, bus dữ liệu, bus điều khiển để kết nối các mạch trên Bộ vi
xử lý là thành phần rất cơ bản không thể thiếu được để tạo nên các hệ vi xử lý
Sơ đồ khối của một hệ vi xử lý cơ bản được mô tả như Hình 1
Hình 1: Sơ đồ khối hệ vi xử lý đơn giản
Phần trung tâm của hệ vi xử lý là bộ vi xử lý (P), đóng vai trò chủ đạo trong mọi hoạt động hệ vi xử lý Đây là một vi mạch số có độ tích hợp cực lớn, bên trong nó bao gồm nhiều khối chức năng khác nhau như đơn vị số học và logic để thực hiện các thao tác và tính toán, các thanh ghi, khối điều khiển Ngoài ra bên trong vi xử lý còn
có hệ thống mạch điện tử rất phức tạp để giải mã và tạo ra các xung điều khiển cho toàn hệ thống Vi xử lý hoạt động theo một chuỗi các lệnh máy có sẵn gọi là chương
Trang 15trình, do người lập trình tạo ra Khi hoạt động, nó đọc mã lệnh (được ghi dưới dạng các chuỗi bit 0, 1) từ bộ nhớ đưa vào bên trong vi xử lý để giải mã thành các vi lệnh sau đó điều khiển các khối thực hiện lệnh Vi xử lý chính là nơi thực hiện các thao tác tính toán, xử lý dữ liệu, đưa ra các tín hiệu điều khiển cho toàn bộ hệ thống
Bộ nhớ trong (internal memory) là bộ phận rất quan trọng của hệ vi xử lý dùng
để lưu trữ dữ liệu và các chương trình cần thực thi Bộ nhớ trong được tổ chức thành các ô nhớ có độ dài (số bit) bằng nhau, mỗi ô nhớ được gán một địa chỉ cố định và duy nhất để vi xử lý quản lý Tùy theo kiến trúc của vi xử lý mà có thể phân chia bộ nhớ thành các loại khác nhau Đối với những vi xử lý có kiến trúc Von Neumann, vùng nhớ dữ liệu và vùng nhớ chương trình không được phân chia độc lập và cùng được truy nhập theo một đường địa chỉ Điều này cho phép đưa dữ liệu vào vùng mã chương trình và đưa mã chương trình vào vùng nhớ dữ liệu rồi thực hiện lệnh từ đó Ngược lại, với những vi xử lý có kiến trúc Harvard, vùng nhớ cho chương trình và vùng nhớ cho
dữ liệu được phân biệt rõ ràng Mã chương trình chỉ có thể được lưu và đọc ra từ vùng nhớ chương trình (thường là bộ nhớ chỉ đọc ROM: Read Only Memory) Các dữ liệu cũng chỉ có thể được lưu và trao đổi với vi xử lý từ bộ nhớ dữ liệu RAM (RAM: Random Access Memory) Như vậy, kiến trúc Harvard có ưu điểm nổi bật hơn kiến trúc Von Neumann là vùng nhớ dữ liệu và vùng nhớ chương trình được vi xử lý truy nhập qua hai kênh riêng biệt, nhờ vậy vi xử lý có thể truy nhập đồng thời cả hai vùng nhớ, làm tăng tốc độ trao đổi với vi xử lý
Để giao tiếp với bên ngoài, hệ vi xử lý được trang bị các khối vào/ra (Input port
và Output port) Mỗi cổng vào/ra có một địa chỉ cố định để có thể đọc dữ liệu vào hoặc ghi dữ liệu ra cổng Cổng vào để lấy thông tin từ ngoài vào và cổng ra để đưa thông tin từ trong hệ ra ngoài Các cổng vào ra giúp cho vi xử lý theo dõi và đưa tín hiệu điều khiển thích hợp với các quá trình được điều khiển bên ngoài hệ vi xử lý Chúng còn giúp con người dễ dàng can thiệp, tác động điều khiển, thu nhận kết quả hoặc kiểm tra hoạt động của hệ vi xử lý
Các đường Bus là một nhóm các đường dây dẫn điện để truyền tín hiệu giữa các khối trong hệ Các đường dây này còn được gọi chung là bus hệ thống Bus hệ thống gồm có ba bus thành phần: bus địa chỉ chuyển tải tín hiệu địa chỉ, bus dữ liệu chuyển tải tín hiệu dữ liệu và bus điều khiển chuyển tải tín hiệu điều khiển
Bus địa chỉ (ADDRESS BUS) thường có từ 16, 20, 24 đến 32 đường dây song song chuyển tải các bit địa chỉ (mỗi đường dây vận chuyển một bit) Bus địa chỉ chứa địa chỉ tham chiếu tới các ô nhớ, cho biết vị trí dữ liệu cần truy xuất Khi đọc/ghi bộ nhớ hoặc cổng I/O CPU sẽ đưa ra trên bus này địa chỉ của ô nhớ hay cổng I/O cần đọc/ghi Độ rộng của bus địa chỉ thể hiện khả năng quản lý bộ nhớ của vi xử lý Nếu bus địa chỉ rộng N bit thì vi xử lý có thể quản lý tới 2N
ô nhớ (mỗi ô nhớ có thể là 8 bit, 16 bit, 32 bit… tùy thuộc vào loại vi xử lý) Nếu đánh địa chỉ theo byte và bus địa chỉ rộng 8 bit thì vi xử lý có thể quản lý bộ nhớ có dung lượng 28
byte = 256 byte nhớ
Trang 16Bus dữ liệu (DATA BUS) thường gồm 4, 8, 16, 32… đường dây song song tùy thuộc vào bộ vi xử lý cụ thể, dùng để truyền dữ liệu giữa các khối trong hệ vi xử lý
Độ rộng của bus dữ liệu cho biết số bit dữ liệu mà vi xử lý có thể xử lý cùng một lúc
Vì thao tác di chuyển dữ liệu chiếm khoảng 2/3 thời gian thực hiện của vi xử lý nên độ rộng của bus dữ liệu có ảnh hưởng rất lớn đến hiệu suất làm việc của hệ vi xử lý
Bus điều khiển (CONTROL BUS) là các đường tín hiệu một chiều, chứa thông tin điều khiển từ vi xử lý tác động đến các khối chức năng hoặc là các đường chứa thông tin phản hồi về trạng thái của các khối này cho vi xử lý
Trên đây là mô tả về một hệ vi xử lý rất đơn giản Trong thực tế, các hệ vi xử lý thường được xây dựng nhắm tới một ứng dụng hoặc một họ ứng dụng nào đó Trong trường hợp đó, hệ vi xử lý không chỉ gồm bộ vi xử lý, bộ nhớ trong, các khối I/O, các đường bus mà còn chứa thêm các đơn vị chức năng khác như Ethernet, vào/ra nối tiếp (RS232 hay USB), giao diện màn hình (VGA, LCD), các bộ định thời (Timers)…
Trang 17- Bộ nhớ trong (Local Memory) lưu trữ dữ liệu và các chương trình cần thực thi của hệ vi xử lý
- Các khối ngoại vi vào/ra riêng (Custom I/O Peripherals) dùng để xuất dữ liệu
từ hệ vi xử lý ra ngoài và nhập dữ liệu từ ngoài vào trong hệ vi xử lý
- Các đường bus dùng để truyền tín hiệu giữa các khối bên trong hệ vi xử lý
- Các bộ đồng xử lý riêng (Custom Coprocessors) hỗ trợ cho lõi vi xử lý MicroBlaze thực hiện các chức năng xử lý khác nhau
- Khối truy nhập bộ nhớ trực tiếp DMA (Direct Memory Access) thực hiện điều khiển truy nhập trực tiếp bộ nhớ mà không cần sự điều khiển của lõi vi xử lý trong hệ
- Bộ định thời TIMER thực hiện các chức năng định thời
Hệ vi xử lý trên còn bao gồm một số thành phần như điều khiển ngoại vi (Peripherar Controller), giao diện I2
C/SPI…
Cho dù là một hệ vi xử lý đơn giản hay phức tạp, thành phần không thể thiếu vẫn là lõi vi xử lý Phần tiếp theo sẽ trình bày chi tiết hơn về kiến trúc lõi vi xử lý
1.1.2 Kiến trúc bên trong của một vi xử lý
Một vi xử lý thường gồm hai thành phần chính: đơn vị điều khiển (Control Unit) và luồng dữ liệu (Datapath) Hai thành phần này cùng được xây dựng từ các mạch logic tổ hợp và mạch dãy Datapath có nhiệm vụ lưu trữ, xử lý và phân luồng dữ liệu, tác động trực tiếp lên thông tin Đơn vị điều khiển có nhiệm vụ đưa ra những tín hiệu điều khiển để điều khiển hoạt động của Datapath Tuy không tác động trực tiếp lên thông tin nhưng đơn vị điều khiển lại đóng vai trò quan trọng trong cả quá trình vi
xử lý hoạt động Cấu trúc bên trong của bộ vi xử lý được chỉ ra như Hình 3
Trang 18Hình 3: Cấu trúc bên trong một vi xử lý
a) Luồng dữ liệu Datapath
Cấu trúc của Datapath gồm ba phần: đơn vị số học và logic ALU (ALU: Arithmetic Logic Unit), các thanh ghi (registers) và các đường bus dữ liệu
Đơn vị số học và logic ALU có nhiệm vụ xử lý thông tin, thực hiện các phép toán số học và logic trên dữ liệu Tuỳ thuộc vào mức độ phức tạp của các phép toán cần thực hiện, ALU có thể gồm các bộ cộng, trừ, bộ dịch, khối thực hiện phép toán logic, hay thậm chí cả các bộ nhân chia… ALU nhận tín hiệu điều khiển từ đơn vị điều khiển, thực hiện tính toán trên dữ liệu đầu vào và cung cấp tín hiệu trạng thái phản hồi
về đơn vị điều khiển ALU không chứa các phần tử nhớ, do đó ở đường vào của các toán hạng và ở lối ra cho kết quả/trạng thái luôn phải có thêm mạch chốt để lưu các giá trị này
Các thanh ghi (registers) thực chất là khối nhớ có dung lượng nhỏ dùng để lưu trữ dữ liệu tạm thời phục vụ cho quá trình tính toán của ALU Khối nhớ gồm một tập các thanh ghi chung và các thanh ghi có chức năng đặc biệt Trong vi xử lý có hai thanh ghi quan trọng nhất là thanh ghi lệnh IR (instruction register) và thanh ghi bộ đếm chương trình PC (Program counter) Thanh ghi lệnh dùng để lưu trữ mã lệnh của lệnh, đơn vị điều khiển sẽ căn cứ vào mã lệnh này để điều khiển mọi hoạt động tính toán của vi xử lý Thanh ghi đếm chương trình cung cấp địa chỉ hiện tại mà vi xử lý đang truy nhập tới bộ nhớ chương trình và chỉ ra cho vi xử lý biết lệnh tiếp theo nằm ở
vị trí nào trong bộ nhớ Ngoài hai thanh ghi này, vi xử lý còn chứa các thanh ghi con trỏ ngăn xếp, thanh ghi lưu giá trị đầu vào, đầu ra của ALU… Các thanh ghi trong vi
xử lý được vi xử lý quản lý qua việc đánh địa chỉ
Trang 19Đường bus dữ liệu là đường vận chuyển dữ liệu giữa các phần tử nhớ và từ các phần tử nhớ đến khối tính toán
Hoạt động của luồng dữ liệu Datapath có thể được mô tả ngắn gọn như sau: dữ liệu đi vào qua đơn vị tính toán số học và logic sau đó được chốt vào các thanh ghi
Dữ liệu từ các thanh ghi này được đưa lên bus lối ra qua các cửa đệm ba trạng thái Dữ liệu từ các thanh ghi cũng có thể đưa trở lại làm toán hạng cho các mạch tính toán Các tín hiệu trạng thái từ khối tính toán sau khi được chốt vào thanh ghi cùng với mã lệnh được đưa sang làm cơ sở điều khiển cho đơn vị điều khiển Tất cả các mạch tính toán
số học và logic, các thanh ghi đều được điều khiển bởi đơn vị điều khiển
b) Đơn vị điều khiển
Đơn vị điều khiển được tổ chức thành máy trạng thái FSM (Finite State Machine) Máy trạng thái là một mạch logic mà tín hiệu đầu ra không những phụ thuộc vào tín hiệu đầu vào mà còn phụ thuộc vào trạng thái hiện tại của mạch Có hai loại máy trạng thái cơ bản là Moore và Mealy Hình 4 mô tả mô hình máy trạng thái Mealy gồm ba khối Khối đầu tiên là một mạch logic tổ hợp có nhiệm vụ tính toán ra giá trị trạng thái tiếp theo của máy Trạng thái tiếp theo được tính toán từ giá trị lối vào
và giá trị trạng thái hiện tại Khối thứ hai là một khối nhớ, lưu giữ trạng thái hiện tại của máy trạng thái Sau mỗi xung nhịp đồng hồ, giá trị trạng thái hiện tại lại được cập nhật bằng kết quả tính toán của khối thứ nhất Khối thứ ba là mạch logic tổ hợp cho kết quả đầu ra chính là đầu ra của máy trạng thái Đầu ra có thể được tính toán chỉ từ trạng thái hiện tại của máy trạng thái hoặc được tính từ trạng thái và các giá trị đầu vào hiện tại của máy trạng
Mạch logic
tổ hợp trạng thái
kế tiếp
Khối nhớ trạng thái
Mạch logic
tổ hợp lối ra
Trạng thái hiện hành
Xung đồng hồ
Lối ra Lối vào
Hình 4: Sơ đồ khối máy trạng thái kiểu Mealy
Đối với máy trạng thái dùng làm đơn vị điều khiển thì tín hiệu đầu ra của máy trạng thái chính là tín hiệu dùng để điều khiển hoạt động của khối datapath, còn tín hiệu đầu vào có thể xem như một chuỗi các lệnh mô tả công việc của vi xử lý (được gọi là chương trình máy tính) Chương trình này thường được lưu trong bộ nhớ chương trình Khi thực hiện một lệnh, trước tiên đơn vị điều khiển thực hiện thao tác
Trang 20đọc bộ nhớ chương trình, chốt dữ liệu đọc được vào lối vào thanh ghi lệnh (thao tác nạp lệnh), tiếp đó là quá trình giải mã lệnh xem yêu cầu của lệnh là gì và cuối cùng thực hiện lệnh Trong quá trình thực hiện lệnh, đơn vị điều khiển cũng xem xét cả các tín hiệu đầu vào là trạng thái của mạch tính toán trong luồng dữ liệu (datapath)
1.2 Hệ thống trên một chip
1.2.1 Giới thiệu về hệ thống trên chip
Các mạch điện tử thông thường bao gồm các linh kiện điện tử được gắn trên các bản mạch có kích thước tương đối lớn Với những thành tựu của công nghệ chế tạo vật liệu bán dẫn nói riêng và công nghệ chế tạo linh kiện điện tử nói chung, vi mạch tích hợp IC (Intergrated Circuit) ra đời Nó bao gồm các linh kiện tích cực, các linh kiện thụ động, các dây dẫn được chế tạo trên một đế đơn tinh thể bán dẫn với một quy trình thống nhất Sự phát triển tiếp theo của công nghệ chế tạo vi mạch là nhiều IC được kết nối với nhau trên một bo mạch để thực hiện một ứng dụng thực tế nào đó Hiện nay, công nghệ thiết kế và chế tạo vi mạch phát triển mạnh mẽ đã cho phép tích hợp một hệ thống hoàn chỉnh trên một phiến silicon gọi là “Hệ thống trên một chip” (SoC: System on Chip)
Hệ thống trên một chip là một hệ thống điện tử được xây dựng trên một đế silicon với ý tưởng ban đầu là tích hợp tất cả các thành phần của một hệ thống máy tính lên trên một vi mạch đơn (hay còn gọi là một chip đơn) Một ví dụ về Hệ thống trên một chip xây dựng trên cơ sở bộ vi xử lý ARM được chỉ ra như Hình 5
Hình 5: Hệ thống trên chip xây dựng trên cơ sở bộ vi xử lý [14]
Trang 21Hệ thống trên chip có thể bao gồm các khối chức năng số, tương tự hay tín hiệu kết hợp (mixed - signal) như bộ xử lý (processor), bộ nhớ RAM, ROM, khối truy nhập
bộ nhớ trực tiếp DMA, các thiết bị ngoại vi… thậm chí cả khối tần số radio RF (Radio Frequency) Các khối này được thể hiện dưới dạng lõi IP (IP: Intellectual Property) Ứng dụng điển hình của hệ thống trên chip là các hệ thống nhúng
Ưu điểm thiết kế SoC là hệ thống tiêu tốn ít năng lượng, rút ngắn chu kỳ thiết
kế và làm giảm giá thành thiết kế do các lõi IP được tái sử dụng trong các ứng dụng khác nhau, người thiết kế chỉ việc tích hợp các lõi và thiết lập sự truyền thông giữa chúng Vì vậy, việc thiết kế SoC trở nên đơn giản hơn rất nhiều
Để thiết kế và xây dựng các hệ thống trên chip có thể sử dụng các công nghệ như công nghệ chế tạo ASIC hay công nghệ FPGA
1.2.2 Hạn chế của Hệ thống trên chip
Mặc dù hệ thống trên chip (SoC) có nhiều ưu điểm nhưng do hệ thống phức tạp, tích hợp nhiều lõi IP dẫn đến SoC cũng gặp phải không ít những hạn chế về độ trễ lan truyền, năng lượng tiêu thụ, đồng bộ…
Hạn chế về độ trễ: công nghệ thiết kế vi mạch ngày càng phát triển, kích thước ngày càng tăng, độ tích hợp ngày càng cao Khi thiết kế với công nghệ nhỏ hơn micro (DSM: deep submicron) thì vấn đề về độ trễ đặc biệt quan trọng, khi đó người thiết kế cần phải giải quyết các vấn đề liên quan đến độ trễ đáp ứng của dây dẫn cục bộ, dây dẫn toàn cục và của các cổng logic Với các công nghệ mới, độ trễ đáp ứng giữa đầu ra
và đầu vào của cổng logic rất nhỏ đặc biệt khi so với độ trễ dây dẫn Ngoài ra, độ trễ trên dây dẫn cục bộ trong các lõi IP (Intellectual Property) cũng có sự chênh lệch khá lớn đối với độ trễ trên các dây dẫn nối giữa các lõi với nhau Ngay cả độ trễ trên các dây dẫn toàn cục cũng có sự khác nhau, khác nhau giữa các dây nối các lõi IP ở gần với các dây nối các lõi IP ở xa
Hạn chế về sự đồng bộ toàn cục: việc đạt được được sự đồng bộ toàn cục càng trở nên khó khăn khi kích thước và tốc độ chip càng tăng Các quá trình xử lý trong chip được chia nhỏ thành các xử lý bên trong các lõi IP Khi đó mỗi lõi IP sẽ có một xung clock riêng nên có sự đồng bộ cục bộ riêng Chính vì thế rất khó để đạt tới sự đồng bộ toàn cục giữa các xung clock của các lõi IP với nhau Để khắc phục điều này
có một giải pháp mới gọi là hệ thống đồng bộ cục bộ-dị bộ toàn cục GALS (Globally Asynchronous-Locally Synchronuos) Mỗi IP trong hệ thống làm việc với một xung clock riêng, đồng bộ cục bộ trong lõi, còn khi ra khỏi lõi, các lõi IP làm việc với nhau thông qua các phương thức hỏi/đáp hay bắt tay và không liên quan gì tới clock nữa Nhờ thế việc xây dựng hệ thống lớn từ các lõi IP riêng có đặc trưng thời gian khác nhau trở nên dễ dàng hơn nhiều
Trang 22Hạn chế về hiệu suất thiết kế: Sự phát triển không ngừng của công nghệ tạo ra yêu cầu giảm thời gian thiết kế Thêm nữa, kích thước chip ngày càng tăng, việc thu gọn hình dạng và tăng số lớp kim loại khiến độ phức tạp của thiết kế tăng tới 50 lần trong một chu kỳ Do đó việc tái sử dụng các IP trong thiết kế là cần thiết
1.3 Phương pháp thiết kế vi mạch tích hợp VLSI
1.3.1 Giới thiệu về công nghệ và phương pháp thiết kế vi mạch tích hợp VLSI
Những năm 50 của thế kỷ XIX, vi mạch tích hợp IC (Intergrated Circuit) đã được hai kỹ sư người Mỹ là Jack Kilby và Robert Noyce đồng thời phát minh ra, mở đầu cho thời kỳ hoàng kim của vi mạch điện tử [13] Vi mạch tích hợp là các mạch điện bao gồm các linh kiện bán dẫn như transistor và các linh kiện điện tử thụ động như điện trở được tích hợp trên cùng một phiến silicon Kích thước của phiến silicon rất nhỏ, chỉ cỡ vài milimet cho tới 1 inch (cỡ 2,54 cm) theo mỗi chiều Tiêu chuẩn để đánh giá độ tích hợp của một vi mạch tích hợp là số lượng các transistor trên vi mạch
Đến thập niên 60 cùng thế kỷ, ngành công nghiệp bán dẫn bắt đầu phát triển với các vi mạch cỡ nhỏ (SSI: Small Scale Integration), gồm khoảng từ 1 đến vài chục cổng logic như cổng NAND, NOR, OR, XOR… Các thế hệ phát triển vi mạch tích hợp tiếp theo là vi mạch tích hợp cỡ vừa MSI (MSI: Medium Scale Integration) có khoảng từ 100 tới 3000 cổng logic, vi mạch tích hợp cỡ lớn (LSI: Large Scale Integration) tích hợp từ 30000 tới 100000 cổng trên một vi mạch Hiện nay thế hệ vi mạch tích hợp cỡ rất lớn (VLSI: Very Large Scale Integration) đã ra đời tích hợp từ
100000 tới hàng triệu các cổng logic trên một vi mạch
VLSI cho phép chúng ta xây dựng các bộ vi xử lý 64-bit cùng với bộ nhớ đệm
và các khối xử lý toán học Với công nghệ CMOS ngày càng phát triển, kích thước của các transistor ngày càng thu nhỏ cho phép tích hợp ngày càng nhiều transistor trên một
vi mạch (thường tính theo đơn vị 1 inch2
)
Có nhiều phương pháp thiết kế VLSI tùy theo cách tiếp cận Theo cách tiếp cận
về lịch sử phát triển, đầu tiên người ta quan niệm VLSI có hai phương pháp thiết kế là phương pháp thiết kế toàn phần (full-custom) và phương pháp thiết kế bán phần (semi-custom) Không lâu sau đó, với những ưu điểm về đầu tư về nhân lực và thời gian, phương pháp thiết kế bán phần đã phát triển một cách nhanh chóng hình thành nên phương pháp thiết kế theo mảng cổng logic (gate array) và phương pháp thiết kế dựa trên thư viện tế bào chuẩn (standard cell) Sự phát triển nhanh chóng của VHDL đã hình thành các nhánh nhỏ hơn nữa như phương pháp thiết kế theo mảng cổng logic lại được chia nhỏ thành hai loại hình thiết kế là: Mask programmable và Field-programmable (ROM, PROM, EPROM, EEPROM, PLA, PAL, CPLD, FPGA) Trong thực tế, tùy theo yêu cầu thiết kế mà người ta có thể lựa chọn một trong các phương pháp trên
Trang 23Quy trình thiết kế VLSI:
Quy trình thiết kế VLSI bao gồm nhiều công đoạn khác nhau Về cơ bản quy trình thiết kế VLSI gồm hai công đoạn thiết kế lớn: thiết kế logic (logical design) và thiết kế vật lý (physical design) Quy trình thiết kế VLSI được mô tả như trong Hình 6
Hình 6: Quy trình thiết kế VLSI [5]
* Công đoạn thiết kế logic được chia thành 4 bước:
- Bước1 Mô tả thiết kế (Design entry): Từ yêu cầu bài toán, ta sử dụng các ngôn ngữ mô tả phần cứng để thiết kế Sau đó mô hình thiết kế sẽ được mô phỏng và kiểm chứng nhờ các công cụ mô phỏng Kết thúc bước 1 các mạch được mô tả bằng ngôn ngữ phần cứng tương ứng
- Bước 2 Tổng hợp logic (Logic synthesis): Trong bước này ta sử dụng các công cụ hỗ trợ tổng hợp phần cứng để tạo ra danh sách các cổng logic (các netlist thiết kế) được sử dụng trong thiết kế và liên kết giữa chúng với nhau
- Bước 3 Phân chia hệ thống (System Partitioning): Ở bước này ta thực hiện công việc mô-đun hóa, phân chia hệ thống thành các khối chức năng nhỏ hơn
- Bước 4 Mô phỏng trước khi thực hiện layout (Prelayout simulation): Là bước cuối cùng của công đoạn thiết kế logic Bước này thực hiện mô phỏng, kiểm tra thiết
kế sau khi đã gắn với công nghệ chế tạo nhưng chưa thực hiện thiết kế vật lý (thực hiện layout) Trong thực tế, ta thực hiện mô phỏng ngay tại mỗi bước để dễ dàng sửa sai, có thể loại hết các lỗi trong bước đó Nếu chưa đạt yêu cầu thì người thiết kế phải
Trang 24thực hiện lại bước đó và chỉnh sửa, tối ưu thiết kế Điều này hữu ích hơn rất nhiều so với việc chỉ thực hiện mô phỏng, kiểm tra một lần ở cuối công đoạn thiết kế logic
* Công đoạn thiết kế vật lý: Tiếp sau công đoạn thiết kế logic là công đoạn thiết
kế ở mức thấp hơn, đó là mức vật lý Công đoạn thiết kế vật lý gồm 5 bước:
- Bước 5 Vẽ sơ đồ nền (Floorplaning): Bước đầu tiên trong công đoạn thiết kế vật lý ta thực hiện quy hoạch bề mặt vi mạch, tức là bố trí cụ thể vị trí các khối chức năng trên vi mạch sao cho giảm thiểu không gian thực thi phần cứng và nhiễu ảnh hưởng giữa các khối với nhau
- Bước 6 Đặt chỗ (Placement): Sau khi quy hoạch vị trí các khối chức năng của
vi mạch, bước này ta tiến hành công việc đặt chỗ các linh kiện, cụ thể là định vị từng cổng logic (từng trasistor) trên bề mặt vi mạch đã quy hoạch đảm bảo giảm nhiễu không gian cũng như nhiễu tín hiệu giữa các cổng logic
- Bước 7 Định tuyến (Routing): Trong bước này ta thực hiện việc định tuyến (nối dây) giữa các phần tử cơ bản lại với nhau, tức là xây dựng các đường kết nối để kết nối các lối vào ra của các cổng logic lại với nhau như đã mô tả trong thiết kế (netlist)
- Bước 8 Phân tích và ước lượng các thông số mạch điện (Circuit extraction): Các thông số cơ bản của thiết kế như trễ, nhiễu, công suất tiêu thụ, hiệu năng của thiết
kế được phân tích, đánh giá và ước lượng tại bước này
- Bước 9 Mô phỏng sau khi thực hiện layout (Postlayout simulation): Đây là bước cuối cùng của quy trình thiết kế VLSI Bước này cho phép ta thực hiện kiểm chứng tính đúng đắn của thiết kế và kiểm tra mức độ đáp ứng của hệ thống với yêu cầu đặt ra với đầy đủ các thông số vật lý Nếu thiết kế không đạt yêu cầu đề ra thì ta phải quay lại các bước để chỉnh sửa, tối ưu thiết kế Nếu thỏa mãn yêu cầu đặt ra thì ta có thể tiến hành chế tạo mặt nạ và bước sang quy trình sản xuất, chế tạo phần cứng
1.3.2 Công nghệ FPGA và quy trình thiết kế VLSI với công nghệ FPGA
FPGA (Field-programmable gate array-mảng cổng lập trình được) là một vi mạch bao gồm tập hợp các khối logic khả trình được sắp xếp theo hàng và được liên kết bằng mạng định tuyến khả trình (programmable routing network) Kiến trúc tổng quan về FPGA được mô tả như trong Hình 7
Trang 25Vi mạch FPGA được cấu thành từ ba bộ phận chính là: các khối logic cơ bản (logic blocks), hệ thống mạng liên kết lập trình được (programmable interconnects) và các khối vào/ra (I/O blocks)
- Các khối logic cơ bản (logic blocks) là phần tử chính của FPGA Khối logic
được cấu thành từ các bảng tra cứu LUT (Look Up Table) và một phần tử nhớ đồng bộ flip-flop LUT là khối logic có thể thực hiện bất kỳ hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop
Một khối logic được mô tả như Hình 8
Hình 8: Sơ đồ khối một đơn vị logic của FPGA
Trong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm SLICE, 1 Slice gồm 4 khối logic tạo thành, số lượng các Slices thay đổi từ vài ngàn đến vài chục ngàn tùy theo loại FPGA
- Hệ thống mạng liên kết lập trình được: Mạng liên kết trong FPGA được cấu
thành từ các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA
mà các đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 loại kết nối: ngắn, dài và rất dài Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programable switch), trong một khối
Logic block
I/O block
Programmable interconnects
Hình 7: Kiến trúc tổng quan FPGA
Trang 26chuyển mạch chứa một số lượng nút chuyển lập trình được, cho phép thực hiện các dạng liên kết phức tạp khác nhau
- Các khối vào/ra (I/O blocks): Được phân bổ xung quanh vi mạch tạo thành
các liên kết với bên ngoài Khối vào/ra nhiều hay ít là tuỳ thuộc vào từng loại FPGA Chúng có thể được kết nối với các thiết bị bên ngoài như LED, USB, RS232, RAM tuỳ theo mục đích sử dụng
- Các phần tử tích hợp sẵn: Ngoài các khối logic, tùy theo các dòng FPGA
khác nhau, còn có các phần tử tích hợp sẵn được sử dụng cho những mục đích cụ thể
Ví dụ để thiết kế những ứng dụng dạng SoC, dòng Virtex 4, 5 của Xilinx có chứa nhân
xử lý Power PC; để thiết kế những ứng dụng xử lý tín hiệu số, dòng Virtex của Xilinx tích hợp các DSP Slice là bộ nhân, cộng tốc độ cao, thực hiện hàm A*B+C
Ứng dụng của FPGA:
FPGA được ứng dụng trong các lĩnh vực xử lý tín hiệu số, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính
Do tính linh động cao trong quá trình thiết kế, FPGA cho phép giải quyết lớp những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính Ngoài ra nhờ mật độ cổng logic ngày càng lớn, FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực
Quy trình thiết kế VLSI với công nghệ FPGA:
Thiết kế VLSI với công nghệ FPGA thường tuân theo quy trình như mô tả trong Hình 9 Trong quá trình mô tả thiết kế (Design Entry), người thiết kế có thể sử dụng các sơ đồ mạch điện, các ngôn ngữ mô tả phần cứng hoặc kết hợp cả hai phương pháp này Người thiết kế chỉ lựa chọn sử dụng sơ đồ mạch điện khi muốn mô tả chi tiết các phần cứng Trái lại, sử dụng ngôn ngữ mô tả, người thiết kế có thể thiết kế theo các thuật toán để mô tả các mạch phức tạp với thời gian mô tả nhanh gọn hơn, việc sửa chữa do đó cũng dễ dàng hơn
Hình 9: Quy trình thiết kế VLSI với công nghệ FPGA [18]
Trang 27Quá trình tổng hợp logic (Synthesis) là quá trình dịch từ các ngôn ngữ mô tả sang dạng mạch điện hoàn chỉnh, còn gọi là dạng netlist Nếu trong thiết kế có sử dụng các bản thiết kế các linh kiện phụ trợ thì quá trình tổng hợp cũng tạo ra dạng netlist của các thành phần con này Quá trình tổng hợp cũng thực hiện kiểm tra lỗi cú pháp trong file mã nguồn mô tả và phân tích thứ bậc trong thiết kế nhằm đảm bảo tối ưu hóa kiến trúc của bản thiết kế
Quá trình thực thi (Implementation) thường bao gồm ba bước: dịch (Translate), gắn kết với thư viện phần cứng (Map), đặt chỗ và định tuyến (Place and Route) Bước dịch tổng hợp tất cả các netlist thành một thiết kế logic, gán các cổng vào ra của thiết
kế với linh kiện phần cứng thực tế (là các linh kiện trong vi mạch FPGA) Bước gắn kết với thư viện phần cứng thực hiện việc phân chia bản thiết kế thành từng phần nhỏ tương ứng với các khối cơ bản (block) của FPGA Bước đặt chỗ và định tuyến thực hiện việc định vị trí các block trên chip thực tế và tạo các đường kết nối giữa các khối này (còn được gọi là thực thi layout) Lúc này bản thiết kế hoàn chỉnh, tương ứng với FPGA được tạo ra
Quá trình lập trình thiết bị (Device Programming) thực hiện việc chuyển bản thiết kế sau bước Implemention sang định dạng có thể nạp vào chip FPGA Cuối cùng
là thực hiện việc nạp (download) thiết kế vào FPGA
Song song với quy trình thiết kế trên là quy trình kiểm chứng thiết kế Kiểm chứng bao gồm các công việc: mô phỏng hành xử (Behavioral Simulation), mô phỏng chức năng (Functional Simulation) và phân tích thời gian (Timing Analysis) Mô phỏng hành xử là bước đầu tiên và được thực hiện liên tục trong quá trình từ khi mô tả tới khi tổng hợp ra thiết kế Bước này đảm bảo các thiết kế được mô tả hoạt động đúng chức năng mong muốn Người ta mô phỏng bằng cách theo dõi các tín hiệu, các cổng
ra của mạch thiết kế, tương ứng với các tín hiệu đầu vào đặt trước, xem có phù hợp không Việc mô phỏng hành xử (Behavioral Simulation) được thực hiện rất nhanh, nhờ đó người thiết kế có thể dễ dàng quay lại chỉnh sửa file mã thiết kế nếu cần Do chưa qua bước tổng hợp logic nên mô phỏng hành xử chưa cho biết thông tin về thời gian và tài nguyên được sử dụng Mô phỏng chức năng (Functional Simulation) được thực hiện sau bước dịch, dùng để kiểm chứng chức năng logic của mạch Nếu mạch thực hiện chưa đúng chức năng mong muốn, người thiết kế có thể quay lại sửa bản mã
mô tả Bước phân tích thời gian (Timing Analysis) được thực hiện sau khi đã thực hiện việc đặt chỗ và định tuyến (Place and Route) các phần tử trong mạch Bước này cho biết các thông số về thời gian thực hiện mạch, thời gian trễ trên đường truyền và tốc độ hoạt động tối đa của mạch
Cũng giống như quy trình thiết kế VLSI tổng quát, bước đầu tiên của quy trình thiết kế FPGA là mô tả bản thiết kế bằng sơ đồ mạch hoặc bằng ngôn ngữ mô tả phần cứng (Design Entry) Điểm khác nhau cơ bản nhất giữa quy trình thiết kế FPGA và quy trình thiết kế VLSI cổ điển là ở những bước cuối cùng (back-end) Trong thiết kế
Trang 28FPGA thì các bước này khá đơn giản, không cần phải quyết định các giá trị điện trở và điện dung cho mạch (bước Circuit extraction trong thiết kế VLSI cổ điển) do bước này
đã được thực hiện trước trong quá trình sản xuất vi mạch FPGA
1.3.3 Giới thiệu về ngôn ngữ mô tả phần cứng VHDL và ứng dụng của VHDL trong thiết kế VLSI
Trước đây, các mạch tích hợp (IC) thường được thiết kế và xây dựng bằng các công cụ đồ hoạ với sự trợ giúp của máy tính thường được gọi là các công cụ CAD (Computer Aided Design) Với phương pháp thiết kế này, chúng ta thường sử dụng các thành phần linh kiện cơ bản như các cổng logic, điện trở, tụ, các vi mạch cơ bản và các ký hiệu khác từ các thư viện được xây dựng sẵn bởi các nhà cung cấp công cụ CAD Người thiết kế chỉ việc gọi chúng ra, đặt chúng vào các vị trí trong sơ đồ nguyên lý và nối dây liên kết giữa các linh kiện này theo yêu cầu của ứng dụng Về sau các cụm linh kiện hay được sử dụng lại được cất vào thư viện và người thiết kế chỉ việc nhặt chúng ra khi cần Phương pháp thiết kế này được gọi là bottom-up (từ dưới lên) Phương pháp này có ưu điểm là dễ hiểu nhưng lại tiêu tốn khá nhiều thời gian, đặc biệt là khi chúng ta muốn xây dựng các mạch lớn Bên cạnh đó, phương pháp này cũng gây nhiều khó khăn cho người thiết kế khi phải kiểm tra các mạch phức tạp Do
đó, phương pháp thiết kế truyền thống này đã nhanh chóng được cải tiến và dần thay thế bằng các quy trình và phương pháp thiết kế khác thuận lợi hơn Xu hướng thiết kế hiện nay là phương pháp thiết kế top-down (từ trên xuống) cùng với việc sử dụng các ngôn ngữ mô tả phần cứng (HDL: Hardware Description Language) và các công cụ thiết kế, tổng hợp bằng máy tính Nhờ vào việc cải tiến từng bước chu trình thiết kế top-down, một ngôn ngữ mô tả phải hỗ trợ tất cả các mức trừu tượng khác nhau: đặc điểm kỹ thuật hệ thống, mô tả thuật toán, các khối chức năng và netlist mức cổng logic Một lĩnh vực quan trọng trong chu trình thiết kế ngày nay là việc sử dụng các công cụ tổng hợp logic (synthesis tool) Các công cụ này cho phép tạo ra các netlist mức cổng logic một cách tự động từ các mô tả về cách hoạt động Điều này đòi hỏi một ngôn ngữ được chuẩn hoá cho phép mô phỏng hệ thống đã xây dựng ở các mức
mô tả khác nhau
VHDL (VHSIC Hardware Description Language; VHSIC (Very High Speed Integrated Circuit) ra đời nhằm đáp ứng những yêu cầu trên VHDL cho phép mô tả các hoạt động tuần tự và đồng thời của các vi mạch số Các mạch số được mô tả trong VHDL có thể có định thời (timing) hoặc có thể không và VHDL cũng cho phép mô tả các mạch này ở các mức mô tả khác nhau VHDL cũng cho phép xây dựng các thiết kế phân cấp bằng cách xây dựng các mô-đun nhỏ và nối chúng lại với nhau Ngày này, hầu hết các công cụ thiết kế đều hỗ trợ ngôn ngữ VHDL vì nó đã được chuẩn hoá bởi Hiệp hội các kỹ sư điện-điện tử (IEEE) [13] Nhờ đó, VHDL có thể được sử dụng như
là một môi trường chuyển đổi giữa các công cụ CAD khác nhau hoặc giữa người sử dụng công cụ CAD và nhà cung cấp chip
Trang 29Cấu trúc một chương trình viết bằng ngôn ngữ VHDL bao gồm 5 phần: Thư viện (Library), thực thể (Entity), kiến trúc (Architecture), cấu hình (Configuration) và gói (Package) Trong đó 3 phần không thể thiếu được trong một chương trình VHDL
đó là: Thư viện, thực thể và kiến trúc, phần cấu hình và gói thường được sử dụng khi thiết kế các mạch phức tạp
- Phần thư viện (Library) là nơi chứa các mô tả về các hàm và linh kiện cơ bản nhất được sử dụng trong thiết kế Khi thực hiện mô phỏng hay tổng hợp, các chương trình sẽ tham chiếu tới các mô tả này trong thư viện Do VHDL được chuẩn hóa bởi Hiệp hội các kỹ sư điện-điện tử (IEEE) nên thư viện thường được sử dụng là thư viện IEEE
- Thực thể (Entity) là danh sách mô tả các chân vào/ra (các Port) và các tham số chung (Generic) có thể thay đổi của mạch điện
- Kiến trúc (Architecture) mô tả chi tiết hoạt động hoặc cấu trúc bên trong của thực thể Trong phần này người thiết kế có thể khai báo các tín hiệu, các quá trình và các linh kiện sử dụng trong mạch Một architecture thể hiện một chức năng của thực thể gắn với nó VHDL cho phép xây dựng nhiều architecture cho một thực thể Có hai cách mô tả kiến trúc của một phần tử (hoặc hệ thống) đó là mô hình hành xử (Behaviour) hay mô tả theo mô hình cấu trúc (Structure) Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo mô hình hoạt động và mô tả theo mô hình cấu trúc
Mô tả kiến trúc theo mô hình hoạt động: Mô hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứng với các tín hiệu vào như thế nào và đưa ra kết quả gì ra đầu ra) dưới dạng các cấu trúc ngôn ngữ lập trình bậc cao Cấu trúc đó có thể
là PROCESS, WAIT, IF, CASE, FOR-LOOP… nhưng thành phần chủ yếu của việc
mô tả hoạt động là PROCESS
Mô tả kiến trúc theo mô hình cấu trúc: Mô hình cấu trúc của một phần tử (hoặc
hệ thống) có thể bao gồm nhiều cấp cấu trúc bắt đầu từ một cổng logic đơn giản đến xây dựng mô tả cho một hệ thống hoàn thiện Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con
đó
- Cấu hình (Configuration) chỉ rõ thực thể sử dụng kiến trúc nào trong số các kiến trúc được xây dựng
- Gói tương tự như thư viện, chứa các hàm và các mạch linh kiện căn bản được
sử dụng nhiều lần trong thiết kế Sự khác biệt ở đây là các mô tả trong thư viện thấp hơn nhiều so với trong gói do gói là các mô tả riêng của người sử dụng
Với cấu trúc như trên, VHDL có thể giúp người thiết kế mô tả mạch số ở nhiều mức trừu tượng khác nhau Các mức trừu tượng trong mô tả phần cứng VHDL được chỉ ra trong Hình 10
Trang 30Hình 10: Các mức trừu tượng trong mô tả phần cứng
Mức cao nhất là mức hệ thống Mức này mô tả mạch điện là tổ hợp các khối chức năng được kết nối lại với nhau Các chức năng có thể được quyết định thực hiện bằng phần cứng hoặc phần mềm Mức này cho phép hiểu được hoạt động của mạch nhưng không mô tả được kiến trúc chi tiết bên trong vi mạch Mức thứ hai thấp hơn là mức truyền dữ liệu giữa các thanh ghi (RTL: Register Transfer Level hay Dataflow), mức này cho phép các nhà thiết kế hình dung được cấu trúc của mạch và luồng dữ liệu
di chuyển trang mạch Mức trừu tượng hóa thấp nhất là mức cổng (gate level), khi thiết kế ở mức này nhà thiết kế phải quan tâm chi tiết đến các thuộc tính điện của các cổng lô-gic và của mạch
Với khả năng cho phép mô tả ở các mức cao, ngôn ngữ mô tả phần cứng VHDL giúp người lập trình dễ dàng hơn khi sử dụng phương pháp thiết kế từ trên xuống, không mất thời gian cho mức cổng và cho phép mô tả những vi mạch phức tạp hơn nhiều
Trang 31Chương 2 Lõi vi xử lý mềm MicroBlaze
Chương trước cung cấp các kiến thức cơ bản nhất về hệ vi xử lý, hệ thống SoC, công nghệ FPGA và phương pháp thiết kế VLSI Chương này trình bày cụ thể về vi xử
lý MicoBlaze, là vi xử lý được sử dụng để triển khai hệ vi xử lý về sau
2.1 Giới thiệu về MicroBlaze
MicroBlaze là lõi vi xử lý mềm 32 bit phát triển bởi hãng Xilinx [6] Đây là bộ
vi xử lý được tích hợp trong các kit phát triển FPGA của Xilinx như Spartan-II, Spartan-III, Virtex Chúng ta có thể thiết lập các thông số cho MicroBlaze và kết nối với các ngoại vi (UART, GPIO, Erthenet MAC…) thông qua phần mềm EDK Hiện nay, MicroBlaze đã có phiên bản 9.0 sử dụng phần mềm EDK 10.1
Lõi vi xử lý MicroBlaze được xây dựng theo kiến trúc Harvard, với tập lệnh thu gọn RISC (Reduced Instruction Set Computer) Nó được trang bị các bus riêng biệt để truy xuất dữ liệu và lệnh từ bộ nhớ on-chip và bộ nhớ ngoài tại cùng một thời điểm
Sau đây là những đặc điểm chính của vi xử lý MicroBlaze:
- Có 32 thanh ghi mục đích chung có độ rộng 32 bit (General Purpose Registers, còn gọi là các thanh ghi đa năng), 14 thanh ghi dùng cho các mục đích đặc biệt
- Lệnh của MicroBlaze có 32 bit với 3 toán hạng và 2 chế độ địa chỉ
- Bus địa chỉ 32 bit
- Sử dụng cấu trúc đường ống (Pipeline)
2.2 Kiến trúc cơ bản của MicroBlaze
2.2.1 Kiến trúc lõi MicroBlaze
Lõi xử lý MicroBlaze gồm:
- 32 thanh ghi mục đích chung kích thước 32 bit (Register File 32 x 32-bit)
- Các thanh ghi mục đích đặc biệt kích thước 32 bit (Special Purpose Registers)
- Bộ đệm lệnh (Instruction Buffer)
- Bộ giải mã lệnh (Instruction Decoder)
Trang 32- Khối quản lý bộ nhớ MMU (Memory Manage Unit)
- Bộ đếm chương trình (Program Counter)
- Giao tiếp Bus (Bus interface)
- Các khối xử lý: Đơn vị dấu phẩy động FPU (Float Point Unit), bộ chia (Divider), bộ nhân (Multiplier), các module dịch (Shift, Barrel shift) và khối logic và
số học ALU (Arithmetic Logic Unit) thực hiện các phép toán số học và logic Cấu trúc lõi xử lý MicroBlaze được mô tả như Hình 11
Hình 11: Cấu trúc lõi xử lý MicroBlaze [6]
Các giao tiếp bus gồm giao tiếp bus lệnh (Instruction-side bus interface) và giao tiếp bus dữ liệu (Data-side bus interface) Trong đó có bộ đệm lệnh I-Cache, bộ đệm
dữ liệu D-Cache
Để giao tiếp với các thành phần bên ngoài lõi, MicroBlaze sử dụng các loại bus: Bus xử lý nội PLB (Processor Local Bus), bus giao tiếp dữ liệu theo chuẩn bus xử lý nội DPLB (Data interface, Processor Local Bus), bus giao tiếp lệnh theo chuẩn bus xử
lý nội IPLB (Instruction interface, Processor Local Bus)…
Vi xử lý MicroBlaze là một vi xử lý tương đối mạnh, được xây dựng nhằm hướng tới các ứng dụng dạng SoC có yêu cầu khả năng xử lý cao Hình 12 mô tả một
hệ thống chuyển mạch tăng tốc điển hình có sử dụng vi xử lý MicroBlaze
Trang 33Hình 12: Hệ thống chuyển mạch tăng tốc sử dụng MicroBlaze điển hình [9]
2.2.2 Kiến trúc bộ nhớ
Bộ xử lý MicroBlaze đƣợc xây dựng theo kiến trúc Harvard Trong kiến trúc Harvard, sự truy xuất lệnh và truy xuất dữ liệu đƣợc tách riêng biệt với nhau trong vùng không gian địa chỉ Mỗi không gian địa chỉ là 32 bit (MicroBlaze cung cấp tới
232 byte=4GByte địa chỉ truy xuất lệnh và dữ liệu) Vùng nhớ lệnh và vùng nhớ địa chỉ đƣợc ánh xạ tới cùng một ô nhớ vật lý
Cả giao tiếp lệnh và giao tiếp dữ liệu của MicroBlaze đều rộng 32 bit, sử dụng kiểu định dạng dữ liệu “big endian, bit reversed” MicroBlaze cho phép cung cấp các kiểu truy xuất theo từ, nửa từ hay theo byte đối với vùng nhớ dữ liệu
MicroBlaze không phân biệt truy cập dữ liệu tới thiết bị ngoại vi và tới bộ nhớ MicroBlaze dùng 3 loại bus để truy xuất bộ nhớ:
- Bus nhớ nội LMB (Local Memory Bus): giao tiếp với các khối RAM
- Bus ngoại vi on-chip OPB (On-Chip Peripheral Bus) hay bus xử lý nội PLB (Processor Local Bus): giao tiếp với các bộ nhớ trên chip và bộ nhớ của thiết
Trang 34Các ngoại vi
Vùng nhớ OPB
Vùng nhớ LMB Vùng nhớ dành riêng Phần cứng ngoại lệ Break
Địa chỉ ngắt Địa chỉ ngoại lệ Địa chỉ Reset
0xFFFF_FFFF 0xFF00_FFFF 0xFEFE_FFFF
0x000_004F 0x000_0028 0x000_0024
0x000_0020
0x000_001C 0x000_0018 0x000_0014
0x000_0010
0x000_000C 0x000_0008 0x000_0004
MicroBlaze có hai kiểu cấu trúc đường ống Kiểu đường ống 3 bước (stage) áp dụng cho những lệnh đơn giản và kiểu đường ống 5 bước (stage) áp dụng cho những lệnh phức tạp hơn (thường là các lệnh liên quan đến truy xuất bộ nhớ)
a) Cấu trúc đường ống 3 bước
Đối với những lệnh đơn giản, MicroBlaze chia lệnh thành ba bước nhỏ để thực hiện Gồm: Nạp lệnh (fetch instruction), giải mã lệnh (decode instruction), thi hành lệnh (execute instruction) Cấu trúc đường ống 3 bước của MicroBlaze được mô tả như Bảng 1
Bảng 1: Cấu trúc đường ống 3 bước
Chu kỳ 1 Chu kỳ 2 Chu kỳ 3 Chu kỳ 4 Chu kỳ 5 Chu kỳ 6 Chu kỳ 7 Lệnh 1 Nạp lệnh Giải mã Thi hành
Lệnh 2 Nạp lệnh Giải mã Thi hành Thi hành Thi hành
Trang 35b) Cấu trúc đường ống 5 bước
Với những lệnh phức tạp hơn liên quan đến truy xuất bộ nhớ, MicroBlaze chia lệnh làm 5 bước thực hiện: nạp lệnh, giải mã lệnh, thực hiện lệnh, truy xuất bộ nhớ (Access Memory-MEM), Writeback (WB) Cấu trúc đường ống 5 bước của MicroBlaze được mô tả như Bảng 2
Bảng 2: Cấu trúc đường ống 5 bước
2.2.4 Các thanh ghi trong MicroBlaze
MicroBlaze là bộ xử lý có cấu trúc tập lệnh trực giao Tùy thuộc vào việc lựa chọn cấu hình cho bộ xử lý, bộ xử lý này có 32 thanh ghi mục đích chung (General Purpose Register) 32 bit và có khả năng cấu hình lên tới 18 thanh ghi mục đích đặc biệt (Special Purpose Register) 32 bit
a) Các thanh ghi mục đích chung
Các thanh ghi mục đích chung của MicroBalze được đánh số từ R0 đến R31 và được thiết lập với giá trị ban đầu là 0x00000000 Mô tả chức năng của các bit trong thanh ghi này như sau:
Bit Tên thanh ghi Mô tả
0:31 R0 Luôn có giá trị „0‟ Mọi thứ ghi vào thanh ghi này đều
bị hủy bỏ
0:31 R1–R13 Các thanh ghi mục đích chung 32 bit
0:31 R14 Thanh ghi này dùng để lưu giữ địa chỉ trả về cho các
ngắt (interrupts) 0:31 R15 Thanh ghi này được sử dụng để lưu giữ địa chỉ trả về
của các véc-tơ người dùng (user vectors)
Trang 360:31 R16 Thanh ghi này dùng để lưu giữ địa chỉ trả về của các
lệnh breaks
0:31 R17 Nếu bộ xử lý được cấu hình để cung cấp các ngoại lệ
phần cứng thì thanh ghi này được sử dụng để tải cùng với địa chỉ lệnh gây ra ngoại lệ phần cứng đó, nếu không nó là một thanh ghi mục đích chung
0:31 R18–R31 Các thanh ghi mục đích chung 32 bit
b) Các thanh ghi mục đích đặc biệt
- Thanh ghi bộ đếm chương trình PC (Program counter): Đây là thanh ghi 32 bit lưu giữ địa chỉ của lệnh đang được thực hiện Có thể đọc thanh ghi này bằng lệnh chuyển dữ liệu từ thanh ghi mục đích đặc biệt (lệnh MFS) nhưng không thể ghi được bằng lệnh chuyển dữ liệu tới thanh ghi mục đích đặc biệt (lệnh MTS) Khi sử dụng lệnh MFS, thanh ghi này được chỉ định bằng cách thiết lập Sa=0x0000
- Thanh ghi trạng thái máy MSR (Machine Status Register): bao gồm các bit điều khiển và các bit trạng thái của bộ xử lý MicroBlaze Thanh ghi này có thể đọc bằng lệnh MFS Khi thực hiện lệnh MFS, bit 29 sẽ sao chép lại giá trị ở bit „0‟ Để ghi giá trị vào thanh ghi MSR, ta có thể sử dụng lệnh MTS hoặc lệnh đọc thanh ghi MSR
và thiết lập các bit trong thanh ghi MSR (lệnh MSRESET), lệnh đọc thanh ghi MSR
và xóa các bit trong thanh ghi MSR (lệnh MSRCLR) Khi viết vào thanh ghi MSR, bit nhớ (Carry) được viết ngay sau đó, những bit còn lại được viết sau một xung đồng hồ Tất cả các giá trị ghi vào bit „0‟ đều bị hủy bỏ Khi sử dụng lệnh MTS hoặc lệnh MFS, MFS thanh ghi này được chỉ định bằng cách thiết lập Sx=0x0001
- Thanh ghi địa chỉ ngoại lệ EAR (Exception Address Register) lưu địa chỉ nạp/lưu trữ đầy đủ do những ngoại lệ sau gây ra:
+ Một truy cập ngoại lệ không thẳng hàng, có nghĩa là địa chỉ truy cập không được gióng thẳng hàng
+ Ngoại lệ DPLB hoặc DOPB, chỉ rõ địa chỉ truy cập dữ liệu PLB hoặc OPB thất bại
+ Ngoại lệ lưu dữ liệu, chỉ rõ địa chỉ hiệu dụng được truy cập
+ Ngoại lệ lưu lệnh, chỉ rõ địa chỉ hiệu dụng đọc
+ Ngoại lệ nhỡ dữ liệu TLB, chỉ rõ địa chỉ hiệu dụng được truy cập
+ Ngoại lệ nhỡ lệnh TLB, chỉ rõ địa chỉ hiệu dụng đọc
Nội dung của thanh ghi này không xác định các ngoại lệ khác Khi đọc bằng lệnh MFS, thanh ghi được chỉ định bằng cách thiết lập Sa=0x003
Trang 37R
- Thanh ghi trạng thái ngoại lệ ESR chứa các bit trạng thái trong quá trình xử
lý Khi đọc lệnh MFS, thanh ghi ESR được chỉ định bằng cách thiết lập Sa=0x005
- Thanh ghi mục tiêu nhánh BTR (Branch Target Register) chỉ tồn tại nếu MicroBlaze được cấu hình để sử dụng ngoại lệ Thanh ghi này lưu trữ địa chỉ lệnh kế tiếp sau khi thực hiện lệnh rẽ nhánh, thực hiện khi MSR[EIP]=0 Nếu một ngoại lệ do một lệnh trong khe thời gian trễ gây ra (ESR[DS]=1), người điều khiển ngoại lệ nên quay về thực hiện địa chỉ được lưu trong BTR thay vì quay trở lại địa chỉ được lưu trữ trong R17 Khi đọc bằng lệnh MFS, thanh ghi BTR được chỉ định bằng cách thiết lập Sa=0x000B
- Thanh ghi trạng thái dấu phẩy động FSR (Floating Point Status Register) chứa các bit trạng thái của đơn vị dấu phẩy động Nó có thể được đọc bằng lệnh MFS và được viết bằng lệnh MTS Khi đọc hoặc viết, thanh ghi này được chỉ định bằng cách thiết lập Sa=0x007
- Thanh ghi dữ liệu ngoại lệ EDR (Exception Data Register) lưu dữ liệu đọc trên liên kết FSL gây ra bởi ngoại lệ FSL Nội dung của thanh ghi này không xác định với tất cả các ngoại lệ khác Khi đọc bằng lệnh MFS, EDR được chỉ định bằng cách thiết lập Sa=0x000D
- Thanh ghi nhận dạng tiến trình PID (Process Identifier Register) được sử dụng
để nhận dạng duy nhất một phần mềm dịch địa chỉ MMU (dịch trang địa chỉ hữu dụng sang trang địa chỉ ảo) Nó được điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze Thanh ghi này chỉ được thực hiện khi C_MMU lớn hơn 1 Khi truy nhập bằng lệnh MFS và MTS, PID được chỉ định bằng cách thiết lập Sa=0x1000 Thanh ghi này có thể truy cập theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS
- Thanh ghi bảo vệ vùng ZPR (Zone Protection Register) được sử dụng để bảo
vệ trang bộ nhớ MMU, được định nghĩa trong các lối vào TLB Nó được điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze Thanh ghi này chỉ được thực thi nếu C_MMU lớn hơn „1‟ và nếu số vùng bảo vệ bộ nhớ theo lý thuyết lớn hơn „0‟ (C_MMU_ZONES > 0) Khi truy nhập bằng lệnh MFS và MTS, ZPR được chỉ định bằng cách thiết lập Sa=0x1001 Thanh ghi này có thể truy cập theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS
- Thanh ghi chuyển dịch khoá một chiều đệm thấp TLBLO (Transaction Aside Buffer Low Register) được sử dụng để truy nhập các lối vào bộ đệm khoá một chiều chuyển dịch hợp lệ MMU (UTLB) Nó được điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze Thanh ghi này chỉ được thực thi nếu C_MMU lớn hơn 1 Khi truy nhập bằng lệnh MFS và MTS, TLBLO được chỉ định bằng cách thiết lập Sa= 0x1003 Khi đọc hoặc viết TLBLO, lối vào UTLB được chỉ dẫn do thanh ghi TLBX
Trang 38Lock-được truy nhập Thanh ghi này có thể Lock-được đọc theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS
- Thanh ghi chuyển dịch khoá một chiều đệm cao TLBHI (Translation Aside Buffer High Register) được sử dụng để truy nhập các lối vào bộ đệm khoá một chiều dịch chuyển hợp lệ MMU Nó được điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze Thanh ghi này chỉ được thực thi nếu C_MMU lớn hơn „1‟ khi truy nhập bằng lệnh MFS và MTS, TLBHI được chỉ định bằng cách thiết lập Sa= 0x1004 Khi đọc hoặc viết TLBHI, lối vào UTLB được chỉ dẫn do thanh ghi TLBX được truy nhập Thanh ghi này có thể được đọc theo các thanh ghi đặc biệt quản lý bộ nhớ bởi tham số C_MMU_TLB_ACCESS
- Thanh ghi chỉ dẫn đệm khoá một chiều dịch chuyển TLBX (Translation Look-Aside Buffer Index Register): Thanh ghi này được sử dụng như một chỉ dẫn đối với
Look-bộ đệm khoá một chiều dịch chuyển hợp lệ UTLB khi truy cập thanh ghi TLBLO và TLBHI Nó được điều khiển bởi sự lựa chọn cấu hình C_MMU trên MicroBlaze Thanh ghi này chỉ được thực hiện nếu C_MMU lớn hơn 1 Khi truy cập với lệnh MFS
và MTS, TLBX được chỉ định bằng cách thiết lập Sa=0x1002
- Thanh ghi chỉ dẫn tìm kiếm bộ đệm khoá một chiều chuyển dịch TLBSX (Translation Look-Aside Buffer Search Index Register): được sử dụng để tìm kiếm số trang ảo trong bộ đệm khoá một chiều dịch chuyển hợp lệ Thanh ghi này chỉ được thực thi nếu C_MMU lớn hơn „1‟ Khi được ghi bằng lệnh MTS, thanh ghi TLBSX được chỉ định bằng cách thiết lập Sa=0x1005
- Thanh ghi phiên bản vi xử lý PVR (Processor Version Register): Thanh ghi PVR được điều khiển bởi sự lựa chọn cấu hình C_PVR trên MicroBlaze:
+ Khi C_PVR=0, vi xử lý không thực thi bất cứ thanh ghi phiên bản xử lý nào
và MSR[PVR]=0 (vi xử lý không hoạt động)
+ Khi C_PVR=1, PVR0 hoạt động, và nếu nó được thiết lập là 2 thì tất cả 12 thanh ghi PVR (PVR0-PVR11) đều hoạt động
Khi đọc bằng lệnh MFS, PVR được chỉ định bằng cách thiết lập Sa=0x200x
2.2.5 Kiểu dữ liệu trong MicroBlaze
MicroBlaze sử dụng kiểu định dạng dữ liệu “ Big Endian Bit Reversed” để biểu diễn dữ liệu Kiểu định dạng này có đặc điểm là: byte thấp được viết trước, byte cao được viết sau; bit thấp được viết trước, bit cao được viết sau Hay nói cách khác byte cao nhất (MSByte) được ghi vào địa chỉ thấp, ngược lại byte thấp nhất (LSByte) được ghi vào địa chỉ cao trong bộ nhớ
Trang 39Phần cứng MicroBlaze hỗ trợ các kiểu dữ liệu là Word (4 byte), HalfWord (2
byte) và 1 byte Cách tổ chức bit và byte trong mỗi kiểu dữ liệu đƣợc mô tả nhƣ Bảng
Bit trọng số LSBit MSBit
Bảng 4: Kiểu dữ liệu Half Word
Byte trọng số LSByte MSByte
Bit trọng số LSBit MSBit
Bảng 5: Kiểu dữ liệu Byte.
Bit trọng số LSBit MSBit
Tất cả các lệnh truy xuất đều phải đƣợc gióng thẳng hàng theo kiểu dữ liệu
Word khi thực hiện
2.2.6 Hoạt động ngắt trong MicroBlaze
MicroBlaze hỗ trợ một nguồn ngắt ngoài 32 bit (đƣợc kết nối với cổng vào ngắt
Interrupt) vì vậy nếu cần dùng nhiều ngắt ngoài, phải sử dụng một bộ điều khiển ngắt
để quản lý các yêu cầu ngắt tới MicroBlaze Bộ xử lý chỉ đáp ứng với các ngắt nếu bit
cho phép ngắt IE trong thanh ghi trạng thái máy MSR đƣợc thiết lập giá trị bằng „1‟
Trang 40Trong một ngắt, giai đoạn thực hiện lệnh hoàn thành trong khi giai đoạn giải mã lệnh đƣợc thay thế bằng một nhánh tới véc-tơ ngắt (địa chỉ 0x10) Địa chỉ trả về của ngắt đƣợc tự động nạp vào thanh ghi mục đích chung R14 Các ngắt đƣợc che bởi bộ vi xử
lý nếu bit tạm dừng trong tiến trình (BIP) hoặc bit đang thực hiện tiến trình (EIP) trong thanh khi MSR đƣợc thiết lập bằng „1‟
2.3 Các giao tiếp tín hiệu của MicroBlaze
2.3.1 Giới thiệu chung
Lõi MicroBlaze đƣợc tổ chức cấu trúc phần cứng với các khối giao tiếp bus riêng biệt cho quá trình truy nhập lệnh và truy nhập dữ liệu MicroBlaze cung cấp 3 kiểu giao tiếp bộ nhớ: Bus nhớ nội LMB (Local Memory Bus), bus xử lý nội PLB (Processor Local Bus), bus ngoại vi on-chip OPB (On-chip Peripheral Bus) và liên kết
bộ nhớ đệm Xilink XCL (Xilink Cache Link), liên kết đơn tốc độ cao FSL (Fast Simplex Link)
Giao tiếp LMB cung cấp truy nhập chu kỳ xung nhịp đơn tới khối RAM cổng đôi trên chip Giao tiếp PLB và OPB cung cấp kết nối tới cả bộ nhớ và ngoại vi trên chip và ngoài chip Giao tiếp XCL đƣợc dự định để sử dụng cho các bộ điều khiển bộ nhớ trong đặc biệt Đối với giao tiếp FSL, MicroBlaze cung cung cấp lên tới 16 cổng FSL, mỗi cổng có một giao tiếp FSL chủ và một giao tiếp FSL thợ
* Đặc điểm:
MicroBlaze đƣợc cấu hình với các giao tiếp sau:
- Phiên bản 32-bit của giao tiếp PLB V4.6
- Phiên bản 32 bit của giao tiếp bus V2.0 OPB
- LMB hỗ trợ giao thức đồng bộ cho hiệu ứng truyền thông khối RAM
- FSL hỗ trợ kỹ thuật truyền thông chuỗi tốc độ cao bất đối xứng
- XCL cung cấp giao tiếp thợ xử lý chuỗi tốc độ cao, đối xứng giữa các bộ nhớ đệm và các khối điều khiển bộ nhớ trong
- Gỡ lỗi giao tiếp cho việc sử dụng với khối gỡ lỗi xử lý MDM
- Các giao tiếp đƣợc phát hiện khi thực hiện phân tích quá trình
Ví dụ về một hệ thống bus điển hình của MicroBlaze đƣợc mô tả nhƣ Hình 14