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

Thiết kế system on chip (soc) và thực hiện bằng FPGA

80 53 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 80
Dung lượng 1,76 MB

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

Nội dung

Nhan đề : Thiết kế system on chip (SoC) và thực hiện bằng FPGA Tác giả : Trần Văn Tiến Người hướng dẫn: Nguyễn Kim Khánh Từ khoá : Công nghệ FPGA Năm xuất bản : 2013 Nhà xuất bản : Trường Đại học Bách khoa Hà Nội Tóm tắt : Trình bày tổng quan về system on chip. Tổng quan về công nghệ FPGA. Thiết kế system on chip và thực hiện bằng FPGA. Kết quả và đánh giá.

Trang 1

LUẬN VĂN THẠC SĨ KỸ THUẬT

KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

Trần Văn Tiến

THIẾT KẾ SYSTEM ON CHIP (SoC) VÀ THỰC HIỆN BẰNG FPGA

Chuyên ng ành : Kỹ thuật máy tính và truyền thông

LUẬN VĂN THẠC SĨ KỸ THUẬT

KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG

NGƯỜI HƯỚNG DẪN KHOA HỌC :

TS NGUYỄN KIM KHÁNH

Hà Nội – 2013

Trang 3

1

L ỜI CAM ĐOAN

Tôi xin cam đoan đề tài nghiên cứu của tôi hoàn toàn do tôi tự làm dưới sự

hướng dẫn của thầy giáo Ts Nguyễn Kim Khánh, Viện công nghệ thông tin và truyền

thông - Đại học Bách Khoa Hà Nội Các số liệu, kết quả trình bày trong luận văn là

hoàn toàn trung thực và chưa từng được công bố trong bất cứ công trình nào

Các tài liệu tham khảo sử dụng trong luận văn đều được dẫn nguồn (có bảng

thống kê các tài liệu tham khảo) hoặc được sự đồng ý trực tiếp của tác giả

Nếu xảy ra bất cứ điều không đúng như những lời cam đoan trên, tôi xin chịu

hoàn toàn trách nhiệm trước Viện và Nhà trường

Hà N ội, ngày 15 tháng 03 năm 2013 Tác gi ả

Tr ần Văn Tiến

Trang 4

2

Để hoàn thành luận văn tốt nghiệp này, tôi xin gửi lời cảm ơn chân thành nhất

t ới tập thể các thầy giáo, cô giáo trường Đại học Bách Khoa Hà Nội nói chung, viện Công ngh ệ thông tin và Truyền thông, bộ môn Kĩ thuật máy tính, đã đào tạo cho tôi

nh ững kiến thức, những kinh nghiệm qúy báu trong suốt thời gian học tập và rèn luyện

Tôi xin chân thành c ảm ơn sự giúp đỡ của thầy Nguyễn Kim Khánh Trong quá trình th ực hiện đề tài thầy đã luôn tận tình hướng dẫn, gợi cho tôi nhiều ý tưởng để hoàn thành lu ận văn một cách tốt nhất

Cu ối cùng là lời cảm ơn chân thành nhất tới gia đình, bạn bè đã động viên, góp

ý và t ạo mọi điều kiên tốt nhất để tôi có thể hoàn thành luận văn tốt nghiệp này

Tuy nhiên, do th ời gian và trình độ có hạn nên đồ án này chắc chắn không tránh

kh ỏi những thiếu sót, tôi rất mong được sự đóng góp ý kiến của các thầy, các cô và toàn th ể các bạn Tôi xin chân thành cảm ơn

Hà N ội, ngày 15 tháng 3 năm 2013

Sinh viên:

Tr ần Văn Tiến

Trang 5

3

M ỤC LỤC

LỜI CAM ĐOAN 1

LỜI CẢM ƠN 2

MỤC LỤC 3

DANH MỤC TỪ VIẾT TẮT, THUẬT NGỮ 6

DANH MỤC CÁC HÌNH 7

DANH MỤC CÁC BẢNG 9

MỞ ĐẦU 10

1 Lý do chọn đề tài 10

2 Lịch sử nghiên cứu 10

3 Mục đích, đối tượng và phạm vi nghiên cứu 10

4 Tóm tắt các luận điểm cơ bản và đóng góp của đồ án 10

5 Phương pháp nghiên cứu 11

NỘI DUNG 12

CHƯƠNG 1 TỔNG QUAN VỀ SYSTEM ON CHIP (SoC) 12

1.1 Cơ sở lý thuyết 12

1.1.1 Sự ra đời của SOC 12

1.1.2 SoC và đặc điểm 14

1.1.3 Công cụ lựa chọn 16

1.2 Quy trình thiết kế System on Chip 17

1.2.1 Giai đoạn thiết kế Front end 18

Trang 6

4

1.2.2 Giai đoạn thiết kế Back end 21

CHƯƠNG 2 TỔNG QUAN VỀ CÔNG NGHỆ FPGA 22

2.1 Giới thiệu về FPGA 22

2.2 Kiến trúc chung của một FPGA 23

1.2.1 Khối logic FPGA 23

1.2.2 Hệ thống mạch liên kết 24

1.2.3 Các phần tử tích hợp sẵn 25

2.3 Ngôn ngữ phần cứng HDL 25

1.3.1 Các ưu điểm của VHDL 26

1.3.2 Cấu trúc một mô hình hệ thống sử dụng ngôn ngữ VHDL 27

CHƯƠNG 3 THIẾT KẾ SYSTEM ON CHIP VÀ THỰC HIỆN BẰNG FPGA 34

3.1 Thiết kế bộ vi xử lý 34

3.1.1 Cấu trúc tổng quát 34

3.1.2 Sơ đồ khối thiết kế 35

3.1.3 Quá trình thiết kế CPU 36

3.1.4 Thực hiện code mổ phỏng trên FPGA 41

3.2 Thiết kế các module nối ghép vào ra 43

3.2.1 Thiết kế module IP UART 43

3.2.2 Thiết kế module IP I2C 53

3.3 Thực hiện hệ thống SoC FPGA dựa trên Vi xử lý 32-bit Nios II 66

3.3.1 Tạo hệ thống NIOS II bằng SOPC Builder 66

3.3.2 Điều khiển Nios sử dụng ngôn ngữ C 73

CHƯƠNG 4 KẾT QUẢ VÀ ĐÁNH GIÁ 76

4.1 Các kết quả đạt được 76

Trang 7

5

4.2 Đánh giá và định hướng 76

KẾT LUẬN 77 TÀI LIỆU THAM KHẢO 78

Trang 8

6

DANH M ỤC TỪ VIẾT TẮT, THUẬT NGỮ

Trang 9

7

Hình 1.1 Sự gia tăng mật độ transitor 12

Hình 1.2 Giảm giá thành sản phẩm 13

Hình 1.3 Mô hình cơ bản SoC 14

Hình 1.4 Quy trình thiết kế SoC 17

Hình 1.5 RTL Coding 18

Hình 1.6 Dynamic Verification 19

Hình 1.7 Synthesis and Scan Insertion 20

Hình 1.8 Formal Verification 21

Hình 2.1 Cấu trúc tổng thể của một FPGA 23

Hình 2.2 Khối Logic 24

Hình 2.3 Bộ bán tổng 27

Hình 2.4 Sơ đồ thiết kế VHDL 32

Hình 2.5 Sơ đồ tổng quát của một chương trình thử (Testbench) 33

Hình 3.1 Sơ đồ khối bộ vi xử lý 35

Hình 3.2 Khối Datapath 36

Hình 3.3 Khối instruction_fetch 38

Hình 3.4 Sơ đồ máy trạng thái FSM cho bộ vi xử lý 40

Hình 3.5 Sơ đồ thiết kế hoàn chỉnh bộ vi xử lý 41

Hình 3.6 Cấu trúc file trên quatus 41

Hình 3.7 Kết quả mô phỏng 43

Hình 3.8 Sơ đồ khối Uart 46

Hình 3.9 Sơ đồ tín hiệu kết nối giữa các module 47

Hình 3.10 Interfaces module baud_gen.v 48

Hình 3.11 Interface module uart_tx.v 49

Hình 3.12 Interface module uart_rx.v 50

Hình 3.13 Interface module fifo.v 51

Trang 10

8

Hình 3.14 Mô phỏng dạng sóng module top.v 53

Hinh 3.15 Truyền nhận dữ liệu UART 53

Hình 3.16 I2C và các thiết bị kết nối 54

Hình 3.17 Bit transfer on the I2C bus 56

Hình 3.18 Sơ đồ khối I2C 58

Hình 3.19 Khối Top_Control 59

Hình 3.20 Khối Byte control 62

Hình 3.20 Trạng thái FSM khối bit control 63

Hình 3.21 Kết quả mô phỏng I2C 65

Hình 3.22 Kết quả mô phỏng I2C trên Modelsim 66

Hình 3.23 SoPC Builder 67

Hình 3.24 Chọn hệ SoPC dựa trên ngôn ngữ Verilog 68

Hình 3.25 Chọn Loại NIOS II 69

Hình 3.26 Tạo bộ nhớ hệ thống 71

Hình 3.27 JTAG UART 71

Hình 3.28 Giao diện phát triển Nios II IDE 73

Hình 3.29 Tạo example hello_world_small 74

Hình 3.30 Nạp chương trình cho Nios II 75

Hình 3.31 Example Hello world small 75

Trang 11

9

Bảng 1.1 Các công cụ phát triển 16

Bảng 3.1 Tập lệnh bộ vi xử lý 39

Bảng 3.1 Module baudgen.v Interfaces Description 48

Bảng 3.2 Module uart_tx.v Interfaces Description 50

Bảng 3.3 Module uart_rx.v Interfaces Description 51

Bảng 3.4 Module fifo.v Interfaces Description 52

Bảng 3.5 UART top module 53

Bảng 3.6 Bảng các thanh ghi 59

Bảng 3.8 Thanh ghi điều lệnh 60

Bảng 3.9 Thanh ghi phát 61

Bảng 3.10 Thanh ghi nhận 61

Bảng 3.11 Thanh ghi trạng thái 61

Trang 12

10

1 Lý do ch ọn đề tài

Hệ thống trên chip SoC (System on Chip) là xu hướng phát triển mới cho các

sản phẩm điện tử ngày nay Mục đích là đưa tất cả các module với các chức năng khác nhau lên cùng một chip sử dụng công nghệ FPGA Và ngày càng có nhiều công ty chuyên thiết kế các module riêng biệt cho phép người thiết kế hệ thống lựa chọn các module phù hợp với yêu cầu, tích hợp vào hệ thống và xây dựng ứng dựng cho sản

phẩm mà không phải xây dựng chi tiết từ đầu từng module riêng lẻ Từ những xu hướng phát trển thực tế, do vậy tôi chọn đề tài : Thiết kế SoC (System on Chip) và thực

hiện bằng FPGA để nghiên cứu tìm hiểu cách thức thực hiện xây dựng thiết kế các IP core, tìm hiểu công nghệ FPGA, xây dựng hệ thống SoC Từ đó có được tài liệu để các

bạn học viên tiếp tục nghiên cứu phát triển hệ thống System on Chip

Luận văn được thực hiện dưới sự hướng dẫn của thầy giáo Ts Nguyễn Kim Khánh, Viện Công nghệ thông và Truyền thông-Đại học Bách Khoa Hà Nội Luận văn được hướng dẫn, xem xét điều chỉnh, báo cáo theo lịch đều đặn 2 tuần/ lần với giáo viên hướng dẫn Luận văn được bắt đầu nghiên cứu từ tháng 10/2012 và hoàn thành vào tháng 03/2013

Tìm hiểu được quy trình xây dựng và thiết kế SoC Tìm hiểu công nghệ FPGA Tìm hiểu các IP core trong hệ thống SoC Thiết kế được các IP Core thiết yếu của hệ

thống SoC : Bộ xử lý, bộ nhớ, các modun nối ghép vào ra Thực hiện hệ thống SoC FPGA dựa trên Vi xử lý 32-bit Nios II

Mục tiêu chính của luận văn là nghiên cứu hệ thống System on Chip, quy trình thiết kế System on Chip, tìm hiểu công nghệ FPGA Xây dựng các khối IP Core của hệ

Trang 13

11

thống System on Chip từ đó có cái nhìn tổng quan để xây dựng hoàn thiện hệ thống SoC

Bố cục của luận văn tốt nghiệp

Chương 1: Tổng quan về System on Chip

Trình bày tổng quan về System on Chip, các quy trình thiết kế và hướng đi của

luận văn trong xây dựng thiết kế hệ thống SoC

Chương 2 : Công nghệ FPGA

Trình bày công nghệ FPGA, kiến trúc FPGA và ngôn ngữ sử dụng cho FPGA Chương 3 : Thiết kế System on Chip và thực hiện bằng FPGA

Thiết kế bộ vi xử lý, bộ nhớ

Thiết kế các module nối ghép vào ra

Thực hiện trên FPGA

Đánh giá các kết quả đạt được

Luận văn được nghiên cứu dựa trên cơ sở lý thuyết từ các tài liệu về SoC, các tài liệu về bộ vi xử lý nói của các tác giả trong và ngoài nước, các website và bài báo

cần thiết để phát triển luận văn Các kết quả của luận văn được thực hiện trên bộ phần

mềm của Altera : Quatus, Modelsim và NiosII

Trang 14

12

1.1 Cơ sở lý thuyết

[2] Trong 40 năm qua đã có sự tiến bộ kinh ngạc trong kĩ thuật silicon và kết

quả là sự tăng nhạnh mật độ và hiệu năng của transitor

Hình 1.1 Sự gia tăng mật độ transitor

Biểu đồ cho thấy sự tiến bộ không ngừng trong việc cải tiến mật độ transistor và đồng thời với đó là sự giảm về giá thành thiết bị

Trang 15

13

Hình 1.2 Giảm giá thành sản phẩm [2] Những công nghệ sản xuất tiên tiến có thể sản xuất các chíp ngày nay có thể

chứa tới 100 triệu transitor, kích thước của transitor được đo bằng nanometer, và xấp xỉ

18 tháng số lượng transitor trên mỗi chip lại tăng lên gấp đôi (Moore’s law) Và kết

quả là rất nhiều các Component (module) bây giờ được tích hợp trên cùng một Printed Circuit Board do vậy tạo ra sự phát triển lĩnh vực thiết kế SOC

Trang 16

14

Hình 1.3 Mô hình cơ bản SoC Hình 1.3 minh họa một số những yếu tố cơ bản của một hệ thống SoC Chúng bao gồm

một số lượng đa dạng các xử lý để kết nối đến một hoặc nhiều thành phần bộ nhớ cùng

với một dãy các cấu hình logic Thường xuyên, SoC cũng có mạch tương tự để quản lý

dữ liệu cảm biến và chuyển đổi tương tự đến kỹ thuật số, hoặc để hỗ trợ truyền dữ liệu không dây.[2]

Ví dụ, một SoC cho điện thoại thông minh sẽ cần phải hỗ trợ, thêm vào đầu vào âm thanh và khả năng đầu ra cho một điện thoại truyền thống, chức năng truy cập internet

và phương tiện truyền thông video, xử lý tài liệu, và giải trí đa phương tiện

chẳng hạn như các trò chơi và phim ảnh

Trang 17

15

- SoC là một hệ thống bao gồm Chip + Software + Integration

o SoC chip bao gồm Embedded Processor, ASIC Logics và các mạch tương tự

o SoC software bao gồm OS, compiler, simulator, firmware, driver, protocol stackIntegrSted development environment (debugger, linker, ICE)Application interface (C/C++, assembly)

o SoC integration bao gồm giải pháp tổng thể cho hệ thống, các kỹ thuật hỗ trợ

và đặc tả của nhà sản xuất

- Điểm điểm :

o Quá trình phát triển SoC nhanh hơn so với phát triển ASIC

o Có một Bus kết nối chuẩn (SoC interconnection) trong hệ thống và tất cả các Component giao tiếp với nhau cần được kết nối tới hệ thống Bus này thông qua các Interface Một số hệ thống Bus :

 AMBA (Advanced Microcontroller Bus Architecture)

 APB (Advanced Peripheral Bus)

 ASB (Advanced System Bus)

 AHB (Advanced High Performance Bus)

o Các Component (hay còn gọi là các Core) này có đặc điểm là khả năng sử

dụng lại ,được phát triển bởi nhà sản xuất, các IP vendor…

 Soft Core : linh động, tính tái sử dụng, dễ tích hợp

 Firm Core : mang đặc tính của cả hai SoftCore và HardCore

 Hard Core : Hiệu suất ,tốc độ hoạt động cao

- Ưu điểm :

o Tiêu thụ ít năng lượng

o Tốc độ hoạt động được cải thiện

o Kích thước mạch nhỏ

o Giá thành rẻ trên mỗi transitor được tích hợp

o Độ tin cậy cao

Trang 18

16

- Nhược điểm :

o Mở rộng độ phức tạp của hệ thống

o Mở rộng yêu cầu kiểm tra (verification) cho toàn bộ hệ thống

- Ứng dụng của SoC trong các lĩnh vực :

o Xử lý tín hiệu tiếng nói

o Xử lý tín hiệu âm thanh và hình ảnh

o Công nghệ thông tin:

 PC interface (USB, PCI,PCI-Express, IDE, etc) Computer peripheries (printer control, LCD monitor controller, DVD controller,.etc)

o Trao đổi dữ liệu :

 Wireline Communication: 10/100 Based-T, xDSL, Gigabit Ethernet, Etc

 Wireless communication: BlueTooth, WLAN, 2G/3G/4G, WiMax, UWB, …,etc

dụng NIOS II IDE

Trang 19

Check Timing

Check Functions

Floorplanning

Place and Route

post-layout STA

Functions with Timing

Tape-out Fail

Pass

Hình 1.4 Quy trình thiết kế SoC

Trang 20

18

Giai đoạn thiết kế Front End thực hiện việc xây dựng thiết kế về mặt luận lý như

viết mã, mô phỏng kiểm tra, thiết đặt các ràng buộc, phân tích thời gian v.v [2][6][8]

Define Architecture

Từ bảng mô tả chi tiết thông số kỹ thuật của thiết kế, người thiết kế sẽ phác họa

sơ đồ khối cho thiết kế bao gồm nhiều khối Logic kết nối với nhau, mỗi khối Logic

thực hiện một chức năng nhất định trong thiết kế

RTL Coding

Sau khi có sơ đồ khối của thiết kế với các khối Logic kết nối với nhau, người thiết kế sẽ tiến hành viết mã RTL cho từng khối Logic đó Viết mã RTL là giai đoạn quan trọng, viết mã RTL ngoài việc đảm bảo đúng chức năng Logic còn phải thỏa mãn

phần cứng yêu cầu trong thiết kế (Flip Flop, Latch, Mux …)

Hình 1.5 RTL Coding

Dynamic Verification

Sau giai đoạn viết mã RTL thiết kế sẽ được mô phỏng động bằng cách đưa các tín hiệu vào và nhận tín hiệu ra sau khi mô phỏng Vì chức năng thiết kế là hoàn toàn

Trang 21

Chương trình viết để đưa tín hiệu ngõ vào và nhận tín hiệu ngõ ra mong muốn được gọi là Testbench Testbench cũng được viết bằng ngôn ngữ mô tả phần cứng để giao tiếp với thiết kế cần mô phỏng

Hình 1.6 Dynamic Verification

Synthesis and Scan Insertion

Sau khi đã đảm bảo về chức năng của thiết kế, thiết kế sẽ được chuyển qua giai đoạn Synthesis và Scan Insertion

Synthesis là quá trình dùng phần mềm để biên dịch mã RTL sang Gate-level Netlist bằng cách kết hợp với các ràng buộc về điều kiện môi trường, ràng buộc thời gian để tương tác với phần mềm nhằm mục đích chọn ra các Cell trong thư viện thỏa các điều kiện ràng buộc của thiết kế Trong quá trình này phần mềm sẽ cố gắng tối ưu

để thỏa các điều kiện ràng buộc Phần mềm của Synopsys thường được sử dụng là Design Compiler (viết tắt là DC)

Những thiết kế ngày nay bao gồm cả thiết kế cho việc kiểm tra lỗi Silicon của quá trình sản xuất, kỹ thuật này gọi là Design For Test (DFT) Một trong những

Trang 22

20

phương pháp của kỹ thuật DFT là Scan Insertion, phương pháp này sẽ tạo nên trong thiết kế những cấu trúc dùng riêng cho việc kiểm tra lỗi Silicon

Hình 1.7 Synthesis and Scan Insertion

STA (Static Timing Analysis)

Thiết kế sau khi được Synthesis phải đảm bảo đúng về mặt chức năng, thỏa mãn các thông số vật lý và phải hoạt động ở một tốc độ nhất định, đây chính là tốc độ yêu

cầu của thiết kế

STA là giai đoạn phân tích về mặt thời gian của thiết kế sau khi Synthesis, phần

mềm sử dụng là PrimeTime cho phép phân tích độ trì hoãn qua các đường truyền tín

hiệu trong thiết kế Kết quả phân tích sẽ là các báo cáo, người thiết kế dựa vào các

bảng báo cáo này để xem tốc độ hoạt động của thiết kế có đạt yêu cầu hay không Trong thực tế quá trình STA được lặp đi lặp lại nhiều lần với Synthesis cho đến khi các yêu cầu về thời gian của thiết kế được thỏa mãn

STA gồm hai giai đoạn: layout STA và post-layout STA Giai đoạn layout STA đảm bảo thiết kế thỏa mãn các yêu cầu về thời gian sau quá trình Synthesis Giai đoạn post-layout STA đảm bảo thiết kế vẫn thỏa về thời gian sau khi Back End thiết đặt các giá trị thực về R, C của các Cell và các dây nối

pre-Formal Verification

Formal Verification là giai đoạn nhằm đảm bảo tính chính xác về mặt chức năng

của thiết kế, không xem xét đến thông số định thời và thông số vật lý của thiết kế Không giống như Dynamic Verification, Formal Verification không đưa các tín hiệu cụ

thể vào để kiểm tra mà thực hiện các phương pháp toán học để so sánh nhằm đảm bảo

Trang 23

21

Gate-level Netlist của thiết kế sau khi Synthesis vẫn đảm bảo đúng chức năng so với

mã RTL ban đầu

Nếu kết quả sau giai đoạn Formal Verification vẫn đảm bảo đúng chức năng so

với mã RTL ban đầu thì chuyển sang giai đoạn thiết kế Back End Ngược lại thì kiểm

tra lại quá trình Synthesis

Hình 1.8 Formal Verification

Floorplanning

Floorplanning là quá trình sắp xếp các khối trong vùng die hay bên trong các

khối khác và giữa chúng phải có định nghĩa các vùng dùng để đi dây

Quá trình Floorplanning có ảnh hưởng rất lớn đến hiệu suất và định thời của mạch,

nhất là đối với những thiết kế phức tạp

Chất lượng Floorplanning ảnh hưởng đáng kể đến chất lượng thiết kế của chúng ta

Place and Route

Place and Route là quá trình đặt các Cell và kết nối dây dựa trên kết nối về mặt

Logic giữa các Cell trong Gate-level Netlist Sau khi hoàn tất việc đặt các Cell và kết

nối dây sẽ tiến hành giai đoạn post-layout STA và post-layout simulation để đảm bảo

Netlist với các giá trị thực về R, C của các Cell và dây nối vẫn thỏa chức năng và thời

gian Nếu không có lỗi, xuất dữ liệu ra dưới dạng file gds2 Nếu có lỗi, kiểm tra lại việc

đặt các Cell và kết nối dây

Tape-out

Kiểm tra lại tất cả các báo cáo sau quá trình Place and Route trước khi đưa đi sản xuất

Trang 24

22

CHƯƠNG 2 TỔNG QUAN VỀ CÔNG NGHỆ FPGA

[1][4] FPGA là viết tắt của "Field Programmable Gate Array", là vi mạch dùng

cấu trúc mảng phần tử logic mà người dùng có thể lập trình được, có thể thực hiện các tính năng logic thông qua máy tính của mình với giá rẻ, và có thể xóa đi viết lại nhiều

lần Xilinx là công ty đầu tiên bán ra FPGA và luôn chiếm thị phần lớn nhất Ngoài ra còn có Alterna, Lattice, Actel, QuickLogic Nhiều nhà sản xuất hiện đang cung cấp rất nhiều cấu trúc và phương pháp xử lý khác nhau Vì vậy, việc chọn một cấu trúc và một phương pháp xử lý để có thể đáp ứng được các yêu cầu về chức năng và độ ổn định, đối với một hệ thống trong thực tế là vấn đề mang tính quyết định Thiết bị logic lập trình được được phát minh lần đầu vào cuối thập kỷ 1970 và ngay lập tức đã trở lên

phổ biến trong ngành công nghiệp bán dẫn Ngoài khả năng lập trình đa dạng, công nghệ này còn có thời gian sản xuất nhỏ nên có khả năng cạnh tranh thương mại rất lớn Hơn nữa, việc thiết kế với nó khá dễ dàng và nó có khả năng lập trình lại nhiều lần

FPGA được thiết kế đầu tiêm bởi Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tính hợp số lượng tương đối lớn các

phần tử bán dẫn vào 1 vi mạch so với kiến trúc trước đó là CPLD (Complex Programmable Logic Device).Điểm tương đồng của CPLD và FPGA là ở chỗ chúng đều bao gồm một số lượng tương đối lớn các phần tử logic khả trình Tuy nhiên mật độ tích hợp thì khác nhau, mật độ cổng logic của CPLD nằm trong khoảng từ vài nghìn đến hàng chục nghìn, trong khi với FPGA thì mật độ tích hợp cỡ hàng chục nghìn cho đến vài triệu

FPGA và CPLD có rất nhiều điểm khác biệt tuy nhiên kiến trúc là điểm khác

biệt chính giữa CPLD và FPGA CPLD có kiến trúc giới hạn ở một mức độ nào đó, nó bao gồm một hoặc nhiều dải logic “sum-of-products” khả trình và được cung cấp một

số tương đối nhỏ các thanh ghi được đồng bộ Điều này làm cho CPLD trở nên không được mềm dẻo lắm, nhưng bù lại trễ timing lại dễ dự đoán hơn và tốc độ kết nối logic

Trang 25

23

cũng cao hơn FPGA Với FPGA, thì kiến trúc theo một cách khác trội hơn hẳn CPLD

bởi vì FPGA sử dụng các liên kết nối Điều này không những tạo cho nó mềm dẻo hơn

rất nhiều mà còn làm tăng độ phức tạp trong thết kế

Điểm khác biệt nữa giữa FPGA và CPLD là trong hầu hết chip FPGA đều có các hàm cấp cao (như bộ cộng và bộ nhân) và các bộ nhớ đã được nhúng vào Ngoài ra, trong các FPGA đời mới còn hỗ trợ đầy đủ hoặc một phần việc cấu hình lại trong hệ

thống, cho phép thay đổi thiết kế tức là có thể cập nhật hệ thống hoặc cấu hình động (dynamic reconfiguration) khi chúng đang ho ạt động như là một chức rất bình thường

Một vài FPGA còn có khả năng cấu hình lại cục bộ (partial re-configuration) tức là một

phần của thiết bị được cấu hình trong khi các phần còn lại vẫn đang hoạt động

Cấu trúc tổng thể của FPGA bao gồm:

- Các khối Logic

- Hệ thống liên kết mạch

- Các phần tử tích hợp sẵn

Hình 2.1 Cấu trúc tổng thể của một FPGA

1.2.1 Kh ối logic FPGA

FPGA chứa trong nó rất nhiều khối logic có thể tái cấu hình CLB (Configurable Logic Blocks) được liên kết với nhau thành bằng các liên kết khả trình (Programmable Interconnect) Các khối vào ra được phân bố xung quanh chip tạo thành các liên kết với

Trang 26

24

bên ngoài Bên trong khối logic CLB có bảng LUT (Look-Up Table) và các phần tử

nhớ (FlipFlop hoặc bộ chốt) LUT (Look up table) 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

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 tạo thành từ gồm 4 khối logic, số lượng các Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA.Nếu nhìn cấu trúc tổng thể của mảng LUT thì ngoài 4 đầu vào kể trên còn hỗ trợ thêm 2 đầu vào bổ xung từ các khối logic phân bố trước và sau nó nâng tổng số đầu vào của LUT lên 6 chân Cấu trúc này là

nhằm tăng tốc các bộ số học logic

Hình 2.2 Khối Logic

1.2.2 H ệ thống mạch liên kết

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 chuyển mạch chứa một số lượng nút chuyển lập trình được đảm bảo cho các dạng liên kết phức tạp khác nhau

Trang 27

25

1.2.3 Các ph ần tử tích hợp sẵn

Ngoài các khối logic tùy theo các loại FPGA khác nhau mà có các phần tử tích hợp thêm khác nhau, ví d ụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4,5 của Xilinx có chứa nhân xử lý PowerPC, hay trong Atmel FPSLIC tích hợp nhân ARV…, hay cho những ứng dụng xử lý tín hiệu số DSP trong FPGA được tích hợp các DSP Slide là bộ nhân cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit

Năm 1980 bộ Quốc phòng Mỹ (DOD) muốn thực hiện việc thiết kế mạch tự dẫn

chứng, muốn theo đuổi một hệ phương pháp thiết kế tổng quát và có thể sử dụng lại được với các công nghệ mới Rõ ràng đã có nhu cầu cho một ngôn ngữ lập trình chuẩn

để mô tả chức năng và cấu trúc của các mạch số đối với việc thiết kế vi mạch (IC) Sau

đó DOD đã tài trợ cho một dự án thuộc chương trình vi mạch có tốc độ rất cao VHSIC (very high speed integrated circuit) để tạo ra ngôn ngữ mô tả phần cứng chuẩn Kết quả

là dự án này đã tạo ra ngôn ngữ mô tả phần cứng VHSIC hay thường được gọi là

VHSIC) như hiện nay

Trang 28

26

VHDL được xem như là sự kết hợp của các ngôn ngữ sau : ngôn ngữ tuần tự + ngôn ngữ đồng thời + netlist + định thời + mô phỏng Do đó cấu trúc VHDL cho phép

thể hiện cách thức thực hiện theo kiểu song song hay tuần tự của một hệ thống số có

hoặc không có timing Nó cũng cho phép vẽ mô hình một hệ thống bằng các liên kết

nối của các thành phần

VHDL được dành cho tổng hợp mạch (synthesis) cũng như mô phỏng mạch (simulation) Dù VHDL có thể mô phỏng một cách đầy đủ, nhưng không phải tất cả các cấu trúc đều được VHDL tổng hợp

1.3.1 Các ưu điểm của VHDL

- Chương trình trong VHDL có th ể được viết theo nhiều cấu trúc khác nhau: Ngẫu nhiên, tuần tự, nối chân, định thời chỉ rõ, ngôn ngữ sinh dạng sóng

- VHDL là một ngôn ngữ phân cấp, hệ thống số có thể được mô phỏng như một kết

nối các khối mà các khối này được thực hiện bởi các khối con khác nhỏ hơn

- Cung cấp một cách mềm dẻo các phương thức thiết kế trên xuống, dưới lên, hoặc tổ

hợp cả hai

- Cung cấp cả hai mode đồng bộ và không đồng bộ

- Linh hoạt trong kĩ thuật mô phỏng số nh ư sử dụng biểu đồ trạng thái, thuật toán, các hàm Boolean

- Có tính đại chúng: VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống

- VHDL cung cấp 3 kiểu mẫu viết khác nhau: structural, dataflow và behavioral

- Không giới hạn về độ lớn của thiết kế khi sử dụng ngôn ngữ

- VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế

Trang 29

27

- Khả năng định nghĩa kiểu dữ liệu mới cung cấp một công cụ hữu hiệu cho thiết kế và

mô phỏng công nghệ mới với một mức rất cao

1.3.2 C ấu trúc một mô hình hệ thống sử dụng ngôn ngữ VHDL

VHDL là ngôn ngữ mô tả phần cứng do vậy mà nó có thể được sử dụng để làm

mô hình của một hệ thống số Hệ thống số có thể đơn giản là các cổng logic hay phức

tạp như một hệ thống hoàn chỉnh Các khối xây dựng n ên ngôn ngữ VHDL gọi là các

khối thiết kế Có 3 khối thiết kế chính:

- Khai báo Entity (Thực thể)

- Khai báo Architecture (Kiến trúc)

- Khai báo Configuration (Cấu hình)

- Đôi khi ta sử dụng các gói (Packages) và mô hình kiểm tra hoạt động của hệ

thống (Testbench)

1.3.2.1 Entity (Th ực thể)

Khai báo thực thể trong VHDL là phần định nghĩa các chỉ tiêu phía ngoài của

một phần tử hay một hệ thống Khai báo Entity là chỉ ra tên của Entity và liệt kê các

cổng vào/ra Các cổng là các (dây) tín hiệu mà qua đó entity giao tiếp với môi trường bên ngoài Ví dụ, một mạch bán tổng được chỉ ra ở hình 8 :

Hình 2.3 Bộ bán tổng Khai báo Entity như sau:

entity HALF-ADDER is

port ( A, B : in BIT;

SUM, CARRY : out BIT);

Trang 30

28

end HATF-ADDER;

Bộ bán cộng này gồm có hai đầu vào là A và B; và hai đầu ra là SUM và CARRY, BIT

là một kiểu cấu trúc ngôn ngữ được định nghĩa trước của FPGA

1.3.2.2 Architecture (Ki ến trúc)

Phần thứ 2 trong mã nguồn VHDL là khai báo Architecture Mỗi một khai báo Entity đều phải đi kèm với ít nhất một Architecture tương ứng Khai báo Architecture trong chương trình phải kết hợp tên của Architecture và một Entity trong chương trình

đó Phần thân Architecture có th ể bao gồm các khai báo về các tín hiệu bên trong, các

phần tử bên trong hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống Tên

của Architecture là nhãn được đặt tuỳ theo người viết chương trình Cấu trúc bên trong của Architecture có thể được viết theo một trong số các kiểu mẫu sau:

- Tập hợp kết nối bên trong của các thiết bị

- Tập các câu lệnh ngẫu nhiên

Trang 31

29

End component;

Begin

X1: XOR2 port map(A,B,SUM);

A1 : AND2 port map (A,B,CARRY);

End HA-STRUCTURE;

- Kiểu luồng dữ liệu

Trong kiểu này, luồng dữ liệu qua Entity trước tiên được biểu diễn bằng các phép gán đồng thời Kiểu luồng dữ liệu của bộ bán cộng được chỉ ra trong ví dụ sau:

Architecture DATAFLOW of HALF-ADDER is

Begin

SUM <= A xor B after 8ns;

CARRY <= A and B after 4ns;

End DATAFLOW;

Trong ví dụ này kiểu luồng dữ liệu sử dụng hai phép gán tín hiệu đồng thời (hoặc gán nối tiếp) Trong phép gán cho tín hiệu thì ký hiệu gán là “<=” Giá trị của biểu biểu

thức bên phải được gán cho tín hiệu bên phía tay trái Một phép gán đồng thời được

thực hiện chỉ khi có bất kỳ tín hiệu trong biểu thức phía phải có sự thay đổi, tức là giá

trị tín hiệu thay đổi Thông tin trễ cũng có thể được thêm vào phép gán bằng cách sử

dụng mệnh đề “after”

- Kiểu behavior

Kiểu behavior chỉ ra cách thức hoạt động của một entity như là một tập hợp lệnh được

thực hiện theo kiểu nối tiếp bằng cách sử dụng process Chúng không chỉ ra rõ ràng cấu trúc của entity mà chỉ ra chức năng của nó Ví dụ sau xem xét kiểu behavior của bộ bán

tổng

Architecture BEHAVIOR of HALF-ADDER is

Begin

Process (A,B)

Trang 32

Một process cũng có một phần để khai báo (trước từ khóa “begin”) và một phần

để trình bày (giữa từ khóa “begin” và “process”) Các lệnh bên trong phần trình bày này được thực hiện theo kiểu nối tiếp Danh sách các tín hiệu được chỉ ra trong dấu ngoặc sau từ khóa “process” tạo thành một danh sách “nhạy” Tức là, khi có sự thay đổi của bất kỳ giá trị nào trong danh sách này thì mới thực hiện các lệnh trong process Tuy nhiên, tất cả các process trong một chương trình thì đều thực hiện đồng thời

Khai báo biến (bắt đầu bằng từ khóa “variable”), trong ví dụ n ày có hai biến X và Y Các biến được gán với ký hiệu là “:=” và giá trị của vế phải gán cho giá trị biến bên trái

- Kiểu hỗn tạp

Kiểu hỗn tạp là kiểu kết hợp cả ba kiểu trên Tức là, bên trong một architecture, chúng

ta có thể sử dụng cả ba cách trình bày trên

Khai báo Configuration dùng để lựa chọn một trong các thân Architecture có

sẵn mà một Entity có hoặc để gắn các khối vào Entity Nếu cho dạng cấu trúc, Configuration có thể được xem như liệt kê các thành phần cho khối mô hình Cho mỗi

khối thì Configuration chỉ rõ Architecture nào cho Entity từ nhiều Architecture Khi Configuration cho tổng hợp Entity -Architecture thì được biên dịch vào thư viện và

Trang 33

31

một thực thể mô phỏng được tạo ra Ví dụ khai báo Configuration trong bộ bán tổng như sau:

Library CMOS-LIB, MY-LIB;

Configuration CONFIG of HALF-ADDER is

VHDL là không giống như cách thực thi chương trình một cách tuần tự như chương trình của PC, các lệnh của VHDL được thực hiện một cách đồng thời Vì lí do này, người ta thường gọi là “mã VHDL” chứ không gọi là “chương trình VHDL”

mới được thực thi một cách tuần tự

Như đã đề cập ở trên, một trong những ưu điểm của VHDL là nó cho phép

tổng hợp một mạch hay một hệ thống trong một thiết bị khả trình (như PLD hoặc

Trang 34

32

FPGA) hoặc trong một chip ASIC Các bước thực hiện một project được chỉ ra trong hình 1.3

Hình 2.4 Sơ đồ thiết kế VHDL Thiết kế được bắt đầu bằng việc viết mã VHDL và lưu vào file có đuôi “.vhd”

có cùng tên với tên của ENTITY Bước đầu tiên trong quá trình tổng hợp là biên dịch Biên dịch là quá trình chuy ển từ ngôn ngữ VHDL bậc cao (mô tả mạch ở mức RTL –

mức chuy ển thanh ghi) sang dạng danh sách kết nối (netlist) ở mức gate Bước thứ hai

là tối ưu, được thực hiện trên danh sách kết nối mức gate để đạt được sự tối ưu về tốc

độ hoặc tối ưu về diện tích sắp đặt Ở giai đoạn này, thiết kế có thể được mô phỏng

Cuối cùng một phần mềm Place-và-route sẽ tạo ra sự sắp đặt (layout) vật lý cho một thiết bị PLD/FPGA hoặc sẽ tạo ra mặt nạ (mask) cho chip ASIC

Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế Kiểm tra một mô hình VHDL được thực hiện bằng cách quan sát hoạt động của nó trong khi mô phỏng và các giá trị thu được có thể đem so sánh với yêu cầu thiết kế Môi trường kiểm tra có thể hiểu như một mạch kiểm tra ảo Môi trường kiểm tra sinh ra các

Trang 35

33

tác động lên bản thiết kế và cho phép quan sát hoặc so sánh kết quả hoạt động của bản

mô tả thiết kế Thông thường thì các bản mô tả đều cung cấp chương hử Nhưng ta cũng có thể tự xây dựng chương trình thử (testbench) Mạch thử thực chất là sự kết

hợp của tổng hợp nhiều thành phần Nó gồm ba thành phần Mô hình VHDL đã qua

kiểm tra, nguồn dữ liệu và bộ quan sát Hoạt độn của mô hình VHDL được kích thích

bởi cá nguồn dữ liệu và kiểm tra tính đúng đắn thông qua bộ quan sát

Hình 2.5 Sơ đồ tổng quát của một chương trình thử (Testbench)

Trong đó: DUT: (device under test) mô hình VHDL cần kiểm tra

Observer: khối quan sát kết quả

Data source: nguồn dữ liệu (khối tạo ra các tín hiệu kích thích)

Trang 36

giữa các phần của datapath Datapath cũng xuất ra các status signal để Control Unit

biết trạng thái hiện tại của hệ thống mà điều khiển phù hợp (ví dụ như giá trị lệnh vừa

lấy được từ ROM, hay các cờ tràn, cờ âm, cờ zero…).[1][2][7]

- Control unit (CU): Phần này đảm nhiệm tạo các control signal phù hợp vào thời điểm thích hợp để điều khiển Datapath hoạt động chính xác Tại một thời điểm, CU ở vào một trạng thái nhất định, trạng thái này xác định bởi giá trị của bộ nhớ trạng thái Các control signal được tạo ứng với mỗi trạng thái nhất định thông qua các mạch tổ

hợp

Trang 37

35

3 1.2 Sơ đồ khối thiết kế

Data path for executing all the instructions

Status Signals Signals

Control Signals

Hình 3.1 Sơ đồ khối bộ vi xử lý

Ở hình trên, 2 thanh ghi PC, IR và Memory sẽ tạo thành khối instruction_fetch

Nếu ko có nhảy hay ngắt quãng bất thường thì PC sẽ tăng dần tương ứng với từng lệnh trong code Sau đó IR được load giá trị là ô nhớ trong memory có địa chỉ là giá trị của

PC Lúc này nội dung IR chính là mã lệnh cần thực thi Quá trình này được điều khiển

bởi 2 control_signal như trong hình (load PC, load IR) và tương ứng với state fetch trong FSM của control unit Sau đó nội dung IR sẽ được đưa sang Control Unit để decode Sau khi xác định yêu cầu của lệnh, FSM sẽ quyết định sẽ rẽ nhánh sang state nào tiếp theo Tương ứng với mỗi nhánh, FSM sẽ đưa ra các control_signal thích hợp

để điều khiển datapath (register, ALU, shifter…) để thực thi lệnh đúng đắn Đồng thời,

Trang 38

36

trong một số lệnh, datapath cần phản hồi các status_signal sang Control Unit để có quyết định thích hợp (chẳng hạn lệnh nhảy có điều kiện JNZ ) Điều này thể hiện sự tương quan “nhịp nhàng” giữa Control Unit và Datapath Khi thiết kế, cần đảm bảo sự tách biệt giữa 2 phần này, đảm bảo 2 phần chỉ giao tiếp với nhau thông qua các signal,

ko để các luồng data từ Datapath “lấn sân” sang Control Unit, bởi vì sự độc lập này là

cơ sở để có thể dễ dàng tính toán Critical Path (nôm na là đường đi dài nhất của dữ liệu trong chuỗi tính toán, giữa các thanh ghi, giữa thanh ghi và bộ nhớ) Các thông số về Crirital Path rất cần thiết để tối ưu các thành phần của Datapath (ảnh hưởng trực tiếp

tới tốc độ bộ xử lí) cũng như trong quá trình cài đặt kĩ thuật pipeline cho máy

- Phân tích kh ối datapath

B_neg_0

BLoad BClr

Datapath

8 bit bus

Hình 3.2 Khối Datapath

Trang 39

37

Các thành phần Register, ALU, Multiplexer đều là các khối cơ bản quen thuộc

Khối ALU thực hiện các phép toán trên 2 toán hạng là 2 thanh ghi A và B (theo bảng các phép toán bên dưới) Kết quả phép toán có thể được update vào thanh ghi B Thanh ghi A có thể load giá trị từ thanh ghi B sang hoặc đọc input từ bên ngoài tùy thuộc vào

lựa chọn của bộ Multiplexer Đồng thời cũng có thêm cổng output để có thể xuất giá trị thanh ghi A ra ngoài Các đường mảnh hơn là các control signal để điều khiển các thành phần trên: Amul (chọn input cho thanh ghi A từ input bên ngoài hoặc từ thanh ghi B), ALoad (cập nhật nội dung A), AClr (xóa A, thường là khi reset), BLoad, BClr, ALUins (chọn lệnh cho ALU) Từ thanh ghi B, một bộ so sánh sẽ đưa ra status_signal

là B_neq_0 để xác định giá trị B có bằng 0 hay ko nhằm phục vụ lệnh nhảy có điều

Trang 40

Ở đây sử dụng thanh ghi PC 4bit để trỏ tới vị trí chương trình hiện tại Giá trị

PC được dùng làm địa chỉ cho ROM Giá trị lệnh đọc từ ROM ra được đưa vào IR Giá

trị PC có thể được cập nhật tăng lên 1, hoặc đước load từ một phần của IR (trường hợp

lệnh nhảy) Ngoài các control_signal IRLoad, IRClr, PCLoad, PCClr tương tự như trên, còn có PCmul dùng để chọn đầu vào cho PC Nội dung IR được đưa sang Control Unit để decode mã lệnh

Ngày đăng: 26/04/2021, 09:54

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[8]. Website : www.xilinx.com [9]. Website : http://www.altera.com Link
[1]. Rapid Prototyping of Digital Systems SOPC Edition : SOPC Edition (James-O.- Hamblen) Khác
[2]. Computer System Design: System-on-Chip [Hardcover] (Michael J. Flynn (Author), Wayne Luk (Author)) Khác
[3]. A Platform-Centric Approach to System-on-Chip (SOC) Design [Hardcover] ( Vijay Madisetti (Author), Chonlameth Arpnikanondt (Author)) Khác
[4]. Advanced FPGA Design: Architecture, Implementation, and Optimization [Hardcover] (Steve kilts) Khác
[5]. Digital Design and Computer Architecture, 2nd Edition (Author(s) : Harris &amp; Harris ) Khác
[6]. Modern VLSI Design System-on-Chip Design, Third Edition (Wayne Wolf (Author)) Khác
[7]. Processor Design: System-On-Chip Computing for ASICs and FPGAs [Hardcover] (Jari Nurmi (Editor)) Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w