Tải bản đầy đủ (.pdf) (84 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.36 MB, 84 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





VŨ THỊ KIM NHUNG






NGHIÊN CỨU VÀ TRIỂN KHAI HỆ VI XỬ LÝ TRÊN
CƠ SỞ LÕI XỬ LÝ MICROBLAZE, THỬ NGHIỆM
ỨNG DỤNG TRÊN FPGA









LUẬN VĂN THẠC SĨ











Hà Nội - 2010
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





VŨ THỊ KIM NHUNG




NGHIÊN CỨU VÀ TRIỂN KHAI HỆ VI XỬ LÝ TRÊN
CƠ SỞ LÕI XỬ LÝ MICROBLAZE, THỬ NGHIỆM
ỨNG DỤNG TRÊN FPGA


Ngành: Công nghệ Điện tử - Viễn thông
Chuyên ngành: Kỹ thuật điện tử
Mã số: 60 52 70


LUẬN VĂN THẠC SĨ


NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. Trần Xuân Tú










Hà Nội - 2010
i

LỜI CẢM ƠN

Trƣớc tiên tôi xin bày tỏ lời cảm ơn sâu sắc tới Tiến sĩ Trần Xuân Tú, ngƣời đã
tận tình chỉ bảo, hƣớng dẫn tôi trong suốt quá trình thực hiện luận văn tại Phòng thí
nghiệm mục tiêu Hệ thống tích hợp thông minh (PTN SIS), thuộc trƣờng Đại học
Công nghệ, Đại học Quốc gia Hà Nội. Thầy đã định hƣớng, gợi mở và trang bị cho tôi
nhiều kiến thức và kinh nghiệm về thiết kế hệ thống xử lý trên chip dựa trên công nghệ
FPGA, một lĩnh vực mà trƣớc khi thực hiện luận văn tôi chƣa đƣợc biết đến.
Tôi xin trân trọng cảm ơn các thầy cô khoa Điện tử - Viễn thông, trƣờng Đại
học Công nghệ, Đại học Quốc gia Hà Nội đã nhiệt tình truyền giảng cho tôi những
kiến thức và kinh nghiệm chuyên ngành trong suốt thời gian tôi học cao học tại
trƣờng.
Đặc biệt tôi xin dành lời cảm ơn chân thành nhất tới các thành viên của Nhóm
nghiên cứu Thiết kế vi mạch tích hợp (VLSI Systems Design Group) thuộc Phòng thí
nghiệm mục tiêu Hệ thống tích hợp thông minh, trƣờng Đại học Công nghệ, những

ngƣời đã cùng thảo luận, hỗ trợ và chia sẻ kinh nghiệm cho tôi trong suốt quá trình
nghiên cứu và làm việc tại đây.
Cuối cùng, tôi xin cảm ơn gia đình và bạn bè đã luôn sát cánh và động viên tôi
để tôi có thể hoàn thành luận văn của mình.
Hà Nội, ngày 15 tháng 7 năm 2010

Vũ Thị Kim Nhung









ii

LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi. Các số liệu, kết
quả nêu trong luận văn là hoàn toàn trung thực và chƣa từng đƣợc công bố ở bất kỳ
công trình nào khác.
Hà Nội, ngày 15 tháng 7 năm 2010
Tác giả



Vũ Thị Kim Nhung


















iii

MỤC LỤC

LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT v
DANH MỤC BẢNG BIỂU vii
DANH MỤC HÌNH VẼ viii
LỜI MỞ ĐẦU 1
Chƣơng 1 Tổng quan về hệ vi xử lý và hệ thống trên một chip 3
1.1. Tổng quan về hệ vi xử lý 3
1.1.1. Kiến trúc một hệ vi xử lý 3

1.1.2. Kiến trúc bên trong của một vi xử lý 6
1.2. Hệ thống trên một chip 9
1.2.1. Giới thiệu về hệ thống trên chip 9
1.2.2. Hạn chế của Hệ thống trên chip 10
1.3. Phƣơng pháp thiết kế vi mạch tích hợp VLSI 11
1.3.1. Giới thiệu về công nghệ và phƣơng pháp thiết kế vi mạch tích hợp VLSI.
11
1.3.2. Công nghệ FPGA và quy trình thiết kế VLSI với công nghệ FPGA 13
1.3.3. Giới thiệu về ngôn ngữ mô tả phần cứng VHDL và ứng dụng của VHDL
trong thiết kế VLSI 17
Chƣơng 2 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
iv
2.3. Các giao tiếp tín hiệu của MicroBlaze 29
2.3.1. Giới thiệu chung 29
2.3.2. Bus xử lý nội PLB 30
2.3.3. Bus nhớ nội LMB (LMB: Local Memory Bus) 31
2.3.4. Bus ngoại vi on-chip OPB (On-chip Peripheral Bus) 32
2.3.5. Bus XCL 33
2.4. Giao diện nhị phân ứng dụng 34
2.4.1. Các kiểu dữ liệu 34
2.4.2. Các quy ƣớc sử dụng ngăn xếp và thanh ghi 34
2.5. Tập lệnh của MicroBlaze 37

2.5.1. Khuôn dạng lệnh 37
2.5.2. Các nhóm lệnh 37
Chƣơng 3 Triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze 39
3.1. Thực thi hệ thống vi xử lý trên kit FPGA sử dụng phần mềm EDK 39
3.2. Ý tƣởng xây dựng hệ vi xử lý sử dụng lõi xử lý MicroBlaze 41
3.3. Thực thi thiết kế 43
3.3.1. Kết nối giữa MicroBlaze và hệ thống bus PLB 43
3.3.2. Kết nối giữa hệ thống bus PLB và các khối ngoại vi 46
3.3.3. Bộ giao tiếp truyền thông nối tiếp UART Lite 47
3.3.4. Giao tiếp ngoại vi nối tiếp SPI (Serial Peripheral Interface) 51
3.3.5. Bộ chuyển đổi tín hiệu số -tƣơng tự DAC 55
3.3.6. Thực thi trên công cụ EDK 60
3.4. Một số kết quả thực thi phần cứng 60
Chƣơng 4 Kiểm thực hệ thống với một số ứng dụng minh hoạ 62
4.1. Thực hiện truyền thông dữ liệu hai chiều giữa hệ vi xử lý và máy tính qua
cổng nối tiếp RS232 62
4.2. Thực hiện chuyển đổi dữ liệu dạng số sang dạng tƣơng tự qua bộ chuyển đổi
tín hiệu DAC 66
4.3. Kết hợp dùng máy tính để điều khiển hệ thống chuyển đổi dữ liệu qua DAC
70
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 73

v

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

Viết tắt
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
µP
Micro Processor
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
vi
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





















vii

DANH MỤC BẢNG BIỂU
Bảng 1: Cấu trúc đƣờng ống 3 bƣớc. 23
Bảng 2: Cấu trúc đƣờng ống 5 bƣớc. 24
Bảng 3: Kiểu dữ liệu Word. 28
Bảng 4: Kiểu dữ liệu Half Word. 28
Bảng 5: Kiểu dữ liệu Byte. 28
Bảng 6: Các kiểu dữ liệu MicroBlaze 34
Bảng 7: Bảng quy ƣớc ngăn xếp. 35
Bảng 8: Các tín hiệu giao tiếp của DAC. 56
Bảng 9: Vô hiệu các thiết bị khác trên FPGA khi kết nối với DAC. 57
Bảng 10: Số lƣợng tài nguyên phần cứng đã sử dụng. 61

viii


DANH MỤC HÌNH VẼ
Hình 1: Sơ đồ khối hệ vi xử lý đơn giản. 3
Hình 2: Hệ vi xử lý lõi MicroBlaze [4]. 5
Hình 3: Cấu trúc bên trong một vi xử lý. 7
Hình 4: Sơ đồ khối máy trạng thái kiểu Mealy. 8
Hình 5: Hệ thống trên chip xây dựng trên cơ sở bộ vi xử lý [14]. 9
Hình 6: Quy trình thiết kế VLSI [5]. 12
Hình 8: Sơ đồ khối một đơn vị logic của FPGA. 14
Hình 9: Quy trình thiết kế VLSI với công nghệ FPGA [18]. 15
Hình 10: Các mức trừu tƣợng trong mô tả phần cứng. 19
Hình 11: Cấu trúc lõi xử lý MicroBlaze [6]. 21
Hình 12: Hệ thống chuyển mạch tăng tốc sử dụng MicroBlaze điển hình [9]. 22
Hình 13: Không gian địa chỉ các vùng nhớ của MicroBlaze. 23
Hình 14: Ví dụ về một hệ thống Bus điển hình của Micro Blaze. 30
Hình 15: Cấu trúc hệ thống Bus PLB hỗ trợ 16 Bus chủ và một vài Bus tớ [2]. 31
Hình 16: Mô tả kết nối giữa liên kết XCL và các bộ đệm FSL tích hợp. 33
Hình 17: Ví dụ mô tả giá trị thay đổi con trỏ ngăn xếp trong các lệnh. 36
Hình 18: Quy trình thiết kế hệ thống trên FPGA. 40
Hình 19: Sơ đồ khối hệ vi xử lý đề xuất. 42
Hình 20: Sơ đồ khối hệ vi xử lý thực nghiệm. 42
Hình 21 : Sơ đồ khối hệ thống giao tiếp bus PLB_V46 Master. 44
Hình 22: Thiết lập tín hiệu giao tiếp lệnh đọc IP client [3]. 45
Hình 23: Thiết lập tín hiệu giao tiếp lệnh viết IP client [3]. 45
Hình 24: Sơ đồ khối hệ thống giao tiếp bus PLB_V46 slave. 46
Hình 25: Sơ đồ khối bộ giao tiếp UART Lite. 48
Hình 26: Các cổng nối tiếp RS232 [8] 49
Hình 27: Minh họa kết nối các chân tín hiệu RS232 với hệ thống. 50
Hình 28: Thiết lập định dạng khung và tốc độ truyền dữ liệu RS232 51
Hình 29: Sơ đồ khối của lõi XPS SPI [11]. 52
ix

Hình 30: Định dạng thanh ghi điều khiển SPI. 53
Hình 31: Minh họa kết nối các chân tín hiệu SPI với hệ thống. 55
Hình 32: Sơ đồ kết nối bộ chuyển đổi số-tƣơng tự [8]. 56
Hình 33: Giản đồ biểu diễn dạng tín hiệu sự truyền thông SPI. 57
Hình 34: Lựa chọn tần số xung clock, tín hiệu
SS
trong cấu hình phần cứng. 58
Hình 35: Giao thức truyền thông SPI với LTC2624 DAC. 59
Hình 36: Mô hình ứng dụng hệ vi xử lý trong truyền thông theo chuẩn RS232. 62
Hình 37: Lƣu đồ thuật toán triển khai ứng dụng với RS232. 63
Hình 38: Kết quả truyền dữ liệu từ MicroBlaze đến máy tính. 65
Hình 39: Kết quả truyền dữ liệu từ máy tính đến MicoBlaze. 65
Hình 40: Mô hình thực hiện ứng dụng hệ vi xử lý với DAC. 66
Hình 41: Lƣu đồ thuật toán triển khai ứng dụng với DAC. 66
Hình 42: Tín hiệu đầu ra trên DAC là xung vuông. 69
Hình 43: Tín hiệu đầu ra trên DAC là xung răng cƣa. 69
Hình 44: Mô hình thực hiện ứng dụng kết hợp của hệ vi xử lý. 70
Hình 45: Lƣu đồ thuật toán triển khai ứng dụng kết hợp. 71






1

LỜI MỞ ĐẦU

Thiết kế và phát triển các vi mạch tích hợp (IC) và các hệ thống điện tử là lĩnh
vực không thể thiếu đƣợc trong việc công nghiệp hóa, hiện đại hóa một đất nƣớc. Sự

ra đời và phát triển của công nghệ FPGA (Field-Programable Gate Array) với các chip
có thể lập trình đƣợc tạo điều kiện cho những nƣớc bƣớc đầu làm quen với thiết kế vi
mạch tích hợp nhƣ chúng ta có thể nhanh chóng hoà nhập với cộng đồng các nƣớc có
ngành công nghiệp điện tử phát triển. Công nghệ FPGA cho phép chế tạo thử hay triển
khai một số ứng dụng với quy mô vừa phải với giá thành phải chăng. Tất nhiên, chúng
ta cũng cần lƣu ý là FPGA chỉ cho phép triển khai các ứng dụng không đòi hỏi đáp
ứng những yêu cầu quá khắt khe về hiệu năng của hệ thống.
Trƣớc đây, một hệ thống điện tử (ví dụ nhƣ hệ thống máy tính) thƣờng bao gồm
nhiều vi mạch gắn trên các bản mạch in khác nhau, đƣợc ghép nối với nhau để thực
hiện các chức năng của hệ thống. Ngày nay, nhờ sự phát triển nhanh chóng của công
nghệ bán dẫn và các kỹ thuật thiết kế mạch tích hợp, chúng ta đã có thể tích hợp cả hệ
thống hoàn chỉnh đó lên trên một vi mạch đơn. Hệ thống tích hợp trên một vi mạch
đơn này đƣợc gọi là Hệ thống trên một chip (trong tiếng Anh gọi là "System-on-Chip"
và viết tắt là "SoC").
Hầu hết các hệ thống trên chip đều chứa đựng ít nhất một vi xử lý (dù đơn giản
hay phức tạp) và các ứng dụng của chúng đều đƣợc xây dựng nhƣ là một hệ vi xử lý
(trên chip hoặc bán trên chip). Trong khuôn khổ đề tài “ Nghiên cứu và triển khai hệ
vi xử lý trên cơ sở lõi xử lý MicroBlaze, thử nghiệm ứng dụng trên FPGA”, tôi
triển khai xây dựng một hệ vi xử lý tƣơng đối đơn giản trên cơ sở lõi vi xử lý
MicroBlaze của hãng Xilinx, các ứng dụng đƣợc thực hiện trên kit phát triển FPGA
Spartan-3E của hãng Xilinx, tạo tiền đề cho việc thiết kế các hệ thống trên chip và
triển khai các ứng dụng cụ thể của hệ vi xử lý về sau.
Báo cáo luận văn đƣợc trình bày gồm 4 chƣơng:
Chương 1. Tổng quan về hệ vi xử lý và hệ thống trên một chip: Chƣơng này
giới thiệu chung về vi xử lý, hệ vi xử lý, hệ thống trên một vi mạch, phƣơng pháp và
công nghệ thiết kế vi mạch VLSI và ngôn ngữ VHDL, một ngôn ngữ thiết kế phần
cứng đƣợc sử dụng trong quá trình thực thi đề tài.
Chương 2. Lõi vi xử lý mềm MicroBlaze: Chƣơng này nghiên cứu, tìm hiểu cụ
thể về lõi xử lý mềm MicroBlaze nhƣ cấu trúc bộ nhớ, các thanh ghi và các giao tiếp
tín hiệu cũng nhƣ tập lệnh của MicroBlaze.

2
Chương 3. Triển khai hệ vi xử lý trên cơ sở lõi xử lý MicroBlaze: Chƣơng này
trình bày cụ thể quá trình thiết kế hệ vi xử lý thực nghiệm trên cơ sở lõi xử lý
MicroBlaze từ ý tƣởng xây dựng hệ vi xử lý đến các bƣớc dùng phần mềm EDK để
kết nối các thành phần trong hệ và thực thi hệ trên kit FPGA Spartan-3E của hãng
Xilinx.
Chương 4. Kiểm thực hệ thống với một số ứng dụng minh hoạ: Chƣơng này
triển khai một số ứng dụng của hệ vi xử lý đã xây dựng ở chƣơng 3.
3

Chương 1 Tổng quan về hệ vi xử lý và hệ thống trên một chip
Trƣớc khi đề cập đến việc triển khai thiết kế hệ vi xử lý, chƣơng này trình bày
những vấn đề cơ bản nhất về vi xử lý, hệ vi xử lý, hệ thống trên một vi mạch. Bên
cạnh đó, phƣơng pháp và công nghệ thiết kế vi mạch VLSI cũng đƣợc trình bày nhằm
làm sáng tỏ phƣơng pháp thiết kế về sau. Trong chƣơng này, tôi cũng dành một phần
mục nhỏ để đề cập đến ngôn ngữ VHDL, một ngôn ngữ thiết kế phần cứng đƣợc sử
dụng trong quá trình thực thi đề tài.
1.1. Tổng quan về hệ vi xử lý
1.1.1. Kiến trúc một hệ vi xử lý
Một hệ vi xử lý hoàn chỉnh bao gồm bộ vi xử lý (µP: MicroProcessor) kết hợp
với các bộ phận điện tử khác nhƣ các mạch nhớ để lƣu trữ chƣơng trình và dữ liệu cho
vi xử lý thực hiện, các mạch ngoại vi giúp con ngƣời làm việc, giao tiếp với vi xử lý,
hệ thống các bus địa chỉ, bus dữ liệu, bus điều khiển để kết nối các mạch trên. Bộ vi
xử lý là thành phần rất cơ bản không thể thiếu đƣợc để tạo nên các hệ vi xử lý.
Sơ đồ khối của một hệ vi xử lý cơ bản đƣợc mô tả nhƣ Hình 1.








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
ADDRESS BUS
Input
Port
Output
Port
DATA BUS
CONTROL BUS
Memory
P
4
trình, do ngƣời lập trình tạo ra. Khi hoạt động, nó đọc mã lệnh (đƣợc ghi dƣới dạng
các chuỗi bit 0, 1) từ bộ nhớ đƣa vào bên trong vi xử lý để giải mã thành các vi lệnh
sau đó điều khiển các khối thực hiện lệnh. Vi xử lý chính là nơi thực hiện các thao tác
tính toán, xử lý dữ liệu, đƣa ra các tín hiệu điều khiển cho toàn bộ hệ thống.
Bộ nhớ trong (internal memory) là bộ phận rất quan trọng của hệ vi xử lý dùng
để lƣu trữ dữ liệu và các chƣơng trình cần thực thi. Bộ nhớ trong đƣợc tổ chức thành
các ô nhớ có độ dài (số bit) bằng nhau, mỗi ô nhớ đƣợc gán một địa chỉ cố định và duy
nhất để vi xử lý quản lý. Tùy theo kiến trúc của vi xử lý mà có thể phân chia bộ nhớ
thành các loại khác nhau. Đối với những vi xử lý có kiến trúc Von Neumann, vùng
nhớ dữ liệu và vùng nhớ chƣơng trình không đƣợc phân chia độc lập và cùng đƣợc
truy nhập theo một đƣờng địa chỉ. Điều này cho phép đƣa dữ liệu vào vùng mã chƣơng

trình và đƣa mã chƣơng trình vào vùng nhớ dữ liệu rồi thực hiện lệnh từ đó. Ngƣợc lại,
với những vi xử lý có kiến trúc Harvard, vùng nhớ cho chƣơng trình và vùng nhớ cho
dữ liệu đƣợc phân biệt rõ ràng. Mã chƣơng trình chỉ có thể đƣợc lƣu và đọc ra từ vùng
nhớ chƣơng trình (thƣờng là bộ nhớ chỉ đọc ROM: Read Only Memory). Các dữ liệu
cũng chỉ có thể đƣợc lƣu và trao đổi với vi xử lý từ bộ nhớ dữ liệu RAM (RAM:
Random Access Memory). Nhƣ vậy, kiến trúc Harvard có ƣu điểm nổi bật hơn kiến
trúc Von Neumann là vùng nhớ dữ liệu và vùng nhớ chƣơng trình đƣợc vi xử lý truy
nhập qua hai kênh riêng biệt, nhờ vậy vi xử lý có thể truy nhập đồng thời cả hai vùng
nhớ, làm tăng tốc độ trao đổi với vi xử lý.
Để giao tiếp với bên ngoài, hệ vi xử lý đƣợc trang bị các khối vào/ra (Input port
và Output port). Mỗi cổng vào/ra có một địa chỉ cố định để có thể đọc dữ liệu vào
hoặc ghi dữ liệu ra cổng. Cổng vào để lấy thông tin từ ngoài vào và cổng ra để đƣa
thông tin từ trong hệ ra ngoài. Các cổng vào ra giúp cho vi xử lý theo dõi và đƣa tín
hiệu điều khiển thích hợp với các quá trình đƣợc điều khiển bên ngoài hệ vi xử lý.
Chúng còn giúp con ngƣời dễ dàng can thiệp, tác động điều khiển, thu nhận kết quả
hoặc kiểm tra hoạt động của hệ vi xử lý.
Các đƣờng Bus là một nhóm các đƣờng dây dẫn điện để truyền tín hiệu giữa
các khối trong hệ. Các đƣờng dây này còn đƣợc gọi chung là bus hệ thống. Bus hệ
thống gồm có ba bus thành phần: bus địa chỉ chuyển tải tín hiệu địa chỉ, bus dữ liệu
chuyển tải tín hiệu dữ liệu và bus điều khiển chuyển tải tín hiệu điều khiển.
Bus địa chỉ (ADDRESS BUS) thƣờng có từ 16, 20, 24 đến 32 đƣờng dây song
song chuyển tải các bit địa chỉ (mỗi đƣờng dây vận chuyển một bit). Bus địa chỉ chứa
địa chỉ tham chiếu tới các ô nhớ, cho biết vị trí dữ liệu cần truy xuất. Khi đọc/ghi bộ
nhớ hoặc cổng I/O CPU sẽ đƣa ra trên bus này địa chỉ của ô nhớ hay cổng I/O cần
đọc/ghi. Độ rộng của bus địa chỉ thể hiện khả năng quản lý bộ nhớ của vi xử lý. Nếu
bus địa chỉ rộng N bit thì vi xử lý có thể quản lý tới 2
N
ô nhớ (mỗi ô nhớ có thể là 8
bit, 16 bit, 32 bit… tùy thuộc vào loại vi xử lý). Nếu đánh địa chỉ theo byte và bus địa
chỉ rộng 8 bit thì vi xử lý có thể quản lý bộ nhớ có dung lƣợng 2

8
byte = 256 byte nhớ.
5
Bus dữ liệu (DATA BUS) thƣờng gồm 4, 8, 16, 32… đƣờng dây song song tùy
thuộc vào bộ vi xử lý cụ thể, dùng để truyền dữ liệu giữa các khối trong hệ vi xử lý.
Độ rộng của bus dữ liệu cho biết số bit dữ liệu mà vi xử lý có thể xử lý cùng một lúc.
Vì thao tác di chuyển dữ liệu chiếm khoảng 2/3 thời gian thực hiện của vi xử lý nên độ
rộng của bus dữ liệu có ảnh hƣởng rất lớn đến hiệu suất làm việc của hệ vi xử lý.
Bus điều khiển (CONTROL BUS) là các đƣờng tín hiệu một chiều, chứa thông
tin điều khiển từ vi xử lý tác động đến các khối chức năng hoặc là các đƣờng chứa
thông tin phản hồi về trạng thái của các khối này cho vi xử lý.
Trên đây là mô tả về một hệ vi xử lý rất đơn giản. Trong thực tế, các hệ vi xử lý
thƣờng đƣợc xây dựng nhắm tới một ứng dụng hoặc một họ ứng dụng nào đó. Trong
trƣờng hợp đó, hệ vi xử lý không chỉ gồm bộ vi xử lý, bộ nhớ trong, các khối I/O, các
đƣờng bus mà còn chứa thêm các đơn vị chức năng khác nhƣ Ethernet, vào/ra nối tiếp
(RS232 hay USB), giao diện màn hình (VGA, LCD), các bộ định thời (Timers)…
Ví dụ một hệ vi xử lý thực tế đƣợc chỉ ra trong Hình 2.

Hình 2: Hệ vi xử lý lõi MicroBlaze [4].
Trong đó:
- MicroBlaze là lõi vi xử lý mềm, thực hiện các thao tác tính toán, xử lý dữ liệu,
đƣa ra các tín hiệu điều khiển cho toàn bộ hệ thống.
6
- Bộ nhớ trong (Local Memory) lƣu trữ dữ liệu và các chƣơng trình cần thực thi
của hệ vi xử lý.
- Các khối ngoại vi vào/ra riêng (Custom I/O Peripherals) dùng để xuất dữ liệu
từ hệ vi xử lý ra ngoài và nhập dữ liệu từ ngoài vào trong hệ vi xử lý.
- Các đƣờng bus dùng để truyền tín hiệu giữa các khối bên trong hệ vi xử lý.
- Các bộ đồng xử lý riêng (Custom Coprocessors) hỗ trợ cho lõi vi xử lý MicroBlaze
thực hiện các chức năng xử lý khác nhau.

- Khối truy nhập bộ nhớ trực tiếp DMA (Direct Memory Access) thực hiện điều
khiển truy nhập trực tiếp bộ nhớ mà không cần sự điều khiển của lõi vi xử lý trong hệ
vi xử lý.
- Khối Ethernet MAC thực hiện điều khiển truyền số liệu cho các host trên
mạng máy tính theo chuẩn Ethernet.
- Bộ phát nhận không đồng bộ vạn năng UART (Universal Asynchronous
Receiver/Transmitter) để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị
ngoại vi theo cách nối tiếp.
- Bộ định thời TIMER thực hiện các chức năng định thời.
Hệ vi xử lý trên còn bao gồm một số thành phần nhƣ điều khiển ngoại vi
(Peripherar Controller), giao diện I
2
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.



7

Hình 3: Cấu trúc bên trong một vi xử lý.
a) Luồng dữ liệu Datapath

Cấu trúc của Datapath gồm ba phần: đơn vị số học và logic ALU (ALU:
Arithmetic Logic Unit), các thanh ghi (registers) và các đƣờng bus dữ liệu.
Đơn vị số học và logic ALU có nhiệm vụ xử lý thông tin, thực hiện các phép
toán số học và logic trên dữ liệu. Tuỳ thuộc vào mức độ phức tạp của các phép toán
cần thực hiện, ALU có thể gồm các bộ cộng, trừ, bộ dịch, khối thực hiện phép toán
logic, hay thậm chí cả các bộ nhân chia… ALU nhận tín hiệu điều khiển từ đơn vị điều
khiển, thực hiện tính toán trên dữ liệu đầu vào và cung cấp tín hiệu trạng thái phản hồi
về đơn vị điều khiển. ALU không chứa các phần tử nhớ, do đó ở đƣờng vào của các
toán hạng và ở lối ra cho kết quả/trạng thái luôn phải có thêm mạch chốt để lƣu các giá
trị này.
Các thanh ghi (registers) thực chất là khối nhớ có dung lƣợng nhỏ dùng để lƣu
trữ dữ liệu tạm thời phục vụ cho quá trình tính toán của ALU. Khối nhớ gồm một tập
các thanh ghi chung và các thanh ghi có chức năng đặc biệt. Trong vi xử lý có hai
thanh ghi quan trọng nhất là thanh ghi lệnh IR (instruction register) và thanh ghi bộ
đếm chƣơng trình PC (Program counter). Thanh ghi lệnh dùng để lƣu trữ mã lệnh của
lệnh, đơn vị điều khiển sẽ căn cứ vào mã lệnh này để điều khiển mọi hoạt động tính
toán của vi xử lý. Thanh ghi đếm chƣơng trình cung cấp địa chỉ hiện tại mà vi xử lý
đang truy nhập tới bộ nhớ chƣơng trình và chỉ ra cho vi xử lý biết lệnh tiếp theo nằm ở
vị trí nào trong bộ nhớ. Ngoài hai thanh ghi này, vi xử lý còn chứa các thanh ghi con
trỏ ngăn xếp, thanh ghi lƣu giá trị đầu vào, đầu ra của ALU… Các thanh ghi trong vi
xử lý đƣợc vi xử lý quản lý qua việc đánh địa chỉ.
8
Đƣờng bus dữ liệu là đƣờng vận chuyển dữ liệu giữa các phần tử nhớ và từ các
phần tử nhớ đến khối tính toán.
Hoạt động của luồng dữ liệu Datapath có thể đƣợc mô tả ngắn gọn nhƣ sau: dữ
liệu đi vào qua đơn vị tính toán số học và logic sau đó đƣợc chốt vào các thanh ghi.
Dữ liệu từ các thanh ghi này đƣợc đƣa lên bus lối ra qua các cửa đệm ba trạng thái. Dữ
liệu từ các thanh ghi cũng có thể đƣa trở lại làm toán hạng cho các mạch tính toán. Các
tín hiệu trạng thái từ khối tính toán sau khi đƣợc chốt vào thanh ghi cùng với mã lệnh
đƣợc đƣa sang làm cơ sở điều khiển cho đơn vị điều khiển. Tất cả các mạch tính toán

số học và logic, các thanh ghi đều đƣợc điều khiển bởi đơn vị điều khiển.
b) Đơn vị điều khiển
Đơn vị điều khiển đƣợc tổ chức thành máy trạng thái FSM (Finite State
Machine). Máy trạng thái là một mạch logic mà tín hiệu đầu ra không những phụ
thuộc vào tín hiệu đầu vào mà còn phụ thuộc vào trạng thái hiện tại của mạch. Có hai
loại máy trạng thái cơ bản là Moore và Mealy. Hình 4 mô tả mô hình máy trạng thái
Mealy gồm ba khối. Khối đầu tiên là một mạch logic tổ hợp có nhiệm vụ tính toán ra
giá trị trạng thái tiếp theo của máy. Trạng thái tiếp theo đƣợc tính toán từ giá trị lối vào
và giá trị trạng thái hiện tại. Khối thứ hai là một khối nhớ, lƣu giữ trạng thái hiện tại
của máy trạng thái. Sau mỗi xung nhịp đồng hồ, giá trị trạng thái hiện tại lại đƣợc cập
nhật bằng kết quả tính toán của khối thứ nhất. Khối thứ ba là mạch logic tổ hợp cho
kết quả đầu ra chính là đầu ra của máy trạng thái. Đầu ra có thể đƣợc tính toán chỉ từ
trạng thái hiện tại của máy trạng thái hoặc đƣợc tính từ trạng thái và các giá trị đầu vào
hiện tại của máy trạng.

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
9
đọc bộ nhớ chƣơng trình, chốt dữ liệu đọc đƣợc vào lối vào thanh ghi lệnh (thao tác
nạp lệnh), tiếp đó là quá trình giải mã lệnh xem yêu cầu của lệnh là gì và cuối cùng
thực hiện lệnh. Trong quá trình thực hiện lệnh, đơn vị điều khiển cũng xem xét cả các
tín hiệu đầu vào là trạng thái của mạch tính toán trong luồng dữ liệu (datapath).
1.2. Hệ thống trên một chip
1.2.1. Giới thiệu về hệ thống trên chip
Các mạch điện tử thông thƣờng bao gồm các linh kiện điện tử đƣợc gắn trên
các bản mạch có kích thƣớc tƣơng đối lớn. Với những thành tựu của công nghệ chế tạo
vật liệu bán dẫn nói riêng và công nghệ chế tạo linh kiện điện tử nói chung, vi mạch
tích hợp IC (Intergrated Circuit) ra đời. Nó bao gồm các linh kiện tích cực, các linh
kiện thụ động, các dây dẫn đƣợc chế tạo trên một đế đơn tinh thể bán dẫn với một quy
trình thống nhất. Sự phát triển tiếp theo của công nghệ chế tạo vi mạch là nhiều IC
đƣợc kết nối với nhau trên một bo mạch để thực hiện một ứng dụng thực tế nào đó.
Hiện nay, công nghệ thiết kế và chế tạo vi mạch phát triển mạnh mẽ đã cho phép tích
hợp một hệ thống hoàn chỉnh trên một phiến silicon gọi là “Hệ thống trên một chip”
(SoC: System on Chip).
Hệ thống trên một chip là một hệ thống điện tử đƣợc xây dựng trên một đế
silicon với ý tƣởng ban đầu là tích hợp tất cả các thành phần của một hệ thống máy
tính lên trên một vi mạch đơn (hay còn gọi là một chip đơn). Một ví dụ về Hệ thống
trên một chip xây dựng trên cơ sở bộ vi xử lý ARM đƣợc chỉ ra nhƣ Hình 5.

Hình 5: Hệ thống trên chip xây dựng trên cơ sở bộ vi xử lý [14].
10
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.
11
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 inch
2
).
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.
12
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
13
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.
14



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.

×