Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
1,27 MB
Nội dung
Đồ á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 BIT NẠP TRÊN KIT FPGA Sinh viên thực : 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 đồ án chép đồ án có từ trước Nếu vi phạm tơi xin chịu hình thức kỷ luật Khoa Sinh viên thực Đỗ 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 Đồ án chuyên ngành Đà Nẵng, ngày tháng năm 2014 GIÁO VIÊN HƯỚNG DẪN (Ký tên) LỜI MỞ ĐẦU Ngày nay, hệ thống truyền liệu có hai cách đưa tín hiệu lên đường truyền: nối tiếp song song Cách truyền song song thường truyền khoảng cách ngắn, ví dụ thiết bị phòng từ máy tính sang máy in Cách truyền nối tiếp thường thực khoảng cách truyền xa Ngoài ra, cách truyền nối tiếp, dựa vào cách thực đồng nơi phát thu ta có hai chế độ hoạt động: đồng bộvà bất đồng Trong chế độ bất đồng bộ, xung đồng hồ tạo cách riêng rẻ máy phát máy thu dựavào tần số danh định tương ứng với vận tốc truyền (bit rate baud rate) Trong chế độ đồng bộ, nơi phát gửi xung đồng hồ tới nơi thu theo kênh truyền song song với kênh truyền liệu nơi thu tự tạo xung đồng hồ cách tách tín hiệu thời gian từ dịng liệu Trong đồ án này, tơi xin trình bày chuẩn truyền thơng nối tiếp khơng đồng UART (Universal Asynchronous Receiver Transmitter) Vì truyền thơng nối tiếp có ưu điểm sau: - Khoảng cách truyền xa truyền song song - Sốdây kết nối - 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 lúc máy tính làm việc SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành MỤC LỤC SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành Chương MÔ TẢ TỔNG QUAN VỀ GIAO TIẾP UART Truyền nối tiếp (serial transmission) thông tin số hay bit thông qua dây đơn (single wire) hay vật liệu trung gian tiết kiệm chi phí nhiều so với truyền song song dùng nhiều dây lúc Truyền liệu dùng UART thực theo phương thức song công (full duplex) tức việc gửi nhận thực lúc, hay bán song công (half duplex), tức thiết bị thay phiên phát nhận Bộ truyền UART phát bit byte liệu cách Bộ thu UART chịu trách nhiệm lắp ghép bit lại thành byte hoàn chỉnh Mỗi UART gồm có hai ghi dịch, dùng làm thành phần việc chuyển nối tiếp sang song song ngược lại 1.1 Đặc trưng khung truyền Hình 1.1 Định dạng khung truyền Mỗi ký tự gửi sau bit khởi tạo gọi start bit mức logic thấp, số bit liệu thường 5, có thêm bit kiểm tra chẵn lẻ (parity bit) hay nhiều stop bit mức logic cao Start bit báo hiệu cho thu ký tự gửi (hay nói đến) Tiếp theo sau start bit, thu nhận từ đến bit liệu, phụ thuộc vào tùy vào cấu hình sử dụng Theo sau bit liệu bit kiểm tra chẵn lẻ cuối phải có stop bit mức cao báo hiệu trình truyền ký tự kết thúc Bộ thu tiến hành xử lý bit nhận chờ start bit để nhận byte liệu Bởi start bit ln mức logic stop bit mức logic không gây hiểu lầm hai bit liên tiếp truyền SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành 1.1.1 Bộ nhận liệu Hình 1.2 Bộ nhận liệu Tất hoạt động phần cứng UART đồng hay điều khiển tín hiệu xung đồng hồ (clock) chạy với tốc độ số nhân nguyên tốc độ liệu, ví dụ việc truyền hay nhận bit liệu kéo dài vòng 16 xung clock chẳng hạn Bộ thu kiểm tra trạng thái tín hiệu gửi đến xung đồng hồ (theo cạnh lên hay cạnh xuống) để xem xảy start bit Nếu thời gian start bit kéo dài nửa thời gian bit liệu, xem hợp lệ báo hiệu việc truyền ký tự xảy Nếu Start bit không đáp ứng yêu cầu, xung xem xung sai (spurious pulse) bị bỏ qua Thời gian truyền bit giám sát trạng thái đường truyền lấy mẫu điểm bit Đồng thời tạo xung clock (cạnh lên hay xuống) cho phép dịch liệu vào ghi dịch (shift register) Sau kết thúc khung liệu, nội dung ghi dịch chuẩn bị sẵn sàng dạng song song để gửi tới xử lý liệu hệ thống UART lúc đặt cờ (flag) để báo hiệu liệu nhận sẵn sàng, tạo ngắt (interrupt) để yêu cầu xử lý nhận liệu vừa nhận SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành Trong vài kiểu UART, nhớ đệm nhỏ kiểu FIFO (First In First Out) đặt ghi dịch thu xử lý, việc làm cho phép xử lý có nhiều thời gian để thao tác liệu nhằm hạn chế việc liệu trường hợp tốc độ xử lý xử lý chậm trình nhận liệu 1.1.2 Bộ phát liệu Hình 1.3 Bộ phát liệu Một nhớ đệm nhỏ kiểu FIFO (First In First Out) đặt ghi dịch phát xử lý giống bên nhận liệu Ngay sau liệu gửi vào ghi dịch phần cứng UART tạo start bit, dịch số bit liệu yêu cầu đường truyền, tạo ghép bit kiểm tra chẵn lẻ vào cuối byte liệu truyền có, đồng thời chèn ln stop bit Bởi việc truyền khung liệu tương đối lâu so với tốc độ xử lý, nên UART trì cờ báo hiệu trạng thái bận để hệ thống không ghi byte liệu vào liệu truyền xong, việc báo hiệu thực thông qua ngắt 1.1.3 Tốc độ Baud Baud rate đại lượng xác định tốc độ phát bit liệu truyền bất đồng bộ, đơn vị bps (bit per second) SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành Bình thường, baud rate dùng để đo số bit thực gửi kênh truyền lượng liệu thực gửi từ máy sang máy khác.Việc tính baud rate cịn gồm start bit, stop bit hay bit kiểm tra chẵn lẻ tạo UART gửi bị loại bỏ UART thu Điều có nghĩa từ liệu có độ dài bit phải cần đến bit 10 bit (nếu có bit kiểm tra chẵn lẻ) để truyền Do đó, modem có khả phát 300 bit giây từ nơi sang nơi khác truyền 30 khung liệu bit có dùng bit kiểm tra chẵn lẻ, stop bit start bit Như vậy, số bit liệu thực giây modem 210 bit, số bit chèn thêm 90 bit Chương 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ế truyền bất đồng theo chuẩn UART thử nghiệm KIT FPGA Cụ thể, thiết kế truyền nối chuẩn UART (Universal Asynchronous Receiver SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành Transmitter) có đặc điểm sau: Cấu hình tốc độ BAUD (tốc độ truyền liệu) theo công thức : Trong đó: fbaud tốc độ BAUD cần cấu hình, BRG ghi thiết lập tốc độ baud có độ rộng bit, fosc tần số xung clock mạch Khung liệu gồm: start bit, bit liệu, stop bit bit liệu cần truyền có giá trị từ H00 đến HFF chuyển đổi dạng mã ASCII trước truyền Ví dụ: Dữ liệu cần truyền là: H85 đổi thành H38 (là mã ASCII số 8) H35(là mã ASCII số 5) Sau hai giá trị H38 H35 truyền qua đường truyền nối tiếp 2.1 Những yêu cầu thiết kế : - Tốc độ baud chọn cố định trước tổng hợp thông qua biến BRG - Khung liệu gồm bit start, bit liệu, bit stop - Truyền nhận song công (Dữ liệu truyền đồng thời theo hướng) Hình 2.1 Truyền nhận song công Sơ đồ khối tổng quát: Thiết kế có khối sau SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành Lõi UART-FPGA gồm khối sau: Khối truyền nối tiếp (TRANSMITTER): Nhận liệu từ ngõ vào data_in phát dựa tốc độ baud tính khối BAUD RATE Khối nhận liệu nối tiếp (RECEIVER): Phát hiện, lấy mẫu lưu trữ liệu nhận nối tiếp từ chân RX UART ngồi thơng qua tín hiệu uart_rx với tốc độ baud SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành tính khối BAUD RATE Khối có thêm đệm FIFO tầng để lưu tạm liệu tránh mát liệu Khối tạo tốc độ truyền (BAUD RATE): Dựa vào thơng số tốc độ truyền cấu hình, khối tính tốn tạo xung nhịp truyền liệu phát lấy mẫu liệu nhận Khối điều khiển hiển thị (CONTROL DISPLAY): tiếp nhận tín hiệu điều khiển tx_in để tạo tín hiệu cho phép khối truyền liệu UART hoạt động Đồng thời nhận giá trị liệu từ khối nhận liệu UART để giải mã LED đoạn hiển thị kết Bốn khối kết nối với thành thiết kế hoàn chỉnh file core_uart 2.2 Sơ đồ tín hiệu vào sơ đồ chi tiết khối thiết kế 2.2.1 Khối TRANSMITTER *Sơ đồ tín hiệu giao tiếp *Chứ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 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 liệu Bus liệu truyền Tín hiệu xác định vị trí dịch liệu Đồ án chuyên ngành uart_tx truyền hoạt động Ngõ nối tiếp liệu truyền ,gán output cổng RS232 *Máy trạng thái truyền liệu: *Mô tả trạng thái : Trạng thái Mô tả Điều kiện Trạng thái Trạng thái rảnh IDLE truyền tx_enable LOAD_TXS không hoạt động Trạng thái nạp LOAD_TXS SHIFT_DATA liệu vào 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 bit liệu tx_count = IDLE “1001” *Sơ đồ chi tiết khối TRANSMITTER: Bộ cộng để tăng giá trị đếm lên, MUX để chọn ngõ vào khác phụ thuộc vào giá trị tín hiệu set_tx_count shift_en hình vẽ, Flip Flop DFF để tạo ghi lưu giá trị đếm Bộ so sánh để định giá trị tín hiệu set_tx_count Bộ đếm để tạo tín hiệu tx_count[3:0], dịch bit ghi tsr[9:0] giá trị đếm tăng lên Khi tx_count = “1001” liệu truyền xong SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 12 Đồ án chuyên ngành Khối gồm cổng logic: cổng AND4 để tạo tín hiệu shift_en cho phép dịch, so sánh để tạo tín hiệu tương ứng, MUX để chọn tín hiệu ngõ vào dựa vào tín hiệu shift_en load_data, DFF để tạo ghi tsr[9:0] vào tín hiệu uart_tx Khối tạo ghi dịch tsr 10 bit {gồm bit start, bit data_in, bit stop) , có xung brg_tx_clken đủ điều kiện mơ tả máy trạng thái liệu ghi dịch đến ngõ nối tiếp uart_tx tín hiệu truyền truyền hết 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 tín hiệu: Tên tín hiệu clk reset_n uart_en Chiều input input input Mô tả Clock đồng 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 liệu Đường nhận liệu truyền nối fifo_rd rc_data[7:0] input output tiếp ,gán cổng RS232 Cho phép đọc liệu từ FIFO Dữ liệu nhận khối output RECEIVER Cờ báo FIFO đầy,không ghi output liệu vào FIFO Cờ báo FIFO trống,có thể ghi brg_rx_clken fifo_full fifo_empty liệu vào FIFO *Máy trạng thái nhận liệu: SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 14 Đồ án chuyên ngành *Mô tả trạng thái : Trạng thái IDLE Mô tả Trạng thái rảnh nhận Điều kiện tx_en Trạng thái CHECK_START_BIT không hoạt động Trạng thái lấy CHECK_START_BIT mẫu 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 bit rx_count = “1010” đường nhận 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 so sánh để tạo tín hiệu tương ứng hình vẽ, cổng OR2, AND2 để tạo tín hiệu inc_samp_count, MUX để chọn ngõ vào dựa vào tín hiệu inc_samp_count clr_samp_count, ghi DFF để tạo tín hiệu samp_count[3:0] Giá trị đếm samp_count[3:0] tăng lên điều kiện MUX thỏa mãn Mạch đếm số bit nhận được: Mạch gồm so sánh để tạo tín hiệu tương ứng hình vẽ, cỏng AND3 để tạo tín hiệu inc_rx_count, MUX để chọn ngõ vào dựa vào tín hiệu inc_rx_count set_comp, 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 bit rx_bitcount[3:0] tăng lên Khi nhận đủ 10 bit ghi dịch tsr[9:0] đếm reset nhờ tín hiệu clr_rx_count Mạch tạo ghi dịch bên nhận: Mạch gồm MUX để chọn ngõ vào dựa vào tín hiệu inc_rx_count, ghi DFF để tạo tín hiệu rsr[7:0] Tạo ghi dịch bit rsr[7:0] để nhận bit data_in từ 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 liệu ghi dịch qua phải 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 giữ nút (KEY) tạo mức logic kéo dài nhiều xung clock 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 khơng xác khơng kiểm sốt số lần đọc Để lần nhấn nút tương ứng với byte liệu đọc ta phải tạo tín hiệu cho phép tích cực chu kỳ xung clock hệ thống Mạch thực điều Dạng sóng mơ : Sau chu kì tín hiệu fifo_rd phát cạnh fifo_rd_enable FIFO tầng nhận 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ừ ghi rsr[7:0] ghi vào FIFO nhờ trỏ cho phép ghi wptr[3:0] tín hiệu fifo_we Dữ liệu đọc ghi rc_data[7:0] liệu nhận để hiển thị LED đoạn Con trỏ cho phép đọc rptr[3:0] cho phép đọc liệu từ FIFO Mạch tạo trỏ liệu wptr[3:0] rptr[3:0] : Khi có tín hiệu fifo_we =1 đếm hoạt động trỏ wptr[3:0] tăng lên 1.Khi có tín hiệu fifo_re =1 đếm hoạt động trỏ rptr[3:0] tăng lên Mạch tạo cờ báo trạng thái FIFO: SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 19 Đồ án chuyên ngành Mạch gồm cổng XOR2, AND2, so sánh để tạo tín hiệu tương ứng hình vẽ Khi trỏ wptr[2:0] = rptr[2:0] bit có trọng số cao wptr[3] khác rptr[3] tín hiệu fifo_full = ,cờ báo hiệu FIFO đầy, ghi thêm liệu vào FIFO Khi trỏ wptr[2:0] = rptr[2:0] bit có trọng số cao wptr[3] giống rptr[3] tín hiệu fifo_empty = ,cờ báo hiệu FIFO chưa đầy, ghi thêm liệu vào FIFO 2.2.3 Khối BAUD RATE *Sơ đồ tín hiệu giao tiếp *Chức tín hiệu: Tên tín hiệu clk reset_n uart_en Chiều input input Mơ tả Clock đồng Reset đồng 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 bit liệu truyền brg_rx_clken output hoạt động Xung cho phép xác định vị trí lấy mẫu liệu Mô tả xung truyền xung nhận : Tốc độ baud chọn gán trước tổng hợp thông qua biến BRG theo cơng thức sau: fbaud tính theo đơn vị bps, fosc tần số xung clock Xung Tx cho phép bắt đầu truyền bit liệu(Data) bên phát, bên thu nhận bit liệu có xung Rx lấy mẫu bit liệu Khoảng thời gian lấy mẫu Tx Rx 16x(n+1) xung CLOCK, với n 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 cộng để tăng giá trị đếm lên 1, cổng AND2, MUX để chọn giá trị ngõ vào khác nhau, so sánh bằng, ghi DFF để tạo tín hiệu tx_count[15:0] Khi có tín hiệu uart_en = 1, BRG nạp vào ,bộ đếm bắt đầu đếm từ tx_counter[15:0] = {16x(BRG + 1) -1} brg_tx_clken = Mạch tạo xung nhận : Tải FULL (file word 47 trang): bit.ly/2Ywib4t Dự phòng: fb.com/KhoTaiLieuAZ Mạch gồm cộng để tăng giá trị đếm lên 1, cổng AND2, MUX để chọn giá trị ngõ vào khác nhau, so sánh bằng, ghi DFF để tạo tín hiệu rx_count[11:0] Khi có tín hiệu uart_en = 1, BRG nạp vào ,bộ đếm bắt đầu đếm từ rx_counter[11:0] = BRG brg_rx_clken = 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 Tải FULL (file word 47 trang): bit.ly/2Ywib4t Dự phòng: fb.com/KhoTaiLieuAZ *Chứ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 Reset đồng 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 liệu từ bus data_in vào input truyền Giá trị liệu nhận từ khối output RECEIVER Tín hiệu cho phép truyền bắt đầu output hoạt động Giá trị giải mã LED đoạn bit output thấp Byte liệu nhận Giá trị giải mã LED đoạn bit cao Byte liệu nhận SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 23 Đồ án chuyên ngành uart_tx output Đường truyền liệu nối tiếp bất đồng gán cổng RS232 *Sơ đồ chi tiết khối CONTROL DISPLAY Mạch giải mã LED đoạn cho liệu nhận tại: Chức năng: giải mã bit rc_data thành bit để thị LED đoạn 3843102 Mạch tạo tín hiệu cho phép truyền : SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang 24 ... 90 bit Chương 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ế truyền bất đồng theo chuẩn UART thử nghiệm KIT FPGA Cụ thể, thiết kế truyền nối chuẩn UART (Universal Asynchronous... truyền đồng thời theo hướng) Hình 2.1 Truyền nhận song cơng Sơ đồ khối tổng quát: Thiết kế có khối sau SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành Lõi UART -FPGA gồm khối sau: Khối truyền. .. SVTH: ĐỖ TIẾN THÀNH – LỚP 09DT2 Trang Đồ án chuyên ngành 1.1.1 Bộ nhận liệu Hình 1.2 Bộ nhận liệu Tất hoạt động phần cứng UART đồng hay điều khiển tín hiệu xung đồng hồ (clock) chạy với tốc độ số