1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

84 714 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 84
Dung lượng 2,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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 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 6

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

Trang 7

DANH 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 8

Viế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 9

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

Trang 10

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

Trang 11

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 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 12

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

Trang 13

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

Trang 14

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

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 15

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 28

byte = 256 byte nhớ

Trang 16

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)…

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 18

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ỉ

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 21

Hệ 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 22

Hạ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 23

Quy 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 24

thự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 25

Vi 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 26

chuyể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 27

Quá 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 28

FPGA 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 29

Cấ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 30

Hì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 31

Chươ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 33

Hì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 34

Cá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 35

b) 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 36

0: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 37

R

- 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 38

Lock-đượ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 39

Phầ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 40

Trong 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

Ngày đăng: 25/03/2015, 11:06

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Douglas L. Perry (2002), VHDL: Programmingby Example, McGraw-Hill Sách, tạp chí
Tiêu đề: VHDL: Programmingby Example
Tác giả: Douglas L. Perry
Năm: 2002
[2] IBM (2001), 32-bit Processor Local Bus Architecture Specifications (Version 2.9) Sách, tạp chí
Tiêu đề: 32-bit Processor Local Bus Architecture Specifications
Tác giả: IBM
Năm: 2001
[3] IBM (2009), PLBV46 Master (v1.00a) Sách, tạp chí
Tiêu đề: PLBV46 Master
Tác giả: IBM
Năm: 2009
[5] Smith, M. J. (1997), Application – SpecificIntegrated Circuits (ASICs the book), Addison-Wesley Sách, tạp chí
Tiêu đề: Application – SpecificIntegrated Circuits (ASICs the book)
Tác giả: Smith, M. J
Năm: 1997
[6] Xilinx (2008), MicroBlaze Processor Reference Guide UG081 (v9.0) Sách, tạp chí
Tiêu đề: MicroBlaze Processor Reference Guide UG081
Tác giả: Xilinx
Năm: 2008
[7] Xilinx (2007), PLBV46_SLAVE_SINGLE (v1.00a) Sách, tạp chí
Tiêu đề: PLBV46_SLAVE_SINGLE
Tác giả: Xilinx
Năm: 2007
[8] Xilinx (2008), Spartan-3E FPGA Starter Kit Board User Guide (v1.1) Sách, tạp chí
Tiêu đề: Spartan-3E FPGA Starter Kit Board User Guide
Tác giả: Xilinx
Năm: 2008
[10] Xilinx (2008), XPS Serial Peripheral Interface (SPI) (v1.00a) [11] Xilinx (2008), XPS UART Lite (v1.00a) Sách, tạp chí
Tiêu đề: XPS Serial Peripheral Interface (SPI)" (v1.00a) [11] Xilinx (2008)
Tác giả: Xilinx (2008), XPS Serial Peripheral Interface (SPI) (v1.00a) [11] Xilinx
Năm: 2008
[13] Integrated_circuit, http://en.wikipedia.org Sách, tạp chí
Tiêu đề: Integrated_circuit
[14] System-on-chip, http://en.wikipedia.org [15] http://www.fpga4fun.com Sách, tạp chí
Tiêu đề: System-on-chip
[9] Xilinx (2007), EDK 9.2 MicroBlaze Tutorial in Virtex-4 Khác

HÌNH ẢNH LIÊN QUAN

Hỡnh 2: Hệ vi xử lý lừi MicroBlaze [4]. - 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
nh 2: Hệ vi xử lý lừi MicroBlaze [4] (Trang 16)
Hình 3: Cấu trúc bên trong một vi xử lý. - 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
Hình 3 Cấu trúc bên trong một vi xử lý (Trang 18)
Hình 4: Sơ đồ khối máy trạng thái kiểu Mealy. - 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
Hình 4 Sơ đồ khối máy trạng thái kiểu Mealy (Trang 19)
Hình 5: Hệ thống trên chip xây dựng trên cơ sở bộ vi xử lý [14]. - 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
Hình 5 Hệ thống trên chip xây dựng trên cơ sở bộ vi xử lý [14] (Trang 20)
Hình 6: Quy trình thiết kế VLSI [5]. - 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
Hình 6 Quy trình thiết kế VLSI [5] (Trang 23)
Hình 8: Sơ đồ khối một đơn vị logic của FPGA. - 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
Hình 8 Sơ đồ khối một đơn vị logic của FPGA (Trang 25)
Hình 10: Các mức trừu tượng trong mô tả phần cứng. - 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
Hình 10 Các mức trừu tượng trong mô tả phần cứng (Trang 30)
Hỡnh 11: Cấu trỳc lừi xử lý MicroBlaze [6]. - 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
nh 11: Cấu trỳc lừi xử lý MicroBlaze [6] (Trang 32)
Hình 12: Hệ thống chuyển mạch tăng tốc sử dụng MicroBlaze điển hình [9]. - 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
Hình 12 Hệ thống chuyển mạch tăng tốc sử dụng MicroBlaze điển hình [9] (Trang 33)
Hình 13: Không gian địa chỉ các vùng nhớ của MicroBlaze. - 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
Hình 13 Không gian địa chỉ các vùng nhớ của MicroBlaze (Trang 34)
Hình 14: Ví dụ về một hệ thống Bus điển hình của Micro Blaze. - 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
Hình 14 Ví dụ về một hệ thống Bus điển hình của Micro Blaze (Trang 41)
Hình 15 chỉ ra cấu trúc hệ thống bus Bus PLB hỗ trợ 16 Bus chủ và một vài Bus tớ. - 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
Hình 15 chỉ ra cấu trúc hệ thống bus Bus PLB hỗ trợ 16 Bus chủ và một vài Bus tớ (Trang 42)
Hình 18: Quy trình thiết kế hệ thống trên FPGA. - 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
Hình 18 Quy trình thiết kế hệ thống trên FPGA (Trang 51)
Hình 19: Sơ đồ khối hệ vi xử lý đề xuất. - 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
Hình 19 Sơ đồ khối hệ vi xử lý đề xuất (Trang 53)
Hình 20: Sơ đồ khối hệ vi xử lý thực nghiệm. - 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
Hình 20 Sơ đồ khối hệ vi xử lý thực nghiệm (Trang 53)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w