Thiết kế và thi công bộ truyền nhận theo giao thức I2C design and verification of an I2C controller

Tóm tắt Thiết kế và thi công bộ truyền nhận theo giao thức I2C design and verification of an I2C controller: ...hối điều khiển trạng thái có chức năng kiểm tra con trỏ đọc và ghi để phân biệt trạng thái đầy hoặc trống của bộ đệm FIFO. Hình 2. Sơ đồ khối chi tiết module I2C được thiết kế. 2.4 Module I2C Interface Module có chức năng truyền và nhận dữ liệu theo giao thức I2C. Khối hoạt động ở m...trên chip FPGA Spartan 6. Tài nguyên logic được sử dụng (ước tính) Tài nguyên logic Đã dùng Tài nguyên Sử dụng Slice thanh ghi 245 11440 2% Slice LUT 577 5720 10% Số cặp LUT-FF được dùng toàn bộ 184 638 28% IOB được liên kết 32 186 17% BUFG/BUFGCTRLs 1 16 6% Bảng 4. Tần...ock Master được tạo và kết thúc bằng tín hiệu i_clock_en và i_clock_stop. Con trỏ trên TX FIFO txff_rptr tăng tương ứng đọc dữ liệu từ thanh ghi txff_data là 8’h06, 8’h07, 8’h08, 8’h09 để gửi dữ liệu. Máy trạng thái FSM bắt đầu quá trình giao tiếp chuyển từ trạng thái IDLE sang trạn...

pdf9 trang | Chia sẻ: Tài Phú | Ngày: 20/02/2024 | Lượt xem: 149 | Lượt tải: 0download
Nội dung tài liệu Thiết kế và thi công bộ truyền nhận theo giao thức I2C design and verification of an I2C controller, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
sor and multiple peripherals with simple hardware. In 
this paper, we present the design process of an I2C module communicating via AMBA APB 
(Advanced Microcontroller Bus Architecture - Advanced Peripheral Bus) bus standard. 
Specifically, the I2C module is designed using Verilog hardware description language, can be 
configured as a Master or a Slave, and supports various data transmission rates. Extensive 
simulation results are presented to verify the performance of the designed I2C module. 
Keywords: I2C standard; FPGA; digital interface; AMBA; testbench. 
1. GIỚI THIỆU 
Inter–Intergrated Circuit (I2C) 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. Do tính ưu việt và 
đơn giả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. Bus I2C được 
sử dụng cho rất nhiều loại IC khác nhau như 
các loại vi điều khiển 8051, PIC, AVR, ARM, 
chip như RAM tĩnh (static RAM), EEPROM, 
bộ chuyển đổi tương tự-số (ADC), số-tương tự 
(DAC), IC điều khiển LCD 
Thiết kế bus I2C sử dụng ngôn ngữ mô 
tả phần cứng Verilog [1-2] đã được trình bày 
trong nhiều bài báo [3-8]. Trong bài báo [3], 
các tác giả đã thực hiện thiết kế chuyển đổi 
từ giao tiếp SPI sang I2C nhằm mục đích 
chuyển đổi giao tiếp cho thiết bị gửi có tốc 
độ truyền nhận cao sang thiết bị nhận có tốc 
độ truyền nhận thấp. Trong bài báo [4] và 
[5], các tác giả đã thiết kế bus I2C có khả 
năng đáp ứng được nhiều Master trên cùng 
bus bằng việc sử dụng máy trạng thái (FSM) 
để thực hiện quyết định ưu tiên giữa các 
Master điều khiển I2C khi hoạt động cùng 
một thời điểm. Các tác giả trong bài báo [6] 
và [7] đã trình bày việc triển khai bộ điều 
khiển I2C trên FPGA để kết nối ADC thông 
qua bus I2C nhằm mục đích đồng bộ hóa dữ 
Doi: https://doi.org/10.54644/jte.65.2021.141 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
61 
liệu giữa ADC và FPGA. Thêm vào đó, bài 
báo số [8] đã trình bày cách thiết kế và thi 
công chuẩn I2C dựa trên giao thức 
Wishbone. Tuy nhiên, các thiết kế trong [3-8] 
chưa trình bày chi tiết thiết kế hoặc bao gồm 
các thiết kế đơn giản, chưa có nhiều cấu hình 
và hỗ trợ nhiều tốc độ truyền-nhận. 
Để cải thiện các hạn chế nêu trên, bài 
báo này trình bày một thiết kế module I2C sử 
dụng giao tiếp bus AMBA APB (Advanced 
Microcontroller Bus Architecture-Advanced 
Peripheral Bus) của ARM [9] có thể cấu hình 
là Master hoặc Slave, đồng thời hỗ trợ nhiều 
tốc độ truyền dữ liệu khác nhau. Hình 1 minh 
họa hệ thống System-On-Chip (SoC) sử dụng 
bus AMBA và module I2C. Thiết kế được 
đánh giá và mô phỏng trên ISE Design Suite 
14.7, QuestaSim 10.2 và Quartus II 13.0. 
Hình 1. Hệ thống SoC sử dụng AMBA bus và module I2C. 
2. THIẾT KẾ CHI TIẾT HỆ THỐNG 
Module thực hiện truyền nhận dựa trên 
tín hiệu cấu hình, các tệp thanh ghi và các bộ 
đệm FIFO có nhiệm vụ lưu các dữ liệu cấu 
hình và thực hiện đồng bộ dữ liệu, cuối cùng 
là module giao tiếp với bus I2C. Trong bài 
báo này, chúng tôi thực hiện thiết kế module 
giao tiếp I2C có khả năng giao tiếp tối đa 128 
thiết bị và cấu hình được 4 tốc độ truyền. Sơ 
đồ khối của một module I2C được thể hiện 
trong Hình 2. 
2.1 Module APB Interface 
Module APB Interface có chức năng 
giao tiếp với bus APB đồng thời điều khiển 
ghi/đọc dữ liệu. Khối APB Interface gồm 
Register File (tệp thanh ghi) chứa 10 thanh 
ghi có độ rộng 8 bit, các thanh ghi được cấu 
hình bởi tín hiệu điều khiển từ bus APB, tạo 
ra các tín hiệu điều khiển cho các khối còn 
lại của module I2C hoạt động và khối điều 
khiển ngắt tạo ra tín hiệu ngắt cho khối I2C 
(i2c_if) được tạo ra từ tín hiệu tổng hợp của 
ngắt truyền, ngắt nhận và ngắt tràn. 
2.2 Module Clock Divider 
Module Clock Divider tạo tín hiệu xung 
clock với tần số mong muốn cung cấp cho 
bus I2C. Khối Clock Divider hoạt động dựa 
theo tín hiệu kích hoạt i_clock_en và tín hiệu 
bất hoạt i_clock_stop được tạo ra từ khối I2C 
Interface. 
Tần số của đường SCL do Master tạo ra 
được lựa chọn dựa vào tín hiệu apb_csel 
được lấy từ các thanh ghi cấu hình. 
2.3 Bộ đệm TX FIFO và RX FIFO 
TX FIFO là bộ đệm cho quá trình truyền 
dữ liệu, RX FIFO là bộ đệm cho quá trình 
đọc dữ liệu, đảm bảo dữ liệu không bị mất do 
sự bất đồng bộ giữa 2 miền xung clock giữa 
vi xử lý và giao tiếp I2C. Các khối FIFO 
62 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
được xây dựng dựa trên các khối Write 
Pointer (con trỏ ghi dữ liệu), Read Pointer 
(con trỏ đọc dữ liệu), Memory Array (mảng 
bộ nhớ) và Status Control (khối điều khiển 
trạng thái). Trong đó khối điều khiển trạng 
thái có chức năng kiểm tra con trỏ đọc và ghi 
để phân biệt trạng thái đầy hoặc trống của bộ 
đệm FIFO. 
Hình 2. Sơ đồ khối chi tiết module I2C được thiết kế. 
2.4 Module I2C Interface 
Module có chức năng truyền và nhận dữ 
liệu theo giao thức I2C. Khối hoạt động ở 
một trong hai chế độ Master và Slave dựa 
trên tín hiệu cấu hình từ tập thanh ghi 
Register File, các tín hiệu txff_empty, 
rxff_ov giúp thông báo trạng thái từ các bộ 
đệm TX FIFO và RX FIFO, tín hiệu i_clk 
cung cấp xung clock cho đường SCL từ bộ 
Clock Divider. Bên trong module còn có các 
mạch phát hiện điều kiện start/stop dựa trên 
thiết kế mạch phát hiện cạnh xung, mạch xác 
định hướng truyền dữ liệu, mạch xác định 
xung ACK và thanh ghi dịch giúp truyền, 
nhận dữ liệu nối tiếp và đồng bộ với xung 
clock trên đường SCL. 
2.5 Mô tả thanh ghi 
Các thanh ghi được định nghĩa trong 
thiết kế được miêu tả qua Bảng 1. Cấu hình 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
63 
chi tiết và chức năng của các thanh ghi trên 
được miêu tả qua Bảng 2. 
3. ĐÁNH GIÁ CHẤT LƯỢNG CỦA 
THIẾT KẾ 
3.1 Tài nguyên logic được sử dụng 
Bảng 1. Chức năng, địa chỉ và kiểu truy cập 
của các thanh ghi 
PAD 
DR 
[7:0] 
Kiểu 
truy 
cập 
Tên thanh ghi Chức năng 
0x1C 
Đọc/ 
Ghi 
CONTROL 
Thanh ghi điều 
khiển 
0x20 Đọc 
STATUS/ENA 
BLE 
Thanh ghi 
trạng thái 
0x24 
Đọc/ 
Ghi 
ADDRESS 
Thanh ghi địa 
chỉ 
0x28 
Đọc/ 
Ghi 
COMMAND Thanh ghi lệnh 
0x2C 
Đọc/ 
Ghi 
DATA 
Thanh ghi dữ 
liệu 
0x30 
Đọc/ 
Ghi 
INTERRUPT 
ENABLE 
Thanh ghi cho 
phép ngắt 
0x34 Đọc 
RAW 
INTERRUPT 
ENABLE 
Thanh ghi ngắt 
0x38 Đọc 
INTERRUPT 
FLAG REGISTER 
Thanh ghi cờ 
ngắt 
0x3c 
Đọc/ 
Ghi 
CLOCK SELECT 
Thanh ghi chứa 
giá trị tần số 
xung clock 
được chọn 
0x40 
Đọc/ 
Ghi 
TRANSMIT 
ADDRESS 
Thanh ghi chứa 
địa chỉ Slave 
muốn truyền đi 
Thiết kế với đầy đủ các chức năng được 
tổng hợp trên FPGA Spartan 6 XC6SLX9-
FT(G)256 của hãng Xilinx [10] có tài nguyên 
logic được sử dụng được tóm tắt trong Bảng 
3. Tần số hoạt động tối đa của mạch được 
tổng hợp trên FPGA Spartan 6 XC6SLX9-
FT(G)256 là 124,245 MHz (xem bảng 4). 
Đồng thời thiết kế cũng được tổng hợp 
trên Quartus II theo cấu hình board Cylone II 
[11] để so sánh tài nguyên logic cần sử dụng 
giữa 2 board FPGA (Bảng 5). Tần số tối đa 
của thiết kế trên board Cylone II là 
150.35MHz (Bảng 6). 
3.2 Kết quả đánh giá qua mô phỏng 
3.2.1 Mô hình mô phỏng và tóm tắt Testcase 
Thiết kế được mô phỏng trên QuestaSim 
10.2 với mô hình cho 2 module cùng thiết kế 
nhưng được cấu hình khác nhau (1 Master và 1 
Slave) để kiểm tra hoạt động của thiết kế. Mô 
hình mô phỏng được thể hiện trong Hình 3. 
Bảng 2. Các thanh ghi ứng với địa chỉ 
PADDR và kiểu truy cập 
Tên Thanh Ghi Miêu Tả 
CONTROL Ký hiệu: CTR 
CTR[0]: Xóa nội dung FIFO truyền 
CTR[1]: Xóa nội dung FIFO nhận 
CTR[2]: Cấu hình hoạt động thiết 
bị ‘0’ – Slave ,‘1’ – Master 
STATUS/ENABLE Ký hiệu: SE 
SE[0]: Cho phép I2C hoạt động 
SE[1]: TX FIFO chưa đầy 
SE[2]: RX FIFO chưa trống 
SE[3]: Khối I2C đang làm việc 
ADDRESS Ký hiệu: ADDR 
ADDR[6:0]: Địa chỉ của thiết bị 
khi hoạt động là Slave 
COMMAND Ký hiệu: COM 
COM[0]: Điều khiển hướng 
truyền dữ liệu 
‘0’ – Master -> Slave 
‘1’ – Master <- Slave 
COM[1]: Khởi tạo/kết thúc giao tiếp 
‘0’ – Stop 
‘1’ – Start 
COM[2]: Khởi tạo giao tiếp mới 
DATA Ký hiệu: DATA 
DATA[7:0]: Dữ liệu truyền từ 
APB xuống I2C hoặc từ I2C lên 
APB 
INTERRUPT 
ENABLE 
Ký hiệu: IE 
IE[0]: Cho phép ngắt Overrun 
IE[1]: Cho phép ngắt truyền 
IE[2]: Cho phép ngắt nhận 
RAW 
INTERRUPT 
ENABLE 
Ký hiệu: IR 
IR[0]: Ngắt Overrun 
IR[1]: Ngắt truyền 
IR[2]: Ngắt nhận 
INTERRUPT 
FLAG REGISTER 
Ký hiệu: IF 
IF [0]: Cờ ngắt Overrun 
IF [1]: Cờ ngắt truyền 
IF [2]: Cờ ngắt nhận 
CLOCK SELECT Ký hiệu: CSEL 
CSEL[1:0]: Chọn tốc độ giao tiếp 
I2C 
00: 100kbps 
01: 400kbps 
10: 1Mbps 
11: 3.4Mbps 
TRANSMIT 
ADDRESS 
Ký hiệu: TADDR 
TADDR[6:0]: Địa chỉ Slave mà 
Master cần giao tiếp 
64 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
Bảng 3. Tài nguyên cần sử dụng của thiết kế 
trên chip FPGA Spartan 6. 
Tài nguyên logic được sử dụng (ước tính) 
Tài nguyên logic 
Đã 
dùng 
Tài 
nguyên 
Sử dụng 
Slice thanh ghi 245 11440 2% 
Slice LUT 577 5720 10% 
Số cặp LUT-FF 
được dùng toàn bộ 
184 638 28% 
IOB được liên kết 32 186 17% 
BUFG/BUFGCTRLs 1 16 6% 
Bảng 4. Tần số tối đa của thiết kế trên chip 
FPGA Spartan 6. 
Tóm lược về định thời 
Thời gian tối thiểu 8.049ns 
Tấn số tối đa 124.245MHz 
Thời gian ngõ vào tối thiểu 
trước xung clock 
9.063ns 
Thời gian yêu cầu ngõ ra tối 
đa sau xung clock 
13.341ns 
Bảng 5. Tài nguyên cần sử dụng của thiết kế 
trên chip FPGA Cyclone II. 
Tài nguyên logic được sử dụng 
Tài nguyên logic Đã dùng Tài 
nguyên 
Sử 
dụng 
Thành phần logic 651 4608 14% 
Tổ hợp chức năng 615 4608 13% 
Thanh ghi 286 4608 6% 
Chân 32 89 36% 
Số bit nhớ 256 1119808 <1% 
Bảng 6. Tần số tối đa của thiết kế trên chip 
FPGA Cyclone II. 
Tóm lược về định thời 
Fmax Tần số tối đa hạn chế Tên xung clock 
150.35 MHz 150.35 MHz pclk 
Trong các hệ thống số sử dụng AMBA 
Bus (tương tự như Hình 1), APB Bridge 
đóng vai trò tương tác với các bus tốc độ cao. 
Các module ngoại vi muốn 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 APB Slave, mạch điều 
khiển bus từ phía APB Bridge còn gọi là 
APB Master. Trong mô hình mô phỏng trên 
Hình 3, module I2C_APB chính là module 
I2C, trong đó module APB Master đóng vai 
trò như APB Bridge để giao tiếp dựa trên bus 
APB và được thiết kế dựa trên mô hình trạng 
thái hữu hạn được cung cấp bởi tài liệu định 
nghĩa chuẩn AMBA của ARM [7]. 
Bảng 7. Bảng tóm tắt các testcase 
Test case 
Cấu hình thanh ghi 
Master Slave 
1 (Hình 
4,5) 
Master 
truyền 
Slave 
nhận 
+ CTR (111): cấu hình 
Master, xóa FIFO truyền, 
nhận. 
+ TADDR (1010101): địa 
chỉ slave cần giao tiếp. 
+ IF (111): cho phép ngắt 
Truyền, Nhận, Overrun. 
+ CSEL (00): cấu hình tốc 
độ giao tiếp 100kbps. 
+ COM (010): Phát tín 
hiệu Start, Master truyền 
Slave nhận. Kết thúc giao 
tiếp cấu hình COM (000). 
+ SE: cho phép giao tiếp 
I2C. 
+ DATA: 8’h06 -> 8’h09 
+ CTR (011): 
cấu hình 
Slave, xóa 
FIFO truyền, 
nhận. 
+ ADDR 
(1010101): 
địa chỉ Slave. 
+ IF (111): 
cho phép ngắt 
Truyền, Nhận, 
Overrun. 
+ SE: cho 
phép giao tiếp 
I2C. 
2 (Hình 
6,7) 
Master 
nhận 
Slave 
truyền 
+ CTR (111): cấu hình 
Master, xóa FIFO truyền, 
nhận. 
+ TADDR (1010101): địa 
chỉ slave cần giao tiếp. 
+ IF (111): cho phép ngắt 
Truyền, Nhận, Overrun. 
+ CSEL (11): cấu hình tốc 
độ giao tiếp 3,4Mbps. 
+ COM (011): Phát tín 
hiệu Start, Master nhận 
Slave truyền. Kết thúc 
giao tiếp cấu hình COM 
(001). 
+ SE: cho phép giao tiếp 
I2C. 
+ CTR (011): 
cấu hình 
Slave, xóa 
FIFO truyền, 
nhận. 
+ ADDR 
(1010101): 
địa chỉ Slave. 
+ IF (111): 
cho phép ngắt 
Truyền, Nhận, 
Overrun. 
+ SE: cho 
phép giao tiếp 
I2C. 
+ DATA: 8’7f 
-> 8’h82. 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
65 
Hình 3. Mô hình mô phỏng kiểm tra thiết kế 
Hình 4. Mô phỏng đường dữ liệu SDA, clock SCL và các tín hiệu nội Master truyền (Testcase 1). 
Hình 5. Mô phỏng đường dữ liệu SDA, clock SCL và tín hiệu nội của Slave nhận (Testcase 1). 
66 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
Hình 6. Mô phỏng đường dữ liệu SDA, clock SCL và các tín hiệu nội Master nhận (Testcase 2). 
Hình 7. Mô phỏng đường dữ liệu SDA, clock SCL và tín hiệu nội của Slave truyền (Testcase 2). 
Thiết kế được mô phỏng qua 2 Testcase 
được liệt kê trong Bảng 7, bao hàm 2 tốc độ 
truyền 100 kbps và 3,4 Mbps. Dữ liệu cấu 
hình và dữ liệu truyền nhận được đọc và ghi 
qua các chu kỳ giao tiếp bus APB. Lần lượt 
các Testcase được thực hiện mô phỏng và 
kiểm tra. Dựa vào đó để có thể kết luận thiết 
kế hoạt động tốt trên mô phỏng, đảm bảo 
việc truyền nhận I2C ở nhiều tốc độ và cấu 
hình khác nhau, khả năng giao tiếp theo 
chuẩn APB. 
3.2.2 Phân tích kết quả mô phỏng 
Trong phần này, chúng tôi lần lượt trình 
bày các kết quả đánh giá qua mô phỏng 
tương ứng với Testcase 1 và 2. 
3.2.2.1 Testcase 1 
• Master truyền 
Hình 4 trình bày kết quả mô phỏng cho 
trường hợp master truyền. Xung clock 
Master được tạo và kết thúc bằng tín hiệu 
i_clock_en và i_clock_stop. Con trỏ trên TX 
FIFO txff_rptr tăng tương ứng đọc dữ liệu từ 
thanh ghi txff_data là 8’h06, 8’h07, 8’h08, 
8’h09 để gửi dữ liệu. Máy trạng thái FSM bắt 
đầu quá trình giao tiếp chuyển từ trạng thái 
IDLE sang trạng thái FIRSTBYTE và gửi 
byte địa chỉ mà Slave cần giao tiếp, sau khi 
nhận bit ACK xác nhận truyền đúng địa chỉ, 
FSM chuyển trạng thái sang TRANSMIT để 
phát các bit dữ liệu. Các tín hiệu hiz, zero và 
one quyết định Master hay Slave sẽ lái tín 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
67 
hiệu trên đường dữ liệu SDA, đảm bảo việc 
truyền nhận ở cả Master và Slave. 
• Slave nhận 
Hình 5 trình bày dạng sóng mô phỏng 
ứng với trường hợp slave nhận. Slave ở trạng 
thái nhận dữ liệu nên bit rx_busy được tích 
cực. Sau byte địa chỉ đầu tiên, Slave kiểm tra 
địa chỉ và xác nhận đúng bật bit s_right_add 
và bắt đầu quá trình truyền nhận. Các dữ liệu 
nhận trên trên RX FIFO tương ứng dữ liệu 
được gửi, con trỏ ghi rxff_wptr tăng. Sau mỗi 
byte truyền, khi nhận đủ byte, ack_return 
được bật lên kéo đường SDA xuống 0 để xác 
nhận truyền đủ bit. Đối với FSM phía Slave, 
bắt đầu giao tiếp chuyển từ trạng thái IDLE 
sang trạng thái FIRSTBYTE để so sánh byte 
địa chỉ, nếu chính xác sẽ chuyển sang trạng 
thái RECEIVE để bắt đầu nhận dữ liệu. 
Bảng 8. Bảng đánh giá kết quả mô phỏng. 
Testcase Đánh giá 
1 - Đảm bảo thiết kế hoạt động chính 
xác khi được cấu hình là Master 
truyền hay Slave nhận. 
- Byte địa chỉ đầu tiên được Master 
gửi đúng với địa chỉ cấu hình trên 
Slave (1010101) và bit điều khiển 
truyền nhận chính xác R/W = 0 
(Master gửi dữ liệu). 
- Các byte dữ liệu được đưa xuống 
Master được truyền chính xác. 
- TX FIFO và RX FIFO đảm bảo dữ 
liệu được truyền đi và nhận về và hoạt 
động đúng với thiết kế đề ra. 
- Tốc độ SCL tương ứng là 100 kbps. 
2 - Đảm bảo thiết kế hoạt động chính 
xác khi được cấu hình là Master nhận 
hay Slave truyền. 
- Byte địa chỉ đầu tiên được Master 
gửi đúng với địa chỉ cấu hình trên 
Slave (1010101) và bit điều khiển 
truyền nhận chính xác R/W = 1 
(Master nhận dữ liệu). 
- Các byte dữ liệu được đưa xuống 
Slave được truyền chính xác. 
- TX FIFO và RX FIFO đảm bảo dữ 
liệu được truyền đi và nhận về và hoạt 
động đúng với thiết kế đề ra. 
- Tốc độ SCL tương ứng là 3,4 Mbps. 
3.2.2.2 Testcase 2 
• Master nhận 
Hình 6 trình bày dạng sóng mô phỏng 
cho trường hợp master nhận. Xung clock 
được tạo từ Master tương tự như Testcase 1. 
Khi Master ở trạng thái Receive, ban đầu sẽ 
phát byte địa chỉ giao tiếp với Slave và nhận 
dữ liệu từ Slave do đó tín hiệu i_rx_busy 
được tích cực. Sau mỗi 8 bit, tín hiệu 
i_rxff_wr được bật đồng thời tăng giá trị con 
trỏ ghi rxff_wptr để ghi dữ liệu vào thanh ghi 
RX FIFO. Dữ liệu nhận tương ứng là 8’h7f, 
8’h80, 8’h81 và 8’h82. Đồng thời cuối mỗi 
byte dữ liệu nhận, tín hiệu ACK tích cực 
được báo về cho Slave. 
• Slave Transmit 
Hình 7 trình bày kết quả mô phỏng cho 
trường hợp slave truyền. Sau khi nhận đúng 
địa chỉ gửi từ Master, FSM phía Slave 
chuyển từ trạng thái IDLE sang trạng thái 
TRANSMIT để gửi dữ liệu, dữ liệu truyền đi 
lần lượt là 8’h7f, 8’h80, 8’h81, 8’h82. Tín 
hiệu i_txff_rd được bật để tăng con trỏ 
i_txff_wptr để đọc dữ liệu từ TX FIFO và 
gửi dữ liệu. 
Sau khi so sánh kết quả mô phỏng so với 
lý thuyết và các yêu cầu thiết kế, chúng tôi 
nhận thấy rằng module I2C được thiết kế 
hoạt động chính xác, đáp ứng được yêu cầu 
thiết kế với nhiều cấu hình khác nhau (như 
được tóm tắt trong bảng 8). 
4. KẾT LUẬN 
Thiết kế module I2C được trình bày 
trong bài báo này sử dụng chuẩn bus AMBA 
APB. Thiết kế hỗ trợ nhiều cấu hình và tốc 
độ truyền nhận. Bên cạnh đó, thiết kế có thể 
được sử dụng như một soft IP core ở quá 
trình thiết kế Front-End khi thiết kế IC. 
Ngoài ra, trong khi hầu hết các thiết kế vi 
mạch ít được trình bày chi tiết, bài báo này 
có giá trị như một tài liệu tham khảo cho việc 
học tập các môn liên quan tới thiết kế hệ 
thống số và thiết kế vi mạch số. 
68 
Tạp Chí Khoa Học Giáo Dục Kỹ Thuật Số 65 (08/2021) 
Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh 
TÀI LIỆU THAM KHẢO 
[1] Pong P. Chu. RTL Hardware Design using VHDL. A JOHN WILEY & SONS, INC, 2006. 
[2] Stephen Brown and Zvonko Vranesic. Fundamentals of Digital Logic with Verilog 
Design (third edition). McGraw Hill, 2014. 
[3] D. Trivedi, A. Khade, K. Jain and R. Jadhav, "SPI to I2C Protocol Conversion Using 
Verilog," 2018 Fourth International Conference on Computing Communication Control 
and Automation (ICCUBEA), Pune, India, 2018, pp. 1-4. 
[4] A. Anagha and M. Mathurakani, "Prototyping of dual master I2C bus controller," 2016 
International Conference on Communication and Signal Processing (ICCSP), 
Melmaruvathur, 2016, pp. 2124-2129. 
[5] A. Anagha and M. Mathurakani, "Prototyping of dual master I2C bus controller," 2016 
International Conference on Communication and Signal Processing (ICCSP), 
Melmaruvathur, India, 2016, pp. 2124-2129. 
[6] P. Bagdalkar and L. Ali, "Hardware Implementation of I2C Controller on FPGA and 
Validation Through Interfacing with Low-Cost ADC," 2020 Fourth International Conference 
on Inventive Systems and Control (ICISC), Coimbatore, India, 2020, pp. 887-891. 
[7] C. Liu, Q. Meng, T. Liao, X. Bao and C. Xu, "A Flexible Hardware Architecture for 
Slave Device of I2C Bus," 2019 International Conference on Electronic Engineering 
and Informatics (EEI), Nanjing, China, 2019, pp. 309-313. 
[8] V. Patel K.S and B. R, "Design and Verification of Wishbone I2C Master Device," 
2018 International Conference on Networking, Embedded and Wireless Systems 
(ICNEWS), Bangalore, India, 2018, pp. 1-5. 
[9] AMBA™ Specification (Rev 2.0), developer.arm.com/docs/ihi0011/a/amba 
specification-rev-20. 
[10] Wael M. El-Medany. Reconfigurable CRC IP core design on xilinx spartan 3AN FPGA. 
International Journal of Computer Applications in Technology (IJCAT), 55(4), 2017. 
[11] V. Venkataramanan; S. Lakshmi; Vineet A. Kanetkar. Design and implementation of 
LTE physical layer on FPGA. International Journal of Computer Applications in 
Technology (IJCAT), 61(1), 2019. 
Tác giả chịu trách nhiệm bài viết: 
TS. Đỗ Duy Tân 
Trường Đại học Sư phạm Kỹ thuật TP.HCM 
Email: tandd@hcmute.edu.vn 

File đính kèm:

  • pdfthiet_ke_va_thi_cong_bo_truyen_nhan_theo_giao_thuc_i2c_desig.pdf