Luận Văn Tốt Nghiệp: Hướng Dẫn Thiết Kế và Thực Hiện Giao Tiếp UART trên FPGA

Tìm hiểu cách thực hiện chuẩn UART trên FPGA. Bài viết hướng dẫn chi tiết từng bước, giúp bạn nắm vững kiến thức và ứng dụng hiệu quả.

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2014

47
9
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng dẫn tổng quan về thực hiện chuẩn UART trên FPGA

Việc thực hiện chuẩn UART trên FPGA là một bài toán cơ bản nhưng vô cùng quan trọng trong lĩnh vực thiết kế FPGA. UART (Universal Asynchronous Receiver-Transmitter) là một chuẩn giao tiếp nối tiếp không đồng bộ, đóng vai trò then chốt trong việc kết nối FPGA với các thiết bị ngoại vi như máy tính, cảm biến, và các vi điều khiển khác. Công nghệ FPGA (Field-Programmable Gate Array), với khả năng tái lập trình và xử lý song song, cung cấp một nền tảng linh hoạt và mạnh mẽ để triển khai các giao thức phần cứng tùy chỉnh. Thay vì sử dụng một IC UART chuyên dụng, việc thiết kế một module UART trực tiếp trên FPGA mang lại nhiều lợi ích. Các lợi ích này bao gồm tối ưu hóa tài nguyên, tùy chỉnh các thông số như tốc độ baud (baud rate), và tích hợp sâu vào hệ thống trên chip (SoC). Nghiên cứu của Phan Minh Hải (2014) trên kit Spartan 3E đã chứng minh tính khả thi và hiệu quả của phương pháp này. Bài viết này sẽ đi sâu vào quy trình thiết kế, từ việc phân tích các khối chức năng cốt lõi như bộ thu UART (UART Receiver)bộ phát UART (UART Transmitter), đến việc sử dụng ngôn ngữ mô tả phần cứng như VHDL để hiện thực hóa thiết kế. Quá trình này không chỉ yêu cầu kiến thức về kỹ thuật số mà còn đòi hỏi kỹ năng trong việc lập trình FPGA, sử dụng các công cụ chuyên dụng như Xilinx Vivado hoặc ISE để mô phỏng (simulation) và tổng hợp.

1.1. Vai trò của giao tiếp nối tiếp UART trong thiết kế số

Trong các hệ thống kỹ thuật số hiện đại, giao tiếp nối tiếp đóng vai trò là cầu nối không thể thiếu. Chuẩn UART là một trong những giao thức phổ biến nhất nhờ sự đơn giản và hiệu quả. Nó cho phép truyền dữ liệu giữa hai thiết bị chỉ bằng hai dây (TX và RX). Cấu trúc khung truyền dữ liệu của UART rất rõ ràng, bao gồm một start bit để báo hiệu bắt đầu, các bit dữ liệu (thường là 8 bit), một parity bit tùy chọn để kiểm tra lỗi, và một hoặc nhiều stop bit để kết thúc khung truyền. Sự đơn giản này giúp việc triển khai phần cứng trở nên dễ dàng, đặc biệt là trên các nền tảng linh hoạt như FPGA. Việc tích hợp UART vào thiết kế cho phép FPGA giao tiếp trực tiếp với máy tính qua cổng COM ảo, phục vụ cho các mục đích gỡ lỗi, giám sát hoặc truyền nhận dữ liệu điều khiển. Đây là một kỹ năng nền tảng cho bất kỳ kỹ sư nào làm việc trong lĩnh vực hệ thống nhúng và thiết kế FPGA.

1.2. Tổng quan công nghệ FPGA và ngôn ngữ mô tả VHDL

Thiết kế FPGA dựa trên việc cấu hình lại các khối logic lập trình được để tạo ra các mạch số tùy chỉnh. Không giống như vi xử lý thực thi tuần tự các lệnh, FPGA cho phép thực thi song song, mang lại hiệu năng vượt trội cho các tác vụ xử lý tín hiệu số và truyền thông. Để mô tả các mạch này, các kỹ sư sử dụng Ngôn ngữ Mô tả Phần cứng (HDL). VHDL (VHSIC Hardware Description Language) là một trong hai ngôn ngữ phổ biến nhất, cùng với Verilog. VHDL cho phép mô tả cấu trúc và hành vi của một mạch điện tử ở mức trừu tượng cao. Một thiết kế VHDL có thể được mô phỏng để kiểm tra chức năng trước khi được tổng hợp và nạp vào FPGA. Trong bối cảnh thực hiện chuẩn UART trên FPGA, VHDL được sử dụng để định nghĩa các thành phần như bộ đếm, thanh ghi dịch, và đặc biệt là các máy trạng thái (state machine) phức tạp để điều khiển quá trình nhận và phát dữ liệu một cách chính xác.

II. Các thách thức chính khi thiết kế module UART trên FPGA

Quá trình thực hiện chuẩn UART trên FPGA không chỉ đơn thuần là viết mã VHDL mà còn đối mặt với nhiều thách thức kỹ thuật quan trọng. Thách thức lớn nhất là đảm bảo sự đồng bộ về thời gian giữa bộ phát và bộ thu khi không có một tín hiệu clock chung. Giao thức UART là không đồng bộ, có nghĩa là bộ thu phải tự tái tạo lại thời điểm lấy mẫu dữ liệu dựa trên tín hiệu nhận được. Điều này đòi hỏi một cơ chế lấy mẫu (oversampling) chính xác, thường sử dụng một xung clock nội bộ nhanh hơn tốc độ baud nhiều lần (phổ biến là 16 lần). Bất kỳ sự sai lệch nào trong tần số clock giữa hai thiết bị đều có thể dẫn đến lỗi đọc bit, đặc biệt là ở các bit cuối cùng của khung truyền dữ liệu. Một thách thức khác là quản lý luồng dữ liệu. Trong nhiều ứng dụng, dữ liệu đến bộ thu UART một cách không liên tục, trong khi hệ thống xử lý chính có thể đang bận. Để tránh mất mát dữ liệu, việc sử dụng một bộ đệm FIFO (First-In, First-Out) là giải pháp bắt buộc. Thiết kế một bộ đệm FIFO hiệu quả, với các tín hiệu báo trạng thái đầy (full) và rỗng (empty), là một bài toán không hề tầm thường trong lập trình FPGA.

2.1. Vấn đề đồng bộ hóa clock và tốc độ baud baud rate

Sự không đồng bộ là bản chất của UART. Bộ thu phải phát hiện cạnh xuống của start bit để bắt đầu quá trình nhận. Sau đó, nó phải định thời để lấy mẫu các bit dữ liệu tiếp theo tại điểm chính giữa của mỗi bit. Để làm được điều này, một bộ tạo tốc độ baud bên trong module UART phải tạo ra một tín hiệu tick có tần số cao gấp 16 lần tốc độ truyền. Ví dụ, với tốc độ 9600 bps, tần số lấy mẫu phải là 153.600 Hz. Bộ thu sẽ đếm 8 tick để đến giữa start bit và sau đó đếm 16 tick cho mỗi bit dữ liệu tiếp theo. Như tài liệu của Phan Minh Hải (2014) chỉ ra, sai số tần số clock giữa bộ phát và bộ nhận phải được giữ ở mức dưới 3% để đảm bảo tất cả các bit trong khung truyền 10 bit được đọc chính xác. Đây là một yêu cầu nghiêm ngặt, đòi hỏi thiết kế bộ tạo xung clock chính xác trong FPGA.

2.2. Quản lý luồng dữ liệu với bộ đệm FIFO và máy trạng thái

Dữ liệu có thể đến bộ thu UART bất cứ lúc nào. Nếu bộ xử lý trung tâm không sẵn sàng đọc dữ liệu ngay lập tức, byte dữ liệu đó sẽ bị ghi đè bởi byte tiếp theo và gây mất mát thông tin. Bộ đệm FIFO giải quyết vấn đề này bằng cách cung cấp một không gian lưu trữ tạm thời. Dữ liệu từ bộ thu được ghi vào FIFO, và bộ xử lý có thể đọc ra từ FIFO khi nó rảnh. Việc thiết kế FIFO trong VHDL liên quan đến việc quản lý các con trỏ đọc (read pointer) và ghi (write pointer), cùng với logic để phát hiện trạng thái đầy và rỗng. Bên cạnh FIFO, máy trạng thái (state machine) là công cụ cốt lõi để điều khiển logic của cả bộ thu và bộ phát. Một máy trạng thái sẽ chuyển qua các trạng thái như IDLE, START, DATA, và STOP để điều khiển chính xác từng bước của quá trình truyền và nhận dữ liệu, đảm bảo tuân thủ nghiêm ngặt giao thức UART.

III. Phương pháp thiết kế bộ thu UART Receiver trên FPGA

Thiết kế bộ thu UART (UART Receiver) là phần phức tạp nhất trong việc thực hiện chuẩn UART trên FPGA. Nhiệm vụ chính của nó là phát hiện một khung truyền dữ liệu đến, đồng bộ hóa với nó, và trích xuất chính xác các bit dữ liệu. Giải pháp tiêu chuẩn là sử dụng kỹ thuật lấy mẫu đa tần (oversampling) kết hợp với một máy trạng thái (state machine). Đầu tiên, bộ thu liên tục theo dõi đường Rx. Khi phát hiện một cạnh xuống (từ 1 xuống 0), nó nhận định đó là sự khởi đầu của một start bit. Tại đây, máy trạng thái sẽ chuyển từ trạng thái nghỉ (IDLE) sang trạng thái START. Để xác nhận đây không phải là nhiễu, bộ thu sẽ chờ 8 chu kỳ của clock lấy mẫu (tương đương với nửa chu kỳ của bit) và kiểm tra lại. Nếu đường Rx vẫn ở mức 0, start bit được xác nhận. Sau đó, máy trạng thái chuyển sang trạng thái DATA. Trong trạng thái này, bộ thu sẽ chờ đủ 16 chu kỳ của clock lấy mẫu để dịch chuyển đến điểm giữa của bit dữ liệu đầu tiên, đọc giá trị và lưu vào một thanh ghi dịch. Quá trình này được lặp lại cho tất cả các bit dữ liệu. Cuối cùng, nó chuyển sang trạng thái STOP để xác nhận stop bit (mức 1), hoàn tất việc nhận một byte và xuất dữ liệu ra ngoài.

3.1. Xây dựng máy trạng thái state machine cho bộ thu

Một máy trạng thái là trái tim của bộ thu UART. Nó điều khiển toàn bộ logic hoạt động. Một thiết kế điển hình bằng VHDL sẽ có ít nhất bốn trạng thái chính: IDLE (chờ start bit), START (xác nhận start bit), DATA (nhận các bit dữ liệu), và STOP (xác nhận stop bit). Ở trạng thái IDLE, máy trạng thái liên tục kiểm tra tín hiệu đầu vào. Khi phát hiện cạnh xuống, nó chuyển sang START. Trong trạng thái START, một bộ đếm được sử dụng để định thời đến điểm giữa của bit. Nếu tín hiệu hợp lệ, nó chuyển sang DATA và reset bộ đếm bit. Trong trạng thái DATA, máy trạng thái sẽ lặp lại quá trình đếm 16 tick lấy mẫu, đọc giá trị bit, lưu vào thanh ghi, và tăng bộ đếm bit. Khi đủ số bit dữ liệu đã được nhận, nó chuyển sang trạng thái STOP. Tại đây, nó kiểm tra stop bit và sau đó quay trở lại IDLE, sẵn sàng cho khung truyền tiếp theo. Việc mô tả logic này bằng VHDL yêu cầu sự cẩn thận để tránh các lỗi chuyển trạng thái không mong muốn.

3.2. Kỹ thuật lấy mẫu oversampling để đọc khung dữ liệu

Kỹ thuật lấy mẫu là yếu tố quyết định độ tin cậy của bộ thu UART. Do không có clock chung, bộ thu phải dự đoán thời điểm tốt nhất để đọc giá trị của mỗi bit. Điểm tốt nhất chính là trung tâm của bit, nơi tín hiệu ổn định nhất và ít bị ảnh hưởng bởi sự trôi pha giữa các clock. Bằng cách sử dụng một clock nội bộ nhanh hơn 16 lần tốc độ baud, bộ thu có thể chia mỗi chu kỳ bit thành 16 khoảng thời gian nhỏ. Sau khi phát hiện start bit, nó chỉ cần đếm một số lượng "tick" nhất định để di chuyển đến tâm của các bit tiếp theo. Cụ thể, nó đếm 8 tick để đến giữa start bit, sau đó đếm 16 tick để chuyển từ tâm bit này sang tâm bit kế tiếp. Kỹ thuật này cho phép bộ thu có khả năng chịu đựng sai số clock nhất định, làm cho giao tiếp nối tiếp trở nên mạnh mẽ và đáng tin cậy hơn trong thực tế.

IV. Cách lập trình bộ phát UART Transmitter và bộ đệm

Việc lập trình FPGA cho bộ phát UART (UART Transmitter) thường đơn giản hơn so với bộ thu. Nhiệm vụ của nó là nhận một byte dữ liệu song song và gửi nó đi một cách tuần tự theo đúng định dạng khung truyền dữ liệu của UART. Quá trình này cũng được điều khiển bởi một máy trạng thái (state machine). Khi có một yêu cầu gửi dữ liệu mới, bộ phát sẽ tải byte dữ liệu song song vào một thanh ghi dịch. Sau đó, máy trạng thái bắt đầu hoạt động. Đầu tiên, nó chuyển đường Tx xuống mức 0 trong một khoảng thời gian tương ứng với một chu kỳ bit để tạo ra start bit. Tiếp theo, nó lần lượt dịch và gửi ra từng bit dữ liệu, bắt đầu từ bit có trọng số thấp nhất (LSB). Cuối cùng, nó kéo đường Tx lên mức 1 để tạo ra stop bit. Sau khi stop bit được gửi, bộ phát quay trở lại trạng thái nghỉ và sẵn sàng cho lần truyền tiếp theo. Để đảm bảo giao tiếp máy tính và các thiết bị khác không bị gián đoạn, việc tích hợp bộ đệm FIFO là cực kỳ quan trọng. Dữ liệu cần gửi sẽ được ghi vào FIFO, và bộ phát UART sẽ tự động đọc từ FIFO để gửi đi mỗi khi nó rảnh, tối ưu hóa thông lượng truyền.

4.1. Cấu trúc và hoạt động của module phát UART bằng VHDL

Cấu trúc của bộ phát UART được mô tả bằng VHDL bao gồm ba thành phần chính: một thanh ghi dịch để giữ và xuất dữ liệu tuần tự, một bộ đếm để định thời gian cho mỗi bit dựa trên tốc độ baud, và một máy trạng thái để điều khiển toàn bộ quá trình. Khi tín hiệu tx_start được kích hoạt, máy trạng thái chuyển từ IDLE sang START. Nó điều khiển thanh ghi dịch để xuất ra logic 0 (start bit). Sau đó, nó chuyển sang trạng thái DATA, nơi nó sẽ tuần tự gửi 8 bit dữ liệu. Cuối cùng, nó chuyển sang trạng thái STOP để gửi logic 1 (stop bit). Tín hiệu tx_done_tick sẽ được tạo ra để báo hiệu cho hệ thống rằng quá trình truyền đã hoàn tất. Logic này đảm bảo rằng mỗi bit được giữ trên đường truyền trong một khoảng thời gian chính xác, tuân thủ nghiêm ngặt tốc độ baud đã định.

4.2. Tích hợp bộ đệm FIFO để tối ưu hóa việc truyền dữ liệu

Bộ đệm FIFO (First-In, First-Out) hoạt động như một hàng đợi, là cầu nối giữa hệ thống chính và bộ phát UART. Hệ thống có thể ghi một loạt byte dữ liệu vào FIFO một cách nhanh chóng mà không cần chờ bộ phát gửi xong từng byte. Bộ phát UART sẽ kiểm tra trạng thái của FIFO. Nếu FIFO không rỗng, nó sẽ tự động lấy byte dữ liệu tiếp theo và bắt đầu quá trình truyền. Điều này cho phép hệ thống chính thực hiện các tác vụ khác trong khi UART đang bận gửi dữ liệu, giúp tăng hiệu suất toàn hệ thống. Trong thiết kế FPGA, FIFO thường được triển khai bằng cách sử dụng bộ nhớ RAM khối (BRAM) có sẵn trên chip, kết hợp với các con trỏ đọc/ghi và logic phát hiện trạng thái đầy/rỗng để quản lý luồng dữ liệu một cách hiệu quả.

V. Kết quả mô phỏng và triển khai thực tế UART trên FPGA

Để xác minh tính đúng đắn của thiết kế, bước mô phỏng (simulation) là không thể thiếu trong quy trình thực hiện chuẩn UART trên FPGA. Sử dụng một môi trường mô phỏng như ISim trong bộ công cụ Xilinx ISE hoặc trình mô phỏng của Xilinx Vivado, một testbench được tạo ra để kiểm tra hoạt động của từng khối. Theo kết quả trong đồ án của Phan Minh Hải (2014), các dạng sóng mô phỏng đã cho thấy hoạt động chính xác của bộ tạo tốc độ baud, bộ thu UART, và bộ phát UART. Dạng sóng cho thấy bộ thu đã phát hiện đúng start bit, lấy mẫu các bit dữ liệu tại các thời điểm chính xác, và xác nhận stop bit. Tương tự, bộ phát cũng tạo ra một khung truyền dữ liệu hoàn chỉnh với định thời chuẩn xác. Sau khi mô phỏng thành công, thiết kế được tổng hợp và triển khai trên kit FPGA Spartan 3E. Kết quả thực tế cho thấy module UART hoạt động ổn định, có khả năng thực hiện giao tiếp máy tính một cách tin cậy. Dữ liệu gửi từ máy tính thông qua phần mềm Terminal đã được kit FPGA nhận và hiển thị chính xác, đồng thời dữ liệu từ kit cũng được gửi ngược lại và hiển thị trên máy tính, xác nhận sự thành công của toàn bộ thiết kế.

5.1. Phân tích kết quả mô phỏng simulation với testbench

Một testbench hiệu quả trong VHDL sẽ giả lập các tín hiệu đầu vào và kiểm tra các tín hiệu đầu ra của module UART. Đối với bộ thu UART, testbench sẽ tạo ra một chuỗi bit nối tiếp tuân thủ định dạng UART và đưa vào chân Rx của module. Sau đó, nó sẽ kiểm tra xem dữ liệu song song ở đầu ra có khớp với dữ liệu đã gửi hay không. Đối với bộ phát UART, testbench cung cấp một byte dữ liệu và kích hoạt tín hiệu bắt đầu truyền. Nó sẽ theo dõi tín hiệu Tx nối tiếp ở đầu ra để đảm bảo khung truyền dữ liệu được tạo ra đúng chuẩn (thứ tự bit, định thời, start bit, stop bit). Các kết quả mô phỏng từ nghiên cứu gốc (Hình 4.7 và 4.15) cho thấy sự đồng bộ hoàn hảo giữa tín hiệu và các trạng thái của máy trạng thái, khẳng định logic thiết kế là chính xác.

5.2. Đánh giá tài nguyên sử dụng và kiểm tra giao tiếp máy tính

Một ưu điểm của việc thiết kế FPGA là khả năng tối ưu hóa tài nguyên. Báo cáo tổng hợp từ công cụ Xilinx ISE cho thấy module UART chỉ chiếm một phần rất nhỏ tài nguyên logic trên chip Spartan 3E. Ví dụ, khối nhận dữ liệu chỉ sử dụng 29 LUTs và 22 Flip-Flops (Hình 4.8), một con số rất khiêm tốn. Điều này cho phép tích hợp nhiều module phức tạp khác cùng với UART trên cùng một chip FPGA. Bước kiểm tra cuối cùng và quan trọng nhất là thử nghiệm thực tế. Bằng cách kết nối kit FPGA với máy tính qua cổng RS-232, giao tiếp máy tính được thiết lập. Sử dụng phần mềm Terminal (như Tera Term hoặc HyperTerminal), ký tự được gõ từ bàn phím máy tính đã được gửi thành công đến FPGA, và các ký tự do FPGA tạo ra cũng được gửi ngược lại và hiển thị trên màn hình Terminal (Hình 4.19), chứng minh rằng việc thực hiện chuẩn UART trên FPGA đã thành công hoàn toàn.

VI. Kết luận và định hướng phát triển cho chuẩn UART trên FPGA

Dự án thực hiện chuẩn UART trên FPGA đã đạt được các mục tiêu đề ra, minh chứng cho khả năng ứng dụng ngôn ngữ VHDL vào việc thiết kế và triển khai một giao thức truyền thông thực tế. Thiết kế đã bao phủ toàn bộ các thành phần cốt lõi, từ bộ tạo tốc độ baud, bộ thu UART (UART Receiver), bộ phát UART (UART Transmitter) đến bộ đệm FIFO. Quá trình mô phỏng (simulation) và kiểm tra trên phần cứng đã khẳng định module hoạt động ổn định và chính xác. Việc triển khai thành công này không chỉ mang lại kiến thức sâu sắc về chuẩn giao tiếp nối tiếp mà còn củng cố các kỹ năng quan trọng trong lập trình FPGA, bao gồm thiết kế máy trạng thái, quản lý định thời và tối ưu hóa tài nguyên. Kết quả này tạo ra một nền tảng vững chắc, một khối IP (Intellectual Property) có thể tái sử dụng trong các dự án thiết kế FPGA phức tạp hơn trong tương lai. Hướng phát triển cho đề tài này rất rộng mở, tập trung vào việc cải thiện hiệu suất, tính năng và khả năng tối ưu hóa của module UART.

6.1. Tổng kết các mục tiêu đạt được trong thiết kế FPGA

Nghiên cứu đã hoàn thành việc xây dựng một module UART hoàn chỉnh bằng ngôn ngữ VHDL. Module này có khả năng nhận và phát dữ liệu nối tiếp không đồng bộ một cách đáng tin cậy. Các mục tiêu chính đã đạt được bao gồm: hiểu rõ và áp dụng thành công cấu trúc khung truyền dữ liệu của UART; thiết kế và kiểm chứng các khối chức năng con một cách độc lập; tích hợp các khối thành một hệ thống hoàn chỉnh; và xác minh hoạt động của hệ thống thông qua cả mô phỏng và thử nghiệm thực tế trên kit Xilinx Spartan-3E. Thành công của dự án khẳng định rằng việc tự thiết kế các ngoại vi trên FPGA là một phương pháp hiệu quả, mang lại sự linh hoạt và tối ưu hóa cao hơn so với việc sử dụng các linh kiện rời.

6.2. Hướng phát triển Tăng tốc độ và tối ưu hóa module UART

Dựa trên nền tảng đã có, có nhiều hướng phát triển tiềm năng. Thứ nhất, có thể cải tiến chương trình để hỗ trợ truyền và nhận cả một chuỗi dữ liệu tự động thay vì từng byte, nâng cao hiệu quả giao tiếp máy tính. Thứ hai, module có thể được nâng cấp để hỗ trợ các tốc độ baud cao hơn, đáp ứng yêu cầu của các ứng dụng truyền thông tốc độ cao. Điều này đòi hỏi phải tối ưu hóa logic định thời và có thể cần đến các kỹ thuật thiết kế tiên tiến hơn. Cuối cùng, có thể tiếp tục tối ưu hóa việc sử dụng tài nguyên trên FPGA, giảm diện tích chiếm dụng để module có thể được tích hợp vào các thiết kế SoC chật hẹp hơn. Việc thêm các tính năng nâng cao như tự động phát hiện tốc độ baud hoặc hỗ trợ các chuẩn vật lý khác như RS-485 cũng là những hướng đi đầy hứa hẹn.

11/09/2025

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

CHƯƠNG 1:DAN NHAP ĐÔ ÁN TÓT NGHIỆP. Chương 2 CÁC CHUAN GIAO TIEP TRUYEN THONG Band SSEN ANS bà ~Í 7. Yêu cầu chung của 1 chuẩn gia o tiếp 2. Vấn đề kết nối các thiết truyền thông sẽ trở nên hỗn loạn một khi có rất nhiều thiếtCÓ bị0) củaCủa nhiềhãn nhiêug hãng sản sản xuất xuất kl khác nhau được phép kết nổi vào hệ thống thông tin quốcgia.

Thấy trước điều đó, Hiệp Hội Kỹ Nghệ Điện Từ (EIA) đã cho ra đời các chuẩn giao huân hóa việc kết nối các thiết bị nói trên. Khi máy tính (DTE) và các thiết bị truyền dữ liệu (ĐC) khác được đặt trong cùng một tòa nhà, chúng có thể được nối với nhau một cách kinh tế bằng những dây truyền hoặc những mạch giao tiếp nối tiếp hoạt động ở băng tần cơ bản (dải nền), Tì ì UART không thích hợp dễ phát trực p lên đường dây, ta phải dùng mạch kích phát và thu, những mạch này cho phép sử dụng ác mức diện áp hoặc dòng điện lớn hơn tiêu chuẩn của IC số, Trong phẩ chuẩn giao tiếp của EIA thỏa mãn các giao thức tầng 1, tức c¿ lý của đường truyền, các đặc tính điện của tín hiệu vả L nôi và các chân ra, 3.2 Giao tiếp dùng dòng điện vong 20 mA Done didn vòng đầu tiên được dùng đề truyền tín hiệu nhị phân bất đồng bộ giữa mấy tính và thict bi Trong cách truyền này, mức 1 được biểu thị bởi dòng điện vòng 20 mÀ và mức Ú bài dong điện O mA, Nhu vay thong tin được truyền di chính là sự tắt mở của đồngdiện Hệ thông là một vòn im một nguồn dòng tạo ra đông điện không đổi 20 mA, bộ phần đồng ngất (cuirent su ) được đặt ở máy phát và bộ phận đò ra dòng diện này (current detect) & may thu, Khih không có tín higu dé ruyén, ngudi ta gidm sit sur Tiên tục của hệ thống dựa vào sự h 2 20 mA nay. Day chinh là lý do tại sto trong ác hệ thống sau này người ta đưa bit 1 lén đường truyền khi hệ thống nghỉ Ở phần phát, giả sử dữ liệu đến từ ngã TxD của UART là bít 1, transistor dan làm đồng relay phát, đồng điện 20 mA chạy qua phân thu và đóng relay thu, đưa ngãra tínlên hiệu cao (sau khiqua cổng đảo) tín hiệu này được truyền đến UART trên đường RxD. Nếuvà thu đều phát là bít 0 trên đường TxD, do không có dòng điện chạy qua, ede relay phat hở ,ta được bịt 0 trên đường RxD.1 Là một hệ thống đàng dòng điện vàng với bộ phận đóng ngất là các relay.

is en ữu hiệu của hệ thống dùng dòng điện vòng là phải có ` Be nee Pea Vole và mạch thu. Ngoài ra để bảo đảm giá trị mpi sy cde: "ile biánh hưởng boi đường dây trờ kháng ra của máy phát phải của nguồn đồng tế quàng dây, Ngày nay, ghép nội quang thường đượcbiếnsử a ae Ba eee tiện cach ly rất tốt. Sự tất mở của dòng điện được quang. than sự tắt mở ola chim tia sing duge dé ra bai transistor TRUYEN THONG CHƯƠNG 2: CAC CHUAN GIAO TI pO AN TOT NGHIEP Trang 6 ar He, ver, Pair Ở phần phát, giả sử dữ liệu đến từ ngã TxD của UART là bit 1, các transistor dẫn, động điện 20mA chạy quá phần thú làm led phát sáng, transistor phép quang dẫn đưa ngã ä lên cao(sau khi quá cổng đáo), tín hiệu này dược truyền đến UART trên đường RxD.

ú phát là bịt 0 trên đường TxD, do không có dòng điện chạy qua, led không phát xắng, transistor ghép quang ngưng ta được bịt 0 trên dường RxD.Hệ thống dùng dòng điện vòng chỉ sử dụng cho khoảng cách nhỏ hơn 500m, Dé truy én khoang cách xa hơnS00m, người ta dùng modem mà chúng ta sẽ bản đến trong một chương khác.Các ch ân truyền thông Để kiểm trà các chuẩn giao tiếp truyền thông bao gbm các thiết cúng như: công tắc gái, nút nhân, các Ì tơn, các led 7 đoạn, lcd và một cổng nồi tiếp bất đồng bộ: các ngoài vị lấy nỗ một môi trường chuẩn của các bộ vi diều khiển và bộ ví điều khiến có thế truy cấy p nối tiếp. Tre các ứng dụn, số cúc dây dẫn được yêu câu đền giao tiếp truyền thông giữa các module đang hoạt động, Các chuẩn giao tiếp truyền ô biết được sử dụng trong các bộ vi điều khiển: « UART «.1 Chuẩn giao tiếp truyền thông SPI Motorola de xuất. Đây là Là một chuẩn truyền thông nối tiếp tốc độ cao do hang diều chịp Master phối quá trình truyền kiểu truyền thông Master - Slave, trong đó có 1 vì the truyền thông chỉ xây, Ta giữa bởi Master thông và các chip Slaves được điều khi điểm qua n song công nghĩa làtại ting mét thời Master va Slave. SPI la một cách truyé là chuẩn truyền thông “4 ra đồng thời.

SPI đôi khi được gọi trình truyền và nhận có giaothể tiếpxây trong TT ong “sortie chuẩn nàyay đódé làIa SCK (Serialial Clock), ¡ MISO (Master (Slave Select). MOST (Master Ouput esSlave Input) và SS Input),Ôn ĐI S0) 881 tp | [[PSP sek Most MIs pO AN TOT NGHIỆP.2 ChuẩnBitegiao tiếp wit truyền thông I2C (Inter Intergrated Circuit). “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 vỉ 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 phần 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 dược gọi là 12C.

I2C mặc dù được phát triển bởi Phillips, nhưng nó đã được rất nhiều nha 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 Phillips như: Texas Intrument (TT), Maxim Dallas, National Semicoductor. Bus i dụng làm bus giao tiếp ngoại vì cho rất nhiều loại IC khác nhaunhư các loại Vĩ diễu khiến 8051, PIC, AVR, ARM,. : ‘res AE Minh 24 Bus 12C va các thiết bị 2.1 Gidi thigu chuan RS Universal asynchronous transmitter (UART) la giti dữ liệu song song qua một đường nổi tiếp, C được phát triển bởi the Eleetronie Industry Association and the Telecomn lon (EIA/TIA), là chuẩn truyền thông phổ biến nhất, thường được vi EIA/TIA-232-E.

Chuẩn này chỉ để Š cập dến việc truyền dữ liệu nói a mot host (DTE-Data Terminal Equipment) va mot ngoai vi (DCE-Data Circuit-Terminating Equipment). Phiên bản đầu tiên của RS-232 được định nghĩa vào năm 1962, đo đó các mức logie được địnhnghĩa khác với logic TTL. Ở ngõ ra của một mạch lái, mức cao (tương ứng với logic 0) là một điện áp từ +5 đến +15 V, còn mức thấp (tương ứng với logje 1) là một áp từ -5 đến -15 V. điện Tại ngõ vào của một bộ thu, mức cao được định nghĩa là từ +3 dén +15 V (gọi là space), và mức thấp được định nghĩa là từ -3 đến -15 V (goi là mark).

UART gồm một bộ phát và một bộ nhận, bộ phát là một thanh ghỉ địch đặc biệt đưa dữ liệu song song và sau đó dịch từng bit tại một tốc độ xác định. Mặt khác, bộ thu nhận từng bịt dữ liệu và sau đó ghép nối lại. Đường truyền dữ liệu là 1 khi ở trang thái rỗi. Bộ và một bit chấn lẻ tùy.

phát đữ liệu bắt đầu với start bít là £0” va sau đó là các bit dữ liệu chọn và cuối cùng Ì' là một bịt stop là *1". Số các bit dữ liệu có thể là 6, 7, hoặc 8. Bịt tùy nó sẽ được. thiết chọn chẵn lẻ được sử dụng cho việc phát hiện lỗi.

Cho bit parity là lẻ thì lập bằng *1” khi các bit dữ liệu có tổng các bit '1” là một số lẻ. Cho bit parity là chin thì các bit stop có được thiết lập *0° khi các bịt đữ liệu có tổng các số “1" là một số chẵn. Số thể có là 1, 1. "AC CHUAN GIAO TIEP TRUYEN THONG ĐÔ ÁN TÓT NGHIỆP Trang 8 THình 2.5 Phát 8 bịt đữ liệu, khong parity, va 1 bit stop 2.2 Ưu điểm của giao diện truyền Mông, ni đá: &ã RS232 Công nối tig có thể trao cho các công nối tiếp thường liên quan đến ví đọc các loại cảm biến, các công tắc gạt, hoa ngõ vào khác hoặc việc điều khiển các động cơ, rơ le, các màn hình hiễn thị, hoặc cúc ngờ ra khác, Phần cứng thì không có đất và có sẵn một cách đễ dàng, các máy tính không cần phải xây dựng các cổng nói tiếp mã có thể sử dụng các bộ chuyển đổi USB sang công COM.

Mor giao tiếp R&-232 có thê sự dụng cáp dài khoảng 40m hoặc dai hơn. Ngược lại khoảng cách cực đài gia một thiết bi USB đến máy chủ lá Sm. Cable ethernet có chiều dài tôi đã la 100m CHUONG 2: C CHUAN GIAO TIẾP TRUYEN THONG ĐỎ ÁN TỐT NGHIỆP. Chương 3 THUC HIEN CHUAN TRUYEN THONG UART TREN FPGA ‘HUONG 3: THUC HIEN CHUAN TRUYEN THONG UART TREN FPGA.

pO AN TOT NGHIEI =—— Trang 10 3.Giới thiệu kit Spartan 3E và ngôn ngữ VHDL ISE của phần mềm Xilinx 3.1 Các thành phần quan trọng va tinh năng kit Spartan 3E © Xilinx XC3s500e Spartan-3E FPGA ợ lên đến 232 chân VO ạng gói FBGA 320 chân + Trên 10000 logie cells © Xilinx 4 Mbit Platform Flash cu hinh PROM ø_ Xinlix 64-macrocell XC2C64A CoolRunner CPLD © 64 Mbyte DDR SDRAM. x16 dudng giao tiép dit ligu, 100+ MHz © 16 Mbyte ctia céng giao tiép song song NOR Flash sè Lưu trữ cấu hình FPGA +* MieroBlaze code storage/shadowing « _ 16 Mbits của giao thức truyền thông SPI nồi +* Lưu trữ cấu hình FPGA + MicroBlaze code shadowing e Hién thi 16 ky ty trén LCD 2 dòng © Cổng hiển thi VGA ø_ Một bộ điều khiển Ethernet tốc độ 10/100 Mbps © Hai cổ RS232 9 chân © Tang s6 dao ding 50 MHz 3.2 Giới thiệu ngôn ngữ VHDL 'VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho chương trình VHSIC (Very High Speed Itergrated Circuit) ciia bd quốc phòng Mỹ. Mục tiêu của việc phat triển VHDL là có được một ngôn ngữ mô phỏng, phan cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng ——— EE —— CHƯƠNG 3: THUC HIEN CHUAN TRUYEN THONG UART TREN FPGA pO AN TOT NGHIỆP. = = Trang U1 trong thực tế.

Ngngữ ôn VHDL được ba công ty Intermetics,IBM và Texas Intruments bit đầu nghiên cứu phát triển vào tháng 7 năm 1983. Phiên bản đầu tiên được công bố vào tháng 8-1985. Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn chung.

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