1. Trang chủ
  2. » Tất cả

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

88 227 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 88
Dung lượng 22,9 MB

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

Nội dung

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 1

BE 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 2

NHAN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Trang 3

11

Trang 4

NHAN XET CUA GIAO VIEN PHAN BIEN

Trang 6

MỤ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 7

2.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 8

4.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 9

Hì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 10

Hì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 11

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 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 12

e 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 13

CHƯƠ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 14

gầ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 15

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 :

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 16

a 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 17

d 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 18

output 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 19

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ó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 20

module 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 21

AND 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 22

1.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 23

CHƯƠ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 25

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

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 26

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 ở

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 27

Dữ 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 28

BY 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 29

Hì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 31

Hì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 32

2.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 33

PARALLEL 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 36

Bang 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 37

Hì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 38

Chi 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

Ngày đăng: 14/12/2021, 20:57

HÌNH ẢNH LIÊN QUAN

Hinh  2.13  Hình  dạng  và  sơ  đồ  chân  bộ  điều  khiển  bus  I2C  PCF8584  [2] - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
inh 2.13 Hình dạng và sơ đồ chân bộ điều khiển bus I2C PCF8584 [2] (Trang 32)
Hình  2.14  Sơ  đô  khối  PCF8584  [2] - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 2.14 Sơ đô khối PCF8584 [2] (Trang 33)
Hình  2.20  Giản  đồ  định  thì  chế  độ  tớ  nhận  [2] - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 2.20 Giản đồ định thì chế độ tớ nhận [2] (Trang 42)
Hình  2.24  Sơ  đô  giao  tiếp  với  vi  điều  khiển  8051/8048  [2] - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 2.24 Sơ đô giao tiếp với vi điều khiển 8051/8048 [2] (Trang 44)
Hình  3.4  So  dé  chan  khéi  cpu_interface - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.4 So dé chan khéi cpu_interface (Trang 53)
Hình  3.7  Sơ  đồ  chân  khối  control - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.7 Sơ đồ chân khối control (Trang 57)
Hình  3.8  Sơ  đồ  máy  trạng  thái  khối  control - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.8 Sơ đồ máy trạng thái khối control (Trang 61)
Hình  3.9  Sơ  đồ  chân  khối  i2c_interfuce - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.9 Sơ đồ chân khối i2c_interfuce (Trang 63)
Hình  3.10  Sơ  đồ  máy  trạng  thái  của  khối  i2c_interface - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.10 Sơ đồ máy trạng thái của khối i2c_interface (Trang 65)
Hình  3.12  Mạch  tạo  tín  hiệu  nội  i2c_busy_ox - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.12 Mạch tạo tín hiệu nội i2c_busy_ox (Trang 67)
Hình  3.15  Qua  trinh  ghi  data  ra  bus  I2C  va  doc  ACK - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.15 Qua trinh ghi data ra bus I2C va doc ACK (Trang 69)
Hình  3.21  Sơ  đồ  chân  khối  clock_generator - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.21 Sơ đồ chân khối clock_generator (Trang 72)
Hình  3.35  Tớ  nhận  điều  kiện  Start  +  dia  chi+  truyén  dit  liéu  +  diéu  kién  Stop  + - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.35 Tớ nhận điều kiện Start + dia chi+ truyén dit liéu + diéu kién Stop + (Trang 81)
Hình  3.40  Tớ  nhận  diéu  kién  Start  +  dia  chi+  nhén  div  ligu  +  Restart  +  dia  chi+ - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.40 Tớ nhận diéu kién Start + dia chi+ nhén div ligu + Restart + dia chi+ (Trang 84)
Hình  3.42  Bus  lỗi  khi phat  hién  diéu  kién  Start  sai  vị  trí - Khóa luận nghiên cứu và thiết kế lõi IP mềm của i2c core
nh 3.42 Bus lỗi khi phat hién diéu kién Start sai vị trí (Trang 85)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w