1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế bộ truyền nhận UART

26 1K 17

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 434,5 KB

Nội dung

Thiết kế bộ truyền nhận UART

BÁO CÁO BÀI TẬP CHUYÊN ĐỀ (KTĐT) Đề tài: Thiết kế truyền nhận UART GVHD: Huỳnh Việt Thắng Nhóm: 24 Kiến thức UART: - UART (Universal Asynchronous Receiver Transmitter) gọi thu phát liệu không đồng nối tiếp UART sử dụng phổ biến để giao tiếp thiết bị khác - UART có nhiệm vụ chuyển đổi byte (8 bit) liệu từ song song sang nối tiếp thêm vào bit start, stop để tạo thành khung truyền truyền - Bộ phát UART điều khiển việc truyền tải liệu xung clock gọi tốc độ baud Hình 1: Khung truyền UART - Dữ liệu gởi không đồng xung clock nên truyền nhận cần có thống với Vì vậy, truyền truyền khung liệu (frame), nhận lấy mẫu tín hiệu sau tập hợp khôi phục lại tín hiệu gốc - Cơ chế minh họa hình 2, bit thông tin chia thành 16 điểm lấy mẫu Vì xác suất lỗi vị trí mẫu đầu mẫu cuối cao xác suất lỗi vị trí thấp nên ta chọn điểm lấy mẫu Hình 2: Cơ chế lấy mẫu nhận liệu 24  Từ kiến thức yêu cầu đề bài, ta thiết kế vừa truyền vừa nhận UART, hiển thị giá trị vừa truyền Thiết kế: 2.1 Sơ đồ khối thiết kế: Hình 3: Sơ đồ khối thiết kế - Trong đó: • Khối điều khiển CONTROL: 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 UART hoạt động Đồng thời nhận giá trị liệu từ rev_data để hiển thị led đơn • Khối tạo tốc độ truyền BAUD_RATE: dựa vào tần số clock hệ thống, khối tính toán tạo xung nhịp truyền liệu truyền lấy mẫu liệu nhận • Khối truyền nối tiếp UART_TRANSMITTER: nhận liệu từ ngõ vào data_in phát dựa tốc độ baud tính toán khối BAUD_RATE • Khối nhận nối tiếp UART_RECEIVER: phát hiện, lấy mẫu lưu trữ liệu nhận nối tiếp từ chân uart_rx với tốc độ baud tính toán khối BAUD_RATE 24 2.2 Máy trạng thái hữu hạn: - Máy trạng thái hữu hạn truyền: reset=’0’ or uart_en=0’ Idle Idle tx_enable=’1’ tx_count=”1001” and tx_clken Load_tx s Shift_data Hình 4: Máy trạng thái hữu hạn truyền - Trong đó: • reset: tín hiệu reset hệ thống • uart_en: tín hiệu cho phép hệ thống làm việc • tx_enable: tín hiệu cho phép truyền làm việc • tx_count: tín hiệu đếm số bit truyền • tx_clken: xung cho phép dịch bit liệu truyền hoạt động Trạng thái Mô tả Điều kiện Trạng thái Idle Trạng thái ban đầu tx_enable truyền không hoạt động Load_txs Load_txs Trạng thái nạp liệu vào ghi dịch truyền Shift_data Shift_data Trạng thái truyền bit tx_count=”1001” Idle tx_clken liệu 24 - Máy trạng thái hữu hạn nhận: reset=’0’ or uart_en=’0’ Idle uart_rx_sync=’0’ rx_count=”1010” uart_rx_sync=’1’ and samp_count=”0111” Check_start_ Receive_dat bit a uart_rx_sync=’0’ and samp_count=”0111” Hình 5: Máy trạng thái hữu hạn nhận - Trong đó: • Reset: tín hiệu reset hệ thống • Uart_en: tín hiệu cho phép hệ thống làm việc • Uart_rx_sync: tín hiệu lấy mẫu đọc • Samp_count: tín hiệu đếm số lần lấy mẫu xung vào • Rx_count: tín hiệu đếm xung vào Trạng thái Mô tả Điều kiện Trạng thái Idle uart_rx_sync=’0’ Check_start_bit Check_start_bit Trạng thái ban đầu nhận không hoạt động Trạng thái lấy mẫu samp_count=”0111” Idle 24 kiểm tra bit start uart_rx_sync=’1’ samp_count=”0111” Receive_data uart_rx_sync=’0’ Receive_data Trạng thái lấy mẫu bit liệu đường nhận rx_count=”1010” Idle Chương trình chính: 3.1 Code VHDL: - Khối BAUD_RATE library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_LOGIC_ARITH.ALL; Uncomment the following library declaration if using arithmetic functions with Signed or Unsigned values use IEEE.NUMERIC_STD.ALL; Uncomment the following library declaration if instantiating any Xilinx primitives in this code library UNISIM; use UNISIM.VComponents.all; 24 entity baud_rate is port ( clk : in std_logic; clock dong bo he thong reset : in std_logic; reset he thong Tich cuc muc thap uart_en : in std_logic; Tich cuc muc cao cho phep he thong lam viec tx_clken : out std_logic; du lieu bo truyen hoat dong xung cho phep dich tung bit rx_clken : out std_logic tri lay mau du lieu o bo nhan xung cho phep xac dinh vi ); end baud_rate; architecture Behavioral of baud_rate is signal tx_count: std_logic_vector(13 downto 0); signal rx_count: std_logic_vector(9 downto 0); signal tx_clken_temp: std_logic; signal rx_clken_temp: std_logic; constant temp: integer:=324; MHz 9600=fo/((324+1)*16 - 1), fo=50 begin process(clk) tao xung dich du lieu o bo phat begin if rising_edge(clk) then if ((reset='0') or (tx_clken_temp='1') or (uart_en='0')) then tx_count '0'); else 24 tx_count [...]... bit cao của data_in được ghi vào led_1 và 4 bit thấp của data_in được ghi vào led_0 24 3.4 Kết quả tổng hợp phần cứng: Hình 10: Kết quả tổng hợp phần cứng 4 Nhận xét, kết luận: - Kết quả mô phỏng cho thấy khối UART được thiết kế đã hoạt động đúng với yêu cầu được đặt ra - So với truyền nhận song song thì truyền nhận nối tiếp có tốc độ chậm hơn nhưng hạn chế được lỗi - Bài tập này giúp ta nắm vững hơn... phat hien bit stop uart_ rx t_data = 104200 ns constant clk_period : time := 20 ns; constant t_data: time := 104200 ns; BEGIN Instantiate the Unit Under Test (UUT) uut: full _uart PORT MAP ( clk => clk, reset => reset, uart_ en => uart_ en, data_in => data_in, tx_in => tx_in, uart_ rx => uart_ rx, 24 led_0 => led_0,... begin process(clk) begin if rising_edge(clk) then if ((reset='0') or (uart_ en='0')) then uart_ rx_sync ... chế lấy mẫu nhận liệu 24  Từ kiến thức yêu cầu đề bài, ta thiết kế vừa truyền vừa nhận UART, hiển thị giá trị vừa truyền Thiết kế: 2.1 Sơ đồ khối thiết kế: Hình 3: Sơ đồ khối thiết kế - Trong... cứng: Hình 10: Kết tổng hợp phần cứng Nhận xét, kết luận: - Kết mô cho thấy khối UART thiết kế hoạt động với yêu cầu đặt - So với truyền nhận song song truyền nhận nối tiếp có tốc độ chậm hạn chế... tạo thành khung truyền truyền - Bộ phát UART điều khiển việc truyền tải liệu xung clock gọi tốc độ baud Hình 1: Khung truyền UART - Dữ liệu gởi không đồng xung clock nên truyền nhận cần có thống

Ngày đăng: 01/04/2016, 13:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w