LỜI CAM ĐOAN
Cộng hòa xã hội chủ nghĩa Việt Nam
Độc lập – Tự do – Hạnh phúc
***
LỜI CAM ĐOAN
Kính gửi: Hội đồng Bảo vệ Tốt nghiệp khóa 09ĐTVT khoa Điện tử - Viễn thông.
Chúng tôi gồm:
- Lê Hữu Việt, sinh viên lớp 09DT2, khoa Điện tử - Viễn thông.
- Võ Thị Kim Nga, sinh viên lớp 09DT2, khoa Điện tử - Viễn thông.
- Lê Hà Bảo Ngọc, sinh viên lớp 09DT2, khoa Điện tử - Viễn thông.
Chúng tôi xin cam đoan nội dung của đồ án này do tự nhóm nghiên cứu và
thiết kế dưới sự hướng dẫn của TS. Huỳnh Việt Thắng mà không là bản sao chép
của bất kì đồ án hay công trình nghiên cứu nào đã có từ trước. Nếu vi phạm tôi
xin chịu hoàn toàn trách nhiệm.
Người thực hiện
MỤC LỤC
MỤC LỤC
DANH MỤC TỪ VIẾT TẮT
DANH MỤC TỪ VIẾT TẮT
I2C
Inter Intergrated Circuit
UART
Universal Aschynorous Receiver Transmitter
IP
Intellectual Property
RTL
Register Transfer Level
FPGA
Field Programmable Gate Array
I/O
Input / Output
IC
Intergrated Circuit
BRG
Baud Rate Generater
APB
Advanced Peripheral Bus
AMBA
Advanced Microcontroller Bus Architecture
ACK
Acknowledge
FIFO
First In First Out
Tx
Transmitter
Rx
Receiver
DMA
Direct Memory Access
LỜI MỞ ĐẦU
LỜI MỞ ĐẦU
Ngày nay, cùng với sự phát triển không ngừng của các dòng vi điều khiển,
các loại thiết bị ngoại vi, các chuẩn giao tiếp cũng phát triển ngày càng đa dạng.
Các loại vi điều khiển hay các loại thiết bị ngoại vi khác nhau (như LCD, sensor
hay các loại bộ nhớ) sẽ sử dụng các chuẩn giao tiếp khác nhau. Vậy liệu có thể
tích hợp các chuẩn giao tiếp khác nhau (như I2C, UART) trên cùng 1 chip để có
thể chuyển đổi linh hoạt giữa các chuẩn giao tiếp khi ta thay đổi sử dụng các loại
ngoại vi khác nhau? Trên cơ sở đó, UART/I2C Controller IP core được thiết kế
cho phép vi xử lý lựa chọn linh hoạt giữa 2 chuẩn giao tiếp.
Trong nội dung đồ án này, lõi IP UART/I2C Controller được thiết kế theo
quy trình thiết kế vi mạch số của tập đoàn Synopsys, một trong những tập đoàn
hàng đầu thế giới cung cấp công cụ chuyên dụng trong ngành thiết kế vi hiện
nay. Lõi IP được phân tích đến mức cổng logic, từ đó Soft IP được viết bằng
ngôn ngữ lập trình phần cứng Verilog, code ở mức RTL được kiểm tra sửa lỗi
trên phần mềm ModelSim.Sau đó, lõi IP được tổng hợp ở mức cổng logic trên
phần mềm Quartus II, Student Edition và được nạp trên Kit Altera DE2 sử dụng
chip FPGA Cyclone II.
Lõi IP UART/I2C Controller do nhóm thiết kế đáp ứng các yêu cầu kĩ thuật
đặt ra. UART Controller tương thích chuẩn công nghiệp 16550 và có khả năng
truyền nhận dữ liệu song công. UART hoạt động với khung dữ liệu 8 bit, 1 bit
Start và 1 bit Stop, đồng thời hỗ trợ tốc độc baud cấu hình được, chế độ Auto
Flow cũng như chế độ kiểm tra chẵn lẻ. I2C Controller được thiết kế có thể cấu
hình hoạt động là Master hoặc Slaver, hỗ trợ tối đa 128 thiết bị cùng hoạt động
với chế độ định địa chỉ 7 bits. I2C Controller hỗ trợ 4 mức tốc độ hoạt động
100kbps, 400kbps, 1Mbps và 3.4Mbps. Ngoài ra, lõi IP giaotiếp với vi xử lý theo
chuẩn AMBA APB, sử dụng các FIFO 8x16 trong các hoạt động truyền và nhận
dữ liệu.
Nội dung đồ án bao gồm 4 chương:
LỜI MỞ ĐẦU
Chương 1: Cơ sở lý thuyết
Chương 2: Thiết kế khối UART
Chương 3: Thiết kế khối I2C
Chương 4: Mô phỏng và tổng hợp
PHÂN CÔNG CÔNG VIỆC
Công việc
Tìm hiểu lý
thuyết
Thiết kế UART
Thiết kế I2C
Code RTL
Mô phỏng
Lê Hữu Việt
I2C
Receiver
Võ Thị Kim Nga
UART
Lê Hà Bảo Ngọc
Board Education and
Developtment Altera DE2
APB Interface
Transmitter
Baudrate
Clock Devider
Tx FIFO
APB Interface
I2C Interface
Rx FIFO
APB Master
Theo phần đã thiết kế
Tổng hợp code và mô phỏng, sửa lỗi độc lập
Bên cạnh đó, do được thực tập tốt nghiệp suốt 3 tháng tại Trung tâm Thiết
Kế Vi mạch thành phố Đà Nẵng, nên chúng tôi quyết định chọn Đồ án tốt nghiệp
theo hướng thiết kế vi mạch để vận dụng các kiến thức đã học được trong quá
trình thực tập.
Nhóm chúng tôi xin chân thành cảm ơn toàn thể thầy cô khoa Điện Tử
Viễn Thông đã nhiệt tình hỗ trợ nhóm trong suốt quá trình thực hiện đồ án tốt
nghiệp, đặc biệt là Ts. Huỳnh Việt Thắng tận tình hướng dẫn nhóm hoàn thành
đồ án theo đúng mục tiêu đề ra.
Chương 1: CƠ SỞ LÝ THUYẾT
Chương 1:
CƠ SỞ LÝ THUYẾT
1.1. Giới thiệu chương:
Chương này giới thiệu tổng quan về quy trình thiết kế vi mạch số, cung cấp
cái nhìn sơ lược về lịch sử nền công nghiệp vi mạch tích hợp, những bước tiến
công nghệ cũng như các khái niệm cơ bảntrong luồng chế tạo vi mạch. Sau đó
trình bày cơ sở lý thuyếtchuẩn bus AMBA APB, UART, I2C và giới thiệu sơ
lược về Altera DE2 Board Development and Education.
1.2. Tổng quan về quy trình thiết kế vi mạch số[9]:
1.2.1. Quy trình thiết kế vi mạch số:
Hình 1.1. Tổng quan về quy trình thiết kế vi mạch số.
Quy trình thiết kế vi mạch số bao gồm 4 bước chính sau:
1.2.1.1. Specification:
Specification (Hình 1.2) là quá trình nghiên cứu các đặc tính kĩ thuật của lõi
IP, từ đó phân tích thiết kế lõi IP đến mức cổng logic,bao gồm 5 bước chính:
Trang 6
Chương 1: CƠ SỞ LÝ THUYẾT
Nghiên cứu: Tìm kiếm, đọc hiểu tài liệu và phân tích các giao thức, chức
năng, các thông số mong muốn,… để tạo ra bảng chức năng chi tiết.
High-level Design: Thiết kế mức kiến trúc: Bao gồm vẽ sơ đồ khối là thiết
kế được chia thành các khối riêng biệt, mỗi khối sẽ đảm nhiệm một chức năng
riêng theo ý muốn của kĩ sư thiết kế. Và vẽ sơ đồ tín hiệu là xác định số lượng,
chức năng và định thời các tín hiệu. Nếu thiết kế có giao diện được mô tả trong
các giao thức chuẩn, các tín hiệu đó sẽ được liệt kê trong tài liệu về giao thức đó.
Hình 1.2. Chi tiết 2 quá trình thiết kế: Specificaton và Verification.
Low-level Design: Phân tích cấu trúc của thiết kế ở mức cổng. Tất cả các
khối được phân tích bằng việc sử dụng các bộ MUX, các cổng AND, OR, XOR,
NOT và Flip-flop,… Bước này chiếm rất nhiều thời gian do đó đóng vai trò đặc
biệt quan trọng trong luồng thiết kế. Kết quả thu được sau khi phân tích là sơ đồ
cấu trúc chi tiết của thiết kế.
Trang 7
Chương 1: CƠ SỞ LÝ THUYẾT
Coding: Việc viết code RTL được hoàn thành dựa vào sơ đồ cấu trúc chi
tiết của thiết kế đã được phân tích ở bước thiết kế mức chức năng.
Block-level check: Kiểm tra và mô phỏng tất cả các khối riêng biệt bằng
các công cụ kiểm tra cũng như các phần mềm mô phỏng.
1.2.1.2. Verification:
Verification (Hình 1.2): quá trình được sử dụng để kiểm tra tính đúng đắn
về mặt chức năng của thiết kế, nhằm đảm bảo chắc chắn thiết kế logic phù hợp
với specification. Có 2 loại Verification thông dụng là Functional Verification và
Timing Verification.
Mục đích: phát hiện các lỗi trong thiết kế. Bởi vì lỗi tìm thấy ở block-level
ít gây thiệt hại. Lỗi tìm thấy ở system-level ảnh hưởng đến thời gian sản xuất IC
ra thị trường. Lỗi tìm thấy sau khi chế tạo gây tốn kém khá lớn vì chi phí chế tạo
lại. Lỗi tìm thấy bởi khách hàng có thể gây thiệt hại hàng triệu đô la và mất uy tín
Verification gồm 3 bước chính:
-
RTL-level Simulation: Mô phỏng, phát hiện và sửa lỗi trong thiết kế ở mức RTL
-
code.
Gate-level Simulation: Mô phỏng và kiểm tra tính tương đương trong thiết kế ở
-
mức cổng logic.
FPGA Test: Kiểm tra hoạt động cơ bản của thiết kế trên KIT FPGA
1.2.1.3. Physical design:
Trang 8
Chương 1: CƠ SỞ LÝ THUYẾT
Hình 1.3. Chi tiết quá trình thiết kế vật lý.
Synthesis (Hình 1.4.): là quá trình chuyển đổi thiết kế dưới dạng mô tả bằng
ngôn ngữ phần cứng(RTL-level) sang mô tả bằng các cổng logic (Gate-level).
Quá trình tổng hợp logic được thực hiện bằng cách tổ hợp RTL code và thư viện
công nghệ, là thư viện chứa các cell chuẩn và thông số của chúng bao gồm các
cổng logic cơ bản (AND OR XOR NOT) và các Macro Cell ( Adder, Mux,
Memory, Flip-flop).
Trang 9
Chương 1: CƠ SỞ LÝ THUYẾT
Hình 1.4. Quá trình tổng hợp logic.
Pre-layout Timing: Phân tích các vi phạm về timing sau khi tổng hợp
Place and Route: Xác định vị trí các cổng logic đặt trên chip vật lý đồng
thời đảm bảo tối thiểu hóa độ trễ trên các Critical Path, độ nghẽn khi routing và
độ trễ đường dây bằng cách thay đổi kích thước các cổng logic, chèn thêm các bộ
đệm hoặc thực hiện tổng hợp lại từng phần.
Post-layout Timing: Phân tích, kiểm tra timing cho các đường timing sau
quá trình Place & Route.
Physical Verification: Kiểm tra layout của IC có thỏa mãn các tiêu chí kĩ
thuật theo các luật lệ thiết kế, tính đồng nhất giữa Schematic và Layout.
1.2.2. Công cụ sử dụng trong thiết kế vi mạch số:
1.2.2.1. Specification:
Microsoft Word: viết mô tả thiết kế và hướng dẫn sử dụng.
Notepad++/ Emeditor: viết code RTL.
XEmacs: tự động kết nối các khối con.
LEDA (Synopsys) : Kiểm tra lỗi cú pháp trong code RTL.
Microsoft Visio: Vẽ sơ đồ khối, sơ đồ tín hiệu, sơ đồ chi tiết mức cổng
logic và sơ đồ máy trạng thái hữu hạn.
Công cụ FPGA: Quartus (Altera), Leonardo Spectrum (Mentor Graphics),
ISE Design Suite (Xilinx) được dùng để biên dịch code RTL trên FPGA.
1.2.2.2. Verification:
Trang 10
Chương 1: CƠ SỞ LÝ THUYẾT
VCS (Synopsys): Trình mô phỏng hoạt động trên hệ điều hành Linux, được
sử dụng trong công nghiệp.
ModelSim (Mentor Graphic): Trình mô phỏng dùng để kiểm tra chức năng
logic của thiết kế..
1.2.2.3. Physical Design:
Design Compiler: tổng hợp code RTL thành các cổng logic.
IC Compiler: thực hiện quá trình layout thiết kế.
Prime Timer: kiểm tra timing của thiết kế.
Hercules: kiểm tra thiết kế vật lý, Design Rule Check (DRC) và Layout
Versus Schematic (LVS).
1.3.
Cơ sở lý thuyết về AMBA APB
1.3.1. Giới thiệu chung về Bus APB [1]
APB (Advanced Peripheral Bus) là 1 phần của cấu trúc bus AMBA
(Advanced Microcontroller Bus Architecture).
AMBA APB thường được sử dụng để giaotiếp với các thiết bị ngoại vi có
băng thông thấp và không yêu cầu hiệu suất cao.
Sơ đồ tín hiệu vào ra Bus APB như Hình 1.5.
Trang 11
Chương 1: CƠ SỞ LÝ THUYẾT
Hình 1.5. Cấu trúc bus AMBA APB.
1.3.2. Những đặc trưng cơ bản của AMBA APB [1]
-Những phiên bản cập nhật nhất của AMBA APB đảm bảo rằng sự thay đổi
của tín hiệu chỉ xảy ra tại sườn lên của xung clock.
-Những đặc trưng cơ bản nhất của AMBA APB:
+Hoạt động của APB bus dựa trên 3 trạng thái cơ bản như Hình 1.6.
Hình 1.6. Giản đồ trạng thái của bus APB.
Trang 12
Chương 1: CƠ SỞ LÝ THUYẾT
•
•
IDLE: Trạng thái mặc định của bus ngoại vi.
SETUP: Khi có 1 yêu cầu truyền dữ liệu, bus chuyển sang trạng thái SETUP,
lúc này tín hiệu chọn PSELx =1. Bus chỉ ở trạng thái SETUP trong 1 chu kỳ
clock và sẽ luôn chuyến sang trạng thái ENABLE tại sườn lên của xung
•
clock tiếp theo.
ENABLE:Ở trạng thái ENABLE, tín hiệu chọn PSELx =1. Các tín hiệu read,
write, address vẫn giữ ổn định suốt quá trình chuyển từ trạng thái SETUP
sang ENABLE. Trạng thái ENABLE chỉ kéo dài trong 1 chu kỳ, sau trạng
thái này bus lại chuyển về trạng thái IDLE như ban đầu.
-Quá trình ghi dữ liệu ( Hình 1.7):
Hình 1.7: Giản đồ thời gian quá trình ghi dữ liệu
Quá trình ghi dữ liệu được bắt đầu với các tín hiệu chọn, tín hiệu ghi, dữ
liệu ghi và tín hiệu địa chỉ được thay đổi sau sườn lên của xung clock. Chu kỳ
clock đầu tiên của quá trình ghi dữ liệu được gọi là chu kỳ SETUP. Tại sườn lên
clock kế tiếp sau đó, PENABLE được tích cực mức 1, chỉ ra rằng chu kỳ
ENABLE đang diễn ra. Quá trình ghi được hoàn thành cuối chu kỳ này.
- Quá trình đọc dữ liệu
Trang 13
Chương 1: CƠ SỞ LÝ THUYẾT
Hình 1.8. Giản đồ thời gian quá trình đọc dữ liệu.
Hình 1.8 trình bày timing của các tín hiệu dò, tín hiệu chọn, địa chỉ, ghi
cũng tương tự như quá trình ghi dữ liệu. Trong trường hợp đọc dữ liệu, Slave
phải cung cấp dữ liệu suốt chu kỳ ENABLE. Dữ liệu được lấy mẫu tại sườn lên
của xung clock cuối chu kỳ ENABLE.
1.4. Cơ sở lý thuyết UART
1.4.1. Giới thiệu chung về UART [5]
UART là từ viết tắt của Universal Asynchronous Receiver Transmitter.Bộ
thu/phát không đồng bộ đa năng, là mộtloạithu/phát không đồng bộ dùng để thực
hiện việc chuyển đổi dữ liệu song song thành nối tiếp và truyền nhận nối tiếp
giữa bên phát và bên thu.
Trong các ngày đầu của PC, 8250 UART dùng để kết nối các máy tính.Tiếp
đó là 16450 UART,16550 UART ra đời (vẫn còn phổ biến ngày nay).Ngoài ra
còn có 16650 UART và 16750 UART.Đây là 1 chuẩn giao tiếp với các thiết bị
ngoại vi khác khá phổ biến.
1.4.2. Chức năng chính của UART:[6]
1.4.2.1. Định dạng khung dữ liệu truyền theo chuẩn UART:
Trang 14
Chương 1: CƠ SỞ LÝ THUYẾT
Hình 1.9. Khung dữ liệu truyền theo chuẩn UART.
Hình 1.9 biểu diễn khung dữ liệu truyền theo chuẩn UART, trong đó:
-
Trong trạng thái rỗi, bus được giữ ở mức 1,khi có bit START bus được kéo
-
xuống 0.
Số bit dữ liệu chính có thể từ 5 đến 8 bit,với đồ án này sử dụng 8 bit.
Tiếp theo là 1 bit PARITY kiểm tra chẵn/lẻ(tùy chọn).
Cuối cùng là bit STOP tích cực ở mức 1 (1;1,5 hay 2 bit).
1.4.2.2. Các chế độ truyền dữ liệu:
Có 2 chế độ truyền dữ liệu chính:
-
Truyền theo kiểu Single:Sau khi gửi xong 1 frame(11bit),thì bus sẽ chuyển sang
-
trạng thái IDLE trong 1 thời gian nhất định trước khi gửi frame mới.
Truyền theo kiểu Back-to-Back: Sau khi gửi xong 1 frame,thì gửi ngay 1 frame
khác liên tiếp mà không có khoảng thời gian IDLE.
1.4.2.3. Tốc độ Baud(bps)
Công thức cố định:
Tốc độ baud =
(1.1)
Công thức có thể thay đổi:
Tốc độ baud =
(1.2)
Với BRG là số được cấu hình trong thanh ghi Baud rate.
Sai số trong tính tốc độ Baud:
-
Tốc độ Baud mong muốn:
Desired baud rate=
BRG_cal
=
(1.3)
Trang 15
Chương 1: CƠ SỞ LÝ THUYẾT
-
Chọn giá trị nguyên gần đúng nhất gọi là:BRGused
Tốc độ Baud được sử dụng:
Desired baud rate=
Sai số trong tính tốc độ Baud:
Sai số =
(1.4)
1.4.2.4. Các tín hiệu ngắt
-
Hình 1.10. Sơ đồ khối điều khiển ngắt
Tín hiệu ngắt là những tín hiệu thông tin đến CPU core về những trạng thái đặc
biệt của UART.Ví dụ:Ngắt phát,ngắt nhận,lỗi nhận(parity,overrun,…).
1.5. Cơ sở lý thuyết I2C
1.5.1. Giới thiệu chung về I2C:[3][4]
1.5.1.1. Lịch sử phát triển của I2C:
I2C, viết tắt của cụm từ “Inter – Intergrated 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.
I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có thể
kể ra đây một vài tên tuổi ngoài Philips như: Texas Intrument (TI), Maxim‐
Dallas, Analog Device, National Semiconductor, … Bus I2C được sử dụng làm
Trang 16
Chương 1: CƠ SỞ LÝ THUYẾT
bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển
8051, PIC, AVR, ARM, chíp nhớ như RAM tĩnh (Static Ram), EEPROM, bộ
chuyển đổi tương tự số (ADC), số tương tụ (DAC), IC điểu khiển LCD, LED…
1.5.1.2. Đặc điểm giao tiếp I2C:
Hình 1.11. Sơ đồ giao tiếp các thiết bị theo chuẩn I2C.
Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL).
SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ
và chỉ theo một hướng. 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ị.
Trong quá trình giao tiếp, mỗi thiết bị luôn được đánh một giá trị địa chỉ
duy nhất (do nhà sản xuất quy định) nên không xảy ra nhầm lẫn trong quá trình
kết nối, mặc dù trên bus I2C có rất nhiều thiết bị. 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 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ề 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
quá trình giao tiếp.
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
Trang 17
Chương 1: CƠ SỞ LÝ THUYẾT
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 thiết bị chủ và một thiết bị tớ trên bus I2C
được tiến hành như sau:
+ Thiết bị chủ xác định địa chỉ của thiết bị tớ 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.
1.5.2. Đặc điểm chung của I2C:[3][10]
1.5.2.1. Định dạng khung dữ liệu:
Hình 1.12. Định dạng khung dữ liệu theo chuẩn I2C.
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 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 bị nhận sẽ gửi một xung NOT-ACK (SDA
Trang 18
Chương 1: CƠ SỞ LÝ THUYẾT
ở mức cao tại SCL thứ 9), từ đó thiết bị chủ sẽ gửi tín hiệu STOP hay
RESTART.
1.5.2.2. Đ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ì thiết bị chủ
đều phải gửi tín hiệu START hay STOP để báo cho thiết bị tớ 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.
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 qua 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.
1.5.2.3. Địa chỉ thiết bi.
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ủ.
1.5.2.4. Chế độ Master-Slave:
Trang 19
Chương 1: CƠ SỞ LÝ THUYẾT
Việc truyền dữ liệu trên bus I2C thực hiện theo 2 hướng: từ master đến
slave và ngược lại, hướng truyền được quy định bởi bit thứ 8 trong byte đầu tiên:
R/W. Master luôn là thiết bị tạo xung clock SCL trong suốt quá trình truyền.
Master truyền – Slave nhậ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.
Hình 1.13. Định dạng dữ liệu trong chế độ Master truyền.
Master nhận – Slave truyền:
Trang 20
Chương 1: CƠ SỞ LÝ THUYẾT
Hình 1.14. Định dạng dữ liệu trong chế độ Master nhận.
- 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.
1.6. Tổng quan về Altera DE2 Board Development and
Education.[7]
1.6.1. Giới thiệu:
Mục đích của Altera DE2 là cung cấp một thiết bị lý tưởng cho việc nghiên
cứu về logic số, cấu trúc máy tính và FPGA. Board sử dụng kỹ thuật tiên tiến
nhất trong cả phần cứng và công cụ CAD. Board hỗ trợ một số lượng lớn tính
năng thích hợp cho các phòng lab của trường đại học và cao đẳng, cũng như việc
phát triển các hệ thống số cao cấp.
1.6.2. Specification:
Chip FPGA:
-
Cyclone II EP2C35F672C6 và thiết bị cấu hình EPCS16.
Thiết bị đầu vào, đầu ra:
-
Dây cáp cấu hình USB – Blaster cho FPGA.
10/100 Ethernet, RS – 232, port hồng ngoại.
Video out (VGA 10 – bit DAC).
Trang 21
Chương 1: CƠ SỞ LÝ THUYẾT
-
Video in (NTSC/PAL/Multi – format).
USB 2.0 (loại A và B).
Port bàn phím hoặc chuột PS/2.
Line – in, line – out, microphone – in (24 – bit audio CODEC).
Headers mở rộng (76 pins).
Memory
-
8 – MB SDRAM, 512 – KB SRAM, 4 – MB Flash.
SD Memory card.
Công tắc, LEDs, hiển thị, và Clock
-
18 công tắc chuyển mạch.
4 nút nhấn.
18 LED đỏ, 9 LED xanh.
8 LED 7 đoạn.
màn hình LCD 16x2.
Clock nội 27MHz và 50MHz, đầu gắn clock ngoại.
Trang 22
Chương 2: THIẾT KẾ KHỐI UART
Chương 2:
THIẾT KẾ KHỐI UART
2.1. Giới thiệu chương:
Chương này đi vào chi tiết các bước thiết kế, cho thấy rõ cấu tạo bên trong
của lõi IP UART Controller. Quá trình thiết kế lõi IP UART được thực hiện từ
việc nghiên cứu các nguồn tài liệu liên quan đến UART để từ đó xây dựng sơ đồ
tín hiệu và sơ đồ khối tổng quát (thiết kế mức kiến trúc). Tiếp theo, các khối con
được phân tích chi tiết đến mức cổng logic (thiết kế mức chức năng), sau đó code
RTL được viết từ sơ đồ mạch.
2.2. Đặc tính của lõi IP UART Controller:
-
Lõi IP UARTController được thiết kế với các đặc tính chính sau:
Tương thích chuẩn công nghiệp 16550.
Giao tiếp với vi xử lý theo chuẩn bus AMBA APB.
Hỗ trợ tốc độ baud cấu hình được.
Khung dữ liệu 8 bit, 1 bit stop.
Hỗ trợ chế độ kiểm tra chẵn lẻ.
Hỗ trợ hoạt động điều khiển ngắt.
Hỗ trợ chế độ Auto Flow.
Sử dụng FIFO 8x16 trong hoạt động truyền và nhận dữ liệu.
2.3. Thiết kế mức kiến trúc:
Từ cơ sở lý thuyết về UART đã trình bày trong chương 1,ta thiết kế được
lõi UART với các đặc trưng như yêu cầu.Sơ đồ tín hiệu vào ra của lõi UART
được thể hiện theo Hình 2.1.
Như đã đề cập ở trên,lõi UART sẽ giao tiếp với bus AMBA APB nên tín
hiệu vào của UART là các tín hiệu điều khiển từ vi điều khiển thông qua APB
bus.
Tín hiệu vào UART còn là tín hiệu uart_rx là dữ liệu nhận được từ đường
truyền.
Ngoài ra lõi UART còn nhận tín hiệu uart_cts để điều khiển truyền nhận tự
động.Nếu tín hiệu uart_ctstích cực nghĩa là bên nhận đã nhận đầy vào RxFIFO
và đang yêu cầu UART phát dừng quá trình phát.
Tín hiệu ra của khối UART là dữ liệu truyền đi trên đường truyền uart_tx.
Trang 23
Chương 2: THIẾT KẾ KHỐI UART
UART còn gửi đi tín hiệu uart_rts để thông báo bên phát dừng phát dữ liệu
nếu như RxFIFO nhận đã đầy.
Ngoài ra UART gửi 5 tín hiệu ngắt,hoặc 1 tín hiệu ngắt tổ hợp về vi điều
khiển xử lý.
Hình 2.1.Sơ đồ tín hiệu vào ra khối UART
Tên tín hiệu
prst_n
pclk
psel
penable
pwrite
paddr
pwdata
prdata
uart_tx
uart_rx
uart_cts
uart_rts
uart_txif
uart_rxif
uart_ovif
uart_peif
uart_feif
uart_if
Độ dài bit
1
1
1
1
1
32
32
32
1
1
1
1
1
1
1
1
1
1
Input/Output
Input
Input
Input
Input
Input
Input
Input
Output
Output
Input
Input
Output
Output
Output
Output
Output
Output
Output
Chức năng
Tín hiệu Reset APB
Tín hiệu Clock APB
Tín hiệu chọn lựa APB
Tín hiệu tra cứu APB
Tín hiệu đọc/ghi APB
Bus địa chỉ APB
Bus dữ liệu ghi từ APB
Bus dữ liệu đọc ra APB
Đường dữ liệu ra
Đường dữ liệu vào
Clear to send
Request to send
Cờ ngắt truyền
Cờ ngắt nhận
Cờ ngắt overrun
Cờ ngắt parity
Cờ ngắt lỗi khung dữ liệu
Cờ ngắt tổng hợp
Trang 24
Chương 2: THIẾT KẾ KHỐI UART
Bảng 2.1. Tín hiệu của lõi IP UARTController.
Từ sơ đồ tín hiệu trên ta xây dựng được sơ đồ khối tổng quát của UART.Để
thiết kế được khối UART hoàn chỉnh ta chia thành thiết kế 5 khối nhỏ (Hình 2.2).
-
Khối AMBA APB INTERFACE: Chức năng chính của khối AMBA APB
INTERFACE là thực hiện quá trình giao tiếp giữa UART với bus APB.Bên trong
khối này ta còn xây dựng thêm các khối nhỏ là khối các thanh ghi cấu hình,khối
điều khiển ngắt cũng như TxFIFO.
-
Khối BAUD RATE GENERATOR:Quá trình truyền và nhận trong UART hoạt
động dưa trên tốc độ baud,nên ta cần xây dựng 1 khối tạo tốc độ baud ngay trong
lõi UART.Khối BAUD RATE GENERATOR này tạo tốc độ baud mong muốn
từ nguồn clock 50Mhz sẵn có của Kit FPGA.
-
Khối TRANSMITTER:nhận dữ liệu từ bus APB (apb_data),dịch từng bit và
truyền đi trên đường truyền.
-
Khối RECEIVER:nhận dữ liệu từ đường truyềnuart_rx, chuyển thành byte và
lưu vào RxFIFO.
Hình 2.2.Sơ đồ khối tổng quát UART
2.4. Thanh ghi cấu hình củaUART:
Trang 25