ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜ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
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜ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
i
LỜ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
ii
LỜ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
iii
MỤ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
2.1.
Lõi vi xử lý mềm MicroBlaze............................................................... 20
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
iv
2.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
v
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Viết tắt
ADC
ALU
ASIC
CAD
CPU
DAC
DCE
DPLB
DMA
DTE
EAR
FIFO
FPGA
FPU
FSM
GALS
HDL
IC
IEEE
IP
IPLB
LCD
LMB
LSI
LUT
µP
MMU
MSI
MSR
MOSI
MISO
NoC
PLB
RAM
Viết đầy đủ
Analog-to-Digital Converter
Arithmetic Logic Unit
Application Specific Integrated Circuit
Computer Aided Design
Central Processing Unit
Digital-to-Analog Converter
Data Circuit-terminating Equipment
Data interface, Processor Local Bus
Direct Memory Access
Data Terminal Equipment
Exception Address Register
First In First Out
Field Programmable Gate Array
Float Point Unit
Finite State Machine
Globally Asynchronous Locally Synchronuos
Hardware Description Language
Integrated Circuit
Institute of Electrical and Electronic Engineers
Intellectual Property
Instruction interface, Processor Local Bus
Liquid Crystal Display
Local Memory Bus
Large Scale Integration
Look Up Table
Micro Processor
Memory Manage Unit
Medium Scale Integration
Machine Status Register
Master Out Slave In
Master In Slave Out
Network on Chip
Processor Local Bus
Random-Access Memory
Viết tắt
RF
ROM
RTL
SDK
SoC
SSI
SPI
VHDL
VHSIC
VLSI
XCL
XPS
vi
Viết đầy đủ
Radio Frequency
Read Only Memory
Register Transfer Level
Software Development Kit
System on Chip
Small Scale Integration
Serial Peripheral Interface
Very-High-Speed-Integrated-Circuit Hardware Description
Very High Speed Integrated Circuit
Very Large Scale Integration
Xilinx Cache Link
Xilinx Platform Studio
vii
DANH 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
viii
DANH 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
ix
Hì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 SS trong 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
1
LỜ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.
2
Chươ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.
3
Chươ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.
ADDRESS BUS
Input
Port
P
Memory
Output
Port
DATA BUS
CONTROL BUS
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
4
trì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 2 8 byte = 256 byte nhớ.
5
Bus 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)…
Ví dụ một hệ vi xử lý thực tế đƣợc chỉ ra trong Hình 2.
Hình 2: Hệ vi xử lý lõi MicroBlaze [4].
Trong đó:
- MicroBlaze là lõi vi xử lý mềm, 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.
6
- 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ệ
vi xử lý.
- Khối Ethernet MAC thực hiện điều khiển truyền số liệu cho các host trên
mạng máy tính theo chuẩn Ethernet.
- Bộ phát nhận không đồng bộ vạn năng UART (Universal Asynchronous
Receiver/Transmitter) để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị
ngoại vi theo cách nối tiếp.
- 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 I2C/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.
7
Hì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ỉ.
8
Đƣờ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.
Lối vào
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
Lối ra
Xung đồng hồ
Trạng thái hiện hành
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
9
đọ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].
- Xem thêm -