Tải bản đầy đủ (.doc) (47 trang)

nghiên cứu và thiết kế lõi IP mềm của i2c core

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.55 MB, 47 trang )

Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Lỉfícfaj ơf*
Chủng em xin chăn thành cảm ơn thầy Ngũ Đức \ Hoàng
và các anh Nguyễn Minh Chảnh,Trương Trọng Phúc
(Trung tâm ICDREC) đã nhiệt tmh giúp đỡ và hễ trợ
trong suốt quả trình làm khóa luận tôt nghiệp,tạo điêu
kiện cho chủng em hoàn thành tốt khóa luận này.
Chúng em xin chân thành cám ơn quỷ thầy cồ bộ môn Điên-
Điện tử đã cung cập cho chúng em những nền tảng kiến thức
cơ bản vững chắc để chủng em có đù khả năng hoàn thcmh
khóa ỉuận này.
Tp HỒ Chỉ Minh, tháng năm Võ Thanh hải
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
MỤC LỤC
MỤC LỤC . . i
DÀNH MỤC CÁC BẢNG BIÊU iii
DANH MỤC CÁC HÌNH VẼ iii
DANH MỤC CÁC TỪ VIẾT TẮT iii
LỜI NÓI ĐẦU
v

vi
CHƯƠNG 1: NGÔN NGỮ VERILOG VÀ PHẨN MỀM THIẾT KẾ, MÔ PHỎNG 1
1.1 Giới thiệu sơ lược về ngôn ngữ lập trình Verilog [4] 1
1.1.1 Mô tả 1


1.1.2 Tại sao sử dụng Verilog ? 1
1.1.3 Một số qui ước thiết kế [1] 2
1.1.3.1 Cấu trúc chương trình: 3
1.1.3.2 Các kiểu dữ liệu và vùng nhớ: 3
1.1.3.3 Toán tử 4
1.1.3.4 Các cấu trúc điều khiển 6
1.1.3.5 Điều khiển theo sự kiện 7
1.1.3.6 Sự kết hợp giữa nhiều module 8
1.2 Phần mềm thiết kế vi mạch Quartus II [4] 9
1.2.1 Giới thiệu về phần mềm Quartus II 9
1.2.2 Chức năng của phần mềm Quartus n 9

1.2.2.1 Design Entry (Thiết kế ban đầu) 9
1.2.2.2 Tổng hợp (Synthesis) 10
1.2.2.3 Nối dây và định vị các phần tử-Fitting (Placement and Routing) 10
1.2.2.5 Programing and Coníiguration 10
1.3. Phần mền mô phỏng Modelsim Altera [4] 10
CHƯƠNG 2: CHUẨN GIAO TIẾP I2C VÀ BỘ ĐIỀU KHIÊN BUS I2C PCF8584 11
2.1 Chuẩn giao tiếp I2C [3] 11
2.1.1 Giới thiệu chung về chuẩn giao tiếp I2C 11
2.1.2 Đặc điểm giao tiếp 12 c 11
2.1.2.1 Điều kiện START và STOP (START and STOP conditions) 13
2.1.2.2 Định dạng dữ liệu truyền 14
2.1.2.3 Định dạng địa chỉ thiết bị 16
2.1.2.4 Truyền dữ liệu trên bus I2C, chế độ Master - Slave 17
2.1.2.5 Chế độ Multi-Master 19
2.2 Bộ điều khiển bus I2C PCF8584 20
2.2.1 Đặc điểm [2] 20
2.2.2 Sơ đồ và chức năng các chân 21
2.2.3 Miêu tả các thanh ghi [2] 23

2.2.3.1 Thanh ghi địa chỉ nội S0’ 23
2.2.3.2 Thanh ghi đồng hồ S2 23
2.2.3.3 Thanh ghi vector ngắt S3 24
2.2.3.4 Thanh ghi dịch/đệm (shiít register/read buffer) dữ liệu so 24
2.2.4 Truy cập các thanh ghi 28
2.2.5 Giản đồ định thì ở các chế độ hoạt động 29
2.2.6 RESET va STROBE:



T 30
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
2.2.7 Cách chọn chế độ giao tiếp 31
2.2.8 Sơ đồ giao tiếp với các vi điều khiển/vi xử lý 32
CHƯƠNG 3: THIẾT KE VÀ MÔ PHỎNG LÕI IP CORE MỀM ĐIỀU KHIỂN
BUS I2C 33
3.1 Giới thiệu tính năng 33
3.2 Sơ đồ chân 34
3.3 Sơ đồ khối . 35
3.3.1 Mô tả chức năng và mục đích các khối 36
3.3.2 Mô tả các thanh ghi 36
3.4 Thiết kế và phân tích các khối 38
3.4.1 Khối cpu interface 38
3.4.1.1 Tính năng 38
3.4.1.2 Sơ đồ chân 41
3.4.1.3 Mô tả chân 42
3.4.1.4 Giản đồ định thời 44
3.4.2 Khối control 45
3.4.2.1 Tính năng 45
3A.2.2 Sơ đồ chân 45

3.4.2.3 Mô tả chân 46
3.4.2.4 Quá trình hoạt động : 47
3.4.2.5 Lưu đồ hoạt động của từng trạng thái: 50
3.4.3 Khối i2c interface 50
3.4.3.1 Tính năng: 50
3A.3.2 Mô tả chân 51
3.4.3.3 Các trạng thái hoạt động của khối: 53
3.4.3.4 Mô tả hoạt động từng trạng thái: 53
3.4.3.5 Các loại mạch được sử dụng toong khối Ĩ2c interíace 55
3.4.3.6 Giản đồ timing hoạt động của khối: 57
3.4.4. Khối compare 58
3.4.4.1 Mô tả chân 59
3.4.4.2 Hoạt động chi tiết của khối compare 59
3.4.5. Khối clock generator 60
3.4.5.1 Mô tả chân 61
3.4.5.2 Tính năng 62
3.4.6. Khối interrupt 62
3.4.6.1 Mô tả chân 62
3.4.6.2 Mục đích 63
3A.6.3 Thực hiện 63
3.5 Ket quả mô phỏng 63
3.5.1 Chủ truyền - Tớ nhận (Master Transmitter - Slave Receiver) 64
3.5.2 Chủ nhận - Tớ truyền (Master Receiver - Slave Transmitter) 65
3.5.3 Tiếp tục trao đổi dữ liệu sau khi phát lệnh Stop: 66
3.5.3 Restart khi đang trao đổi dữ liệu: 71
3.5.4 Bus lỗi: 73
CHƯƠNG 4: KẾT LUẬN CHUNG VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 74
4.1 Nhận xét chung 74

Trường Đại Học Bách Khoa Tp Hồ Chí Minh

4.1.1 Những kết quả đạt được 74
4.1.2 Những giới hạn tồn tại 74
4.2 Hướng phát triển 75

TÀI LIỆU THAM KHẢO 75
DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1 Sơ đồ và chức năng chân PCF8584 [2] 21
Bảng 2

2 Thiết lập giá trị đường SCL bằng các bit S21 ,S20 [2] 23
Bảng 2

3 Giá trị các bit S24, S23, S22 tương ứng với giá trị tần số đồng hồ ở chân
CLK [2]

24
Bảng 2.4 Thanh ghi điều khiển/trạng thái SI [2] 25
Bảng 2.5 Giá trị bit STA-STO 26
Bảng 2.6 Cách truy cập các thanh ghi của PCF8584 28
Bảng 2.7 Các tín hiệu tự động cài đặt bởi PCF8584 khi giao tiếp với vi điều khiển /
vi xử lý [2] ! 31
Bảng 3.1 Sơ đồ chân I2C Core 34
Bảng 3.2 Các thanh ghi 36
Bảng 3.3 Chức năng các bit của thanh ghi s 1 control (SI c) 36
Bảng 3.4 Chức năng các bit của thanh ghi s 1 status (Sls) 37
Bảng 3.5 Thanh ghi data_buffer (SOd) 38
Bảng 3.6 Mô tả chân khối cpu interface 42
Bảng 3.7 Giải mã địa chỉ các thanh ghi 43
Bảng 3.8 Mô tả chân khối control 46
Bảng 3.9 Mô tả chân khối Ĩ2c interíace 51

Bảng 3.10 Bảng lựa chọn giữa gen clko và scli 568
Bảng 3.11 Mô tả chân khối compare 591
Bảng 3.12 Mô tả chân khối clock generetor 613
Bảng 3.13 Bảng chia tần số đường SCL 61
Bảng 3.14 Bảng chia tần số clock hoạt động của Core 614
Bảng 3.15 Mô tả chân khối interrupt 625
DANH MỤC CÁC HÌNH VẼ
Hình 2.1 BUS 12 c và các thiết bị ngoại vi [5] 11
Hình 2.2 Ket nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế độ
nhanh (Fast mode) [3] 12
Hình 2.3 Truyền nhận dữ liệu giữa chủ/tớ [3] 13
Hình 2.4 Điều kiện START và STOP của bus I2C [3] 14
Hình 2.5 Quá trình truyền 1 bit dữ liệu [3] 15
Hình 2.6 Dữ liệu truyền trên bus I2C [3] 15
Hình 2.7 Bit ACK, Not-ACK trên bus I2C [3] 16
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Hình 2.8 Cấu trúc byte dữ liệu đầu tiên [3] 17
Hình 2.9 Quá trình truyền dữ liệu [3 ] 17
Hình 2.10 Ghi dữ liệu từ chủ đến tớ [3] 18
Hình 2.11 Đọc dữ liệu từ thiết bị tớ [3] 19
Hình 2.12 Quá trình phối hợp đọc/ghi dữ liệu [3] 19
Hình 2.13 Hình dạng và sơ đồ chân bộ điều khiển bus 12 c PCF8584 [2] 20
Hình 2.14 Sơ đồ khối PCF8584 [2] 21
Hình 2.15 Thanh ghi đồng hồ S2 [2] 23
Hình 2.16 Thanh ghi dịch/đệm (shift register/read buffer) dữ liệu so [2] 25
Hình 2.17 Giản đồ định thì chế độ chủ truyền [2] 29
Hình 2.18 Giản đồ định thì chế độ chủ nhận [2] 29
Hình 2.19 Giản đồ định thì chế độ tớ truyền [2] 29
Hình 2.20 Giản đồ định thì chế độ tớ nhận [2] 30
Hình 2.21 Định thì RESET (tw4>=30t

c
ị]
c
) [2] 30
Hình 2 22 Chu kì STRỌBE (tw5=8t
clk
)[2] . 30
Hình 2.23 Chọn lựa chế độ giao tiếp: (1) Giao tiếp với họ MOTOROLA;(2) giao
tiếp với họ INTEL [2] 31
Hình 2.24 Sơ đồ giao tiếp với vi điều khiển 8051/8048 [2] 32
Hình 2.25 Sơ đồ giao tiếp với vi điều khiển 68000 [2] 32
Hình 3.1 Sơ đồ chân I2C core 34
Hình 3.2 Sơ đồ khối I2C IP Core 35
Hình 3.3 Bộ giải mã các thanh ghi 40
Hình 3.4 Sơ đồ chân khối cpu interface 41
Hình 3.5 Ghi dữ liệu vào thanh ghi 44
Hình 3.6 Đọc dữ liệu từ thanh ghi 44
Hình 3.7 Sơ đồ chân khối control 45
Hình 3.8 Sơ đồ máy trạng thái khối control 49
Hình 3.9 Sơ đồ chân khối Ĩ2c interíace 51
Hình 3.10 Sơ đồ máy trạng thái của khối Ĩ2c interíace 53
Hình 3.11 Mạch phát hiện điều kiện Start/Stop trên bus 12 c 55
Hình 3.12 Mạch tạo tín hiệu nội Ĩ2c busy ox 55
Hình 3.13 Mạch đồng bộ scl s và sdai với clock hệ thống 56
Hình 3.14 Mạch lấy dữ liệu tại cạnh lên của xung scli 56
Hình 3.16 Quá trình đọc data và ghi ACK ra I2C bus 57
Hình 3.17 Quá trình trì hoãn xung sclovà khi bus lỗi 58
Hình 3.18 Timing của một số tủi hiệu khác 58
Hình 3.19 Sơ đồ chân khối compare 58
Hình 3.20 Timing compare địa chỉ 60

Hình 3.21 Sơ đồ chân khối clock generator 60
Hình 3.22 Sơ đồ chân khối interrupt 62
Hình 3.23 Mạch tạo cờ ngắt 63
Hình 3.24 Chủ phát Start + địa chỉ + truyền dữ liệu + phát Stop 64
Hình 3.25 Tớ nhận điều kiện Start + địa chỉ + nhận dữ liệu + điều kiện Stop 64
Hình 3.26 Chủ phát Start + địa chỉ + nhận dữ liệu + phát Stop 65
Hình 3.27 Tớ nhận điều kiện Start + địa chỉ + phát dữ liệu +điều kiện Stop 65
Hình 3.28 Chủ phát Start + địa chỉ + truyền dữ liệu + Stop + Start 66
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Hình 3.29 Chủ tiếp tục phát địa chỉ + truyền dữ liệu và lệnh Stop 67
Hình 3.30 Tớ nhận điều kiện Start + địa chỉ + nhận dữ liệu + điều kiện Stop + Start




67
Hình 3.31 Tớ nhận tiếp địa chỉ + nhận dữ liệu + điều kiện Stop 67
Hình 3.32 Chủ phát Start + địa chỉ + truyền dữ liệu + Stop + Start + địa chỉ + nhận
dữ liệu 68
Hình 3.33 Tớ nhận điều kiện Start + địa chỉ + nhận dữ liệu + điều kiện Stop + điều
kiện Start + địa chỉ + truyền dữ liệu 68
Hình 3.34 Chủ phát Start + địa chỉ + nhận dữ liệu + Stop + Start + địa chỉ + truyền
dữ liệu 69
Hình 3.35 Tớ nhận điều kiện Start + địa chỉ + truyền dữ liệu + điều kiện Stop +
điều kiện Start + địa chỉ + nhận dữ liệu 69
Hình 3.36 Chủ phát Start + địa chỉ + nhận dữ liệu + Stop +Start + địa chỉ + nhận dữ
liệu 70
Hình 3.37 Tớ nhận điều kiện Start + byte địa chỉ + truyền dữ liệu + điều kiện Stop +
điều kiện Start + địa chỉ+ truyền dữ liệu 70
Hình 3.38 Chủ phát Start + địa chỉ + truyền dữ liệu + Restart + địa chỉ + truyền dữ

liệu 71
Hình 3.39 Chủ phát Restart + nhận dữ liệu 71
Hình 3.40 Tớ nhận điều kiện Start + địa chỉ + nhận dữ liệu + Restart + địa chỉ +
nhận dữ liệu 72
Hình 3.41 Tớ nhận điều kiện Restart + địa chỉ + truyền dữ liệu 72
Hình 3.42 Bus lỗi khi phát hiện điều kiện Start sai vị trí 73
Hình 3.43 Bus lỗi khi phát hiện điều kiện Stop sai vị trí 73
DANH MỤC CÁC TỪ VIÉT TẮT
Từ viêt tăt Từ đây đủ
IC Integrated Circuit
I2C-BUS Inter IC bus
SDA Serial Data Line
SCL Serial Clock Line
VHDL
VHSIC (Very High Speed Integrated
Circuits) Hardware Language Design
IEEE
Institute of Electronics and Electrical
Engineers
FPGA Field-programmable Gate Array
ACK Acknoledgement
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
LỜI NÓI ĐẦU
Kể từ khi được phát triển bới hãng điện tử Phillips vào đầu những năm 1980, chuẩn
giao tiếp I2C đã trử thảnh một chuẩn giao tiếp quốc tế, được công nhận ở hơn 50 quốc
gia trên thế giới.Bus I2C hiện nay được rất nhiều các hãng điện tử nổi tiếng tích hợp vào
trong các sản phẩm của hãng như vi xứ lý, vi điều khiển Do đó khả năng ứng dụng của
bus I2C trong thiết kế vi mạch và các hệ thống số là rất rộng lớn.Tuy tốc độ giao tiếp
không cao bằng nhiều chuẩn giao tiếp ra đời sau này, nhưng nhờ sự đơn giản về phần
cứng, bus 12 c vẫn là một sự lựa chọn phổ biến cho các hệ thống điều khiển sử dụng vi

xử lý hay vi điều khiển.
Xuất phát từ các yêu cầu thực tế và khả năng ứng dụng rộng rãi của bus I2C, nhóm
chứng em quyết định chọn việc nghiên cứu và thiết kế lõi IP mềm của I2C Core với mục
tiêu đề ra và đã đạt được là Core có thể điều khiển các chế độ hoạt động chủ yếu theo
chuẩn giao tiếp I2C như:
o Chủ truyền (Master Transceiver) o
Chủ nhận (Master Receiver) o Tớ
truyền (Slave Transceiver)
o Tớ truyền (Slave Receiver)
Đồng thời Core có thể giao tiếp ở tốc độ tiêu chuẩn (lOOkb/s) và tốc độ nhanh
(400kb/s).
Khả năng ứng dụng thực tế của đề tài này là có thể tích hợp I2C Core này vào các vi
xử lý hay vi điều khiển do trung tâm ICDREC thiết kế.
Sau đây là bố cục các nội dung được trình bày trong khóa luận:
• Chương 1: Cung cấp các kiến thức cơ bản về ngôn ngữ Verilog , phần
mềm Quartus II và chương trình mô phỏng ModelSim.
• Chương 2: Giới thiệu về chuẩn giao tiếp 12 c ở các phần cơ bản như cấu
trúc phần cứng,cách kết nối giữa các phần tử trên bus,cách thực hiện giao tiếp
truyền nhận dữ liệu giữa các phần tử,định dạng khung dữ liệu.Tiếp theo là đôi nét
cơ bản về bộ điều khiển bus I2C PCF8584 do hãng Phillips chế tạo.Thiết kế của
12c Core trình bày trong luận văn này là dựa theo hình mẫu của PCF8584 với một
số chỉnh sửa nhằm tạo sự đơn giản và thuận tiện cho việc thiết kể.
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Chương 3: Là phần mô tả đặc tính chi tiết của từng module (bộ phận) trong 12 c
Core.Mỗi module đều được miêu tả chi tiết ở các chân vào (input)/ra (output),
cách hoạt động và kết nối với các module khác để tạo nên một I2C Core hoàn
chỉnh.Ngoài ra các sơ đồ khối,sơ đồ máy trạng thái,giản đồ định thì của các
module cũng được trình bày nhằm giúp người đọc có thể dễ dàng tham khảo.
Chương 4: Tổng kết kết quả đạt được,những ưu điểm và hạn chế của đề tài cũng
như hướng phát triển của đề tài trong tương lai.

Trường Đại Học Bách Khoa Tp Hồ Chí Minh
CHƯƠNG 1: NGÔN NGỮ VERILOG VÀ PHẦN MỀM THIẾT KẾ,
MÔ PHỎNG
1.1 Gỉói thiệu sơ lược về ngôn ngữ lập trình Verilog [4]
1.1.1 Mô tả
Verilog là một trong hai ngôn ngữ mô tả phàn cứng chính (gồm VHDL và Verilog ) được
người thiết kế phàn cứng sử dụng để mô tả, thiết kế các hệ thống số, ví dụ như máy tính hay linh
kiện điện tử.
Verilog dễ học và dễ sử dụng hơn VHDL. Verilog được chuẩn hoá theo chuẩn IEEE vào
năm 1995 và 2001. Verilog rất giống ngôn ngữ c và được giới chuyên môn nghiên cứu, sử dụng
nhiều. Vừa gàn gũi với người sử dụng vừa có cấu trúc khá đơn giản.
Verilog có thể được sử dụng để thiết kế hệ thống số ở nhiều mức khác nhau, ví dụ ở mức
cao như các mô hình đặc trưng đến các mức thấp như mô hình bố trí dây, điện trở, transistor trên
một mạch tích hợp; mô tả các cổng logic, flip_flop trong hệ thống số; mô tả thanh ghi và sự di
chuyển dữ liệu giữa các thanh ghi (RTL - Register Transíer Level).
1.1.2 Tại sao sử dụng Verilog ?
Hệ thống số là một hệ thống phức tạp bậc cao. Ở cấp độ chi tiết nhất, chúng có thể bao
gồm hàng nghìn thành phàn như: các transistor hoặc các cổng logic, cho nên với hệ thống số lớn,
thiết kế ở mức cổng không còn sử dụng nữa. Qua nhiều thập kỷ, giản đồ logic của các thiết kế
logic cũng không còn nhiều nữa. Ngày nay, sự phức tạp của phàn cứng đã tăng lên ở một mức độ
mà giản đồ của cổng logic hàu như vô ích khi nó chỉ biểu diễn một mạng lưới phức tạp các liên
kết không theo chức năng của thiết kế. Từ những năm 1970, các kỹ sư điện và máy tính đổi
hướng theo ngôn ngữ mô tả phần cứng (HDL). Hai ngôn ngữ mô tả phần cứng nổi bật trong kỹ
thuật là Verilog và VHDL nhưng những nhà thiết ké công nghệ thích sử dụng Verilog hơn do
giao diện
1
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
gàn gũi với người sử dụng hơn,Verilog khá giống với ngôn ngữ c nên dễ hiểu và dễ sử dụng hơn
so với VDHL.
Verilog cho phép các nhà thiết kế logic thiết kế và mô tả hệ thống số ở nhiều mức độ

khác nhau và có sự hỗ trợ từ các công cụ thiết kế bằng máy tính để giúp cho việc xử lý thiết kế ở
những mức độ khác nhau.
Cách sử dụng cơ bản của Verilog trong thiết kế mạch tích hợp là mô phỏng thiết kế và tạo
mẫu trên FPGA trước khi chuyển sang sản xuất. Verilog được sử dụng để mô tả một cách chính
xác chức năng của bất kỳ hệ thống số nào và nạp chương trình tạo mẫu lên FPGA, ví dụ như máy
tính, các bộ vi xử lý, tuy tốc độ chậm và lãng phí diện tích hơn. Những thiết kế mức thấp hơn
trong Verilog được thực hiện trên VLSI để đạt đến tốc độ cực đại và có diện tích cực tiểu. Tuy
nhiên sử dụng thiết kế dùng Verilog trên FPGA sẽ tiết kiệm chi phí và thời gian thiết kế.
1.1.3 Một số qui ước thiết kế [1]
Các qui ước gàn với ngôn ngữ lập trình c. Lời giải thích được đặt ở cuối câu bởi dấu “//”
hay kí hiệu /* . . . */. Các từ khóa được dành riêng và tất cả ký tự là chữ thường. Ngôn ngữ phân
biệt chữ in và chữ thường.
Một số có thể có dấu hoặc không dấu được xác định theo công thức
<siĩ

e><base formaí><number>
<size> xác định số bit. <base format> là ký tự đơn “ ‘ ”, theo sau là một trong các ký tự b (nhị
phân), d(thập phân), o(bát phân) và h(thập lục phân). <number> chứa các chữ số phù hợp.
Ví du :

‘h8fa //sốhex
‘o765 //số bát phân
4’bllOl // số nhị phân 4 bit 1101
5’d3 // số thập phân 5 bit
- 4’bll //số bù hai 4 bit của 0011 là 1101
Các toán tử là một, hai hay ba ký tự được sử dụng trong biểu thức
2
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
1.1.3.1 Cẩu trúc chương trình:
Module: ngôn ngữ Verilog mô tả hệ thống số như là thiết lập một module

Cấu trúc một module như sau :
moduỉe moduỉe name (danh sách các port);
//các khai báo
ìnput, output, ìnout, reg, wìre, parameter
ề ề ề
//các câu lệnh Inìtìaỉ statement
Aỉways statement Moduỉe Instantìatìon Continuous assìgnment endmodule
Ví du : Thiết kế mô hình hành vi cho cổng NAND moduỉe NAND (ìnl, Ìn2, out);
ìnput ìnl, Ìn2; output out;
assỉgn out=~(inl &in2) endmoduỉe
Với & là toán từ “and”, ~ là toán tử đảo bit. Điều lệnh assign chờ sự thay đổi ở vế phải biểu thức
và kết quả được gán cho biểu thức bên trái (ngõ ra out).
1.1.3.2 Các kiểu dữ liệu và vùng nhớ:
Vì mục đích của Verilog là thiết kế phàn cứng số, nên loại dữ liệu cơ bản để
thiết kế là thanh ghi (reg) và dây (wire). Biến reg lưu trữ giá trị trước đó, giá trị được gán theo
qui trình, trong khi đó biến wire mô tả sự kết nối vật lý giữa các thực thể vật lý như cấu trúc các
cổng. Wire không lưu trữ giá trị. Thực tế một biến wire chỉ là một nhãn trên dây. Dữ liệu wire
chỉ là một trong những loại dữ liệu net trong Verilog.
3
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
a. các kiểu dữ liệu:
Các đổi tượng dữ liệu vvire và dữ liệu reg có thể có những gi á tri sau :
0 logic 0 hoặc sai
1 logic 1 hoặc đúng
X giá trị logic không xác định z trạng thái tổng trở cao của cổng ba trạng thái
Biến reg được gán giá trị ban đầu là X ở đầu chương trình. Biến wire không được nối
với bất kỳ cái gì cũng có giá trị là X
Có thể xác định cỡ của thanh ghi hoặc dây trong khai báo.
Ví dụ :
reg [7:0] A,B; //thanh ghi A và B có 8 bit từ 0 - 7, bit cao nhất là bit 7 (MSB) wire [3:0] data;

//dây data có 4 đường từ 0 - 3
b. Vùng nhớ:
Vùng nhớ được định nghĩa giống như vectơ của thanh ghi. Ví dụ một vùng nhớ gồm 1024 từ,
mỗi từ 16 bit:
reg [15:0] Mem [1024:0];
Kí hiệu Mem[0] sẽ tham chiếu đến vùng nhớ đầu tiên . . .
Chú ý rằng không thể tham chiếu đến một bit trong 1 từ của vùng nhớ, muốn làm điều này phải
chuyển dữ liệu vào một thanh ghi trung gian.
1.1.3.3 Toán tử
a. Toán tử so sánh:
Gồm các toán tử quan hệ so sánh 2 toán hạng và trả ra giá trị logic. Đúng là 1, sai là 0. Nếu bất
kì bit nào không xác định thì kết quả ra là không xác đinh
> lớn hơn
>= lớn hơn hoặc bằng
4
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
< nhỏ hơn
<= nhỏ hơn hoặc bằng == bằng
logic != khác
b. Các toán tử điều kiện:
! đảo logic
&& AND logic
II OR logic
c. Các toán tử set bỉt
~ đảo bit
& AND
I OR
A
XOR
~& NAND

H NOR
d. Các toán tử khác
{,} ghép thanh ghi hoặc dây «
dịch trái thanh ghi » dịch phải
thanh ghi ?: điều kiện
Ví dụ: Dùng điều lệnh assign để viết một module giải đa hợp từ 2 đường sang 4 đường (bạn có
thể tự viết giải đa hợp từ 3 sang 8 hay 4 sang 16)
module demuxịdata, inl, ìnO, outO, outl, out2, out3);
ỉnput data; ỉnput Ỉn0,inl;
5
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
output out0,outl,out2,out3; assỉgn
outO= data&(~inl)&(~inO); assign
outl= data&(~inl)&(inO); assỉgn
out2= data&(ỉnl)&(~inO); assign
out3= data&(inl)&(inO); endmoduỉe
1.1.3.4 Các cẩu trúc điều khiển
Verilog rất phong phú các câu lệnh điều khiển có thể sử dụng trong phàn thủ tục. Hầu hết
chứng rất quen thuộc với những người lập trình bằng ngôn ngữ c. Điểm khác biệt lớn nhất
chính là thay dấu ngoặc {} trong ngôn ngữ c bằng từ khóa begin và end trong Verilog . Như đã
nói ở trên, dấu ngoặc {,} dùng để nối chuỗi các bit. Có các loại cấu trúc sau:
Cấu trúc if_____eỉse
Cấu frúc case: không giống cẩu trúc case trong c ở chô không cần lệnh break.
Vỉ dụ:
case (State)
stO: State = stl;
stl: State
= St2;
St2:
State

= St3;
St3:
State
II
Co
endcase
Ví dụ: Một module 3 trạng thái dùng always và cấu trúc if .else, nếu ngõ Con là 1 thì ngõ ra
bằng ngõ vào, nếu Con là 0 thì ngõ ra sẽ ở trạng thái tổng trở cao. moduỉe trìstateỢn, Con,
Out); ìnput In, Con; output Out;
6
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
reg
Out;
aỉways
begin
if (Con==l&apos;bl)
Out=In;
eỉse
Out=l &apos;bz; end
endmoduỉe
Tiếp theo chúng ta sẽ tìm hiểu về khói lệnh aỉways điều khiển theo sự kiện (rất thông dụng trong
việc viết các module có xung clock), sự kết hợp giữa nhiều module và một số ví dụ.
1.1.3.5 Điều khiển theo sự kiện
Điều khiển theo sự kiện có hai loại: điều khiển theo tác động cạnh và điều khiển theo tác động
mức. Điều khiển theo tác động cạnh hay mức có dạng như sau :
@ sự kiện điều khiển câu lệnh
Với điều khiển theo tảc động cạnh ta có hai từ khóaposedge (cạnh lên) và negedge (cạnh xuống)
Ví dụ:
aỉyvays @(posedge cỉock) //tác động ở cạnh lên của xung clock aỉways
@(negedge cỉock) //tác động ở cạnh xuống của xung clock always @(regìsterl)

//tác động với bất kỳ sự thay đổi nào trên thanh ghi registerl
Ví dụ: Module đếm lên đơn giản với ngõ ra out 8 bit, chân xung clock clk, chân enable cho phép
và chân reset để ngõ ra trở về 0. Khi có cạnh lên của clk, nếu reset là 0, enable là 1 thì ngõ ra out
sẽ tăng lên.
7
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
moduỉe counter ( out , // Output of the counter enabỉe , // enabỉefor counter
cỉk , // cỉock ìnput reset // reset ìnput );
output [7:0] out; ìnput enabỉe, cỉk, reset; reg [7:0] out; aỉways @(posedge cỉk)
if (reset) begìn //active high reset out
<= 8&apos;b0; end
eỉse ỉf (enabỉe) begin
out <= out + 1; end
endmoduỉe
1.1.3.6 Sự kết hợp giữa nhiều module
Do trong một module lớn, thông thường người ta phải chia ra nhiều module nhỏ để dễ viết và dễ
kiểm soát lỗi hơn. Do đó càn phải có một top module để gộp tất cả các module nhỏ đó lại trở
thành một module duy nhất. Sự kết hợp module có dạng sau:
Tên module (port kết hợp);
Port kết hợp có thể khai báo theo dạng : tên port (port mới định nghĩa)
Ví dụ: có một moduỉe AND(inl ,in2,out) và một moduỉe NOT(in,out) thực hiện sự kết hợp 2
moduỉe trên thành moduỉe top như hình sau:
8
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
moduỉe
top(A,B,
D);
ỉnput A;
ỉnput B;
output

D; wìre
C;
AND and (,ìnl(A), .in2(B), .out(C));
NOTnot (An(C), .out(D)); endmoduỉe
Ghi chú: and và not là 2 tên mới (instance name) của 2 module AND và NOT trong module top.
1.2 Phần mềm thiết kế vi mạch Quartus II [4]
1.2.1 Giới thiệu về phần mềm Quartus II
Quartus II là bộ công cụ dùng cho việc thiết kế vi mạch được phát triển bởi tập đoàn
Altera. Nó tích hợp đày đủ các bộ công cụ dùng cho việc thiết kế, cung cấp đa dạng các Design
entry chẳng hạn như Verilog, VHDL
Cung cấp công cụ tổng họp ở mức logic (logic synthesis), cung cấp công cụ mô phỏng
phân tích định thời và công suất cũng như cho phép cấu hình và nạp vào thiết bị.
1.2.2 Chức năng của phần mềm Quartus II
1.2.2.1 Design Entry (Thiết kế ban đầu)
Đó là mạch điện được thiết kế theo yêu cầu dựa trên:
i. Sơ đồ mạch điện.
ii. Ngôn ngữ phàn cứng như:
+ Verilog
+ VHDL + AHDL
9
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
1.2.2.2 Tổng hợp (Syníhesis)
Thiết kế sẽ được tổng hợp thành một mạch điện, mạch điện này cấu tạo bởi các LEs nằm
trên chíp FPGA
LEs (Logic Elements): đó là đơn vị logic nhỏ nhất nằm trên chíp FPGA của
Altera.
1.2.2.3 Nổi dây và định vị các phần tử - Fiítìng (Placement and Routìng)
Xác định vị trí và thiết lập lộ trinh để kết nối các LEs được sử dụng trên FPGA.
1.2.2.4 Định thì và mô phỏng (Tỉngming Anaỉysis and Simulation)
Phân tích thời gian trễ (Delay) dựa vào lộ trình của các LEs được sử dụng trên FPGA theo

thiết kế.
Mạch điện được thiết kế theo yêu cầu sẽ được kiểm tra về mặt chức năng và mặt thời gian
thông qua mô phỏng.
1.2.2.5 Programing and Configuratìon
Nhờ vào việc lựa chọn các chế độ cấu hình được thiết lập sẵn trên board, chương trình


nạp vào sẽ thực thi ngay trên FPGA.
1.3. Phần mền mô phỏng Modelsỉm Aỉtera [4]
Đây là phàn mềm sử dụng để hổ trợ cho quá trình mô phỏng trong quá trình thiết kế từng
module. Quá trình lập trinh và mô phỏng trên ModelSim được thực hiên bàng cách ta cho các
biến đàu vào của Module đó và các biến đàu ra sẽ được sẽ hiển thị trên màn hình mô phỏng cùng
với biến biến đàu vào tương ứng. Kết quả của của quá trình sẽ được kiểm tra liên tục nếu ta cập
nhập các biến đàu vào liên tục.
10
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
CHƯƠNG 2: CHUẨN GIAO TIẾP I2C VÀ BỘ ĐIỀU KHIỂN BUSI2C
PCF8584
2.1 Chuẩn giao tiếp I2C [3]
2.1.1 Giới thiệu chung về chuẩn giao tiếp I2C
Trong các hệ thống điện tử hiện đại ngày nay, rất nhiều ICs hay thiết bị ngoại vi cần phải
giao tiếp với các ICs hay thiết bị khác hay giao tiếp với thế giới bên ngoài. Với mục tiêu đạt được
hiệu quả cho phần cứng tốt nhất với mạch điện đơn giản, Phillips đã phát triển một chuẩn giao
tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit. Đây là
đường Bus giao tiếp giữa các IC với nhau. I2C mặc dù được phát triển bới Philips, nhưng nó đã
được rất nhiều nhà sản xuất IC trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp cho
các giao tiép điều khiển, có thể kể ra đây một vài tên tuổi ngoài Philips như: Texas Intrument(TI),
MaximDallas, analog Device, National Semiconductor Bus I2C được sử dụng làm bus giao
tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC, AVR, ARM

chip nhớ như: RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương
tự(DAC), IC điểu khiển LCD, LED
RpỈ
T ỉ I______
uC ADC DAC uC
Master Slave Slave Slave
Hình 2.1 BUSI2C và các thiết Aí

ngoại Ví

[5]
2.1.2 Đặc điểm giao tiếp I2C
Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là
đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ và chỉ theo một
hướng.Như ta thấy trên hình vẽ trên, khi một thiết bị ngoại vi kết nối vào
11
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
đường bus I2C thì chân SDA của nó sẽ nối vói dây SDA của bus, chân SCL sẽ nối với dây SCL.
SDA {S-enal DáCá Un62
pull-up - resistors p
• V|3D
SCL {Sercai CtocK Lin<s'ĩ
r
I
ISCLKN1 !
1
oựr
1
1
SCLK

SCLK
IN
□ATAN1_|i
ÕŨT
&
o "S* <]
SCLK
SCLKN2_|t~
OUT h
SCLK
IN
■<
DÃTAM2___I
h.
DATA
ỈN
DEV1CE
2 Mac
Hình 2.2 Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế độ
nhanh (Fast mode) [3]
Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một
điện trở kéo lên (pullup resistor). Sự càn thiết của các điện trở kéo này là vì chân giao tiếp I2C
của các thiết bị ngoại vi thường là dạng cực máng hở (opendrain hay opencollector). Giá trị của
các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động trong
khoảng 1KO đến 4.7KO.
Trở lại với hình 3.1, ta thấy có rất nhiều thiết bị (ICs) cùng được kết nối vào một bus I2C,
tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được nhận ra bởi
một địa chỉ duy nhất với một quan hệ chủ/tớ tòn tại trong suốt thời gian kết nối. Mỗi thiết bị có
thể hoạt động như là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động
truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hay tớ (slave).

Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân biệt,
nó còn được cấu hình là thiết bị chủ hay tớ .Tại sao lại có sự phân biệt này ? Đó là vì trên một bus
I2C thì quyền điều khiển thuộc về thiết bị chủ . Thiết bị chủ nắm vai trò tạo xung đồng hồ cho
toàn hệ thống, khi giữa hai thiết bị chủ-tớ giao tiếp thì thiết bị chủ có nhiệm vụ tạo xung đồng hồ
và quản lý địa chỉ của thiết bị tớ trong suốt
12
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
quá trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong viêc
giao tiếp.
Kaster SDA Slave Master SDA Slave
Transmltter 1 Receiver Receiver Transmitter
SCL SCL
Hình 2.3 Truyền nhận dữ liệu giữa chủ/tớ[3]
Nhìn hình trên ta thấy xung đồng hồ chỉ có một hướng từ chủ đến tớ, còn luồng dữ liệu có
thể đi theo hai hướng, từ chủ đến tớ hay ngược lại tớ đến chủ.
về dữ liệu truyền trên bus I2C, một bus I2C chuẩn truyền 8bit dữ liệu có hướng trên đường
truyền với tốc độ là 100 kbỉt/s - Chế độ chuẩn (Standard mode). Tốc độ truyền có thể lên tới 400
kbit/s -Chế độ nhanh (Fast mode) và cao nhất là 3,4 Mbit/s
- Chế độ cao tốc (Hỉgh speed mode).
Một bus I2C có thể hoạt động ở nhiều chế độ khác nhau:
- Một chủ một tớ (one master - one slave)
- Một chủ nhiều tớ (one master - multi slave)
- Nhiều chủ nhiều tớ (Multi master - Multi slave)
Dù ở chế độ nào, một giao tiếp I2C đều dựa vào quan hệ chủ/tớ. Giả thiết một thiết bị A muốn gửi
dữ liệu đến thiết bị B, quá trình được thực hiện như sau:
-Thiết bị A (Chủ) xác định đúng địa chỉ của thiết bị B (tớ), cùng với việc xác định địa chỉ,
thiết bị A sẽ quyết định việc đọc hay ghi vào thiết bị tớ -Thiết bị A gửi dữ liệu tới thiết bị B
- Thiết bị A kết thúc quá trình truyền dữ liệu
Khi A muốn nhận dữ liệu từ B, quá trình diễn ra như trên, chỉ khác là A sẽ nhận dữ liệu từ B.
Trong giao tiếp này, A là chủ còn B vẫn là tớ. Chi tiết việc thiết lập một giao tiếp giữa hai thiết bị

sẽ được mô tả chi tiết trong các mục dưới đây.
2.1.2.1 Điều kiện START và STOP (START and STOP conditions)
START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn thiết lập
giao tiếp với một thiết bị nào đó trên bus I2C. START là điều kiện khởi đàu,
13
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
báo hiệu bắt đàu của giao tiếp, còn STOP báo hiệu kết thúc một giao tiếp. Hình dưới đây mô tả
điều kiện START và STOP.
Ban đàu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA và SCL đều ở mức cao
(SDA = SCL = HIGH). Lúc này bus I2C được coi là rỗi (“bus free”), sẵn sàng cho một giao
tiếp. Hai điều kiện START và STOP là không thể thiếu trong việc giao tiếp giữa các thiết bị I2C
với nhau.
SDA
A
/ \
/
SCL 3
1!
1
p
START cmditìữn STOP cortdrOon
Hình 2,4 Điều kiện START và STOP của bus I2C [3]
Điều kiện START: một sự chuyển đổi trạng thái từ cao xuống thấp trên đường SDA trong
khi đường SCL đang ở mức cao (cao = 1; thấp = 0) báo hiệu một điều kiện START
Điều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA trong
khi đường SCL đang ở mức cao. Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị
chủ. Sau tín hiệu START, bus I2C coi như đang trong trang thái làm việc (busy). Bus I2C sẽ rỗi,
sẵn sàng cho một giao tiếp mới sau tín hiệu STOP từ phía thiết bị chủ.
Sau khi có một điều kiện START, trong quá trình giao tiếp, khi có một tín hiệu START
được lặp lại thay vì một tín hiệu STOP thì bus I2C vẫn tiếp tục trong trạng thái bận. Tín hiệu

START và lặp lại START (Repeated START) đều có chức năng giống nhau là khởi tạo một giao
tiếp.
2.1.2.2 Định dạng dữ liệu truyền
14
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Dữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền đi tại mỗi cạnh lên
của xung đồng hồ trên dây SCL, quá trình thay đổi bit dữ liệu xảy ra khi SCL đang ở mức thấp.
EDA
L X
\
SCL
ca ta line
stable;
dam
valii
i
3
charge j
of cata
altaw
A
Hình 2.5 Quá trình truyền 1 bit dữ liệu [3]
Mỗi byte dữ liệu được truyền có độ dài là 8 bit. số lượng byte có thể truyền
trong một lần là không hạn chế. Mỗi byte được truyền đi theo sau là một bit ACK để
báo hiệu đã nhận dữ liệu. Bit có trọng số cao nhất (MSB) sẽ được truyền đi đàu tiên,
các bit sẽ được truyền đi làn lượt. Sau 8 xung clock trên dây SCL, 8 bit dữ liệu đã được
truyền đi. Lúc này thiết bị nhận, sau khi đã nhận đủ 8 bít dữ liệu sẽ kéo SDA xuống
mức thấp tạo một xung ACK ứng với xung clock thứ 9 trên dây SDA để báo hiệu đã
nhận đủ 8 bit. Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình
truyền hoặc kết thúc.

IliacxxrLmi::!!
5 DA
SCL
MSB
adcnoMtedgHnpnt
sigriỉ! IÌH7I EJava
byte coTỊplete,
híỄmjfitwltnln SỎ1K
KKrHwiecgan0!t agrs
tron rêalvẺr
õ
-
I
_____________/7Ư7Ư7V
dcctimena
dlawvíh e
lrilẽrr^pt-5 3 re Hniloẽd
AL1AA/:;U\_^
ACK ACK
%
Sỉ
lỉì
S“AR“ or vepeahed START
condÉicii
5TOP ữr
rẹiealed
S"ART
comaim
Hình 2.6 Dữ Uệu truyền trên bus I2C [3]
15

Trường Đại Học Bách Khoa Tp Hồ Chí Minh
DATA OUTPUT 3Y
TRANSMITTER
DATA OƯ
_
PU~
BY RBCEIVER
; "R
SCLFROM
MAST
ER
/ X ĨT
Lli
START
condltlon
T
ro: ancctoieaag'
aclcỉncttỉledas'
tícek pu&eTcr
acisrKMieạgernenỉ
Mfiĩ]ỂWi

Hình 2.7 BiíACK, Noí-ACK trên bus I2C [3]
Một byte truyền đi có kèm theo bit ACK là điều kiên bắt buộc, nhằm đảm bảo cho quá
trình truyền nhận được diễn ra chính xác. Khi không nhận được đúng địa chỉ hay khi
muốn kết thúc quá trình giao tiếp thiết bị nhận sẽ gửi một xung Not-ACK(SDA ở mức cao) để
báo cho thiết bị chủ biết, thiết bị chủ sẽ tạo xung STOP để kết thúc hay lặp lại một xung START
để bắt đàu quá trình mới.
2.1.2.3 Định dạng địa chỉ thiết 6í


• • o • ■
Mỗi thiết bị ngoại vi tham gia vào bus I2C đều có một địa chỉ duy nhất, nhằm phân biệt
giữa các thiết bị với nhau. Độ dài địa chỉ là 7 bit, điều đó có nghĩa là trên một bus I2C ta có thể
phân biệt tối đa 128 thiết bị. Khi thiết bị chủ muốn giao tiếp với ngoại vi nào trên bus I2C, nó sẽ
gửi 7 bit địa chỉ của thiết bị đó ra bus ngay sau xung START. Byte đàu tiên được gửi sẽ bao gồm
7 bit địa chỉ và một bít thứ 8 điều khiển hướng truyền.
MSB
LSEi
slaveaddress
R/W
16
Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Hình 2.8 Cấu trúc byte dữ liệu đầu tiên [3]
Mỗi một thiết bị ngoại vi sẽ có một địa chỉ riêng do nhà sản xuất ra nó quy định. Địa chỉ
đó có thể là cố định hay thay đổi. Riêng bit điều khiển hướng sẽ quy định chiều truyền dữ liệu.
Neu bit này bằng “0” có nghĩa là byte dữ liệu tiếp theo sau sẽ được truyền từ chủ đến tớ, còn
ngược lại nếu bằng “1” thì các byte theo sau byte đàu tiên sẽ là dữ liệu từ con tớ gửi đến con chủ.
Việc thiết lập giá trị cho bit này do con chủ thi hành, con tớ sẽ tùy theo giá trị đó mà có sự phản
hồi tương ứng đến con chủ.
Hiện nay có thể đánh địa chỉ các thiết bị trên bus I2C dưới dạng lObit địa chỉ.Việc thực
hiện đánh dấu địa chỉ theo khung lObit được thực hiện nếu sau lệnh START ta gửi chuỗi 11110
(số nhị phân) ra đường SDA. [4]
2.1.2.4 Truyền dữ liệu trên bus I2C, chế độ Master - Sỉave
Việc truyền dữ liệu diễn ra giữa con chủ và con tớ. Dữ liệu truyền có thể theo 2 hướng, từ
chủ đến tớ hay ngược lại. Hướng truyền được quy định bởi bit thứ 8 R/W trong byte đàu tiên
(byte địa chỉ) được truyền đi.
• Truyền dữ liệu từ chủ đến tớ (ghi dữ liệu): Thiết bị chủ khi muốn ghi dữ liệu đến con
tớ, quá trình thực hiện là:
- Thiết bị chủ tạo xung START
- Thiết bị chủ gửi địa chỉ của thiết bị tớ mà nó cần giao tiếp cùng với bit R/H

7
= 0 ra bus và đợi
xung ACK phản hồi từ con tớ
i
!
I_______II _H_____ỉ l
STAMT ADDRES5 Ft.w ACK mrditiũn
S7ỌF
Oỡnci
ỉõn
JHECÓTM
Hình 2.9 Quá trình truyên dữ liệu [3]
17

×