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
Trang 1BE us Seer PER SRE ER EEE:
Ta Tên NHI z
cone pana asa eee Soca aoe eae ẹ
igi 8g Seer sáp
TRUER hờn hy RIS IERIE ni II
HA10)81)80E8iEL38Si8H2 iss atest miRNA
a eee
SEER BRST TE LORS SEUSS
Si : lệ hi) sane
Trang 2NHAN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 311
Trang 4NHAN XET CUA GIAO VIEN PHAN BIEN
Trang 6MỤC LỤC
DANH MUC CAC BANG BIEU u.ieeccccccccccscscsssescscscscscesscsescssssesscscssscscstecsescscsssnssseanenes iii
DANH MUC CAC TU VIET TAT ooeccecccccccccscsssecssssscscscssscsescssscessescsnscsesssssescessnanssseanenes iii
CHUONG 1: NGON NGU VERILOG VA PHAN MEM THIET KE, MO PHONG 1
1.1 Giới thiệu sơ lược về ngôn ngữ lập trình Verilog [4] 5 5- <+<+s=s+szs==xsz 1
1.1.1 Mô †Ả - 5Á C11 1111111131315 111151 1111151511111 111111 1010111 kEE HT HH niệu 1
1.1.2 Tại sao str dung Verilog 2.0.0 ccccccccccceccccceecesececeeesesseueecauauseasaueeseesaeessseneees 1
1.1.3 Một số qui ước thiết kế [1 ] - - xxx SE Hưng cư 2 1.1.3.1 Câu trúc chương trÌn: sex E39 Sư ST kg Hưng cười 3 1.1.3.2 Các kiểu dit liệu và vùng nhớ: . - + - 5s s SE EEEzEzx+xrkrkczrrrxred 3 1.1.3.3 Toán tỬ k k1 S113 131111 11511 111111111155 1511 K11 TT T00 kưyu 4 1.1.3.4 Các cấu trúc điều khiỂn + 2-2 2 +E+ExSkSEEx SE EEEEEx tr rrkryi 6 1.1.3.5 Điều khiển theo sự kiện G- cc net Sư EHE T3 SE E SE nen rrererrrrei 7
1.1.3.6 Sự kết hợp giữa nhiều module - + - s5 + +z£Ez£EzE+kzxze£zzrzxrxd 8 1.2 Phan mém thiét ké vi mach Quartus II [4] c.ccccceccecceceseccecerseseceeceeeseeseseesersateeeerereas 9 1.2.1 Gidi thiéu vé phan mém Quartus To le eescsessccesecescsssescesscsceseseevsrevacesseseeees 9 1.2.2 Chức năng của phần mềm Quarfus ÌI + s+s2 SE EzE# £EzEE+EzE+E£zEz£zxrxd 9
1.2.2.1 Design Entry (Thiết kế ban đầu) . - + set £Eek+krkeerererxkred 9 1.2.2.2 Téng hop (Synthesis) .0.c.cccccccscscseseseseseseesesevececeessesessevevevecseestessesees 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 ConfiỹUraf1OT s55 <5 << << se ssssssees 10 1.3 Phần mền mô phỏng Mođelsim Altera [4}] - 5-22 2 2 22 zSzEz£zze£z£zzzczsd 10
CHUGNG 2: CHUAN GIAO TIEP I2C VA BO DIEU KHIEN BUS I2C PCF8584 11 2.1 Chuan giao tiép I2C [3] eeseeccccescesesesesesesessececsvscesesescesevevscscevsssessaveveveceeeeseveesees 11
2.1.1 Gidi thiéu chung vé chuan giao tiép I2C oo eeeeccececescesesesessscsvscececseseesees 11
2.1.2 Đặc điểm giao tiẾp I2C - «+ k1 ST 111v HH ưu 11
2.1.2.1 Điều kiện START va STOP (START and STOP conditions) 13
2.1.2.2 Dinh dang dit lidu truyén eee ceceseseesseevecscscscesescevscsvscseeesevsnseas 14 2.1.2.3 Định đạng địa chỉ thiết bị, ccesesesseeesscscsessescscesecsssceceeevenseas l6 2.1.2.4 Truyền đữ liệu trên bus I2C, chế độ Master - Slave 17 2.1.2.5 Chế độ Multi-Masfer -: n 2S TH ng HH ng 19 2.2 Bộ điều khiển bus I2C PCE8584 2: - & z2 Ez ESEEE3SESEEx SE HE rkrn gry ưyi 20 2.2.1 Đặc điỂm [2] cv HS 1 9191115 1111111 111111 HH1 TH ng cư 20 2.2.2 Sơ đồ và chức năng các chân ket SEE1 1xx KH Hy gryưyu 21
2.2.5 Gidn d6 dinh thi 6 cdc ché dO hoat d6ng oo cece ccceseeeseseseesesevsseeeeeeeeesees 29
Trang 72.2.7 Cách chọn chế độ giao tiẾp + tư E1 Hy TT TH ngưng ưu 3l
2.2.8 Sơ đồ giao tiếp với các vi điều khiển/vi xử lý - < cccccxsercsrsrereed 32
CHUONG 3: THIET KE VA MO PHONG LOI IP CORE MEM DIEU KHIEN
›)0S5VĐ% 33
3.1 GiGi thiéu tinh Nang 33
k9 0n 34
c0 0n 35
3.3.1 Mô tả chức năng và mục đích các khối - 5s s+Ez£E£Ezx+zzzrzrred 36 3.3.2 MG ta cdc thanh Gh 36
3.4 Thiết kế và phân tích cdc KAGi eceleceeeescscecesesesessseevecevecscevessessavevevscseesseseeees 38 3.4.1 Khối cpu_ inferface - ke TT SE cư TT TH Hưng rườn 38 Sàn Go na 38
3.4.1.2 Sơ đỗ chân ¿t2 TH 2 211111.111110111171112111112111111 xe 41 3.4.1.3 Mô tả chân - - LH TH TH TH no ng vn 42 3.4.1.4 Giản đồ định thời - 52 2t E2 1111111111111 crrrred 44 3.4.2 Khối contol k1 TT SE TT TT TK HT ngư ưu 45 3.4.2.1 Tir 45
3.4.2.2 Sơ đồ chân tt cv 2 21111171111111111111111111171111211111 111g c0 45 SN o0 3 na e 46
SA N9) hối Pa 47
3.4.2.5 Luu đồ hoạt động của từng trạng thái: . - Sex rxexrees 50 3.4.3 Khối i2c interface + - +: sx ST SE15151 E1 1111811311111 1 1E ki 50 3.4.3.1 Tih mang: ad ốc 50
3.4.3.2 Mô tả chân HH ng HT TH KH ng vn 31 3.4.3.3 Các trạng thái hoạt động của khôii: tt vn vn nen ren cre reo 53 3.4.3.4 M6 tả hoat dong tirng trang that: c cc cccssssesssssessssseeesseceeeeeeeeeeeess 53 3.4.3.5 Cac loai mach duge str dung trong khối 12c _Interface 55
3.4.3.6 Giản đồ timing hoạt động của khỗi: 5 xe Erkrkrererecxe 57 3.4.4 Khốối €OIPATC -G Ă ST K11 TT TH TT HH ngư cư 58 3.4.4.1 MG ta CHAN na 59
3.4.4.2 Hoat dong chi tiét cla kh6i compare eee csescscsecesestseseseseseeees 59 3.4.5 Khối clock generator c.c.ccccccsssssessscsesescssscscessseessvsvscscacscestsvavevarscacesseveanas 60 SỔ 5N G0 3 nh .3 61
S5 6Ä ca e 62
3.4.6 Khối inf€rrupt + + xxx E111 TT HE TT TT TH Hy ưu 62 3.4.6.1 MG ta CHAN na 62
3.4.6.2 (i0 63
S5 6c con 63
3.5 Kết quá mô phỏng - kk 2 v99 HE TT TH như 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 đữ liệu sau khi phát lệnh Stop: - - - +s+sc+cszscexd 66 3.5.3 Restart khi đang trao đổi đữ liệu: ¿2 +2+E+k+x+kExExEEEEEEEErkrkrkrerrrerred 71 non ố ẻ 73
CHƯƠNG 4: KÉT LUẬN CHUNG VÀ HƯỚNG PHÁT TRIÊN CỦA ĐẺ TÀI 74
“am Ì pc 74
ii
Trang 84.1.1 Những kết quả đạt đƯỢC - + s11 ST SE HT HT TT gu 4.1.2 Những giới hạn tỒn tại - - s31 TT SE T111 TH gu 4.2 Hướng phát triỂn + ke 9131313 11kg TT ng ru
TÀI LIỆU THAM KHẢO 65% }x S23 kSYE2kEEE21112121112121212111211 1x
DANH MỤC CÁC BẢNG BIÊU
Bảng 2.1 Sơ đồ và chức năng chân PCF8584 [2] - 5 << S2 xe rerrererd 21
Bang 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
00.072 — 24 Bảng 2.4 Thanh ghi điều khiển/trạng thái S1 [2] 5-5-5 56c sezerrerkeed 25
Bảng 2.6 Cách truy cập các thanh ghi của PCEF8584 cà eese2 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 /
P1272 31
Bang 3.1 So d6 chan I2C Core wo.ccecceccssesssssesescssssssscssscsseseseevsvsvscsesvsseseseavsvavaeseess 34
Bang 3.3 Chirc nang cac bit của thanh ghi ST control (SĨ€) <-<<- 36 Bảng 3.4 Chức năng các bit của thanh ghi S1 status (SS) - << 37 Bảng 3.5 Thanh ghi data buffer (SÔ0d|) Ăn ng g 38 Bảng 3.6 Mô tả chân khối cpu inferface << 333k Ex SE re rkei 42 Bang 3.7 Giai ma dia chi cac thanh ni 0n 43 Bang 3.8 M6 ta chan khéi control ocecceesesescsssessseseessescsescsescesesescsvavscscacseessees 46 Bảng 3.9 Mô tả chân khối i2c_interface - 5+ 2 +2+E+E+s*kExEEzEErErkrkrerkes 51 Bảng 3.10 Bảng lựa chọn giữa gen clko Và SCÌI -. << << ses*s 568 Bang 3.11 Mô tá chân khối cormpare . 5+ 2 2+2 +E+E£+E+E£SE£EZErxrsxrees 591 Bảng 3.12 Mô tá chân khối clock gøenerefOr -. - - + + s+s+s+sEzEzEzzsrxrees 613
Bang 3.13 Báng chia tần số đường SC, - - s23 3xx SE g rrrvcerkci 61
Bang 3.14 Bảng chia tần số clock hoạt động của COfe - 5-5 se sex: 614
Bảng 3.15 Mô tá chân khối interrupf - 5s +2 2 +E+E£zE+k£zE£EzErxrkrxrees 625
DANH MỤC CÁC HÌNH VẼ
Hình 2.1 BUS I2C và các thiết bị ngoại vi [5] .-. - + +s+s+s xe rrezxrereee 11 Hình 2.2 Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế độ
Hình 2.3 Truyền nhận đữ liệu giữa chủ/tớ [3] - + +sk+EeE+rxrererererd 13
Hình 2.4 Điều kiện START và STOP của bus I2C [3] ¿ 5 5c +c+xce£sezerd 14
Hình 2.5 Quá trình truyền 1 bit đữ liệu [3] - 5-5-5 +2E2Sz SE zrerrererd 15 Hình 2.6 Dữ liệu truyền trên bus I2C [3] . - + - 2 2 SE E#ESESEeEEErkrerererrd 15
Hinh 2.7 Bit ACK, Not-ACK trên bus I2C [3] -<5<5<<<<<<<<=<sssxs 16
Trang 9Hình 2.8 Cấu trúc byte đữ liệu đầu tiên [3] 5 5< SE EeErkrkrkrrerxrd 17 Hình 2.9 Quá trình truyền đữ liệu [3] . 5-5 < S2 S2 SE xxx rerrd 17 Hình 2.10 Ghi đữ liệu từ chủ đến tớ [3] - sec S2 k1 ve reesrrksererd 18 Hình 2.11 Đọc đữ liệu từ thiết bị tớ [3] - SE SE k2 SEEEEeesreksererd 19
Hình 2.12 Quá trình phối hợp đọc/ghi đữ liệu [3] . ¿<5 2 2 <+Sz szs+ezz£zrzed 19
Hình 2.13 Hình dạng và sơ đồ chân bộ điều khiển bus I2C PCF8584 [2] 20
Hình 2.14 Sơ đỗ khối PCF8584 [2] .- G5 St SE sgg grkcg 21 Hình 2.15 Thanh ghi đồng hồ S2 [2] . - 5= +2 E2 E+E+E*E*EESEEEZEEeErErkrerkes 23 Hình 2.16 Thanh ghi dich/dém (shift register/read buffer) dữ liệu S0 [2] 25
Hình 2.17 Giản đồ định thì chế độ chủ truyền [2] . 5-5-2 2 <+S2 zs+ez£zrzed 29 Hình 2.18 Giản đồ định thì chế độ chủ nhận [2] ¿- 6 62s £+E£££eEseeksererd 29 Hình 2.19 Giản đồ định thì chế độ tớ truyền [2] - 5-5-5 s z 2E zEzezxcxzxes 29 Hình 2.20 Giản đồ định thì chế độ tớ nhận [2] - - +6 2s se £eesEsksererd 30 Hinh 2.21 Dinh thi RESET (tw4>=30 te.) [2] 5-55: SxSE* SE rerrkrsrsred 30 Hinh 2.22 Chu ki STROBE (tw5=8toyc) [2] .esesccesesesesecesevevececevevevevecevevetevevenevanees 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 VOi ho INTEL [2] 5-2 +z E2 9E EE£kE#EEEE EE St EEEEEEEEEEE SE re 31 Hình 2.24 Sơ đồ giao tiếp với vi điều khiển 8051/8048 [2] 5-s sa 32 Hình 2.25 Sơ đồ giao tiếp với vi điều khiển 68000 [2] - 52 55s £srsed 32 Hình 3.1 Sơ đồ chân I2C COFe SG 2c ch S28 E388 15858891 88 SE ESE SE reed 34 Hình 3.2 Sơ đồ khối I2C IP COre - + + E + *+E2 kẻ EE#E£EEEEEEEEErEeErkkerrkrkred 35 Hinh 3.3 Bo gidi m@ cdc thanh Qh 40
Hình 3.4 So đồ chân khối cpu interface << se k3 ga 41 Hinh 3.5 Ghi dit liéu vao thanh hin - 44
Hinh 3.6 Doc dit liéu tty thanh ght ou 44
Hình 3.7 Sơ đồ chan kh6i control .cccccccccscsececcsseceecescescescseeseeseseesesecsecseceeeeserens 45 Hình 3.8 Sơ đồ máy trạng thái khối control - - + 5E k+k£E£E£E£EeErkrkerrsrrred 49 Hình 3.9 Sơ đồ chân khối i2c interface - «5< 2 SE E3 ve rerrd 31 Hình 3.10 Sơ đồ máy trạng thái của khối ¡2c interface - - 5c cecxcsrsrd 53 Hình 3.11 Mạch phát hiện điều kiện Start/Stop trên bus I2C - 5: -5¿ 55 Hình 3.12 Mạch tạo tín hiệu nội 12c busy_ OX -. -ĂS Sa 55 Hình 3.13 Mạch đồng bộ scl s và sđai với clock hệ thống - 5-5 56 Hình 3.14 Mạch lay đữ liệu tại cạnh lên của xung sCÌ1 - -< <<<<<<<<+ 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 -2 ¿<5 + +s£+s2 58 Hình 3.18 Timing của một số tín hiệu khác . - - + x+k£EE£E£E£E£kzkeErsrrred 58 Hình 3.19 Sơ đồ chân khối cormpare - - + sk SES* SE Ex xe 58 Hinh 3.20 Timing compare địa Chỉ < << S101 1031 1 91v 1 ng ng 211kg 60 Hình 3.21 Sơ đồ chân khối clock_ øenerafOr - xxx +EeErkrkrererrd 60 Hình 3.22 Sơ đồ chân khối interrupt ¿- 2+s +2 S2 +k£k£E£ESEEEexExerkrkrerrrxrd 62 Hình 3.23 Mạch tạo cờ ngắt - sen TT HE TT TH nrrrrrrt 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 đữ liệu + điều kiện Stop 64
Hình 3.26 Chu phat Start + dia 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 đữ liệu +điều kiện Stop 65
Hình 3.28 Chu phat Start + địa chỉ + truyền dữ liệu + Stop + Start 66
1V
Trang 10Hình 3.29 Chủ tiếp tục phát địa chỉ + truyền đữ liệu và lệnh Stop 67 Hình 3.30 Tớ nhận điều kiện Start + địa chỉ + nhận đữ liệu + điều kiện Stop + Start
DANH MỤC CÁC TỪ VIET TAT
Circuits) Hardware Language Design
Engineers
Trang 11LỜ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 I2C 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 (100kb/s) và tốc độ nhanh (400kb/5)
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 đung được trình bày trong khóa luận:
e 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
e Chương 2: Giới thiệu về chuẩn giao tiếp I2C ở 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 đữ 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 I2C 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ế
vi
Trang 12e Chương 3: Là phần mô tá đặc tính chỉ tiết của từng module (bộ phận) trong I2C Core.Mỗi module đều được miêu tả chỉ 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ễ đàng tham khảo
e 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
Trang 13CHƯƠNG 1: NGÔN NGỮ VERILOG VA PHAN MEM THIET
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
Verllog 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 đữ liệu giữa các thanh ghi (RTL - Register
Transfer 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
Trang 14gần gũi với người sử đụng hơn, Verilog khá giống với ngôn ngữ C nên dễ hiểu và đễ 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 chỉ 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
<size><base format><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(hập lục phân) <number> chứa các chữ số phù hợp
Trang 151.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 :
module module_name (danh sach cdc port);
//cac khai bao
input, output, inout, reg, wire, parameter
Vi du : Thiét ké m6 hinh hanh vi cho cong NAND
module NAND (in1, in2, out);
input inI, in2;
output out,
assign out=~(inI &in2)
endmodule
Voi & 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ớ:
Vi muc dich cua Verilog là thiét ké phan 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 khong 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
Trang 16a các kiểu dữ liệu:
Các đối tượng dữ liệu wire và dữ liệu reg có thể có những giá trị 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à bít 7 (MSB)
wire [3:0] data; //day 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 bít 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
Trang 17d Cac toan tir khac
{ý} ghép thanh ghi hoặc dây
<< dịch trái thanh ghi
>> dịch phải thanh ghi
Trang 18output out0,outl,out2,out3 ;
assign out0= data&(~in1)&(~in0);
assign outl = data&(~in1)&(in0);
assign out2= data&(in1)&(~in0);
assign out3= data&(in1)&(in0);
endmodule
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 đâ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 :
Cau tric if else
Cấu trúc case: không giống cấu trúc case trong C ở chỗ không cần lệnh break
Trang 19Tiế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óa posedge (cạnh lên) và negedge (cạnh xuống)
Vị dụ:
always @(posedge clock) // tac d6ng 6 canh lén cua xung clock
always @(negedge clock) //tac dong 6 canh xuéng cua xung clock
always @(register1) // tac d6ng voi bat ky sw thay d6i nao trén thanh ghi
register]
Ví dụ: Module đếm lên đơn giản với ngõ ra out 8 bit, chan xung clock clk, chan 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
Trang 20module counter (
out , // Output of the counter
enable , // enable for counter
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 module ANDún1,in2,out) và một module NOTún,out) thực hiện sự kết hop 2 module trén thanh module top nhu hinh sau:
Trang 21AND and (in1 (A), in2(B), out(C));
NOT not (.in(C), out(D));
endmodule
Ghi chu: and va not 1a 2 tén moi (instance name) cua 2 module AND va NOT trong module top
1.2 Phần mềm thiét ké vi mach Quartus II [4]
1.2.1 Giới thiệu về phần mêm QQuartus 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 dau)
Đó là mạch điện được thiết kế theo yêu cầu dựa trên:
Trang 221.2.2.2 Tong hop (Synthesis)
Thiết kế sẽ được tong 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ử - Fiting (Placement and Routing)
Xác định vị trí và thiết lập lộ trình để kết nối các LEs được sử dụng trên FPGA
1.2.2.4 Dinh thi va mo phong (Tingming Analysis 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
thoi gian thong qua mô phỏng
1.2.2.5 Programing and Configuration
Nhờ vào việc lựa chọn các chê độ câu hình được thiét lap san 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 Modelsim Altera [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 trình 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 thi
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
Trang 23CHƯƠNG 2: CHUAN GIAO TIEP I2C VA BO DIEU KHIEN
BUS I2C PCF8584
2.1 Chuan 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 phan 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(T]),
MaximDallas, analog Device, National Semiconductor Bus I2C dugc st dung lam
bus giao tiép ngoai vi cho rat nhiéu loai IC khac nhau nhu cac loai Vi diéu khién 8051,
PIC, AVR, ARM chip nhé như: RAM tinh (Static Ram), EEPROM, b6 chuyên đổi tương tự số (ADC), số tương tự(DAC), IC điều khiển LCD, LED
Hình 2.1 BUS I2C và các thiết bi ngoai vi [5]
2.1.2 Đặc điểm giao tiếp I2C
Một giao tiếp I2C gồm có 2 day: Serial Data (SDA) va Serial Clock (SCL)
SDA là đường truyền đữ 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ị ngoai VI kết nối vào
11
Trang 24đườ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 day SCL
SDA (Senal Dats Line
SCL (Sena Clock Line)
-
Hình 2.2 Kết nỗi thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) va ché dé
nhanh (Fast mode) [3]
Mỗi đây SDA hay SCL déu được nối với điện áp đươ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à đạ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 thay 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 đữ 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
Trang 25quá 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
Master SDA Slave Master SDA Slave
Transmitter|_—————] Receiver | Receiver —|rrana:nitter
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ề di liệu truyền trên bus I2C, một bus I2C chuẩn truyền 8bit đữ liệu có hướng trên đường truyền với tốc độ là 100 kbit/s - Chế độ chuẩn (Standard mode) Tốc độ truyền có thể lên tới 400 kbit/s -Chế độ nhanh (Fast mode) va cao nhat là 3,4 Mbit/s
- Chế độ cao tốc (High 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 đữ liệu tới thiết bị B
- Thiết bị A kết thúc quá trình truyền đữ 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ớ Chỉ tiết việc thiết lập một giao tiếp giữa hai thiết bị sẽ được mô tả chỉ tiết trong các mục dưới đây
2.1.2.1 Diéu kign START va 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
Trang 26bá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 ở
mirc cao (SDA = SCL = HIGH) Lic nay 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
Hình 2.4 Điều kién START và STOP cua 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 = l; 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
Trang 27Dữ liệu được truyền trên bus I2C theo từng bít, bit đữ 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
| data valid | allowed | BCE?!
Hinh 2.5 Quá trình truyền 1 bit dữ liệu [3j
Mỗi byte đữ liệu được truyền có độ dài là 8 bít 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 day 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 di 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 bít Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình
Interrupts are serviced
Hình 2.6 Dữ liệu truyền trên bus I2C [3]
15
Trang 28BY RECEIVER
Mace?
Hinh 2.7 Bit ACK, Not-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 bi chủ sẽ tạo xung STOP để kết thúc hay lặp lại
một xung START dé bat dau qua trình mới
2.1.2.3 Dinh dang dia chi thiét bi
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 Độ đà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 bít địa chỉ và một bít thứ 8 điều khiển
Trang 29Hình 2.8 Câu trúc byte đữ 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 bít điều khiển hướng sẽ quy định chiều
truyền dữ liệu Nếu bít này bằng “0” có nghĩa là byte đữ 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ủ thì
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 10bit địa
chỉ.Việc thực hiện đánh dấu địa chỉ theo khung 10bit đượ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 Ti ruyên dữ liệu trên bus I2C, chế độ Master - Siave
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 ị
Hình 2.9 Quá trình truyền dữ liệu [3]
® Truyền dữ liệu từ chủ đến tớ (ghi dữ liệu): Thiết bi chủ khi muốn ghi đữ liệu đến con
tớ, quá trình thực hiện là:
- Thiết bị chủ tạo xung START
- Thiết bi chủ gửi địa chỉ của thiết bị tớ mà nó cần giao tiếp cùng với bit R/W= 0 ra
bus và đợi xung ACK phản hồi từ con tớ
17
Trang 30- Khi nhận được xung ACK báo đã nhận diện đúng thiết bị tớ, con chủ bắt đầu gửi
dữ liệu đến con tớ theo từng byte một Theo sau mỗi byte này đều là một xung ACK
Số lượng byte truyền là không hạn chế
-Kết thúc quá trình truyền, con chủ sau khi truyền byte cuối sẽ tạo xung STOP báo
hiệu kết thúc
ne peed POPPE PP v br huis! Dj OLE, BA MA F82
SIZ SLAVE ADDRESS 77 RI] A DATA) & 1 DATA] MAL 0
Lee L— data transferred —
O (write) in bytes + acknowledge}
from master to Slave
42 not acknowledge (SDA HIGH}
S = START condition MECEOS P = STOP condition [ | fram slave to master
Hình 2.10 Ghi dit liệu từ chủ đến tớ [3]
*® Truyền đữ liệu từ tớ đến chủ (đọc dữ liệu): Thiết bị chủ muốn đọc đữ liệu từ thiết bị
tớ, quá trình thực hiện như sau:
- Khi bus rỗi, thiết bị chủ tạo xung START, báo hiệu bắt đầu giao tiếp
- Thiết bị chủ gửi địa chỉ của thiết bị tớ cần giao tiếp cùng với bit R/W= 1 và đợi xung ACK từ phía thiết bị tớ
- Sau xung ACK từ con tớ, thiết bị tớ sẽ gửi từng byte ra bus, thiết bị chủ sẽ nhận đữ liệu và trả về xung ACK Số lượng byte không hạn chế
-Khi muốn kết thúc quá trình giao tiếp, thiết bị chủ gửi xung Not ACK và
tạo xung STOP dé két thúc
Ve PP TPP LAPP PI OAPI ae Ta tt Le ht
Trang 31Hình 2.11 Đọc dữ liệu từ thiết bị tớ [3]
‹ Quá trình kết hợp ghi và đọc đữ liệu: giữa hai xung START va STOP, thiết bị chủ có thé thực hiện việc đọc hay ghi nhiều lần, với một hay nhiều thiết bị Để thực hiện việc
đó, sau một quá trình ghi hay đọc, thiết bị chủ lặp lại một xung START và lại gửi lại
địa chỉ của thiết bị tớ và bắt đầu một quá trình mới
SP SLAVE ADDRESS RW 4) DATA) AJAPSry SLAVE ADDRESS R2 á | BATA | A¿A a 3
depends on RV bits
Hinh 2.12 Qud trinh phéi hop doc/ghi dit liéu [3]
Chế độ giao tiếp MasterSlave là chế độ cơ bản trong một bus I2C, toàn bộ bus
được quản lý bởi một master đuy nhất Trong chế độ này sẽ không xảy ra tình trạng xung đột bus hay mat đồng bộ xung clock vì chỉ có một con chủ (master) duy nhất có thể tạo xung clock
2.1.2.5 Chế độ Multi Master
Trên bus I2C có thể có nhiều hơn một con chủ điều khiển bus Khi đó bus I2C
sẽ hoạt động ở ché d6 Multi Master
19
Trang 322.2 Bộ điều khiến bus I2C PCF8584
CLK [1] U 20] Yop
SDA or SDA QUT [2 | ig] RESET / STROBE
SCLor SCLIN [3 | ra] WR (RAY)
IACK or SDA IN [ 4 | iz] cs INT or SCL OUT [5 16] RD (DTACK) ˆ
- Chế tạo theo công nghệ CMOS, hoạt động ở tần số 1.5MHz
- Chuyển đôi từ bus song song sang bus I2C và giao tiếp
- Có thê là chủ hay tớ, có khả năng hoạt động ở chế độ nhiều chủ (Multi-
Master), giao tiếp ở chế độ khoảng cách xa (long-distance mode, 4 dây)
- Thích hợp với các vi xử lý giao tiếp dạng song song như 8049, 8051, 6800,
68000, and Z80 Khi giao tiếp voi vi xu ly họ nào thì việc chọn bus sẽ được thực hiện
tự động
- Có chứa các vector ngắt khả lập trình
- Điện áp hoạt động từ 4.5-5.5V, nhiệt độ hoạt động từ -40 — 85”C
Trang 33PARALLEL BUS
s5
đoar Tose Toss Toss Poss fosz Post psc | ool Ves
w'15 via Fis +12 wit *+= ea 7 | an L9
4 | o | o | o | sea | s25 | sez | =: | san
CLOCK REGISTER 52
8
CONTROL ETATUS REGISTER 31
BIM | ESqu | ES1 | ESz | EwNI | sta [ sto | ack
SCL CONTROL | [est | | sra | | ac Yeon
CONTROL STATUS REGISTER 31
PIM | > | S73 | 8ER | tza | AAS | LAB | BB
ECL MULTIPLEXER PARALLEL SUS CONTROL BUS BUFFER CONTROL
Hình 2.14 Sơ đô khối PCF8584 [2]
2.2.2 Sơ đồ và chức năng các chân
Sơ đồ chân xem hình 3.13
Bảng 2.1 Sơ đồ và chức năng chân PCF8584 [2]
Trang 34
CLK 1 I Xung đông hô (điện trở kéo lên nội)
SDA/SDA OUT 2 ƯO Chân đữ liệu vào/ra của I2C- bus, chan
dữ liệu ra ở chế độ long-distance
SCL or SCL IN 3 ƯO Chân vào/ra của đường SCL(ở chế độ
long-distance thì chỉ là chân vào)
liệu ở chế độ long-distance INT or SCL OUT 5 O Chân ra ngắt, chân Ngõ ra xung clock ở
chế độ long-distance A0 6 I Chan vao chon thanh ghi
DBO 7 1/O PORT 0 bus 8 bit hai chiéu (song song) DB1 8 ƯO PORT 1 bus 8 bit hai chiều (song song) DB2 9 ƯO PORT 2 bus 8 bit hai chiều (song song)
Vss 10 - Nôi dat
DB3 11 ƯO PORT 3 bus 8 bit hai chiều (song song) DB4 12 LƯO PORT 4 bus 8 bit hai chiéu (song song) DBS 13 ƯO PORT 5 bus 8 bit hai chiều (song song) DB6 14 LƯO PORT 6 bus 8 bit hai chiêu (song song) DB7 15 LƯO PORT 7 bus 8 bit hai chiêu (song song)
16 1/O RD chan vào điêu khiến đọc cho các vi
ra điều khiển truyền di liệu cho họ
68XXX
WR (R/W) 18 I WR chan vao diéu khién ghi cho ho
80XX,ch4n vao diéu khién R/W cho họ
68XXX
RESET/STROBE 19 V/O Ngõ vào reset, ngõ ra xung strobe
Trang 35
Vdd 20 - Nguôn cấp điện
2.2.3 Miêu tả các thanh ghi [2]
PCF8584 có tông cộng 5 thanh ghi, chỉ tiết như sau:
2.2.3.1 Thanh ghi dia chi noi SO’
Chira gia tri dia chi riéng cua PCF8584 Ngay ca khi PCF8584 dong vai tro la
chu thi SO’ cting phai duoc gan mot dia chỉ xác định Khi cài đặt ban dau cho PCF8584
thì thanh ghi này phải được gán một giá trị cho dù sau đó nó có được su dung hay không
Khi nhận địa chi này (giá trị 2 thanh ghi S0 và S0” được so sánh với nhau) thi
bit AAS trong thanh ghi S1 trạng thái sẽ bằng 1
Chú ý là giá trị S0 và S0” bù nhau từng bit một,chăng hạn gán giá trị địa chỉ cho
PCF8584 la 8’hS55 thi gia tri dia chi that sy cua PCF8584 1a 8°hAA
2.2.3.2 Thanh ghỉ đông hô S2
Thiết lập giá trị tần số đồng hồ nội và tần số đường SCL
n | o | 0 s24 | Sz3 | Szz | sat | s20 |
CLOCK REGISTER 32
Trang 36Bang 2.3 Giá trị các bit S24, S23, S22 tương ứng với giá trị tần số đồng hồ ở chân
2.2.3.3 Thanh ghi vector ngat S3
Chita gia trị vector ngắt 8 bit có khả năng lập trình được, dùng khi giao tiếp với các vi điều khiển có vector ngắt Giá trị vector ngắt này sẽ được gửi đến bus song song
(DB0-DB7) khi có tín hiệu xác nhận ngắt và bit ENI trong thanh ghi điều khiển S1
2.2.3.4 Thanh ghi dich/dém (shift register/read buffer) dit liéu SO
to/from microcontroller parallel bus DBT ODOB6 O85 DB4 DBS DH2Z D51 DBO
EEr7ns
24
Trang 37Hình 2.16 Thanh ghỉ dich/dém (shift register/read buffer) dit ligu SO [2]
Việc đọc và ghi dữ liệu với bus I2C được thực hiện qua thanh ghi này S0 bao gom một thanh ghi dịch và một thanh phi đệm Dữ liệu song song được ghi vào thanh ghi dịch, đọc từ thanh ghi đệm Dữ liệu trao đôi qua bus I2C luôn được dịch vào hay
ra thanh ghi dịch
Khi nhận: Dữ liệu từ thanh ghi dịch được sao chép vào thanh ghi đọc, khi đó SCL được giữ mức thấp dé không tiếp nhận thêm đữ liệu mới cho tới khi nó được đọc
Khi truyền: Dữ liệu được truyền vào bus I2C ngay khi nó được ghi vào S0 nếu
giao tiếp nối tiếp được kích hoạt (bit ES0 trong thanh ghi điều khiển S1 băng 1)
Khi hoạt động ở tần số 8 hay 12 Mhz thì giữa các lần truy cập liên tiếp trên bus song song phải cách nhau 6 chu kỳ đồng hồ, thời gian này sẽ giảm xuống 3 chu kỳ đồng hồ khi hoạt động ở các tần số khác
Đề chuyền từ ghi sang đọc ngay lập tức thì phải đọc giá trị byte đầu tiên trong
thanh ghi S0 (giá trị địa chỉ con tớ) để phát lệnh nhận byte đầu tiên trong S0 Sau khi
có xác nhận thì byte này sẽ được chuyên từ thanh ghi dịch vào thanh ghi đọc, lần đọc
tiếp theo mới chuyên chính xác giá trị byte đữ liệu đầu vào bus vi điều khiển Quá trình
này được gọi là “dummy read” [2]
2.2.3.5 Thanh ghi điều khién/trang thai S1
Đây là thanh ghi điều khiển hoạt động của PCF8584 cũng như cho biết trạng
thái hiện tại của bus I2C S1 bao gồm hai thanh ghi 8 bit: Thanh ghi điều khiến chỉ viết
và thanh ghi điều khiển chỉ đọc
Bang 2.4 Thanh ghi điều khiến/trạng thái S1 [2]
25
Trang 38Chi tiết các bit trong thanh ghi SĨ
e Thanh ghi điều khiển SI
- Khi bit nay bang 1 thì tất cả các bit trong S1 trạng thái sẽ bằng 0, có thể coi như reset băng phân mêm
- ESO (Eable Serial Ouput): Bật tắt giao tiếp nối tiếp theo chuẩn I2C (bằng 0 là
tắt, bằng 1 là bật) Khi bit này bằng 1, PCF8584 có thê giao tiếp với một thiết bị
khác qua bus I2C
- ESI và ES2: Dùng để chọn thanh ghi mong muốn bằng cách gán các giá trị
thích hợp cho 2 bit này Chi tiết xem bảng 3.6
- ENI: Kích hoạt chân ra ngắt ngoài IÑT, khi bit PIN trong ST trạng thái bằng 0,
néu ta gan bit nay bang 1 thi chân INT sẽ gửi tín hiệu ngắt mức thấp ra ngoài
- STA và STO: Điều khiển việc phát lệnh START, REPEATED START và
STOP trén bus I2C
Bang 2.5 Gia tri bit STA-STO
STA | STO | Ché d6 hiện | Chức nang Hoạt động
tại
1 0 Tớ nhận START Phát byte địa chỉ, nêu bit R/W=0 thì
chuyển sang chủ truyền, R/W=I1 thì chuyên sang chủ nhận (1)
1 0 Chủ truyền |REPEATED | Phat byte dia chi, néu bit R/W=0 thi
START chuyén sang chu truyén, R/W=1 thi
chuyên sang chủ nhận
0 1 Chủ STOP READ/ | Phát lệnh STOP và chuyên về chê độ
nhan/chi | STOP WRITE | tớ truyền
truyền
1 1 Chu DATA Phat lénh STOP, START va byte dia
CHAINING chi sau frame dữ liệu cuỗi cùng mà
Trang 39
(1) Bit R/W là bít có trọng sô nhỏ nhất (LSB) trong byte địa chi
(2) Mot frame dữ liệu = 8bit dữ liệu +ACK/Not-ACK
- ACK: Điều khiến việc gửi ACK hay Not-ACK ra bus I2C ACK=l tự động
gửi ACK ra I2C bus sau mỗi byte dữ liệu nhận được, ACK=O0 thì gửi Not-ACK sau byte dữ liệu nhận được
Thanh phi trạng thái SĨ
- PIN(Pending Interrupt Not): Dùng để kiểm tra đã nhận hay truyền xong 1 byte
dữ liệu hay chưa
Bit này bằng 1 khi:
+ Đọc đữ liệu từ thanh ghi S0 hay ghi dữ liệu lên thanh phi SO
+ STA bang 1 thi PIN bang 1
Bit nay bang 0 khi:
+ Nhận/truyền thành công một byte
+ Khi bus lỗi hay khi có điều kiện STOP trên bus I2C (khi PCF8584 là tớ)
- STS: Ở chế độ tớ nhận, bit này băng 1 khi có điều kiện STOP xuất hiện trên
bus I2C
- BER: Bang 1 khi bus lỗi, bus lỗi khi điều kiện START/STOP xuất hiện không
đúng chỗ Khi bit này bằng 1 thì BB bằng 1 và PIN bằng 0
- LRB/ADO: Bit này chỉ có giá trị khi bit PIN bang 0
+ LRB (Last Received Bit): Chita gia tri bit nhan được cudi cung trén bus I2C
khi AAS bằng 0 (chính là bit ACK) Dùng để kiểm tra ACK hay Not-ACK tir
thiết bị nhận
+ ADO(Address 0 (General call) ): Khi bit AAS =1, bit nay được hiểu là bit
ADO, co gia tri la 1 nếu địa chỉ của tớ là 00H (General Call), là 0 nếu tớ có địa
chỉ riêng
27
Trang 40- AAS (Addressed As Slave): Chỉ có gid tri khi PIN=0 Ở chế độ tớ nhận
AAS=1 khi dia chỉ nhận được trùng với địa chỉ riêng lưu trong thanh ghi S0”
hoặc khi nhận được địa chỉ 00H
- LAB (Lost Arbitration): Bit này băng 1 khi quyền điều phối bus I2C bị mất
sang một con chủ khác khi hoạt động ở chế độ nhiều chủ (Multi-Master)
- BB (Bus Busy): Đây là cờ chỉ đọc, nó xác định rằng bus I2C đang được sử
dụng Giá trị l là bus đang bận và ngược lại Bit này được set(về 0)/reset (lên 1)
bởi điều kiện START/STOP
2.2.4 Truy cập các thanh ghi
Khi thiết lập các giá trị thích hợp ở chân A0 và thanh ghi điều khiến S1 (3 bit ESO,
ES1 và ES2) ta có thê truy cập đến thanh ghi mong muốn
Bảng 2.6 Cách truy cập các thanh ghi của PCF8584
Địa chỉ thanh ghỉ nội
AO | ESI | ES2 | LACKx | Chức nang
ESO =0; bus I2C off