Tài liệu: Đề tài nckh thiết kế và thi công bộ truyền nhận theo giao thức i2c

Tài liệu nghiên cứu Đề tài nckh thiết kế và thi công bộ truyền nhận theo giao thức i2c, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về .

Người đăng

Ẩn danh

Thể loại

Báo cáo Nghiên cứu Khoa học

2021

66
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về đề tài Nghiên cứu Khoa học Thiết kế và Thi công Bộ I2C

Đề tài NCKH thiết kế và thi công bộ truyền nhận theo giao thức I2C là một nghiên cứu quan trọng trong lĩnh vực kỹ thuật điện tử truyền thông. Với sự phát triển không ngừng của các vi điều khiển và thiết bị ngoại vi, các chuẩn giao tiếp ngày càng đa dạng và phức tạp. Tuy nhiên, giao thức I2C (Inter-Integrated Circuit) vẫn giữ vị trí quan trọng nhờ những ưu điểm nổi bật như đơn giản, tiêu hao công suất thấp và phần cứng phổ biến. Đề tài này tập trung vào việc thiết kế module I2C có khả năng hoạt động ở chế độ Master hoặc Slave, hỗ trợ nhiều mức tốc độ truyền khác nhau. Nghiên cứu được thực hiện bởi nhóm sinh viên tại Trường Đại học Sư Phạm Kỹ Thuật Thành phố Hồ Chí Minh, dưới sự hướng dẫn của các giảng viên chuyên môn.

1.1. Tổng quan về Giao thức I2C và Ứng dụng

Giao thức I2C là một chuẩn truyền dữ liệu được sử dụng rộng rãi trong các hệ thống số hiện đại. Với ưu điểm công suất thấpcấu trúc đơn giản, I2C trở thành lựa chọn lý tưởng cho các ứng dụng cần tối ưu hóa hiệu suất. Module I2C có thể được cấu hình linh hoạt, hỗ trợ các mức tốc độ 100 kbps, 400 kbps, 1 Mbps và 3 Mbps. Điều này cho phép bộ truyền nhận thích ứng với các yêu cầu khác nhau của hệ thống.

1.2. Mục tiêu và Tầm quan trọng của Đề tài

Mục tiêu chính của đề tài NCKH thiết kế và thi công bộ là phát triển một module I2C hiệu suất cao với khả năng tích hợp APB Slave cho giao tiếp AMBA. Bộ truyền nhận được thiết kế sẽ giúp tối ưu hóa truyền dữ liệu giữa vi xử lý và các thiết bị ngoại vi. Nghiên cứu này có tầm quan trọng thực tiễn trong việc phát triển hệ thống nhúng hiện đại.

II. Cơ sở Lý thuyết và Kiến thức Nền tảng

Cơ sở lý thuyết của đề tài thiết kế và thi công bộ I2C bao gồm nhiều khía cạnh kỹ thuật quan trọng. Trước tiên, đặc điểm truyền nhận theo giao thức I2C cần được hiểu rõ, bao gồm cách hoạt động của tín hiệu SDA và SCL, cơ chế điều khiển bus, và xử lý xung đột truyền dữ liệu. Bên cạnh đó, kiến thức về AMBA APB (Advanced Microcontroller Bus Architecture) là cần thiết để tích hợp module vào hệ thống lớn hơn. RTL Design sử dụng Verilog cung cấp công cụ để mô tả phần cứng một cách chính xác. Các phân lớp trừu tượng của mạch tích hợp số, từ cấp độ hành vi đến cấp độ cổng logic, đều quan trọng trong quá trình thiết kế module. Ngoài ra, mô hình trạng thái hữu hạnmáy trạng thái là nền tảng để thiết kế các khối điều khiển phức tạp.

2.1. Đặc điểm Truyền nhận Giao thức I2C

Giao thức I2C hoạt động trên hai đường dây SDA (Serial Data) và SCL (Serial Clock) với điện áp kéo xuống (open-drain). Truyền nhận dữ liệu theo I2C được điều khiển bởi các tín hiệu Start, Stop và các byte dữ liệu 8-bit. Bộ truyền nhận phải xử lý ACK/NACK để xác nhận dữ liệu. Hiểu rõ đặc tính giao thức này là chìa khóa để thiết kế chính xác.

2.2. RTL Design và Ngôn ngữ Mô tả Phần cứng

RTL Design sử dụng Verilog cho phép mô tả module I2C ở mức độ chi tiết. Mạch tổ hợp và mạch tuần tự tạo nên cấu trúc cơ bản. Mô hình trạng thái hữu hạn (FSM) được sử dụng để điều khiển quá trình truyền nhận dữ liệu, đảm bảo tuân thủ chính xác giao thức I2C.

III. Thiết kế Chi tiết Module I2C và Các Thành phần Chính

Thiết kế chi tiết của bộ truyền nhận I2C bao gồm nhiều module con quan trọng. Module APB Interface đóng vai trò giao tiếp với vi xử lý thông qua bus APB, cho phép đọc ghi dữ liệuxử lý ngắt. Module Clock Divider tạo ra các xung đồng hồ với tần số khác nhau để hỗ trợ các mức tốc độ truyền (100 kbps, 400 kbps, 1 Mbps, 3 Mbps). TX FIFO và RX FIFO là những bộ đệm quan trọng giúp tối ưu hóa truyền dữ liệu và cải thiện hiệu suất hoạt động. Máy trạng thái hữu hạn điều khiển toàn bộ quá trình giao tiếp, bao gồm phát hiện điều kiện Start/Stop, định hướng truyền dữ liệu, truyền nhận dữ liệu thực tế và xác định ACK. Mỗi thành phần được thiết kế cẩn thận để đảm bảo tuân thủ giao thức I2Chiệu suất cao.

3.1. Module APB Interface và Điều khiển Ngắt

Module APB Interface cho phép bộ truyền nhận I2C giao tiếp với vi xử lý thông qua giao tiếp APB chuẩn. Mạch logic thực hiện đọc ghi dữ liệu vào các thanh ghi điều khiển và dữ liệu. Khối điều khiển ngắt phát sinh tín hiệu ngắt khi có sự kiện truyền nhận để thông báo cho vi xử lý.

3.2. TX FIFO RX FIFO và Máy Trạng thái

TX FIFO và RX FIFO cải thiện hiệu suất truyền dữ liệu bằng cách đệm dữ liệu. Máy trạng thái hữu hạn điều khiển quá trình truyền nhận chi tiết, bao gồm phát hiện Start/Stop, xác định ACKxử lý lỗi. Thiết kế này đảm bảo tính tin cậytương thích với chuẩn I2C.

IV. Kết quả Mô phỏng và Đánh giá Hiệu suất

Mô phỏng hoạt động của bộ truyền nhận I2C được thực hiện ở nhiều cấp độ khác nhau. Trước tiên, mô phỏng hoạt động từng khối như APB Interface, TX FIFO, RX FIFO được kiểm tra riêng lẻ để đảm bảo tính đúng đắn của từng thành phần. Sau đó, mô phỏng hoạt động toàn thiết kế được thực hiện với mô hình kiểm tra (testbench) toàn diện. Kết quả mô phỏng cho thấy module I2C hoạt động đúng theo giao thức I2C, hỗ trợ thành công các mức tốc độ truyền khác nhau, xử lý chính xác truyền nhận dữ liệu, và xác định ACK một cách tin cậy. Hiệu suất của bộ truyền nhận đáp ứng các yêu cầu về công suất thấptốc độ cao. Đánh giá hoạt động tổng thể cho thấy thiết kế thành công và sẵn sàng để thi công thực tế hoặc tích hợp vào các hệ thống nhúng.

4.1. Mô phỏng Hoạt động Từng Khối thành phần

Mô phỏng hoạt động khối APB Interface xác nhận giao tiếp APB hoạt động chính xác. Mô phỏng TX FIFO và RX FIFO kiểm tra tính đúng đắn của bộ đệm dữ liệu. Mỗi khối thành phần được xác minh cẩn thận để đảm bảo tính đúng đắn trước khi tích hợp vào hệ thống toàn bộ.

4.2. Mô phỏng Toàn thiết kế và Đánh giá Kết quả

Mô hình kiểm tra toàn diện được xây dựng để mô phỏng hoạt động toàn thiết kế. Kết quả mô phỏng chứng minh bộ truyền nhận I2C hoạt động đúng với giao thức I2C, xử lý thành công các tình huống truyền nhận khác nhau, và đánh giá hiệu suất cho thấy thiết kế đạt các mục tiêu đề ra.

28/12/2025

Trích đoạn nội dung tài liệu

Chương 1: Tổng quan: Chương này trình bày lý do chọn đề tài, các mục tiêu và giới hạn của đề tài. Chương 2: Cơ sở lý thuyết: Giới thiệu chuẩn truyền I2C, Bus APB và RTL Design sử dụng Verilog. Chương 3: Mô hình hệ thống: Trình bày sơ đồ khối của hệ thống, các chức năng của từng 1 khối Chương 4: Thiết kế chi tiết: Phân tích, thiết kế, thi công từng khối của hệ thống. Chương 5: Kết quả và đánh giá: Bao gồm việc thực hiện mô phỏng mạch và kiểm tra hoạt động thực tế trên kit FPGA.

Chương 6: Kết luận và hướng phát triển. 2 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu I2C, viết tắt của cụm từ “Inter – Integrated Circuit”, là một chuẩn bus nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips. Ban đầu, chuẩn này chỉ được dùng trong các linh kiện điện tử của Philips. Sau đó, do tính ưu việt và đơn giản của nó, I2C đã được chuẩn hóa và sử dụng rộng rãi trong các module truyền thông nối tiếp của vi mạch tích hợp ngày nay [6-7].

I2C đã trở thành chuẩn công nghiệp được ứng dụng trong các giao tiếp công nghiệp, ngoài Philips còn có một vài tên tuổi cũng sử dụng chuẩn công nghiệp trong các sản phầm của mình như: Texas Instrument (TI), Analog Device, Maxim-Dallas, National Semiconductor, …Đồng thời bus I2C cũng được sử dụng làm bus giao tiếp ngoại vi cho nhiều loại IC khác nhau như Vi điều khiển 8051, ARM, AVR, EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tự (DAC, chip nhớ như RAM tĩnh (Static RAM), các IC điều khiển LED, LCD, … 2.2 Đặc điểm truyền nhận theo giao thức I2C: 2.1 Đặc điểm giao tiếp 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. Mỗi dây SDA và SCL đều được nối với dương nguồn qua điện trở kéo lên (pull-up- register) do các chân giao tiếp I2C của các thiết bị ngoại vi thường ở dạng open-drain hay open-collector. Giá trị của điện trở này thường trong khoảng 1k𝛺 đến 4.7k𝛺 tùy thuộc vào thiết bị [6].1: Sơ đồ giao tiếp các thiết bị theo chuẩn I2C [7].

Trong quá trình giao tiếp, mỗi thiết bị kết nối trên bus I2C đều được đánh một giá trị địa chỉ riêng biệt (do nhà sản xuất quy định), điều này giúp việc truyền nhận không bị nhầm lẫn mặc dù có nhiều thiết bị cũng kết nối trên một bus. Mỗi thiết bị có thể hoạt động như là thiết bị nhậ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 3 thuộc vào việc thiết bị đó là chủ (Master) hay tớ (Slave). Trên một bus I2C thì quyền điều khiển thuộc về Master.

Master nắm vai trò tạo xung đồng hồ cho toàn hệ thống, điều khiển quá trình khởi tạo cũng như kết thức giao tiếp và quyết định quá trình đọc hoặc ghi giữa các thiết bị. Về dữ liệu truyền trên bus I2C, một bus I2C chuẩn truyền 8‐bit dữ liệu có hướng trên đường truyền với tốc độ là 100Kbps – Chế độ chuẩn (Standard mode), tốc độ truyền có thể lên tới 400Kbps – Chế độ nhanh (Fast mode), 1Mbps và cao nhất là 3,4Mbps – Chế độ cao tốc (High‐speed mode). Quá trình truyền nhận giữa một Master và một Slave trên bus I2C được tiến hành như sau: +Thiết bị Master xác định địa chỉ của Slave cần giao tiếp. +Thiết bị chủ gửi một xung START, liền sau đó gửi địa chỉ của thiết bị tớ đó cùng với yêu cầu truyền hay nhận dữ liệu tương ứng.

+Thiết bị tớ nhận thấy địa chỉ trùng với địa chỉ của mình thì xác nhận bằng 1 xung ACK. +Quá trình truyền nhận dữ liệu bắt đầu, bên nhận dữ liệu sẽ kết thúc mỗi byte nhận bằng việc trả ACK. +Thiết bị chủ gửi một xung STOP, kết thúc quá trình truyền nhận.2 Định dạng khung dữ liệu Hình 2.2: Định dạng khung dữ liệu theo chuẩn I2C [8]. Dữ liệu trên bus I2C được truyền theo từng bit một, tại mỗi sườn dương của clock trên dây ACK.

Dữ liệu thay đổi trên SDA theo sườn xuống của clock. Mỗi byte dữ liệu có độ dài 8-bit, bit MSB được truyền đầu tiên trong byte, theo sau là các bit có trọng số thấp dần. Sau 8-bit dữ liệu, thiết bị nhận nếu đã nhận đủ 8-bit sẽ kéo SDA xuống mức thấp ở SCL thứ 9 tạo một xung ACK. Thiết bị truyền sau khi nhận được xung ACK sẽ tiếp tục truyền hoặc kết thúc.

Trường hợp không nhận đủ 8-bit dữ liệu, thiết 4 bị nhận sẽ gửi một xung NOT-ACK (SDA ở mức cao tại SCL thứ 9), từ đó Master sẽ gửi tín hiệu STOP hay RESTART.3 Điều kiện START và STOP Khi muốn thiết lập hay kết thúc một quá trình truyền nhận thì Master đều phải gửi tín hiệu START hay STOP để báo cho Slave biết. Ban đầu, khi chưa giao tiếp, cả SDA và SCL đều ở mức cao, báo cho thiết bị biết đường truyền đang ở chế độ rỗi. Đ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.3: Điều kiện START Hình 2.4: Điều kiện STOP Cả hai điều kiện START và STOP đều được tạo ra bởi Master.

Sau tín hiệu START, bus I2C coi như đang trong trạng 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 Master. 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 RESTART 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.4 Địa chỉ thiết bị Mỗi thiết bị tham gia vào bus I2C đều có một địa chỉ duy nhất do nhà sản xuất qui định để tránh gây nhầm lẫn trên đường truyền. Độ dài byte địa chỉ là 7-bit, do đó, sẽ có tối đa 128 thiết bị trên một bus I2C.

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. Riêng bit điều khiển hướng sẽ quy định chiều truyền dữ liệu. Nếu 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ừ thiết bị tớ gửi đến thiết bị chủ [7].5 Chế độ Master-Slave 5 Việc truyền nhận dữ liệu giữa Master và Slave có thể thực hiện theo một trong hai hướng truyền trên đường dữ liệu SDA: Master truyền-Slave nhận hoặc Slave truyền-Master nhận.

Quá trình được quyết định theo bit 8 (bit R/W) trong byte truyền đầu tiên từ phía Master. Trong đó, Master luôn là thiết bị tạo xung đồng hồ SCL trong suốt quá trình truyền. - Quá trình master truyền dữ liệu đến slave: +Master tạo tín hiệu START, bắt đầu quá trình truyền dữ liệu. +Master gửi byte đầu tiên gồm 7 bit địa chỉ của Slave cần giao tiếp, và bit thứ 8 R/W = “0” và đợi xung phản hồi ACK từ Slave.

+Nhận được ACK báo đúng địa chỉ từ Slave, Master bắt đầu truyền dữ liệu theo từng bit một. Kết thúc mỗi byte 8 bit thì chờ xung ACK phản hồi. Số lượng byte truyền không giới hạn. +Muốn kết thúc quá trình truyền thì Master gửi một bit STOP.5: Định dạng dữ liệu trong chế độ Master truyền [6].

- Quá trình Master nhận dữ liệu từ Slave: +Master tạo tín hiệu START, bắt đầu quá trình truyền dữ liệu. +Master gửi byte đầu tiên gồm 7 bit địa chỉ của Slave cần giao tiếp, và bit thứ 8 R/W = “1” và đợi xung phản hồi ACK từ Slave. +Slave bắt đầu truyền dữ liệu theo từng bit một, sau mỗi byte 8 bit thì chờ xung ACK phản hồi từ Master. Số lượng byte truyền không giới hạn.

+Muốn kết thúc quá trình truyền thì Master gửi một bit STOP.6: Định dạng dữ liệu trong chế độ Master nhận [6].1 Giới thiệu Giao thức APB (Advanced Peripheral Bus) là một trong những giao thức của bộ giao tiếp AMBA (Advanced Microcontroller Bus Architecture). Bộ giao tiếp AMBA là một kiến trúc bus hệ thống được xây dựng, phát triển và ứng dụng rộng rãi trong các vi điều khiển ARM. Trong đó, APB được xác định là một giao thức chi phí thấp để tối ưu hóa việc tiêu hao năng lượng và giảm mức độ phức tạp của giao tiếp. Giao thức APB phù hợp để kết nối với các ngoại vi công suất thấp như UART, I2C, SPI,….

Ngoài ra, AMBA còn bao gồm nhiều giao tiếp khác như AXI, ASB, AHB [9].7: Minh họa về kế nối của APB bus.8: Minh họa hệ thống SOC sử dụng APB bus và module I2C. Các kiến trúc bus tốc độ cao bao gồm ASB (Advanced System Bus) và AHB (Advanced High-performance Bus), một hệ thống chỉ sử dụng một trong hai. APB Bridge có vai trò tương tác với các bus tốc độ cao trên. Các module ngoại vi để giao tiếp được với bus phải có mạch giao tiếp, mạch này thường còn được gọi là APB Slave, mạch điều khiển bus từ phía APB Bridge gọi là APB Master.

Giao thức APB thực hiện thay đổi dữ liệu tại cạnh lên của xung đồng hồ, điều này nhằm đơn giản hóa việc tích hợp các ngoại vi APB vào bất kì thiết kế nào. Mỗi quá trình truyền nhận theo giao thức APB cần ít nhất 2 chu kỳ của xung đồng hồ. Bus APB có các tín hiệu như sau [2]: -PCLK: tín hiệu clock đồng bộ hoạt động theo cạnh lên. -PADDR: địa chỉ thanh ghi được truy xuất.

-PWRITE: tín hiệu cho phép ghi. -PSEL: tín hiệu cho phép. -PENABLE: tín hiệu báo pha ENABLE của một truy xuất đọc hoặc ghi. -PWDATA: dữ liệu ghi.

-PRDATA: dữ liệu đọc.2 Những đặc trưng cơ bản của AMBA 2 APB Các cập nhật dữ liệu của APB tại mọi phiên bản đều được thực thi tại sườn lên của xung clock, điều này giúp việc đơn giản hóa việc truyền nhận, đồng thời cũng giúp cho APB được dễ dàng tích hợp vào các ngoại vi. Tại phiên bản mới nhất của APB (AMBA 3 APB), việc thực hiện một giao tiếp có thể được thực hiện trong nhiều chu kỳ của xung clock, tuy nhiên, việc truyền nhận luôn phải đảm bảo được thực hiện ít nhất trong hai chu kỳ xung clock [10]. Trong đề tài, AMBA 2 APB được sử dụng để truyền nhận dữ liệu và cấu hình cho module I2C từ vi điều khiển. 8 Những đặc trưng cơ bản nhất của AMBA APB: Hình 2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ