Tải bản đầy đủ (.docx) (47 trang)

Báo cáo đồ án chuyên ngành THIẾT KẾ BỘ TRUYỀN NHẬN UARTVÀ BÍT NẠP TRÊN KIT FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.21 MB, 47 trang )

Đồ án chuyên ngành
ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
KHOA ĐIỆN TỬ-VIỄN THÔNG
BÁO CÁO ĐỒ ÁN CHUYÊN NGHÀNH
ĐỀ TÀI:
THIẾT KẾ BỘ TRUYỀN NHẬN UART 8 BIT NẠP TRÊN KIT FPGA

Sinh viên thực hiện :
Lớp
:
Giáo viên hướng dẫn:

Đỗ Tiến Thành
09DT2
ThS. Võ Tuấn Minh

Đà Nẵng, 2014

LỜI CAM ĐOAN
Tôi xin cam đoan nội dung của đồ án này không phải là bản sao chép của bất cứ
đồ án nào đã có từ trước. Nếu vi phạm tôi xin chịu mọi hình thức kỷ luật của Khoa.
Sinh viên thực hiện
Đỗ Tiến Thành

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.............................................................................................................................................
.............................................................................................................................................
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 1


Đồ án chuyên ngành


.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
.............................................................................................................................................
Đà Nẵng, ngày tháng 1 năm 2014
GIÁO VIÊN HƯỚNG DẪN
(Ký tên)

LỜI MỞ ĐẦU
Ngày nay, trong các hệ thống truyền dữ liệu có hai cách đưa tín hiệu lên đường
truyền: nối tiếp và song song. Cách truyền song song thường được truyền trên một
khoảng cách ngắn, ví dụ giữa các thiết bị trong cùng một phòng như từ máy tính sang
máy in. Cách truyền nối tiếp thường được thực hiện khi khoảng cách truyền khá xa.
Ngoài ra, trong cách truyền nối tiếp, dựa vào cách thực hiện sự đồng bộ giữa nơi
phát và thu ta có hai chế độ hoạt động: đồng bộvà bất đồng bộ. Trong chế độ bất đồng
bộ, xung đồng hồ được tạo ra một cách riêng rẻ ở máy phát và máy thu dựavào tần số
danh định tương ứng với vận tốc truyền (bit rate hoặc baud rate). Trong chế độ đồng
bộ, nơi phát có thể gửi xung đồng hồ tới nơi thu theo một kênh truyền song song với
kênh truyền dữ liệu hoặc nơi thu tự tạo ra xung đồng hồ bằng cách tách tín hiệu thời
gian từ dòng dữ liệu.
Trong đồ án này, tôi xin được trình bày về chuẩn truyền thông nối tiếp không
đồng bộ UART (Universal Asynchronous Receiver Transmitter). Vì truyền thông nối
tiếp có các ưu điểm sau:
- Khoảng cách truyền xa hơn truyền song song.
- Sốdây kết nối ít.
- Có thể truyền không dây dùng hồng ngoại.
- Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device).
- Cho phép nối mạng.
- Có thể tháo lắp trong lúc máy tính đang làm việc.


SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 2


Đồ án chuyên ngành
MỤC LỤC

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 3


Đồ án chuyên ngành
Chương 1

MÔ TẢ TỔNG QUAN VỀ GIAO TIẾP UART

Truyền nối tiếp (serial transmission) các thông tin số hay bit thông qua một dây
đơn (single wire) hay một vật liệu trung gian nào đó thì tiết kiệm chi phí hơn nhiều so
với truyền song song dùng nhiều dây cùng một lúc. Truyền dữ liệu dùng UART có thể
thực hiện theo phương thức song công (full duplex) tức là việc gửi và nhận thực hiện
cùng một lúc, hay bán song công (half duplex), tức là các thiết bị thay phiên nhau phát
và nhận.
Bộ truyền UART phát từng bit trong byte dữ liệu một cách tuần tự. Bộ thu
UART chịu trách nhiệm lắp ghép các bit này lại thành các byte hoàn chỉnh. Mỗi UART
gồm có hai thanh ghi dịch, được dùng làm thành phần cơ bản trong việc chuyển giữa
nối tiếp sang song song và ngược lại.
1.1 Đặc trưng khung truyền

Hình 1.1 Định dạng khung truyền cơ bản
Mỗi ký tự được gửi sau một bit khởi tạo gọi là start bit ở mức logic thấp, số các
bit dữ liệu thường là 7 hay 8 đôi khi là 5, cũng có thể có thêm bit kiểm tra chẵn lẻ
(parity bit) và một hay nhiều stop bit ở mức logic cao. Start bit sẽ báo hiệu cho bộ thu

một ký tự mới đang được gửi đi (hay nói đúng hơn là đang đến). Tiếp theo sau start bit,
bộ thu sẽ nhận từ 5 đến 8 bit dữ liệu, phụ thuộc vào tùy vào cấu hình sử dụng. Theo sau
bit dữ liệu có thể là một bit kiểm tra chẵn lẻ và cuối cùng phải có ít nhất một stop bit ở
mức cao báo hiệu quá trình truyền một ký tự đã kết thúc. Bộ thu sẽ tiến hành xử lý các
bit đã nhận và chờ start bit để nhận byte dữ liệu tiếp theo. Bởi vì start bit luôn là mức
logic 0 trong khi stop bit ở mức logic 1 do đó không gây ra hiểu lầm giữa hai bit liên
tiếp được truyền.
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 4


Đồ án chuyên ngành
1.1.1

Bộ nhận dữ liệu

Hình 1.2 Bộ nhận dữ liệu
Tất cả các hoạt động của phần cứng UART đều được đồng bộ hay điều khiển
bởi một tín hiệu xung đồng hồ (clock) chạy với tốc độ bằng một số nhân nguyên nào
đó của tốc độ dữ liệu, ví dụ việc truyền hay nhận một bit dữ liệu sẽ kéo dài trong vòng
16 xung clock chẳng hạn. Bộ thu sẽ kiểm tra trạng thái của tín hiệu được gửi đến tại
mỗi xung đồng hồ (theo cạnh lên hay cạnh xuống) để xem khi nào xảy ra start bit. Nếu
thời gian của một start bit kéo dài ít nhất là một nửa thời gian của một bit dữ liệu, thì
nó được xem là hợp lệ và báo hiệu việc truyền một ký tự mới đang xảy ra.
Nếu Start bit không đáp ứng yêu cầu, xung này xem như là xung sai (spurious
pulse) và bị bỏ qua. Thời gian truyền một bit được giám sát và trạng thái của đường
truyền được lấy mẫu tại điểm giữa mỗi bit. Đồng thời tạo ra xung clock (cạnh lên hay
xuống) cho phép dịch dữ liệu vào thanh ghi dịch (shift register). Sau khi kết thúc một
khung dữ liệu, nội dung của thanh ghi dịch đã được chuẩn bị sẵn sàng ở dạng song
song để gửi tới bộ xử lý dữ liệu trong hệ thống. UART lúc này sẽ đặt một cờ (flag) để
báo hiệu dữ liệu mới nhận đã sẵn sàng, hoặc nó cũng có thể tạo ra một ngắt (interrupt)

để yêu cầu bộ xử lý nhận dữ liệu vừa nhận được.
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 5


Đồ án chuyên ngành
Trong một vài kiểu UART, một bộ nhớ đệm nhỏ kiểu FIFO (First In First Out)
được đặt giữa thanh ghi dịch của bộ thu và bộ xử lý, việc làm này cho phép bộ xử lý có
nhiều thời gian hơn để thao tác trên dữ liệu nhằm hạn chế việc mất dữ liệu trong trường
hợp tốc độ xử lý của bộ xử lý chậm hơn quá trình nhận dữ liệu.
1.1.2 Bộ phát dữ liệu

Hình 1.3 Bộ phát dữ liệu
Một bộ nhớ đệm nhỏ kiểu FIFO (First In First Out) được đặt giữa thanh ghi dịch
của bộ phát và bộ xử lý giống như bên bộ nhận dữ liệu.
Ngay sau khi dữ liệu được gửi vào thanh ghi dịch thì phần cứng UART sẽ tạo ra
start bit, và dịch số bit dữ liệu yêu cầu ra ngoài đường truyền, tạo ra và ghép bit kiểm
tra chẵn lẻ vào cuối byte dữ liệu truyền nếu có, đồng thời chèn luôn cả stop bit.
Bởi việc truyền một khung dữ liệu có thể tương đối lâu so với tốc độ của bộ xử
lý, nên UART sẽ duy trì một cờ báo hiệu trạng thái bận để hệ thống không ghi byte dữ
liệu mới vào cho đến khi dữ liệu tại đã được truyền xong, việc báo hiệu này có thể thực
hiện thông qua một ngắt.
1.1.3 Tốc độ Baud
Baud rate là đại lượng xác định tốc độ phát bit dữ liệu trong truyền bất đồng bộ,
đơn vị là bps (bit per second).
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 6


Đồ án chuyên ngành
Bình thường, baud rate dùng để đo số bit thực sự được gửi trên kênh truyền chứ
không phải là lượng dữ liệu thực sự được gửi từ máy này sang máy khác.Việc tính

baud rate còn gồm cả những start bit, stop bit hay bit kiểm tra chẵn lẻ được tạo ra bởi
UART gửi nhưng bị loại bỏ bởi UART thu. Điều này có nghĩa rằng những từ dữ liệu có
độ dài 7 bit phải cần đến ít nhất 9 bit hoặc 10 bit (nếu có bit kiểm tra chẵn lẻ) để truyền
. Do đó, một modem có khả năng phát 300 bit trên giây từ nơi này sang nơi khác thì có
thể truyền 30 khung dữ liệu 7 bit nếu có dùng bit kiểm tra chẵn lẻ, 1 stop bit và 1 start
bit. Như vậy, số bit dữ liệu thực sự trong một giây của modem là 210 bit, số bit được
chèn thêm là 90 bit.

Chương 2

PHÂN TÍCH TỔNG QUAN VÀ THIẾT KẾ CÁC KHỐI

CHỨC NĂNG CỦA BỘ UART
Thiết kế một bộ truyền bất đồng bộ theo chuẩn UART thử nghiệm trên KIT FPGA. Cụ
thể, thiết kế bộ truyền nối tiếp theo chuẩn UART (Universal Asynchronous Receiver
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 7


Đồ án chuyên ngành
Transmitter) có các đặc điểm như sau: Cấu hình được tốc độ BAUD (tốc độ truyền dữ
liệu) theo công thức :

Trong đó: fbaud là tốc độ BAUD cần cấu hình, BRG là thanh ghi thiết lập tốc
độ baud có độ rộng 8 bit, fosc là tần số xung clock trong mạch.
Khung dữ liệu gồm: 1 start bit, 8 bit dữ liệu, 1 stop bit 8 bit dữ liệu cần truyền
có giá trị từ H00 đến HFF sẽ được chuyển đổi dạng mã ASCII trước khi truyền đi. Ví
dụ: Dữ liệu cần truyền là: H85 sẽ được đổi thành H38 (là mã ASCII của số 8) và
H35(là mã ASCII của số 5). Sau đó hai giá trị H38 và H35 sẽ được truyền đi qua
đường truyền nối tiếp.
2.1

Những yêu cầu của thiết kế :
- Tốc độ baud được chọn cố định trước khi tổng hợp thông qua biến BRG.
- Khung dữ liệu gồm 1 bit start, 8 bit dữ liệu, 1 bit stop.
- Truyền nhận song công (Dữ liệu được truyền đồng thời theo 2 hướng).

Hình 2.1 Truyền nhận song công

 Sơ đồ khối tổng quát: Thiết kế có 4 khối cơ bản như sau

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 8


Đồ án chuyên ngành

Lõi UART-FPGA gồm các khối chính như sau:
Khối truyền nối tiếp (TRANSMITTER): Nhận dữ liệu từ ngõ vào data_in và
phát đi dựa trên tốc độ baud đã được tính trong khối BAUD RATE.
Khối nhận dữ liệu nối tiếp (RECEIVER): Phát hiện, lấy mẫu và lưu trữ dữ liệu
nhận nối tiếp từ chân RX của UART ngoài thông qua tín hiệu uart_rx với tốc độ baud

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 9


Đồ án chuyên ngành
đã được tính ở khối BAUD RATE. Khối này có thêm bộ đệm FIFO 8 tầng để lưu tạm
dữ liệu và tránh mất mát dữ liệu.
Khối tạo tốc độ truyền (BAUD RATE): Dựa vào thông số tốc độ truyền được
cấu hình, khối này sẽ tính toán và tạo xung nhịp truyền dữ liệu khi phát và lấy mẫu dữ
liệu khi nhận.
Khối điều khiển và hiển thị (CONTROL DISPLAY): tiếp nhận tín hiệu điều

khiển tx_in để tạo ra tín hiệu cho phép khối truyền dữ liệu của UART hoạt động. Đồng
thời nhận các giá trị dữ liệu từ khối nhận dữ liệu của UART để giải mã LED 7 đoạn và
hiển thị kết quả.
Bốn khối trên sẽ được kết nối với nhau thành một thiết kế hoàn chỉnh ở file
core_uart.
2.2 Sơ đồ tín hiệu vào ra và sơ đồ chi tiết các khối thiết kế
2.2.1 Khối TRANSMITTER
*Sơ đồ tín hiệu giao tiếp

*Chức năng các tín hiệu:
Tên tín hiệu
clk
reset_n
uart_en
tx_enable
data_in[7:0]
brg_tx_clken

Chiều
input
input
input
input
input
input

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 10

Mô tả
Clock đồng bộ.

Reset đồng bộ,tích cực mức thấp.
Cho phép hoạt động,tích cực mức cao.
Cho phép bắt đầu truyền dữ liệu.
Bus dữ liệu truyền.
Tín hiệu xác định vị trí dịch dữ liệu


Đồ án chuyên ngành
uart_tx

khi bộ truyền hoạt động.
Ngõ ra nối tiếp của dữ liệu truyền ,gán

output

ra cổng RS232.
*Máy trạng thái của bộ truyền dữ liệu:

*Mô tả các trạng thái :
Trạng thái hiện

Mô tả

Điều kiện

tại

Trạng thái kế
tiếp


Trạng thái rảnh
IDLE

khi bộ truyền

tx_enable

LOAD_TXS

không hoạt động.
Trạng thái nạp dữ
LOAD_TXS

SHIFT_DATA

liệu vào thanh ghi
dịch.
Trạng thái truyền

brg_tx_clken &

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 11


Đồ án chuyên ngành
SHIFT_DATA

từng bit dữ liệu.

tx_count =


IDLE

“1001”
*Sơ đồ chi tiết khối TRANSMITTER:

Bộ cộng để tăng giá trị bộ đếm lên, bộ MUX để chọn các ngõ vào khác nhau
phụ thuộc vào giá trị của 2 tín hiệu set_tx_count và shift_en như hình vẽ, Flip Flop là
DFF để tạo thanh ghi lưu giá trị đếm. Bộ so sánh bằng để quyết định giá trị của tín hiệu
set_tx_count.
Bộ đếm để tạo tín hiệu tx_count[3:0], cứ khi nào dịch được 1 bit trong thanh ghi
tsr[9:0] thì giá trị bộ đếm tăng lên 1 .Khi tx_count = “1001” thì dữ liệu đã được truyền
xong.

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 12


Đồ án chuyên ngành

Khối gồm các cổng logic: cổng AND4 để tạo tín hiệu shift_en cho phép dịch,
các bộ so sánh để tạo các tín hiệu tương ứng, bộ MUX để chọn các tín hiệu ngõ vào
dựa vào 2 tín hiệu shift_en và load_data, các DFF để tạo các thanh ghi tsr[9:0] vào tín
hiệu uart_tx.
Khối tạo thanh ghi dịch tsr 10 bit {gồm 1 bit start, 8 bit data_in, 1 bit stop) , khi
có xung brg_tx_clken và đủ các điều kiện như mô tả ở máy trạng thái thì dữ liệu trong
thanh ghi sẽ được dịch đến ngõ ra nối tiếp uart_tx của tín hiệu truyền cho tới khi truyền
hết 8 bit data_in.

2.2.2 Khối RECEIVER
*sơ đồ tín hiệu giao tiếp


SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 13


Đồ án chuyên ngành

*Chức năng các tín hiệu:
Tên tín hiệu
clk
reset_n
uart_en

Chiều
input
input
input

Mô tả
Clock đồng bộ.
Reset đồng bộ,tích cực mức thấp.
Cho phép hoạt động,tích cực mức

input

cao.
Xung cho phép xác định vị trí lấy

uart_rx

input


mẫu dữ liệu.
Đường nhận dữ liệu truyền nối

fifo_rd
rc_data[7:0]

input
output

tiếp ,gán ra cổng RS232.
Cho phép đọc dữ liệu từ FIFO ra.
Dữ liệu nhận được của khối

output

RECEIVER.
Cờ báo FIFO đầy,không ghi được

output

dữ liệu vào FIFO nữa.
Cờ báo FIFO trống,có thể ghi được

brg_rx_clken

fifo_full
fifo_empty

dữ liệu vào FIFO.

*Máy trạng thái của bộ nhận dữ liệu:

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 14


Đồ án chuyên ngành

*Mô tả các trạng thái :
Trạng thái hiện tại
IDLE

Mô tả
Trạng thái rảnh
khi bộ nhận

Điều kiện
tx_en

Trạng thái kế tiếp
CHECK_START_BIT

không hoạt
động.
Trạng thái lấy
CHECK_START_BIT

mẫu và kiểm tra
bit start.

samp_count =“0111”

& uart_rx_sync=”1”
samp_count =“0111”

IDLE
RECEIVE_DATA

& uart_rx_sync=”0”
Trạng thái lấy
RECEIVE_DATA

mẫu các bit trên

rx_count = “1010”

đường nhận dữ
liệu nối tiếp.
*Sơ đồ chi tiết khối RECEIVER:
Mạch đếm xung lấy mẫu:
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 15

IDLE


Đồ án chuyên ngành

Mạch gồm các bộ so sánh bằng để tạo các tín hiệu tương ứng trên hình vẽ, các
cổng OR2, AND2 để tạo tín hiệu inc_samp_count, bộ MUX để chọn các ngõ vào dựa
vào 2 tín hiệu inc_samp_count và clr_samp_count, thanh ghi DFF để tạo tín hiệu
samp_count[3:0].
Giá trị bộ đếm samp_count[3:0] sẽ tăng lên 1 khi các điều kiện của bộ MUX

được thỏa mãn.
Mạch đếm số bit nhận được:

Mạch gồm các bộ so sánh bằng để tạo các tín hiệu tương ứng trên hình vẽ, cỏng
AND3 để tạo tín hiệu inc_rx_count, bộ MUX để chọn các ngõ vào dựa vào 2 tín hiệu
inc_rx_count và set_comp, thanh ghi DFF để tạo tín hiệu rx_bitcount[3:0].

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 16


Đồ án chuyên ngành
Khi nhận được 1 bit thì rx_bitcount[3:0] sẽ tăng lên 1. Khi đã nhận đủ 10 bit của
thanh ghi dịch tsr[9:0] thì bộ đếm sẽ được reset nhờ tín hiệu clr_rx_count.
Mạch tạo thanh ghi dịch bên bộ nhận:

Mạch gồm bộ MUX để chọn các ngõ vào dựa vào tín hiệu inc_rx_count, thanh
ghi DFF để tạo tín hiệu rsr[7:0]
Tạo thanh ghi dịch 8 bit rsr[7:0] để nhận 8 bit data_in từ thanh ghi dịch tsr[9:0]
bên khối truyền.Khi có tín hiệu cho phép dịch inc_rx_count thì dữ liệu trong thanh ghi
sẽ được dịch qua phải 1 bit để đưa vào FIFO nhận.

Mạch bắt cạnh tín hiệu cho phép FIFO nhận:

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 17


Đồ án chuyên ngành

Việc nhấn và giữ một nút (KEY) sẽ tạo ra mức logic 1 kéo dài trong nhiều xung
clock hê thống.

Nếu ta đưa trực tiếp tín hiệu fifo_rd vào để xét điều kiện đọc FIFO thì sẽ
không chính xác và không kiểm soát được số lần đọc. Để một lần nhấn nút
tương ứng với một byte dữ liệu được đọc đi thì ta phải tạo ra tín hiệu cho phép
chỉ tích cực trong đúng một chu kỳ của xung clock hệ thống. Mạch trên đây sẽ
thực hiện điều đó.
Dạng sóng mô phỏng :

Sau 2 chu kì của tín hiệu fifo_rd thì phát hiện được cạnh của fifo_rd_enable.
FIFO 8 tầng nhận dữ liệu:
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 18


Đồ án chuyên ngành

Khi FIFO chưa Full,dữ liệu từ thanh ghi rsr[7:0] sẽ được ghi vào FIFO nhờ con
trỏ cho phép ghi wptr[3:0] và tín hiệu fifo_we.
Dữ liệu đọc ra thanh ghi rc_data[7:0] chính là dữ liệu nhận được để hiển thị trên
LED 7 đoạn. Con trỏ cho phép đọc rptr[3:0] sẽ cho phép đọc dữ liệu ra từ FIFO.
Mạch tạo ra con trỏ dữ liệu wptr[3:0] và rptr[3:0] :

Khi có tín hiệu fifo_we =1 thì bộ đếm sẽ hoạt động và con trỏ wptr[3:0] sẽ tăng
lên 1.Khi có tín hiệu fifo_re =1 thì bộ đếm sẽ hoạt động và con trỏ rptr[3:0] sẽ tăng lên
1.
Mạch tạo các cờ báo trạng thái của FIFO:

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 19


Đồ án chuyên ngành


Mạch gồm các cổng XOR2, AND2, bộ so sánh bằng để tạo các tín hiệu tương
ứng như hình vẽ.
Khi con trỏ wptr[2:0] = rptr[2:0] và bit có trọng số cao nhất wptr[3] khác rptr[3]
thì tín hiệu fifo_full = 1 ,cờ này báo hiệu FIFO đầy, không thể ghi thêm dữ liệu vào
FIFO.
Khi con trỏ wptr[2:0] = rptr[2:0] và bit có trọng số cao nhất wptr[3] giống
rptr[3] thì tín hiệu fifo_empty = 1 ,cờ này báo hiệu FIFO chưa đầy, có thể ghi thêm dữ
liệu vào FIFO.
2.2.3 Khối BAUD RATE
*Sơ đồ tín hiệu giao tiếp

*Chức năng các tín hiệu:
Tên tín hiệu
clk
reset_n
uart_en

Chiều
input
input

Mô tả
Clock đồng bộ.
Reset đồng bộ .Tích cực

input

mức thấp.
Cho phép hoạt động.Tích


SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 20


Đồ án chuyên ngành
brg_tx_clken

output

cực mức cao.
Xung cho phép dịch từng
bit dữ liệu khi bộ truyền

brg_rx_clken

output

hoạt động.
Xung cho phép xác định
vị trí lấy mẫu dữ liệu.

Mô tả xung truyền và xung nhận :

Tốc độ baud được chọn gán trước khi tổng hợp thông qua biến BRG theo công
thức sau:

fbaud tính theo đơn vị bps, fosc là tần số xung clock .
Xung Tx cho phép bắt đầu truyền 1 bit dữ liệu(Data) bên phát, ở bên thu khi
nhận được 1 bit dữ liệu thì cũng có 1 xung Rx được lấy mẫu ở giữa bit dữ liệu .
Khoảng thời gian lấy mẫu của Tx và Rx là 16x(n+1) xung CLOCK, với n là
tham số nạp vào để cấu hình cho tốc độ Baud.

*Sơ đồ chi tiết khối BAUD RATE:
Mạch tạo xung truyền :

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 21


Đồ án chuyên ngành

Mạch gồm bộ cộng để tăng giá trị đếm lên 1, cổng AND2, các bộ MUX để chọn
các giá trị ngõ vào khác nhau, bộ so sánh bằng, thanh ghi DFF để tạo tín hiệu
tx_count[15:0].
Khi có tín hiệu uart_en = 1, thì BRG sẽ được nạp vào ,bộ đếm sẽ bắt đầu đếm từ
0 cho tới khi tx_counter[15:0] = {16x(BRG + 1) -1} thì brg_tx_clken = 1.
Mạch tạo xung nhận :

Mạch gồm bộ cộng để tăng giá trị đếm lên 1, cổng AND2, các bộ MUX để chọn
các giá trị ngõ vào khác nhau, bộ so sánh bằng, thanh ghi DFF để tạo tín hiệu
rx_count[11:0].
Khi có tín hiệu uart_en = 1, thì BRG sẽ được nạp vào ,bộ đếm sẽ bắt đầu đếm từ
0 cho tới khi rx_counter[11:0] = BRG thì brg_rx_clken = 1.

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 22


Đồ án chuyên ngành

2.2.4

Khối CONTROL DISPLAY


*Sơ đồ tín hiệu giao tiếp

*Chức năng các tín hiệu:
Tên tín hiệu
clk
reset_n
uart_en
tx_in
rc_data[7:0]
tx_enable
hex0[6:0]
hex1[6:0]

Chiều
input
input
input
input

Mô tả
Clock đồng bộ .
Reset đồng bộ .Tích cực mức thấp.
Cho phép hoạt động.Tích cực mức cao.
Cho phép ghi dữ liệu từ bus data_in vào

input

bộ truyền.
Giá trị dữ liệu nhận được từ khối


output

RECEIVER.
Tín hiệu cho phép bộ truyền bắt đầu

output

hoạt động.
Giá trị giải mã LED 7 đoạn của 4 bit

output

thấp trong Byte dữ liệu nhận được.
Giá trị giải mã LED 7 đoạn của 4 bit cao
trong Byte dữ liệu nhận được.

SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 23


Đồ án chuyên ngành
uart_tx

output

Đường truyền dữ liệu nối tiếp bất đồng
bộ gán ra cổng RS232.

*Sơ đồ chi tiết khối CONTROL DISPLAY
Mạch giải mã LED 7 đoạn cho dữ liệu nhận hiện tại:


Chức năng: giải mã 4 bit của rc_data thành 7 bit để hiện thị trên LED 7 đoạn

Mạch tạo tín hiệu cho phép truyền :
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 24


Đồ án chuyên ngành

Việc nhấn và giữ một nút (KEY) sẽ tạo ra mức logic 1 kéo dài trong
nhiều xung clock hê thống.
Nếu ta đưa trực tiếp tín hiệu tx_in vào để xét điều kiện truyền thì sẽ
không chính xác và không kiểm soát được số lần truyền. Để một lần nhấn nút
tương ứng với một khung dữ liệu được truyền đi thì ta phải tạo ra tín hiệu cho
phép chỉ tích cực trong đúng một chu kỳ của xung clock hệ thống. Mạch trên
đây sẽ thực hiện điều đó.
Dạng sóng mô phỏng :

Sau 2 chu kì của tín hiệu tx_in thì phát hiện được cạnh của tx_enable.

Chương 3

KIỂM TRA THIẾT KẾ

3.1 Giải thích cách viết testbench mô phỏng:
Bật tín hiệu uart_en(uart_en = 1) cho phép uart hoạt động:
SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 25


×