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

Nghiên cứu thiết kế mạch điều khiển và phát triển ứng dụng trên nền

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 (1.8 MB, 106 trang )

NỘI DUNG
DANH SÁCH CÁC BẢNG ............................................................................................. 4
DANH SÁCH CÁC HÌNH VẼ ........................................................................................ 5
DANH MỤC CÁC THUẬT NGỮ ................................................................................... 7
LỜI CAM ĐOAN .......................................................................................................... 10
LỜI CẢM ƠN ............................................................................................................... 11
MỞ ĐẦU ....................................................................................................................... 12
CHƢƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ FPGA ................................................ 13
1.1

FPGA LÀ GÌ ? .................................................................................................. 13

1.2

LỊCH SỬ RA ĐỜI CỦA FPGA ......................................................................... 14

1.3

ỨNG DỤNG CỦA FPGA ................................................................................. 15

1.4

CẤU TRÚC CỦA FPGA ................................................................................... 15

1.5

1.4.1

KHỐI LOGIC FPGA ................................................................................. 16

1.4.2



CÁC PHẦN TỬ TÍCH HỢP SẴN ............................................................. 17

1.4.3

QUY TRÌNH THIẾT KẾ FPGA ................................................................ 17

KẾT LUẬN ....................................................................................................... 20

CHƢƠNG 2: THIẾT KẾ BỘ GIAO TIẾP CÁC GIAO THỨC TRUYỀN THÔNG CƠ
BẢN .............................................................................................................................. 21
2.1

2.2

THIẾT KẾ BỘ GIAO TIẾP SPI ........................................................................ 21
2.1.1

TỔNG QUAN VỀ GIAO THỨC SPI ........................................................ 21

2.1.2

THIẾT KẾ BỘ GIAO TIẾP ADC ADS8344EB ........................................ 22

2.1.3

THIẾT KẾ BỘ GIAO TIẾP ADC ADS8341EB ........................................ 25

THIẾT KẾ BỘ GIAO TIẾP UART ................................................................... 28
2.2.1


TỔNG QUAN VỀ GIAO THỨC UART ................................................... 28

2.2.2

SƠ ĐỒ KHỐI ............................................................................................ 29

2.2.3

MÔ TẢ CÁC TÍN HIỆU IO ...................................................................... 30

2.2.4

MÔ TẢ CHỨC NĂNG CỦA CÁC MODULE CON ................................. 31

1


2.3

THIẾT KẾ BỘ GIAO TIẾP IIC ......................................................................... 48
2.3.1

TỔNG QUAN VỀ GIAO THỨC IIC ......................................................... 48

2.3.2 THIẾT KẾ BỘ GIAO TIẾP CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM (STH25) VÀ
CẢM BIẾN GIA TỐC (MMA7455L) ......................................................................... 50
2.4

KẾT LUẬN ....................................................................................................... 73


CHƢƠNG 3: XÂY DỰNG HỆ THỐNG THU THẬP DỮ LIỆU CẢM BIẾN ............... 76
3.1

SƠ ĐỒ KHỐI HỆ THỐNG ............................................................................... 76
3.1.1

MÔ TẢ CHI TIẾT HỆ THỐNG ................................................................ 76

3.1.2

LỰA CHỌN THIẾT BỊ ............................................................................. 77

3.2

SƠ ĐỒ KHỐI THIẾT KẾ FPGA ....................................................................... 78

3.3

ĐỊNH DẠNG GÓI TIN THU PHÁT ................................................................. 79

3.4

3.4.1

ĐỊNH DẠNG GÓI TIN GỬI TỪ BO MẠCH CHỦ XUỐNG FPGA ......... 79

3.4.2

ĐỊNH DẠNG GÓI TIN GỬI TỪ FPGA LÊN BO MẠCH CHỦ ............... 80


3.4.3

BẢNG MÃ LỆNH ..................................................................................... 81

QUY TRÌNH ĐỌC GHI CỦA CÁC CPU ......................................................... 81
3.5.1

ĐỌC THÔNG QUA UART ...................................................................... 81

3.5.2

GHI THÔNG QUA UART ........................................................................ 82

3.5

BẢNG ĐỊA CHỈ THIẾT BỊ VÀ THANH GHI NGƢỜI DÙNG ........................ 82

3.6

PHƢƠNG THỨC GIẢI MÃ ĐỊA CHỈ THANH GHI/THIẾT BỊ ....................... 84

3.7

PHƢƠNG THỨC KIỂM SOÁT LỖI ................................................................. 85

3.8

CHƢƠNG TRÌNH CHẠY TRÊN BO MẠCH CHỦ.......................................... 85
3.8.1


MÔ TẢ CHỨC NĂNG .............................................................................. 85

3.8.2

RESET FPGA ........................................................................................... 86

3.8.3

CHƢƠNG TRÌNH NHÁY LED & BUZZER ............................................ 86

3.8.4

CHƢƠNG TRÌNH DÒ CHUYỂN ĐỘNG ................................................. 88

3.8.5

CHƢƠNG TRÌNH ĐO NHIỆT ĐỘ & ĐỘ ẨM ......................................... 90

3.8.6

CHƢƠNG TRÌNH LẤY DỮ LIỆU ADC ADS8341EB............................. 93

3.8.7

CHƢƠNG TRÌNH LẤY DỮ LIỆU ADC ADS8344EB............................. 95

2



3.9

3.8.8

CHƢƠNG TRÌNH LẤY DỮ LIỆU CẢM BIẾN GIA TỐC ....................... 98

3.8.9

CHƢƠNG TRÌNH KIỂM TRA THANH GHI ĐIỀU KHIỂN ................. 100

3.8.10

CHƢƠNG TRÌNH KIỂM TRA THANH GHI TRẠNG THÁI ............... 101

KẾT QUẢ ĐO ĐẠC THỰC TẾ ...................................................................... 101

3.10 KẾT LUẬN ..................................................................................................... 103
KẾT LUẬN ................................................................................................................. 105
TÀI LIỆU THAM KHẢO............................................................................................ 106

3


DANH SÁCH CÁC BẢNG
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng

Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng
Bảng

2-1 Mô tả các tín hiệu IO của bộ giao tiếp ADC ADS8344 ................................... 23
2-2 Mô tả các tín hiệu IO của bộ giao tiếp ADC ADS8341 ................................... 25
2-3 Mô tả các tín hiệu IO của bộ giao tiếp UART ................................................. 30
2-4 Mô tả các tín hiệu IO của bộ giao tiếp nhận UART ........................................ 31
2-5 Mô tả các tín hiệu IO của bộ giao tiếp UART phát ......................................... 33
2-6 Mô tả các tín hiệu IO của bộ giao tiếp UART slaver ....................................... 35
2-7 Mô tả các tín hiệu IO của bộ giao tiếp UART master ...................................... 39
2-8 Mô tả các tín hiệu IO của bộ chuyển đổi ký tự sang mã hex............................ 42
2-9 Mô tả các tín hiệu IO của bộ chuyển đổi hex sang ký tự ................................. 43
2-10 Mô tả các tín hiệu IO của bộ đệm ................................................................. 45
2-11 Mô tả các tín hiệu IO của bộ lọc nhiễu UART .............................................. 47
2-12 Mô tả các tín hiệu IO của bộ giao tiếp iic ...................................................... 50

2-13 Mô tả các tín hiệu IO của bộ giao tiếp iic ...................................................... 53
2-14 Mô tả các tín hiệu IO của bộ giao tiếp mma7455l master .............................. 55
2-15 Mô tả các tín hiệu IO của bộ giao tiếp đọc sth25 master ............................... 60
2-16 Mô tả chi tiết các tín hiệu IO của bộ giao tiếp ghi sth25 master .................... 64
2-17 Mô tả chi tiết các tín hiệu IO của bộ giao tiếp iic phát .................................. 69
2-18 Mô tả chỉ tiết các tín hiệu IO của bộ giao tiếp iic nhận.................................. 72
3-1 Định dạng gói tin gửi từ bo mạch chủ xuống FPGA ....................................... 79
3-2 Định dạng gói tin gửi từ FPGA lên bo mạch chủ ............................................ 80
3-3 Bảng mã lệnh.................................................................................................. 81
3-4 Bảng địa chỉ thiết bị và thanh ghi ngƣời dùng ................................................. 82
3-5 Phƣơng thức giải mã địa chỉ thanh ghi/thiết bị ................................................ 84

4


DANH SÁCH CÁC HÌNH VẼ
Hình 1-1 Cấu trúc tổng thể của FPGA ............................................................................ 16
Hình 1-2 Khối Logic FPGA ............................................................................................ 16
Hình 2-1 Kết nối point-to-point một master nối với một slave ......................................... 21
Hình 2-2 Giản đồ timing của giao tiếp SPI của ADC ADS8341EB.................................. 22
Hình 2-3 Sơ đồ khối bộ giao tiếp ADC ADS8344 ............................................................ 23
Hình 2-4 Sơ đồ thuật toán giao tiếp ADC ADS8344 ........................................................ 25
Hình 2-5 Sơ đồ khối bộ giao tiếp ADC ADS8341 ............................................................ 25
Hình 2-6 Sơ đồ khối thuật toán giao tiếp ADC ADS8341 ................................................ 27
Hình 2-7 Khung truyền UART......................................................................................... 29
Hình 2-8 Sơ đồ khối bộ giao tiếp UART .......................................................................... 29
Hình 2-9 Sơ đồ khối bộ giao tiếp nhận UART ................................................................. 31
Hình 2-10 Sơ đồ thuật toán bộ giao tiếp nhận UART ...................................................... 32
Hình 2-11 Sơ đồ khối bộ giao tiếp UART phát ................................................................ 33
Hình 2-12 Sơ đồ thuật toán bộ giao tiếp UART phát ....................................................... 34

Hình 2-13 Sơ đồ khối bộ giao tiếp UART slaver.............................................................. 35
Hình 2-14 Sơ đồ thuật toán bộ giao tiếp UART slaver .................................................... 37
Hình 2-15 Sơ đồ khối bộ giao tiếp UART master ............................................................ 39
Hình 2-16 Sơ đồ thuật toán bộ giao tiếp UART master ................................................... 41
Hình 2-17 Sơ đồ khối bộ chuyển đổi từ ký tự sang mã hex .............................................. 42
Hình 2-18 Sơ đồ thuật toán bộ chuyển đổi từ ký tự sang hex ........................................... 43
Hình 2-19 Sơ đồ khối bộ chuyển đổi từ mã hex sang ký tự .............................................. 43
Hình 2-20 Sơ đồ thuật toán bộ chuyển đổi từ mã hex sang ký tự ..................................... 44
Hình 2-21 Sơ đồ khối bộ đệm .......................................................................................... 45
Hình 2-22 Sơ đồ thuật toán bộ đệm................................................................................. 46
Hình 2-23 Sơ đồ khối bộ lọc nhiễu UART ....................................................................... 46
Hình 2-24 Sơ đồ thuật toán bộ lọc nhiễu UART .............................................................. 47
Hình 2-25 Các thiết bị I2C cùng kết nối vào 2 đường dây SDA, SCL được treo trở......... 48
Hình 2-26 Sơ đồ khối bộ giao tiếp iic .............................................................................. 50
Hình 2-27 Sơ đồ khôi bộ giao tiếp iic .............................................................................. 53
Hình 2-28 Sơ đồ khối bộ giao tiếp mma7455l master ...................................................... 55
Hình 2-29 Sơ đồ thuật toán bộ giao tiếp mma7455l master ............................................. 60
Hình 2-30 Sơ đồ khối bộ giao tiếp đọc sth25 master ....................................................... 60

5


Hình 2-31 Sơ đồ thuật toán bộ giao tiếp đọc sth25 master .............................................. 63
Hình 2-32 Sơ đồ khối bộ giao tiếp ghi sth25 master ........................................................ 64
Hình 2-33 Sơ đồ khối bộ giao tiếp ghi sth25 master ........................................................ 68
Hình 2-34 Sơ đồ khối bộ giao tiếp iic phát ...................................................................... 69
Hình 2-35 Sơ đồ thuật toán bộ giao tiếp iic phát ............................................................. 71
Hình 2-36 Sơ đồ khối bộ giao tiếp iic nhận ..................................................................... 71
Hình 2-37 Sơ đồ thuật toán bộ giao tiếp iic nhận ............................................................ 73
Hình 3-1 Sơ đồ khối hệ thống thu thập dữ liệu cảm biến ................................................. 76

Hình 3-2 Sơ đồ khối thiết kế FPGA thu thập dữ liệu sensor ............................................ 78

6


DANH MỤC CÁC THUẬT NGỮ
STT

Thuật ngữ

Mô tả

1

FPGA (Field-Programmable
Gate Array)

Mảng cổng logic lập trình đƣợc

2

ASIC (Application-Specific
Integrated Circuit)

Vi mạch tích hợp cho một ứng dụng cụ thể

3

RAM (Read Access
Memory)


Bộ nhớ tạm thời

4

ROM (Read Only Memory)

Bộ nhớ chỉ đọc

5

CPLD (Complex
Programmable Logic Device)

Thiết bị logic khả trình phức tạp

6

DSP (Digital Signal
Processing)

Công nghệ xử lý số tín hiệu

7

HDL (Hardware Description
Language)

Ngôn ngữ mô tả phần cứng


8

VHDL (Very high speed
Hardware Description
Language)

Ngôn ngữ mô tả phần cứng tốc độ cao

9

RTL (Register Transfer
Level)

Chuyển giao mức thanh ghi

10

SPLD (Simple Programable
Devices)

Các thiết bị khả trình đơn giản

11

PLA (Programmable Logic
Array)

Mảng logic khả trình

12


LUT (Look Up Table)

Bảng tìm kiếm

13

SOC (System On Chip)

Hệ thống trên một vi mạch

7


14

NGC (Native Generic
Circuit)

File chứa các netlist của mạch

15

EDIF (Electronic Design
Interchange Format)

File chứa các netlist của mạch

16


BRAM (Block Read Access
Memory)

Khối bộ nhớ tạm thời

17

SPI ( Serial Peripheral
Interface)

Giao thức truyền nhận dữ liệu nối tiếp

18

MOSI (Master Out Slave In)

Master sẽ là đầu ra còn Slave sẽ là đầu vào

19

SDO (Slave Data Out)

Dữ liệu đầu ra

20

SDI (Slave Data In)

Dữ liệu đầu vào


21

ADC (Analog to Digital
Convert)

Bộ chuyển đổi tƣơng tự sang số

22

UART (Universal
Asynchonous Serial Receiver
and Transmitter)

Bộ truyền nhận nối tiếp không dồng bộ

23

I2C (Inter-Integrated Circuit)

Giao thức truyền thông nối tiếp trên 2
đƣờng dây

24

SDA (Serial Data)

Dữ liệu nối tiếp

25


SCL (Serial Clock)

Tín hiệu Clock nối tiếp

26

ACK (Acknowledge)

Tín hiệu nhận biết

27

IO (Input/Output)

Các khối vào/ra

28

CPU (Central Processing
Unit)

Bộ xử lí trung tâm

29

ASCII (American Standard
Code for Information

Chuẩn mã trao đổi thông tin Hoa Kỳ


8


Interchange)
30

FF (Flip Flop)

Phần tử nhớ

32

MAC (Multication and
Accumulation)

Bộ cộng nhân

33

AHDL (Altera Hardware
Description Language)

Ngôn ngữ mô tả phần cứng của Altera.

34

CS (Chip Select)

Chọn Chip


35

DI (Data Input)

Dữ liệu vào

36

DO (Data Output)

Dữ liệu ra

9


LỜI CAM ĐOAN
Tác giả xin cam đoan đây là công trình nghiên cứu của riêng tác giả. Các số liệu đƣợc
trích dẫn có nguồn gốc. Các kết quả trình bày trong luận văn là trung thực và chƣa từng
đƣợc ai công bố trong bất kì công trình nào khác.
Tác giả luận văn

NGUYỄN DUY TUYỂN

10


LỜI CẢM ƠN
Lời đầu tiên, tác giả xin gửi lời cảm ơn sâu sắc và chân thành tới TS.Nguyễn Xuân
Dũng, ngƣời anh, ngƣời thầy đã tận tình hƣớng dẫn, chỉ bảo và động viên tác giả trong
suốt quá trình nghiên cứu và viết luận văn để tác giả có thể hoàn thành luận văn này.

Xin chân thành cảm ơn các đồng nghiệp tại công ty ApplistarVN, đã tạo điều kiện
giúp đỡ tác giả trong quá trình thực hiện luận văn.
Cuối cùng xin bày tỏ lòng biết ơn sâu sắc tới gia đình và những ngƣời bạn đã động
viên, chia sẻ, ủng hộ và là chỗ dựa tinh thần giúp tác giả tập trung nghiên cứu và hoàn
thành luận văn của mình.
NGUYỄN DUY TUYỂN

11


MỞ ĐẦU
Đồ án này tập trung vào nghiên cứu thiết kế mạch điều khiển và phát triển ứng
dụng trên nền tảng FPGA. Đồ án sẽ tập trung nghiên cứu vào các vấn đề lớn nhƣ:
Chƣơng 1: Nhiệm vụ đặt ra trong chƣơng 1 là tìm hiểu về công nghệ FPGA, kiến
trúc của nó và quy trình thiết kế trên FPGA.
Chƣơng 2: Nhiệm vụ đặt ra trong chƣơng 2 là đi vào thiết kế các bộ giao tiếp với
các giao thức truyền thông cơ bản bao gồm:
 Bộ giao tiếp SPI: đƣợc thiết kế nhằm mục đích lấy mẫu các giá trị điện áp trong
mạch điện, các giá trị về âm thanh, ánh sáng từ các kênh của ADC.
 Bộ giao tiếp UART: đƣợc thiết kế nhằm mục đích truyền và nhận gói tin có kích
thƣớc cố định. Nội dung của gói tin chính là dữ liệu về nhiệt độ, độ ẩm, âm thanh,
ánh sáng, chuyển động, các giá trị về điện áp trong mạch, các giá trị về tọa độ x, y,
z của thiết bị.
 Bộ giao tiếp I2C: đƣợc thiết kế nhằm mục đich thu thập dữ liệu nhiệt độ, độ ẩm và
dữ liệu về 3 trục tọa độ x, y, z của thiết bị.
Chƣơng 3: Nhiệm vụ đặt ra trong chƣơng 3 là xây dựng ứng dụng thu thập dữ liệu
cảm biến. Ứng dụng này đƣợc chia làm 2 phần:
 Phần thiết kế trên FPGA: nhiệm vụ đặt ra là phải tiến hành tích hợp đƣợc các bộ
giao tiếp cho các cảm biến. Để thực hiện đƣợc việc này phải đƣa ra đƣợc các
phƣơng thức cho việc truy cập vào các cảm biến để đọc/ghi dữ liệu, đồng thời phải

đƣa ra đƣợc định dạng cho các gói tin truyền/nhận giữa FPGA và Armadillo, và
phải đƣa ra đƣợc phƣơng pháp kiểm tra tính chính xác của dữ liệu khi truyền/nhận.


Phần demo trên Armadillo: nhiệm vụ đặt ra là viết chƣơng trình demo trên
Armadillo để tƣơng tác với ngƣời dùng và kiểm tra các chức năng, khả năng hoạt
động của các bộ giao tiếp.
12


CHƢƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ FPGA
1.1 FPGA LÀ GÌ ?
FPGA (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. Vi mạch FPGA đƣợc cấu thành từ các bộ
phận:
 Các khối logic cơ bản lập trình đƣợc (logic block).
 Hệ thống mạch liên kết lập trình đƣợc.
 Khối vào/ra (IO Pads).
 Phần tử thiết kế sẵn khác nhƣ DSP Slice, RAM, ROM, nhân vi xử lý …
So sánh FPGA với ASIC và các vi mạch bán dẫn khác:
ASIC (Application-Specific Integrated Circuit) là một vi mạch IC đƣợc thiết kế dành
cho một ứng dụng cụ thể.
FPGA cũng đƣợc xem nhƣ một loại vi mạch bán dẫn chuyên dụng ASIC, nhƣng nếu
so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thƣ viện logic
thì FPGA không đạt đựợc mức độ tối ƣu nhƣ những loại này, và hạn chế trong khả năng
thực hiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA ƣu việt hơn ở chỗ có thể tái cấu
trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản do vậy chi phí giảm, rút ngắn thời
gian đƣa sản phẩm vào sử dụng.
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình đƣợc dùng cấu trúc mảng
phần tử logic nhƣ PLA, PAL, CPLD thì FPGA ƣu việt hơn các điểm:

 Tác vụ tái lập trình của FPGA thực hiện đơn giản hơn.
 Khả năng lập trình linh động hơn.
 Kiến trúc của FPGA cho phép nó có khả năng chứa khối lƣợng lớn cổng logic
(logic gate), so với các vi mạch bán dẫn lập trình đƣợc có trƣớc nó.

13


Thiết kế hay lập trình cho FPGA đƣợc thực hiện chủ yếu bằng các ngôn ngữ mô tả
phần cứng HDL nhƣ VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn nhƣ Xilinx,
Altera thƣờng cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế, cũng


một số các hãng thứ ba cung cấp các gói phần mềm kiểu này nhƣ Synopsys,

Synplify... Các gói phần mềm này có khả năng thực hiện tất cả các bƣớc của toàn bộ quy
trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là mã RTL).
1.2 LỊCH SỬ RA ĐỜI CỦA FPGA
FPGA đƣợc thiết kế đầu tiên 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ích 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. FPGA có khả năng chứa tới từ
100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng
logic; con số này đối với PAL, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến 10.000.
CPLD đƣợc cấu trúc từ số lƣợng nhất định các khối SPLD (Simple programable
devices, thuật ngữ chung chỉ PAL, PLA). SPLD thƣờng là một mảng logic AND/OR lập
trình đƣợc có kích thƣớc xác định và chứa một số lƣợng hạn chế các phần tử nhớ đồng bộ
(clocked register). Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông
thƣờng hiệu suất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là
vào yêu cầu bài toán.
Kiến trúc của FPGA là kiến trúc mảng các khối logic, khối logic, nhỏ hơn nhiều nếu

đem so sánh với một khối SPLD, ƣu điểm này giúp FPGA có thể chứa nhiều hơn các
phần tử logic và phát huy tối đa khả năng lập trình c ủa các phần tử logic và hệ thống
mạch kết nối, để đạt đƣợc mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với
CPLD.
Một điểm khác biệt với CPLD là trong những FPGA hiện đại đƣợc tích hợp
nhiều những bộ logic số học đã sơ bộ tối ƣu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các

14


bộ nhân cộng (multication and accumulation, MAC), thuật ngữ tiếng Anh là DSP slice
dùng cho những ứng dụng xử lý tín hiệu số DSP.
Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hộ trợ tái cấu
trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt
động bình thƣờng cho các bộ phận khác.
1.3 ỨNG DỤNG CỦA FPGA
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, các hệ thống hàng không, vũ
trụ, quốc phòng, tiền thiết kế mẫu 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ế cho phép FPGA giải quyết lớp những
bài toán phức tạp mà trƣớc kia chỉ thực hiện nhờ phần mềm máy tính, ngoài ra nhờ mật
độ cổng logic lớn FPGA đƣợc ứng dụng cho những bài toán đòi hỏi khối lƣợng tính toán
lớn và dùng trong các hệ thống làm việc theo thời gian thực.
1.4 CẤU TRÚC CỦA FPGA

Cấu trúc tổng thể của FPGA đƣợc mô tả ở hình sau:

15



Hình 1-1 Cấu trúc tổng thể của FPGA

KHỐI LOGIC FPGA

Hình 1-2 Khối Logic FPGA

Phần tử chính của FPGA là các khối logic (logic block). Khối logic đƣợc cấu thành từ
LUT và một phần tử nhớ đồng bộ flip-flop.

16


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.
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ổ sung 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ệ thống mạch liên kết (Interconnection) là khối chuyển mạch của FPGA 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.
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 sử lý PowerPC, 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.
QUY TRÌNH THIẾT KẾ FPGA
Đầu vào thiết kế
Bƣớc đầu tiên trong việc tạo ra một thiết kế mới là phải xác định cấu trúc và chức
năng của nó. Điều này có thể đƣợc thực hiện bằng cách viết một mô hình HDL trên trình
soạn thảo văn bản hoặc vẽ một sơ đồ mạch nguyên lý.

17


Quá trình tổng hợp thiết kế
Bƣớc tiếp theo trong quy trình thiết kế là chuyển các mô tả chi tiết của thiết kế
thành một đại diện phù hợp có thể đƣợc tiếp tục xử lý trong các giai đoạn sau của quy
trình thiết kế. Đại diện này đƣợc gọi là dây nối(nestlist). Trƣớc khi tạo nestlist, công cụ
tổng hợp kiểm tra cú pháp toàn bộ và phân tích hệ thống các thiết kế của bạn để đảm bảo
rằng thiết kế của bạn đƣợc tối ƣu hóa cho kiến trúc thiết kế mà bạn đã lựa chọn. Kết quả
là netlist đƣợc lƣu vào một file NGC (Native Generic Circuit) đối với trình biên dịch của
xilinx hoặc file EDIF (Electronic Design Interchange Format) đối với các công cụ của
Synplify.
Quá trình thực hiện thiết kế
Bƣớc này ánh xạ nestlist đƣợc tạo ra bởi công cụ tổng hợp thiết kế vào cấu trúc nội
của thiết bị. Nó bao gồm 3 bƣớc:
 Biên dịch(Translate): bƣớc này kết hợp tất cả netlist vào và liên kết vào một file
NGD (Xilinx Native Generic Database).
 Ánh xạ(Map): bƣớc ánh xạ thiết kế, cụ thể là file NGD vào các tài nguyên có sẵn trên
thiết bị FPGA nhƣ LUT, Flip-Flop, BRAM… Kết quả là file NCD (Native Circuit
Description) đƣợc tạo.
 Đặt chỗ và định tuyến(Place and Route): bƣớc này tiến hành việc đặt chỗ và định
tuyến thiết kế từ file NCD. File này đƣợc sử dụng làm đầu vào cho việc tạo bitstream.

Quá trình kiểm thử thiết kế
Đây là bƣớc rất quan trọng trong thiết kế. Việc kiểm thử bao gồm tìm ra những vấn đề
trong quá trình thực hiện HDL để làm cho nó phù hợp với mô tả chi tiết của thiết kế. Quy
trình kiểm thử làm giảm việc mô phỏng mã HDL. Quy trình kiểm thử thiết kế thƣờng
đƣợc sử dụng bằng cách sử dụng hai phƣơng pháp: Mô phỏng và phân tích thời gian.
 Mô phỏng chức năng(Functional Simualtion): Phƣơng pháp này cho phép bạn mô
phỏng hoặc xác minh cú pháp và khả năng hoạt động của thiết kế của bạn. Đây là loại
18


mô phỏng kiểm tra các quyết định thiết kế của bạn trƣớc khi thiết kế đƣợc thực hiện và
cho phép bạn thực hiện bất kỳ thay đổi cần thiết sớm trong quá trình thiết kế. Trong
việc mô phỏng chức năng không có thông tin về thời gian đƣợc cung cấp.
 Mô phỏng thời gian(Timing Simualtion): Phƣơng pháp này cho phép bạn kiểm tra
thiết kế đã đƣợc thực hiện có đáp ứng tất cả các yêu cầu chức năng và thời gian và vận
hành nhƣ bạn mong đợi không. Việc mô phỏng thời gian sử dụng thông tin chi tiết về
trễ tín hiệu khi chúng đi qua các thành phần logic và bộ nhớ khác nhau và đi qua dây
nối. Sử dụng thông tin này có thể mô phỏng chính xác hành vi của thiết kế đã thực
hiện. Đây là loại mô phỏng đƣợc thực hiện sau khi thiết kế đã đƣợc đặt chỗ và định
tuyến, bởi vì thông tin về trễ tín hiệu có thể đƣợc ƣớc tính chính xác.
 Phân tích thời gian(Static Timing Analysis): phƣơng pháp này cho phép bạn phân
tích chi tiết thời gian chi tiết dựa vào việc ánh xạ, đặt chỗ hoặc đặt chỗ và định tuyến
thiết kế FPGA. Việc phân tích này có thể hữu ích trong việc đánh giá hiệu quả thời
gian của các đƣờng logic, đặc biệt nếu thiết kế của bạn không đáp ứng các yêu cầu về
mặt thời gian. Phƣơng pháp này không yêu cầu bất kỳ loại mô phỏng nào.
Quá trình tạo file nạp
Quá trình này chạy BitGen tạo file bitstream có thể tải xuống thiết bị.
Quá trình nạp thiết kế
Chƣơng trình nạp sử dụng đầu ra từ quá trình tạo file nạp để cấu hình cho thiết bị
đích của bạn.

Quá trình kiểm tra
Sau khi cấu hình cho thiết bị của bạn, bạn có thể kiểm tra lỗi thiết kế FPGA của
bạn bằng cách sử dụng công cụ Chiscope Pro hoặc bộ phân tích logic ngoài (logic
analyzer).

19


Quá trình ƣớc lƣợng công suất

Sau quá trình thực hiện thiết kế bạn có thể sử dụng công cụ XPower Analyzer
để ƣớc lƣợng và phân tích công suất. Việc phân tích này dựa trên tài nguyên cho
logic và định tuyến của thiết kế.
1.5 KẾT LUẬN
Từ nhiệm vụ đặt ra trong Chƣơng 1 tác giả đã tìm hiểu và nắm đƣợc về kiến trúc tổng
thể của FPGA và các bƣớc thực hiện một thiết kế trên FPGA nhƣ thế nào.

20


CHƢƠNG 2: THIẾT KẾ BỘ GIAO TIẾP CÁC GIAO THỨC TRUYỀN
THÔNG CƠ BẢN
THIẾT KẾ BỘ GIAO TIẾP SPI
TỔNG QUAN VỀ GIAO THỨC SPI
SPI – Serial Peripheral Interface là giao thức truyền nhận dữ liệu nối tiếp. Dữ liệu
truyền nhận đƣợc dịch nối tiếp song công theo xung đồng bộ đƣợc phát bởi master. Kiểu
kết nối cơ bản nhất là một master kết nối với một slave.

Hình 2-1 Kết nối point-to-point một master nối với một slave


Các tín hiệu của giao thức SPI:
Tên tín hiệu

Mô tả

SCK

Clock đồng bộ truyền/nhận dữ liệu luôn đƣợc cung cấp bởi master

CS

Tín hiệu chọn slave. Master tích cực tín hiệu này nếu muốn truyền/nhận dữ liệu
với slave.
Tín hiệu này tích cực mức thấp.

Master: MOSI

Ngõ ra dữ liệu nối tiếp

Slave: SDO hoặc

Với master tín hiệu có tên Master Out Slave In

SO

21


Với slave tín hiệu có tên Slave Data Out
Master: MISO


Ngõ vào dữ liệu nối tiếp

Slave: SDI hoặc SI

Với master tín hiệu có tên Master In Slave Out
Với slave tín hiệu có tên Slave Data In

Với hai đƣờng truyền tín hiệu có thể gọi tên chung là DI (Data Input) và DO (Data
Output).
Khi master muốn truyền/nhận dữ liệu, nó kéo tín hiệu chọn chip /CS xuống mức thấp.
Sau đó, master cung cấp clock đồng bộ việc truyền/nhận dữ liệu trên đƣờng SCK. SPI là
giao thức xử lý song công, dữ liệu đƣợc truyền từ master và slave sẽ diễn ra cùng lúc theo
sự dao động của xung SCK.

Hình 2-2 Giản đồ timing của giao tiếp SPI của ADC ADS8341EB

THIẾT KẾ BỘ GIAO TIẾP ADC ADS8344EB
SƠ ĐỒ KHỐI

22


ads8344_ctrl_bytei(7:0)

ads8344_spi_datao(15:0)

ads8344_request_read_data
ads8344_finished_read_data
BUSY

ads_8344_interface

clk

CS
DCLK

DIN

DOUT

reset

Hình 2-3 Sơ đồ khối bộ giao tiếp ADC ADS8344
MỔ TẢ CÁC TÍN HIỆU IO

Bảng 2-1 Mô tả các tín hiệu IO của bộ giao tiếp ADC ADS8344
#

Tên IO

Vào/ra

Độ rộng

Mô tả

Xuất phát từ khối

Đến khối


dữ liệu
1

Ads8344_ctrl_bytei

Input

8

Byte điều khiển để cấu

Aizu_system

hình các kênh ADC
2

Ads8344_requested_rea

Input

1

d_data

Yêu cầu đọc dữ liệu từ

Aizu_system

ADC


3

BUSY

Input

1

Tín hiệu báo bận

Aizu_system

4

Clk

Input

1

Clock

Clock_divide

5

DIN

Input


1

Dữ liệu vào

Aizu_system

6

Reset

Input

1

Tín hiệu reset

Aizu_system

7

Ads8344_spi_datao

Output

16

Dữ liệu đã đƣợc lấy mẫu từ

Aizu_system


ADC
8

Ads8344_finished_read

Output

1

_dat
9

CS

Hoàn thành việc đọc dữ

Aizu_system

liệu lấy mẫu từ ADC
Output

1

Tín hiệu chọn chip

23

Aizu_system



10

DCLK

Output

1

Clock ngoài cho ADC

Aizu_system

11

DOUT

Output

1

Dữ liệu ra khỏi ADC

Aizu_system

THUẬT TOÁN
Begin

Assign DCLK as 1


Wait read request

Ads8344_read_data ?

No

Yes
Assign ShiftCount as 9

Wait DCLK
Invert DCLK

DCLK ?
Yes
ShiftCount == 0 ?

Yes

No
Decrease ShiftCount by 1

Shift Control byte in
DataShiftReg out

Wait DCLK

Assign ShiftCount as 16

Invert DCLK
No

DCLK ?

ShiftCount == 0 ?

Yes

Yes

ShiftCount == 0 ?
No
Receive serial data from
ADC DOUT

Notify that finished read data

24

Decrease ShiftCount by 1

End


Hình 2-4 Sơ đồ thuật toán giao tiếp ADC ADS8344

THIẾT KẾ BỘ GIAO TIẾP ADC ADS8341EB

SƠ ĐỒ KHỐI
ads8341_ctrl_bytei(7:0)

ads8341_spi_datao(15:0)


ads8341_request_read_data

ads8341_finished_read_data

BUSY

CS
ads_8341_interface

clk

DCLK

DIN

DOUT

reset

SHDN

Hình 2-5 Sơ đồ khối bộ giao tiếp ADC ADS8341
MÔ TẢ CÁC TÍN HIỆU IO

Bảng 2-2 Mô tả các tín hiệu IO của bộ giao tiếp ADC ADS8341
#

Tên IO


Vào/ra

Độ rộng

Mô tả

Xuất phát từ khối

dữ liệu
1

Ads8341_ctrl_bytei

Input

8

Byte điều khiển để cầu

Aizu_system

hình các kênh ADC.
2

Ads8341_request_read_d

Input

1


ata

Yêu cầu đọc dữ liệu

Aizu_system

ADC

3

BUSY

Input

1

Tín hiệu báo bận

Aizu_system

4

Clk

Input

1

Clock


Clock_divide

5

DIN

Input

1

Dữ liệu vào

Aizu_system

6

Reset

Input

1

Tín hiệu reset

Aizu_system

25

Đến khối



×