Từ ý tưởng muốn xây dựng một hệ thống Camera có khả năng truyền hình ảnh tại nhiều nơi quan sát tới người dùng, cho phép người dùng có thể điều khiển các thiết bị điện từ xa và có thể th
Trang 1LỜI NÓI ĐẦU
Ngày nay, các camera giám sát có kèm theo chức năng điều khiển có mặt ở khắp mọi nơi Chúng được sử dụng trong gia đình, bảo tàng, các điểm nóng giao thông hay các
vị trí mà con người ít khi đặt chân tới Ngoài các chức năng giám sát thông thường, các camera loại này còn có khả năng giúp người dùng điều khiển các thiết bị điện tại nơi theo dõi Tuy nhiên, các hệ thế này hoặc được nhập khẩu toàn bộ từ nước ngoài,
có chi phí cao và khả năng cấu hình lại thấp Ngoài ra, tốc độ truyền hình ảnh cũng là một trong những nhược điểm của các hệ thống này
Kỹ thuật nén dữ liệu trước khi truyền đi là vấn đề cốt lõi của các sản phẩm IP camera Thông thường, có hai cách nén dữ liệu: một là nén bằng phần mềm, hai là nén bằng IC chuyên dụng Với giải pháp thứ nhất, giá thành của sản phẩm có thể được giảm bớt nhưng tốc độ truyền hình ảnh sẽ rất thấp hoặc chất lượng hình ảnh không được đảm bảo Với giải pháp thứ hai, ngoài việc có giá thành cao thì việc cấu hình lại sẽ rất khó khăn
Từ ý tưởng muốn xây dựng một hệ thống Camera có khả năng truyền hình ảnh tại nhiều nơi quan sát tới người dùng, cho phép người dùng có thể điều khiển các thiết bị điện từ xa và có thể thay đổi chức năng hoặc nâng cấp hệ thống, kết hợp với các kiến thức thu được trong suốt thời gian học Đại học, chúng em nhận thấy rằng công nghệ FPGA có thể đáp ứng được các yêu cầu trên Cộng với việc một hệ thống tương tự đã được thực hiện và có các kết quả khả quan trên phòng Nghiên cứu Hệ thống nhúng
và Tính toán khả cấu hình (ESRC Lab) của Viện Điện Tử Viễn Thông, chúng em
quyết định chọn đề tài “Thiết kế hệ thống IP camera hỗ trợ chuẩn MJPEG trên
nền FPGA ứng dụng trong giám sát và điều khiển từ xa” làm Đồ án tốt nghiệp
Đại học của mình
Sau ba tháng phân tích và thiết kế, nhóm đã thu được các kết quả đang chú ý: lõi nén ảnh MJPEG đã được thực hiện thành công, phần mềm cho người dùng cũng đã được xây dựng hoàn chỉnh, việc giao tiếp với các thiết bị bên ngoài qua một mạch mở rộng cũng đang đi vào giai đoạn cuối Để có được các kết quả này, nhóm tác giả xin được
Trang 2gửi lời cảm ơn chân thành tới Tiến sỹ Phạm Ngọc Nam, người đã hướng dẫn trực tiếp
và cung cấp trang thiết bị cho nhóm Nhóm tác giả cũng xin cảm ơn các tổ chức, các
cá nhân:
Phòng Nghiên cứu Hệ thống nhúng và Tính toán khả cấu hình
Tập thể lớp KSTN – ĐTVT – K52, Đại học Bách Khoa Hà Nội
Thạc sỹ Nguyễn Minh Tiến
Kỹ sư Phạm Văn Hà
Kỹ sư Nguyễn Chu Tiến Mạnh
Kỹ sư Nguyễn Minh Dũng
Trang 3TÓM TẮT ĐỒ ÁN
Mục tiêu chính của hệ thống là thiết kế được một IP Camera giúp người dùng theo dõi và điều khiển các thiết bị điện tại nơi quan sát thông qua mạng Internet dựa trên nền tảng FPGA của Xilinx Hình ảnh sau khi thu được từ một Camera truyền hình tương tự chuẩn PAL sẽ đi qua một IC giải mã tương tự - số, trước khi được nén lại theo chuẩn MJPEG Dữ liệu nén này được lưu tạm thời trong DDR SDRAM trước khi được gửi đến người dùng mỗi khi có yêu cầu Người dùng mỗi khi muốn xem thông tin về nơi cần quan sát, họ cần được admin phân quyền và có thể sử dụng các trình duyệt web thông thường như Firefox, Chrome hoặc một phần mềm chuyên biệt Tại nơi đặt camera, một mạch ngoài có các cảm biến về nhiệt độ, độ ẩm, khói,… kết hợp với chức năng điều khiển các thiết bị điện được nối với mạch chính IP camera qua chuẩn giao tiếp RS485 Các thiết bị điện này có thể được điều khiển tự động hoặc thực hiện các chức năng mà người dùng yêu cầu
Trang 4ABSTRACT
The main purpose of this project is to design and implement a Xilinx FPGA platform based IP camera which has ability to capture images from the supervising place by an analog camera and control some electrical devices in the field Images captured from
a camera go through an ADC integrated circuit before being compressed by hardware (based on JPEG baseline standard) and transmitted to DDR SDRAM Users, who have been decentralized by admin, can monitor by accessing to IP address of system through web-browsers such as Firefox, Chrome or a specialized software Additionally, a external board which has ability to mesure environment parameters
by sensors and control devices such as fan, air conditioning, fire alarm,… is connected to the IP Camera board through RS485 protocol
Trang 5MỤC LỤC
LỜI N I Đ U i
T M TẮT ĐỒ N iii
ABSTRACT iv
M C L C v
DANH M C C C H NH V ix
DANH S CH C C ẢNG IỂU xi
DANH SÁCH CÁC TỪ VIẾT TẮT xiii
PH N MỞ Đ U 1
Chương 1 GIỚI THIỆU CHUNG 3
1.1 Giới thiệu 3
1.2 Tính khả thi của đề tài 4
1.2.1 Tính khả thi về mặt kỹ thuật 4
1.2.2 Khả thi về mặt kinh tế 4
1.2.3 Khả thi về mặt vận hành 5
1.2.4 Khả thi về mặt thời gian 5
1.3 Phân tích yêu cầu 5
1.3.1 Phân tích yêu cầu chức năng của hệ thống 5
1.3.2 Phân tích yêu cầu phi chức năng của hệ thống 8
1.4 Giới thiệu về công nghệ sử dụng 9
1.4.1 Công nghệ FPGA [6] 9
1.5 Các phần mềm sử dụng trong đề tài 9
1.6 Kết luận chương 10 Chương 2 HỆ THỐNG NHÚNG VỚI MICROBLAZE VÀ HỆ ĐIỀU HÀNH XILKERNEL 11
Trang 62.1 Vi xử lý Microblaze [9] 11
2.1.1 Kiến trúc 11
2.1.2 Giao diện tín hiệu 20
2.1.3 Giao diện ứng dụng 24
2.1.4 Kiến trúc tập lệnh 27
2.2 Kiến trúc hệ thống nhúng với Microblaze 29
2.3 Hệ điều hành Xilkernel [10] 30
2.3.1 Tổng quan 30
2.3.2 Tổ chức của hệ điều hành Xilkernel 31
2.3.3 Xây dựng ứng dụng cho Xilkernel 31
2.4 Kết luận chương 32
Chương 3 THIẾT KỂ HỆ THỐNG 33
3.1 Sơ đồ khối nền tảng cứng cho hệ thống 33
3.2 Cấu hình nền tảng phần cứng 35
3.3 Khối nén ảnh MJPEG 36
3.4 Thiết kế phần mềm cho hệ thống 38
3.4.1 Cấu hình thư viện phần mềm cho hệ thống 38
3.4.2 Thiết kế phần mềm cho hệ thống 43
3.5 Kết luận chương 48
Chương 4 THIẾT KẾ LÕI M-JPEG 49
4.1 Khối Lẫy mẫu dữ liệu 50
4.1.1 Phân tích chức năng 50
4.1.2 Thiết kế chi tiết 54
4.1.3 Kết quả tổng hợp khối 57
4.2 Khối Biến đổi Cosin rời rạc (DCT) 58
Trang 74.2.1 Phân tích chức năng 58
4.2.2 Thiết kế chi tiết 59
4.2.3 Kết quả tổng hợp khối 60
4.3 Khối Lượng tử hóa 61
4.3.1 Phân tích chức năng 61
4.3.2 Thiết kế chi tiết 62
4.3.3 Kết quả tổng hợp khối 63
4.4 Khối Quét zigzag 63
4.4.1 Phân tích chức năng 63
4.4.2 Thiết kế chi tiết 64
4.4.3 Kết quả tổng hợp khối 65
4.5 Khối RLE và Delta DC 65
4.5.1 Phân tích chức năng 65
4.5.2 Thiết kế chi tiết 67
4.5.3 Kết quả tổng hợp khối 68
4.6 Khối Mã hóa Huffman 69
4.6.1 Phân tích chức năng 69
4.6.2 Thiết kế 71
4.6.3 Kết quả tổng hợp khối 73
4.7 Khối AddHeader 74
4.7.1 Phân tích chức năng 74
4.7.2 Thiết kế 75
4.7.3 Kết quả tổng hợp khối 75
4.8 Khối FIFO2750 75
4.8.1 Phân tích chức năng 75
Trang 84.8.2 Thiết kế 76
4.8.3 Kết quả tổng hợp khối 76
4.9 Kết quả tổng hợp khối nén ảnh JPEG 77
4.10 Kết luận chương 77
Chương 5 THIẾT KẾ PH N MỀM DÀNH CHO NGƯỜI SỬ D NG 78
5.1 Thiết kế cơ sở dữ liệu 78
5.1.1 Chuẩn hóa 78
5.1.2 Chuẩn hóa các bảng dữ liệu 79
5.2 Phần mềm người sử dụng 89
5.2.1 Chức năng giám sát hệ thống 89
5.2.2 Chức năng quản trị hệ thống 95
5.3 Kết luận chương 98
KẾT LUẬN 99
TÀI LIỆU THAM KHẢO 100
BẢNG ĐỐI CHIẾU THUẬT NGỮ ANH VIỆT 102
PH L C 1
Phụ lục 1: Code VHDL cho khối Quét zigzag 1
Phụ lục 2: Hồ sơ sinh viên 5
Trang 9DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Tổng quan về hệ thống IP Camera đã thiết kế 3
Hình 1.2 Kế hoạch thực hiện đề tài 5
Hình 2.1 Sơ đồ khối chức năng của MicroBlaze [9] 12
Hình 2.2 Pipeline ba trạng thái của MicroBlaze 13
Hình 2.3 Pipeline năm trạng thái của MicroBlaze 14
Hình 2.4 Mô hình quản lí bộ nhớ ảo [9] 15
Hình 2.5 Xử lí cache lệnh 17
Hình 2.6 Xử lí cache dữ liệu 19
Hình 2.7 Giao diện tín hiệu của MicroBlaze 20
Hình 2.8 Sơ đồ chân của một liên kết FSL 22
Hình 2.9 Khối IDCT liên kết với MicroBlaze qua FSL 23
Hình 2.1 Lệnh loại A 29
Hình 2.11 Lệnh loại B 29
Hình 2.12 Kiến trúc hệ nhúng với MicroBlaze [9] 30
Hình 2.13 Các mô đun của Xilkernel 31
Hình 3.1 Sơ đồ khối của Hệ thống IP Camera 33
Hình 3.2 Sơ đồ giao tiếp khối MJPEG core với các khối khác 37
Hình 3.3 Các tín hiệu vào ra khối MJPEG core 38
Hình 3.4 Cửa sổ chọn Hệ điều hành Xilkernel 39
Hình 3.5 Cửa sổ cấu hình cho Xilkernel 40
Hình 3.6 Tùy chọn sử dụng giao thức Lwip 41
Hình 3.7 Chương trình server cho máy chủ 44
Hình 3.8 Giải thuật truyền dữ liệu lên Internet 47
Hình 4.1 Quy trình nén ảnh JPEG 49
Hình 4.2 Tín hiệu vào/ra khối Lấy mẫu dữ liệu 51
Hình 4.3 Cấu trúc dữ liệu của một dòng theo chuẩn ITU-601 52
Hình 4.4 Xác định tín hiệu SAV và EAV mành 0 55
Hình 4.5 ố trí dữ liệu trong mỗi thanh RAM 56
Hình 4.6 Tín hiệu vào/ra khối Biến đổi DCT 58
Trang 10Hình 4.7 Ma trận A 59
Hình 4.8 Ma trận AT sau khi nhân các hệ số với 216 60
Hình 4.9 Tín hiệu vào/ra khối Lượng tử hóa 62
Hình 4.1 Sơ đồ quét zigzag 8*8 64
Hình 4.11 Tín hiệu vào/ra khối Quét zigzag 64
Hình 4.12 Tín hiệu vào/ra khối RLE và Delta DC 67
Hình 4.13 Thuật toán tìm phần tử cuối cùng khác không trong một block 68
Hình 4.14 Tín hiệu vào/ra khối Mã hóa Huffman 71
Hình 4.15 Code VHDL tìm SSSS của các số dương 72
Hình 4.16 Code VHDL tìm SSSS của các số âm 73
Hình 4.17 Các tín hiệu vào/ra khối AddHeader 74
Hình 4.18 Tín hiệu vào ra khối FIFO2750 76
Hình 5.1 Sơ đồ thực thể liên kết 89
Hình 5.2 Sử dụng thread trong C# [19] 90
Hình 5.3 Sơ đồ thuật toán việc nhận và hiển thị dữ liệu 92
Hình 5.4 Giao diện chính theo dõi các camera 94
Hình 5.5 Giao diện chỉnh sửa các thông số của camera 95
Hình 5.6 Giao diện chương trình thêm vào một hệ thống IP Camera 95
Hình 5.7 Giao diện đăng nhập của người quản trị hệ thống 96
Hình 5.8 Giao diện phát lại Video 97
Hình 5.9 Giao diện tìm kiếm các hệ thống IP Camera 97
Hình 5.1 Giao diện kiểm tra tác động của User lên cơ sở dữ liệu 98
Trang 11DANH SÁCH CÁC BẢNG BIỂU
ảng 2.1 Địa chỉ vector ngắt, ngoại lệ và break 16
ảng 2.2 Mô tả bus cục bộ LMB 21
ảng 2.3 Mô tả tín hiệu của FSL chủ 22
ảng 2.4 Mô tả tín hiệu của FSL tớ 22
ảng 2.5 Mô tả loại dữ liệu 24
ảng 2.6 Quy ước dùng thanh ghi 25
ảng 2.7 Địa chỉ ngắt và ngoại lệ 27
ảng 2.8 Kí hiệu của kiến trúc tập lệnh 27
ảng 3.1 Cấu hình nền tảng phần cứng 35
ảng 3.2 Mô tả các tín hiệu và ra khối MJPEG core 38
ảng 3.3 Hiệu suất tối đa hoạt động của lwip 3.00.a 42
ảng 3.4 Hiệu suất hoạt động tối đa của lwip 1.3.0 42
ảng 3.5 Thanh ghi giá trị cho ADV7183B hoạt động đầu vào CVBS 45
ảng 3.6 Địa chỉ ADV7183B slave 46
ảng 3.7 Tín hiệu điều khiển từ phần mềm hệ thống 48
ảng 4.1 Chi tiết tín hiệu vào/ra khối lẫy mẫu dữ liệu 51
ảng 4.2 ngh a các bit biểu diễn byte thứ tư của SAV và EAV 52
ảng 4.3 yte thứ tư của SAV và EAV 53
ảng 4.4 ảng mã SAV và EAV 53
ảng 4.5 Kết quả tổng hợp khối lấy mẫu dữ liệu 57
ảng 4.6 Kết quả tổng hợp khối DCT 60
ảng 4.7 ảng lượng tử cho tín hiệu chói 61
ảng 4.8 ảng lượng tử cho tín hiệu màu 62
ảng 4.9 Kết quả tổng hợp khối Lượng tử hóa 63
ảng 4.1 Kết quả tổng hợp khối Quét zigzag 65
ảng 4.11 Kết quả tổng hợp khối RLE và Delta DC 68
ảng 4.12 ảng phân lớp các giá trị DC [12] 69
Trang 12ảng 4.13 ảng phân lớp các giá trị AC [12] 70
ảng 4.14 iểu diễn giá trị của các số nhị phân 11 bit 72
ảng 4.15 Kết quả tổng hợp khối Mã hóa Huffman 73
ảng 4.16 Kết quả tổng hợp khối AddHeader 75
ảng 4.17 Kết quả tổng hợp khối FIFO2750 76
ảng 4.18 Kết quả tổng hợp khối nén ảnh JPEG 77
ảng 5.1 Thông tin vị trí hệ thống ip camera (UNF) 80
ảng 5.2 Thông tin vị trí (3NF) 80
ảng 5.3 Thông tin vị trí camera (2NF) 80
ảng 5.4 Thông tin vị trí camera (3NF) 81
ảng 5.5 Thông tin camera 3NF 81
ảng 5.6 Thông tin lưu trữ IP Camera (UNF) 82
ảng 5.7 Thông tin IP Camera 3NF 82
ảng 5.8 Thông tin bản ghi (2NF) 83
ảng 5.9 Thông tin bản ghi IP Camera (3NF) 83
ảng 5.1 Thông tin bản ghi (3NF) 83
ảng 5.11 Thông tin hoạt động người dùng (UNF) 84
ảng 5.12 Thông tin người dùng (3NF) 84
ảng 5.13 Thông tin hoạt động người dùng (2NF) 85
ảng 5.14 Thông tin hoạt động người dùng (3NF) 85
ảng 5.15 Thông tin hoạt động (2NF) 86
ảng 5.16 Thông tin hoạt động (3NF) 86
ảng 5.17 Thông tin bản ghi (3NF) 86
ảng 5.18 Thông tin mã 3NF 87
ảng 5.19 Danh sách các bảng dữ liệu ở dạng chuẩn 3NF 87
ảng 5.2 ảng các bảng trùng nhau 88
ảng 5.21 Các bảng dữ liệu chuẩn 88
ảng 5.22 Hàm và biến chính được sử dụng trong việc nhận/hiển thị 93
Trang 13DANH SÁCH CÁC TỪ VIẾT TẮT
AC Alternative Coefficient
ADC Analog – Digital Converter
API Application Programming Interface
ARP Address Resolution Protocol
ASIC Application Specic Integrated Circuit
ASMBL Advanced Silicon Modular Block
ASSP Application Specific Standard Product
BTR Branch Target Register
CLB Configurable Logic Block
CPLD Complex Programmable Logic Device
DC Direct Coefficient
DCM Digital Clock Manager
DCT Discrete Cosin Transform
DDR Double Data Rate
DHCP Dynamic Host Configuration Protocol
DLL Delay-Locked Loop
DLMB Data interface, Local Memory Bus (BRAM only)
DOPB Data interface, On-chip Peripheral Bus
DPLB Data interface, Processor LocalBus
DRFSL FSL slave direct connection interfaces
DWFSL FSL master direct connection interfaces
DXCL Data side Xilinx CacheLink interface
EAR Exception Address Register
EAV End Active Video
EDK Embedded Development Kit
EDR Exception Data Registe
EEPROM Electrically Erasable Programmable Read-Only Memory
EOB End OF Block
EPROM Erasable Programmable Read-Only Memory
Trang 14ESR Exception Status Registe
FPGA Field-programmable gate array
FPU Floating Point Unit
FSL Fast Simplex Link
FSR Floating Point Status Register
GNU General Public License
HSTL High-Speed Transceiver Logic
ICMP Internet Control Message Protocol
IE Interrupt Enable
ILMB Instruction interface, Local Memory Bus
IOB Input Output Block
IP Intellectual Property
IPC Inter-Process Communication
IPLB Instruction interface, Processor LocalBus
IXCL Instruction side Xilinx CacheLink interface
JPEG Joint Photographic Experts Group
LMB Local Memory Bus
LUT LookUp Table
LVCMOS Low Voltage Complementary Metal Oxide Semiconductor
LVDS Low Voltage Differential Signaling
LVTTL Low Voltage Transistor-Transistor Logic
MB-GCC MicroBlaze GNU Compiler Collection
MFSL FSL master interfaces
MJPEG Motion Joint Photographic Experts Group
MMU Memory Management Unit
MPMC Multi-Port Memory Controller
MSR Machine Status Register
NIST National Institute of Standard and Technology
NPI Native Port Interface
OPB On-chip Peripheral Bus
OS Operating System
Trang 15PAL Phase Alternating Lines
PC Program Counter
PID Process Identifier Register
PLA Programmable Logic Array
PLB Processor Local Bus
PLD Programmable Logic Device
POSIX Portable Operating System Interface
PVR Processor Version Register
RAM Random Access Memory
RISC Reduced Instructions Set Computer
RSDS Reduced Swing Differential Signaling
RTOS Real-Time Operating Systems
RTP Real-time Transport Protocol
SAV Start Active Video
SDRAM Synchronous Dynamic RAM
SFSL FSL slave interfaces
SLICEL Slice- Logic
SLICEM Slice- Memory
SPLD Simplex PLD
SSTL Stub Series-Terminated Logic
TCP Transmission Control Protocol
TLBHI Translation Look-Aside Buffer High Register
TLBLO Translation Look-Aside Buffer Low Register
TLBSX Translation Look-Aside Buffer Search Index
TLBX Translation Look-Aside Buffer Index Register
UDP User Datagram Protocol
VHDL VHSIC Hardware Description Language
XCL Xilinx Cache Link
XSI X/Open System Interface
ZPR Zone Protection Register
Trang 16PHẦN MỞ ĐẦU
Hệ thống Intellectual Protocol IP camera đã được Phòng nghiên cứu Hệ thống nhúng và Tính toán khả cấu hình (Embeded System and Reconfigurable Computing Labolatory – ESRC Lab) triển khai từ năm 2 11 và đã thu được một vài kết quả khả quan Cụ thể, hệ thống này đã có thể nén ảnh theo chuẩn Joint Photographic Experts Group (JPEG) và ghép lại thành luồng Motion – JPEG (MJPEG) đúng trong một số trường hợp, có thể gửi và nhận tín hiệu tới/ từ người dùng qua mạng Ethernet Nhóm tác giả trước cũng đã xây dựng được giao diện web để quan sát và điều khiển khá hoàn chỉnh Tuy nhiên, hệ thống trước đây vẫn chưa hoàn thành và còn một vài hạn chế Một là, phương pháp lưu ảnh ở bộ First In, First Out (FIFO) trung gian giữa phần cứng và phần mềm dẫn đến việc FIFO bị tràn, chỉ hiện thị được một vài khung ảnh (frame) do việc điều khiển đọc dữ liệu từ phần mềm mất khá nhiều thời gian Hai
là, giao diện web hiện tại chỉ có thể quan sát được một IP camera một lúc và chưa có chức năng lưu trữ cũng như phân quyền cho người dùng
Để giải quyết các vấn đề trên, nhóm tác giả, gồm có hai thành viên: Vũ Hữu Tiệp và
Đỗ Tiến Thành, đã phân công công việc và giải quyết từng vấn đề, cụ thể như sau:
Vũ Hữu Tiệp:
o Chuẩn hóa và tối ưu khối nén ảnh JPEG
o Sử dụng bộ nhớ Double Data Rate (DDR) Synchronous Dynamic Random Access Memory SDRAM có kích thước lớn và tốc độ truy cập dữ liệu nhanh hơn FIFO để giải quyết vấn đề tràn bộ nhớ và chỉ hiện thị được một vài frame ảnh
Trang 17phần mềm có thể lưu trữ và chạy lại các video mỗi khi được người dùng yêu cầu
Đồ án này bao gồm 5 chương, mục đích và tác giả của từng chương như sau:
Chương 1 Giới thiệu chung – Vũ Hữu Tiệp Giới thiệu các hệ thống IP
camera hiện thời, báo cáo khả thi, công nghệ và các phần mềm được sử dụng
Chương 2 Hệ thống nhúng với MicroBlaze và Hệ điều hành Xilkernel –
Đỗ Tiến Thành Trình bày kiến trúc của vi xử lý MicroBlaze và Hệ điều hành
Xilkernel
Chương 3 Thiết kế hệ thống – Vũ Hữu Tiệp, Đỗ Tiến Thành Trình bày các
khối chức năng chính của hệ thống
Chương 4 Thiết kế lõi MJPEG – Vũ Hữu Tiệp Trình bày chi tiết phương
pháp thiết kế khối nén hình ảnh thu được theo chuẩn JPEG rồi chuyển thành luông MJPEG bằng ngôn ngữ mô tả phần cứng VHDL (VHSIC Hardware Description Language)
Chương 5 Thiết kế phần mềm dành cho người sử dụng – Đỗ Tiến Thành
Trình bày các bước thiết kế phần mềm cho người dùng
Sau đây là nội dung của từng chương:
Trang 18Chương 1 GIỚI THIỆU CHUNG
Sinh viên thực hiện: Vũ Hữu Tiệp
Trong chương đầu tiên này, nhóm tác giả giới thiệu về hệ thống IP Camera đã được thiết kế trước đây tại ESRC Lab, báo cáo khả thi và phạm vi của đề tài Đồng thời chương này cũng giới thiệu công nghệ FPGA (Field-Programmable Gate Array), các công cụ sử dụng trong đề tài và phân tích các yêu cầu chức năng, phi chức năng của
H nh 1.1 Tổng quan về hệ thống IP Camera đã thiết kế
Trong đồ án này, nhóm tác giả sử dụng lại các mạch của hệ thống trên và thiết kế lại lõi nén ảnh MJPEG [1], thiết kế phần mềm cho người dùng và cách giao tiếp giữa phần cứng và phần mềm
Trang 191.2 Tính khả thi của đề tài
1.2.1 Tính khả thi về mặt kỹ thuật
Để thiết kế hệ thống, ta cần một số yêu cầu cơ bản sau:
Phần cứng:
o Camera CMOS (Complementary Metal-Oxide-Semiconductor)
o IC (Intergrated Circuit) giải mã ADV7181B: chuyển tín hiệu tương tự PAL [2] (Phase Alternative Line) thu được từ Camera thành tín hiệu số
o Mạch FPGA Spartan 3E 1600 [3] của Xilinx
o Mạch ngoài sử dụng vi điều khiển trung tâm PIC16F877A [4], giao tiếp với mạch chính qua cap RS485 [5]
o Máy tính cá nhân (Personal Computer – PC) có cấu hình:
Bộ vi xử lý: từ Pentium III trở lên
RAM: 512MB hoặc cao hơn
Có Internet
Phần mềm:
o Hệ điều hành Window XP/ Vista/ 7
o Bộ phần mềm Xilinx ISE (Intergrated Sotware Environment), EDK
(Embedded Development Kit), ChipScope Pro 10.1
o Visual Studio 2010
1.2.2 Khả thi về mặt kinh tế
Với việc đã có đầy đủ các thiết bị từ nhóm nghiên cứu trước, đề tài này có thể được thực hiện với chi phí không cao
Trang 201.2.3 Khả thi về mặt vận hành
Với việc hầu hết mọi người đều biết sử dụng Internet cũng như các phần mềm thông thường khác, việc sử dụng phần mềm do nhóm thiết kế sẽ không gặp nhiều khó khăn
1.2.4 Khả thi về mặt thời gian
Trong ba tháng thực hiện đề tài, nhóm đã lên kế hoạch và thực hiện như Hình 1.2
H nh 1.2 Kế hoạch thực hiện đề tài
Trong đồ án này, nhóm tác giả dụng kit FPGA sẵn có Spartan 3E của Xilinx làm nền tảng Việc này giúp nhóm có thể rút ngắn thời gian thiết kế và có thể dễ dàng kiểm thử, bắt lỗi bằng các công cụ phần mềm mà hãng hỗ trợ
1.3 Phân tích yêu cầu
1.3.1 Phân tích yêu cầu chức năng của hệ thống
Đề tài của nhóm được thiết kế với hai chức năng chính là giám sát và điều khiển Sau khi phân tích các điều kiện khả thi và các chức năng của hệ thống một cách chi tiết, nhóm tác giả chia hệ thống cần xây dựng thành 3 khối chức năng chính như sau:
Mạch điều khiển chính cho IP camera
Phần mềm cho hệ thống giám sát và điều khiển từ xa, hoạt động trên hệ điều hành Windows XP, Windows Vista, Windows 7
Mạch điều khiển các thiết bị ngoài
Trang 211.3.1.1 Mạch điều khiển chính cho IP Camera
Mạch IP Camera hoàn chỉnh cuối cùng có các yêu cầu về chức năng như sau:
Có khả năng nén ảnh theo chuẩn MJPEG với tốc độ ảnh truyền đi từ 1 đến 15 frame/s
Có khả năng gửi và nhận thông tin tới/ từ người dùng qua cồng Ethernet
Có khả năng nhận thông tin từ mạch mở rộng và gửi các tín hiệu điều khiển xuống mạch đó
1.3.1.2 Phần mềm cho hệ thống giám sát và điều kiển từ xa
Đi kèm theo hệ thống là một phần mềm được thiết kế giành riêng cho ứng dụng của
hệ thống Trên màn hình người quan sát có thể nhìn các hình ảnh thu được từ camera, quan sát nhiều màn hình và các chức năng điều khiển thông qua các nút bấm Trong trường hợp người dùng chưa cài phần mềm thì có thể sử dụng thong qua trình duyệt web browses để truy nhập và hệ thống
Dưới đây nhóm xin trình bày về các yêu cầu chức năng của phần mềm được thiết kết cho hệ thống:
Cung cấp chức năng phân quyền cho người sử dụng: khi truy nhập vào hệ
thống, người sử dụng sẽ phải nhập Username và Password để có thể truy nhập
được vào hệ thống Thông tin người dùng sẽ được lưu vào cơ sở dữ liệu SQL
cài đặt trên máy chủ Chỉ Admin mới có quyền quản lý các user, cấp phát quyền cho các User: quyền tác động vào dữ liệu các file ảnh hay video đã lưu
trữ lại (xóa, copy), quyền điều khiển các thiết bị ngoại vi
Cung cấp giao diện đồng hồ: trên cửa sổ phần mềm cho phép hiển thị thời gian hiện tại được lấy từ thời gian của máy tính đang chạy Khi người dùng muốn chụp ảnh hoặc ghi lại hình ảnh thu được từ camera thì hệ thống sẽ chèn giá trị thời gian này vào để người dùng có thể biết thời gian quay và tự động chèn
vào tên của hình ảnh thu được Thời gian sẽ được hiển thị trên Status Bar
Trang 22 Cung cấp khả năng cho phép người sử dụng lựa chọn xem một hay nhiêu màn hình một lúc và xem các camera mình đã cấu hình Chức năng này được thực
hiện bằng tab View trên Menu chính và chọn Camera Sau đó, giao diện được thể hiện bên Panel thi hành, gồm có:
o Camera: liệt kê các camera đã cấu hình với các thuộc tính cấu hình được lưu lại tạo thuân tiện cho việc giám sát camera lần sau
o Chức năng hiển thị: Chọn lựa hiển thị một, hai, bốn hoặc nhiều hơn các camera
Cung cấp giao diện điều khiển: khi người dùng muốn điều khiển các thiết bị thủ công, người sử dụng sẽ tick vào nút bấm thiết bị điều khiển Sau khi chọn
xong người dùng ấn Submit để truyền tín hiệu điều khiển tới chip điều khiển
trung tâm
Chương trình cho phép cấu hình các thông số của từng camera cần quan sát bao gồm: địa chỉ IP của camera người dùng muốn quan sát, độ lớn buffer sử dụng, kích thước ảnh hay video sau khi lưu trữ (kích thước video trên giao diện chính là dạng preview, phụ thuộc vào số camera cần quan sát, không thay đổi được)
o Hệ thống có phiên bản dành cho bảo mật cao, sử dụng chuẩn mã hóa bảo mật nâng cao [7] (Advance Encription Standard – AES), do đó trên chương trình phải có giao diện cho phép thay đổi khóa mã: khóa mã sẽ
do Admin nhập vào dưới dạng số Hexa Để tăng tính bảo mật, hệ thống
sẽ tự động đưa ra cảnh báo nếu khóa mã không được thay đổi trong ba tháng từ lần gần nhất thay đổi của admin Việc này sẽ được thực hiện
bằng một Form cảnh báo nhỏ
Nhằm tăng khả năng quản lý của Admin, chỉ duy nhất Admin có quyền kiểm
tra hoạt động của mười user truy cập gần đây nhất và các tác vụ họ đã làm
Trang 231.3.2 Phân tích yêu cầu phi chức năng của hệ thống
Bên cạnh các yêu cầu chức năng của hệ thống là các yêu cầu phi chức năng của hệ thống Các yêu cầu này quyết định tính hiệu năng của hệ thống, môi trường hoạt động, các yêu cầu về bảo mật… p dụng các yêu cầu đó vào trong đề tài này, các yêu cầu phi chức năng của hệ thống bao gồm:
Môi trường hoạt động:
o Sử dụng trong nhà, môi trường làm việc trong phòng thông thường, các trạm TS (Base Transceive Station) [8]
o Sử dụng nguồn 12V – 2A cho hệ thống camera
o Giao diện người dùng thân thiện, dễ sử dụng
o Kích thước hệ thống nhỏ gọn, kết nối đơn giản
o Cho phép người dùng có thể dễ dàng chọn sử dụng tùy chức năng yêu cầu
Trang 241.4 Giới thiệu về công nghệ sử dụng
1.4.1 Công nghệ FPGA [6]
Công nghệ FPGA được sử dụng rộng rãi trong các l nh vực bao gồm: xử lý tín hiệu
số DSP, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu vi mạch tích hợp chuyên dụng (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, Tính linh động cao trong quá trình thiết kế cho phép FPGA 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 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
Đặc tính nổi trội nhất của FPGA là khả năng tái cấu hình của nó Các hệ thống sử dụng FPGA hoàn toàn có thể cấu hình lại tùy thuộc vào mục đích sử dụng, ngay cả khi sản phẩm đã được giao cho người dùng
1.5 Các phần mềm sử dụng trong đề tài
Chip FPGA dùng để phát triển hệ thống trong đề tài là chip của hãng Xilinx cung cấp, do đó toàn bộ môi trường phát triển và công cụ phát triển hệ thống logic trên FPGA là phần mềm của hãng Xilinx, bao gồm:
Xilinx EDK (Embedded Development Kit): Công cụ phát triển hệ thống
nhúng trên FPGA Công cụ này được coi là công cụ thiết kế và phát triển hệ thống logic trên FPGA, cho phép công cấp một hệ vi xử lý hoàn chỉnh trên
FPGA gồm các IP logic và vi xử lý
Xilinx ISE (Integrated Software Environment): công cụ phần mềm môi
trường tích hợp Công cụ này được coi là công cụ thiết kế và phát triển các IP logic người dùng, các IP logic này đã được định ngh a khi đưa ra thiết kế hệ
thống logic với Xilinx EDK
Xilinx ChipScope Pro: công cụ phần mềm tích hợp các bộ phân tích các khối
logic chính, kiểm tra và tính toán các thành phần phần cứng bên trong hệ
Trang 25thống thiết kế, là công cụ được sử dụng để giao tiếp giữa các thành phần và
cung cấp một giải pháp để phân tích các thành phần ở bên trong hệ thống
Phần mềm chuyên dụng cho người dùng sử dụng các công cụ phát triển sau:
Visual C# : công cụ giúp hỗ trợ thiết kế phần mềm người sử dung Công cụ
cho phép người sử dụng có thể thiết kế giao diện, liên kết cơ sở dữ liệu và cung cấp thư viện cơ bản cho người dùng tạo hệ thống phần mềm có khả năng
truyền nhận dữ liệu qua Ethernet
SQL server 2008 : công cụ phát triển của Microsoft giúp người sử dụng tạo và
quản lí cơ sở dữ liệu của cá nhân
Bên cạnh đó, quá trình thiết kế và phát triển các IP logic đòi hỏi công cụ mô phỏng logic để kiểm tra các đặc tính, dạng sóng của tín hiệu vào ra của khối logic đang được phát triển có đúng theo đặc tả thiết kế hay không Trong đề tài này, công cụ mô phỏng được sử dụng là phần mềm ModelSimXE, phần mềm này hãng ModelSim cung cấp dành riêng cho việc mô phỏng thiết kế FPGA với các công cụ của Xilinx
1.6 Kết luận chương
Như vậy, chương này đã phân tích tính khả thi của hệ thống, xác định rõ các chức năng cần đạt được của hệ thống cũng như các công cụ sử dụng để phát triển hệ thống trong đề tài Phần chi tiết về các công cụ phát triển cũng như triển khai thiết kế các chức năng cho hệ thống sẽ được trình bày ở các chương tiếp theo
Trang 26Chương 2 HỆ THỐNG NHÚNG VỚI MICROBLAZE
VÀ HỆ ĐIỀU HÀNH XILKERNEL
Sinh viên thực hiện: Đỗ Tiến Thành
Các bộ vi xử lý có sẵn dùng cho dòng FPGA của Xillinx sử dụng với các công cụ phần mềm có trong phần mềm EDK được phân thành 2 loại: bộ vi xử lý mềm MicroBlaze và bộ vi xử lý cứng đã được nhúng sẵn trong các chip FPGA của Xilinx PowerPC
Chương này trình bày các kiến thức cơ bản về vi xử lý mềm MicroBlaze, một bộ vi
xử lý được dùng hầu hết trong FPGA các dòng như Spartan-II, Spartan-III, Virtex của hãng Xillinx MicroBlaze là một vi xử lý ảo, nó tồn tại dưới dạng phần mềm đã được phát triển của hãng Xillinx, chúng ta có thể thiết lập các thông số để sử dụng đối với vi điều khiển này (UART – Universal Asynchronous Receiver Transmitter, các cổng vào ra ngoại vi, ) thông qua phần mềm EDK
2.1 Vi xử lý Microblaze [9]
MicroBlaze là bộ xử lý mềm 32 bit được nhúng trong FPGA của Xilinx Lõi có cấu trúc Harvard, tập lệnh thu gọn RISC (Reduced Instruction Set Computer), với 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 Chúng ta có thể tạo ra nhiều vi xử lý mềm trên một chip FPGA tùy vào tài nguyên của chip FPGA ( theo khuyến cáo của xilinx là 8), bên cạnh đó nó còn
hỗ trợ các ghép nối với các giao diện (bộ nhớ, uart, cổng I O… tạo thành một hệ thống nhúng trong thiết kế và xây dựng các ứng dụng
2.1.1 Kiến trúc
Vi xử lý MicroBlaze là một vi xử lí RISC dạng lõi vi xử lý mềm, được thiết kế tối ưu cho chip FPGA của Xilinx với tập lênh 32 bit và bus dữ liệu chạy riêng rẽ cho phép
chạy chương trình và truy nhập dữ liệu tốc độ cao từ cả bộ nhớ On-chip và bộ nhớ
ngoài cùng 1 thời điểm Dưới đây là sơ đồ khối chức năng của lõi MicroBlaze
Trang 27H nh 2.1 Sơ đồ khối chức năng của MicroBlaze [9]
MicroBlaze có cấu trúc tương tự như các vi xử lý RISC 32 bit thông thường, bao gồm các khối chức năng chính như: Khối logic số học (ALU), giải mã lệnh, các thanh ghi đặc biệt, tệp thanh ghi, bộ đếm chương trình, bus lệnh và bus địa chỉ Bên cạnh những khối chức năng cố định thì với đặc tính mềm, MicroBlaze cho phép tùy chọn các khối chức năng: đệm lệnh, đệm dữ liệu, bộ nhân, bộ chia, bộ dịch, bộ xử lý dấu phẩy động (FPU) Điều này cho phép cấu hình linh động MicroBlaze theo các thiết kế có yêu cầu, đặc trưng riêng
Trang 28Dạng dữ liệu: Micro laze dùng định dạng dữ liệu kiểu Big-Endian Dữ liệu hỗ trợ
cho kiểu word, half-word và byte
Lệnh
Tất cả các lệnh của MicroBlaze là 32-bit và chia làm hai loại A và B Lệnh loại A có tối đa hai thanh ghi toán hạng nguồn và một thanh ghi toán hạng đích Lệnh loại B có một thanh ghi toán hạng nguồn và một toán hạng tức thì 16-bit và một thanh ghi toán hạng đích đơn
o Pipeline ba trạng thái: Khi C_AREA_OPTIMIZED = 1, pipeline chia làm
ba trạng thái để tối thiểu phần cứng: nạp lệnh, giải mã và thực thi Hình 2.2
mô tả pipeline ba trạng thái
Instruction 1
Instruction 2
Instruction 3
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
Fetch Decode Stall Stall Execute Fetch Decode Execute Execute Execute
Decode Execute Fetch
H nh 2.2 Pipeline ba trạng thái của MicroBlaze
o Pipeline năm trạng thái: Khi C_AREA_OPTIMIZED = 0, pipeline chia làm năm trạng thái cho việc tối đa hiệu năng: nạp lệnh (IF), giải mã (OF),
Trang 29thực thi (EX), truy cập bộ nhớ (MEM), ghi trở lại (WB) Hình 2.3 mô tả các pipeline năm trạng thái
OF EX IF
IF OF EX MEM MEM MEM WB
IF OF EX Stall Stall MEM WB
H nh 2.3 Pipeline năm trạng thái của MicroBlaze Kiến trúc bộ nhớ
MicroBlaze xây dựng với kiến trúc bộ nhớ kiểu Harvard; truy cập dữ liệu và địa chỉ ở những vùng không gian địa chỉ phân biệt Mỗi địa chỉ có giải 32-bit Vùng bộ nhớ lệnh và dữ liệu có thể trùng nhau bởi việc ánh xạ chúng trên cùng bộ nhớ vật lý MicroBlaze không chia tách truy cập dữ liệu tới I/O hay bộ nhớ Vi xử lý có tối đa 3 giao diện cho truy cập bộ nhớ: Bus bộ nhớ cục bộ (LMB), Bus cục bộ vi xử lí (PLB) hay bus ngoại vi trên chip (OPB), liên kết đệm Xilinx (XCL)
Quản lí bộ nhớ ảo
Chương trình chạy trên Micro laze dùng địa chỉ có khả năng truy cập vùng nhớ 4GB Vi xử lý có thể hiểu vùng địa chỉ này theo 1 trong 2 cách, tùy vào chế độ dịch:
o Ở chế độ thực, địa chỉ hiệu quả dùng để truy cập trực tiếp bộ nhớ vật lý
o Ở chế độ ảo, địa chỉ hiệu quả được dịch sang địa chỉ vật lí nhờ phần cứng quản lí bộ nhớ ảo và vi xử lý
Chế độ ảo cung cấp việc điều khiển nhiều hơn qua bảo vệ bộ nhớ Các khối của bộ nhớ nhỏ 1KB có thể bảo vệ riêng lẻ từ quyền truy cập Ở MicroBlaze, chế độ này thực hiện bởi đơn vị quản lý bộ nhớ MMU - khi C_USE_MMU = 3 và C_AREA_OPTIMIZED = MMU điều khiển và ánh xạ từ địa chỉ hiệu quả sang địa chỉ vật lí Hình 2.4 mô tả mô hình quản lý bộ nhớ ảo
Trang 30H nh 2.4 Mô hình quản lí bộ nhớ ảo [9]
Reset, ngắt, ngoại lệ và break
Thứ tự ưu tiên từ cao đến thấp như sau: reset, ngoại lệ cứng, break không che được, break, ngắt, vectơ người dùng
o Reset: khi reset hay debug_rst xảy ra MicroBlaze làm sạch pipeline và bắt
đầu nạp lệnh từ vectơ reset Tín hiệu reset ngoài ở mức cao và giữ trong tối thiểu là 16 chu kì
o Ngoại lệ cứng: MicroBlaze có thể cấu hình để bắt các lỗi nội: lệnh trái phép,
lỗi bus lệnh và dữ liệu, truy cập không hợp lệ Ngoại lệ chia cho 0 có thể dùng khi cấu hình C_USE_DIV = 1 Khi cấu hình đơn vị dấu phẩy động C_USE_FPU = 1, nó cũng bắt các ngoại lệ của đơn vị dấu phẩy động: tràn dấu, tràn, chia cho 0, thực thi không hợp lệ, lỗi chuẩn toán hạng Khi cấu hình với 1 đơn vị quản lí bộ nhớ, nó cũng bắt các ngoại lệ: lệnh không hợp lệ, lưu
dữ liệu không hợp lệ, lưu lệnh không hợp lệ, mất dữ liệu TLB, mất lệnh TLB
Địa chỉ của các vector ngắt, ngoại lệ và break được cho trong ảng 2.1
Trang 31ảng 2.1 Địa chỉ vector ngắt, ngoại lệ và break
Sự kiện Vectơ địa chỉ Thanh ghi trả về
reak mềm
Ngoại lệ cứng 0x00000020- 0x00000024 R17 hay BTR
Đặt trước của Xilinx 0x00000028- 0x0000004F -
Break: có 2 loại break cứng và mềm Break cứng thực thi khi xác định tín
hiệu break ngoài Trong 1 break, lệnh trong trạng thái thực thi hoàn thành trong khi lệnh trong trạng thái giải mã được thay thế bởi nhánh tới vectơ break 0x18 Break trả về địa chỉ được nạp tự động vào thanh ghi R16 Micro laze cũng đặt cờ IP trong MSR Để thực hiện break mềm, dùng lệnh brk và brki
Ngắt: MicroBlaze hỗ trợ 1 nguồn ngắt ngoài Vi xử lý ngắt nếu bit IE của
MSR đặt bằng 1 Trong 1 ngắt, lệnh trong trạng thái thực thi hoàn thành trong khi lệnh trong trạng thái giải mã bị thay bởi nhánh tới vectơ ngắt 0x10 Ngắt trả về địa chỉ nạp tự động vào thanh ghi R14 Đồng thời vi xử
lý xóa bit IE trong MSR Bit IE lại đặt tự động trở lại khi thực thi lệnh
RTID
Trang 32Cache lệnh
MicroBlaze có thể dùng với tùy chọn cache lệnh để tăng cường hiệu năng khi thực thi lệnh mà nằm ở ngoài vùng địa chỉ LMB, cache lệnh bao gồm các đặc tính:
Ánh xạ trực tiếp
Dải địa chỉ có khả năng chọn, có khả năng cache
Cấu hình được kích thước cache và tag
Đệm qua giao diện XCL
Tùy chọn dòng cache 4 hay 8 từ
Cho phép/không cho phép cache qua 1 bit của MSR
Tùy chọn WIC để xác nhận dòng cache lệnh
Khi cache lệnh cho phép sử dụng, vùng nhớ chia làm 2 vùng: một vùng có khả năng cache và một không có khả năng cache Vùng có khả năng cache xác định bởi 2 thông số: C_ICACHE_ ASEADDR và C_ICACHE_HIGHADDR Kích thước vùng này là 2N (N>0) Dải địa chỉ xác định với C_ICACHE_BASEADDR và C_ICACHE_HIGHADDR phải có kích thước bằng 2N Địa chỉ có khả năng cache gồm 2 phần: địa chỉ cache và địa chỉ tag Cache lệnh của MicroBlaze có thể cấu hình
từ 64-byte tới 64-K tương ứng với địa chỉ cache từ 6 đến 16-bit Địa chỉ tag cũng phù hợp với địa chỉ toàn phần của bộ nhớ cache Sơ đồ xử lý cache lệnh được cho trên Hình 2.5
H nh 2.5 Xử lí cache lệnh
Trang 33Với mỗi lệnh được nạp, cache lệnh nhận ra nếu địa chỉ của lệnh đó thuộc vùng cache Nếu địa chỉ không trong vùng cache, bộ điều khiển cache bỏ qua lệnh và gọi PLB, OPB, LMB hoàn thành yêu cầu Nếu địa chỉ là có khả năng cache, một phép tìm
được thực thi trên tag nhớ để kiểm tra nếu địa chỉ yêu cầu đang được cache
Cache dữ liệu
MicroBlaze có thể dùng với tùy chọn cache dữ liệu để tăng cường hiệu năng Vùng cache phải không bao gồm vùng địa chỉ LMB Cache dữ liệu có các đặc tính sau:
Ánh xạ trực tiếp
Dải địa chỉ có khả năng chọn, có khả năng cache
Cấu hình được kích thước cache và tag
Đệm qua giao diện XCL
Tùy chọn dòng cache 4 hay 8 từ
Cho phép/không cho phép cache qua 1bit của MSR
Tùy chọn WIC để xác nhận dòng cache dữ liệu
Khi cache dữ liệu cho phép sử dụng, vùng nhớ chia làm 2 vùng: một vùng có khả năng cache và một không có khả năng cache Vùng có khả năng cache xác định bởi hai thông số: C_DCACHE_ ASEADDR và C_DCACHE_HIGHADDR Kích thước vùng này là 2N (N>0) Dải địa chỉ xác định với C_DCACHE_BASEADDR và C_DCACHE_HIGHADDR phải có kích thước bằng 2N Địa chỉ có khả năng cache gồm hai phần: địa chỉ cache và địa chỉ tag Cache lệnh của MicroBlaze có thể cấu hình từ 64-byte tới 64-K tương ứng với địa chỉ cache từ 6 đến 16-bit Địa chỉ tag cuãng phù hoẹp với địa chỉ toàn phần của bộ nhớ cache Sơ đồ xử lý cache lệnh được cho trên Hình 2.6
Trang 34H nh 2.6 Xử lí cache dữ liệu Đơn vị dấu phẩy động (FPU)
Đơn vị dấu phẩy động dựa trên chuẩn IEEE 754:
Dùng định dạng IEEE 754 cho dấu phẩy động chính xác đơn, bao gồm định ngh a cho số không xác định, không là số và 0
Hỗ trợ cộng, trừ, nhân, chia, so sánh, chuyển đổi và căn
Làm tròn tới giá trị gần nhất
Tạo bit trạng thái mềm dẻo cho: tràn, chia cho 0 và phép tính không hợp lệ
Liên kết nhanh đơn giản (FSL)
MicroBlaze có thể cấu hình tối đa 16 giao diện FSL, mỗi giao diện bao gồm một cổng vào và một cổng ra Các kênh FSL là các giao diện truyền dữ liệu đơn hướng điểm - điểm Các giao diện FSL trên MicroBlaze rộng 32-bit 1 bit chia tách xác định đâu là từ gửi/nhận của dạng điều khiển hay dạng dữ liệu Lệnh get dùng để truyền thông tin từ một cổng FSL tới 1 thanh ghi đa năng Lệnh put dùng để truyền thông tin theo hướng ngược lại
Mỗi FSL cung cấp 1 giao diện trễ nhỏ cho pipeline và vi xử lí Do đó FSL lý tưởng cho việc mở rộng đơn vị xử lí thực thi với bộ gia tốc cứng của người dùng
Trang 352.1.2 Giao diện tín hiệu
Lõi Micro laze được tổ chức theo kiến trúc Harvard với giao diện bus phân tách cho
dữ liệu và lệnh Có ba giao diện bộ nhớ được hỗ trợ: Bus bộ nhớ cục bộ LMB, bus cục bộ vi xử lý PLB hay bus ngoại vi trên chip OPB, liên kết đệm Xilinx XCL LMB cung cấp truy cập đơn xung nhịp tới block RAM cổng đôi trên chip PL và OP cung cấp một kết nối cho các ngoại vi trên chip và ngoài chip cũng như bộ nhớ XCL dùng cho bộ điều khiển bộ nhớ ngoài đặc biệt Hình 2.7 mô tả giao diện tín hiệu của MicroBlaze
H nh 2.7 Giao diện tín hiệu của MicroBlaze
DPLB: giao diện dữ liệu, PLB
DOPB: giao diện dữ liệu, OPB
DLMB: giao diện dữ liệu, LMB
IPLB: giao diện lệnh, PLB
IOPB: giao diện lệnh, OPB
ILMB: giao diện lệnh, LMB
Trang 36 MFSL 0 15: giao diện FSL chủ
DWFSL 0 15: giao diện chủ điều khiển liên kết FSL
SFSL 0 15: giao diện FSL tớ
DRFSL 0 15: giao diện tớ điều khiển liên kết FSL
IXCL: giao diện liên kết đệm lệnh
DXCL: giao diện liên kết đệm dữ liệu
Core: tín hiệu tổng hợp: đồng hồ, reset, debug và trace
us bộ nhớ cục bộ LM
LMB là một bus đồng bộ dùng chủ yếu để truy cập block RAM trên chip Nó dùng các tín hiệu điều khiển với số lượng ít nhất và giao thức đơn giản để đảm bảo block RAM cục bộ được truy cập trong một xung nhịp Tất cả tín hiệu của LMB tích cực mức cao Các tín hiệu của bus cục bộ LM được mô tả chi tiết trong ảng 2.2
ảng 2.2 Mô tả bus cục bộ LMB
Tín hiệu Giao diện dữ liệu Giao diện lệnh Kiểu Mô tả
Addr[0:31] Data_Addr[0:31] Instr_Addr[0:31] O us địa chỉ Byte_Enable[0:3] Byte_Enable[0:3] Không dùng O Cho phép byte Data_Write[0:31] Data_Write[0:31] Không dùng O us dữ liệu ghi
Data_Read[0:31] Data_Read[0:31] Instr[0:31] us dữ liệu đọc
tiếp
Trang 37Bus nhanh- đơn giản FSL
FSL cung cấp kênh tryền điểm – điểm giữa một FIFO ra và một FIFO vào MicroBlaze có thể có tối đa 16 giao diện FSL chủ và 16 giao diện FSL tớ Hình 2.8
và ảng 2.3 mô tả sơ đồ và ý ngh a các chân vào ra của một liên kết FSL ảng 2.4
mô tả các tín hiệu của một FSL tớ
H nh 2.8 Sơ đồ chân của một liên kết FSL ảng 2.3 Mô tả tín hiệu của FSL chủ
FSLn_M_Data Giá trị dữ liệu ghi std_logic_vector Ra FSLn_M_Control it điều khiển ghi ra FSL std_logic Ra FSLn_M_Full it xác định đầy FIFO std_logic vào
ảng 2.4 Mô tả tín hiệu của FSL tớ
Trang 38Ngoại vi của FSL có thể là chủ hay tớ của bus Một ngoại vi kết nối tới cổng chủ của FSL đặt tín hiệu dữ liệu và điều khiển lên FSL Một ngoại vi kết nối tới cổng tớ của FSL đọc và lấy dữ liệu và tín hiệu điều khiển từ FSL Đây là một ví dụ về sử dụng FSL để kết nối một khối logic của người dùng tới MicroBlaze Khối IDCT được thực hiện bằng phần cứng để đảm bảo tốc độ tính toán nhanh và tối ưu Micro laze làm chủ của FSL0 và làm tớ của FSL1, khối IDCT làm tớ của FSL0 và làm chủ của FSL1 MicroBlaze gửi dữ liệu và điền khiển IDCT qua FSL0, khi IDCT thực hiện xong, nó gửi dữ liệu lại MicroBlaze qua FSL1 Hình 2.9 mô tả liên kết giữa khối IDCT và MicroBlaze thông qua FSL
H nh 2.9 Khối IDCT liên kết với MicroBlaze qua FSL Liên kết đệm Xilinx XCL
Đây là giải pháp hiệu năng cao cho việc truy cập bộ nhớ ngoài XCL thiết kế để kết nối trực tiêp tới bộ điều khiển bộ nhớ với bộ đệm FSL tích hợp, ví dụ như MPMC Phương thức này có độ trế thấp nhất
Giao diện này chỉ được phép trên Micro laze khi cache được chọn Bao nhiêu vùng
bộ nhớ được truy cập phụ thuộc vào thông số C_ICACHE_ALWAYS_USED cho cache lệnh và C_DCACHE_ALWAYS_USED cho cache dữ liệu Nếu thông số là 1, dải bộ nhớ đệm luôn luôn được truy cập qua liên kết đệm Nếu thông số bằng 0, dải
bộ nhớ đệm được truy cập qua PLB hay OPB
Trang 392.1.3 Giao diện ứng dụng
Giao diện ứng dụng quan trọng cho phát triển phần mềm trên ngôn ngữ hợp ngữ cho
vi xử lý mềm Trình biên dịch MicroBlaze GNU tuân theo những quy tức của giao diện này, bao gồm:
o Loại dữ liệu
o Các quy ước dùng thanh ghi
o Quy ước ngăn xếp
ảng 2.5 Mô tả loại dữ liệu
Loại dữ liệu MicroBlaze Loại dữ liệu ANSI C tương ứng Kích thước(byte)
Trang 40Các quy ước dùng thanh ghi
Các quy ước dùng thanh ghi trình bày như ảng 2.6 dưới đây:
ảng 2.6 Quy ước dùng thanh ghi
Thanh ghi Loại Tuân theo Mục đích
R0 Chuyên dụng Phần cứng Giá trị
R1 Chuyên dụng Phần mềm Con trỏ ngăn xếp
R2 Chuyên dụng Phần mềm Vùng dữ liệu nhỏ chỉ đọc
R3-R4 Thay đổi Phần mềm Trả giá trị nháp
R5-R10 Thay đổi Phần mềm Duyệt thông số nháp
R11-R12 Thay đổi Phần mềm Nháp
R13 Chuyên dụng Phần mềm Vùng dữ liệu nhỏ đọc-ghi
R14 Chuyên dụng Phần cứng Trả về địa chỉ cho ngắt
R15 Chuyên dụng Phần mềm Trả về địa chỉ chương trình con
R16 Chuyên dụng Phần cứng Trả về địa chỉ trap
R17 Chuyên dụng Phần Cứng mềm Trả về địa chỉ ngoại lệ
Đặt trước cho chứa con trỏ tới bảng lệch toàn cục và vị trí mã không lệ thuộc
R21-R31 Không thay
đổi Phần mềm Phải lưu theo lời gọi hàm RPC Đặc biệt Phần cứng ộ đếm chương trình
RMSR Đặc biệt Phần cứng Thanh ghi trạng thái máy
REAR Đặc biệt Phần cứng Thanh ghi địa chỉ ngoại lệ
RESR Đặc biệt Phần cứng Thanh ghi trạng thái ngoại lệ
RFSR Đặc biệt Phần cứng Thanh ghi trạng thái số phẩy động