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

VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG

102 288 5

Đ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 102
Dung lượng 1,95 MB

Nội dung

There is a basic UART that support optional parity bit, settable baud and data width, written in Verilog with testbenches. Mô tả hoạt động: Ở phía phát nhận 8 bit dữ liệu từ buffer và tạo ra 1 bit parity để gửi sang bên phía nhận. Bên phía nhận thực hiện nhận 8 bit dữ liệu và 1 bit parity từ bên phát gửi sang và cũng tạo bit parity từ 8 bit dữ liệu nhận được đó, sau đó thực hiện so sánh bit parity tạo ra đó với bit parity từ bên phát gửi sang. Nếu 2 bit đó giống nhau thì thực hiện đẩy dữ liệu nhận được ra buffer, ngược lại thì không đưa dữ liệu ra buffer.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG BÁO CÁO MÔN HỌC THIẾT KẾ VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG Nhóm sinh viên thực hiện: SPECIFICATION Đầu vào: Các khung liệu, khung liệu gồm bit liệu Đầu ra: Các khung liệu nhận từ phía phát Mơ tả hoạt động: Ở phía phát nhận bit liệu từ buffer tạo bit parity để gửi sang bên phía nhận Bên phía nhận thực nhận bit liệu bit parity từ bên phát gửi sang tạo bit parity từ bit liệu nhận đó, sau thực so sánh bit parity tạo với bit parity từ bên phát gửi sang Nếu bit giống thực đẩy liệu nhận buffer, ngược lại khơng đưa liệu buffer Các thơng số kĩ thuật: • Baud rate: 19200 bit/s • Số lượng bit khung liệu : • Parity bit: bit parity • Stop bit: (Thời gian truyền 16 x baudrate) • Thời gian truyền bit: 16 x baudrate Hình mô tả sơ đồ truyền khung liệu từ bên phát sang bên thu: Thứ tự truyền thực bit liệu sau bit parity Sơ đồ khối UART BẢNG PHÂN CÔNG CÔNG VIỆC LỜI NĨI ĐẦU Trong kì học 20202, mơn học thiết kế VLSI môn học chúng em Thầy Phan Xuân Vũ giảng dạy hướng dẫn Vì chúng em sinh viên năm -K62 viện Điện tử Viễn thơng có lựa chọn định hướng Kĩ thuật điện tử, kĩ thuật máy tính nên trước đăng kí môn học này, chúng em mong đợi tìm hiểu, học tập thực hành nội dung mơn học, mong muốn lựa chọn chun mơn để sau trường làm việc lĩnh vực thiết kế hệ thống số Sau trình học tập, chúng em tích lũy kiến thức mơn học, khả sử dụng phần mềm thực thiết kế hệ thống số thực lập trình verilog Để đáp ứng yêu cầu đánh giá môn học trao dồi kĩ thiết kế hệ thống, kĩ lập trình verilog nên nhóm chúng em thực đề tài: “THIẾT KẾ CHUẨN UART BẰNG VERILOG” Trong nhóm chúng em, khơng phải tất bạn có định hướng Kĩ thuật điện tử, q trình làm việc nhóm gắn bó, nghiêm túc, thành viên nhóm chúng em học tập nhiều điều trao dồi kiến thức kĩ cần thiết cho Chuẩn UART chúng em thực truyền bit liệu, bit parity bit stop với baud rate 19200 Do tình hình phức tạp dịch Covid – 19 nên trình thực tập lớn chúng em có phần ảnh hưởng Theo spec chúng em gửi Thầy ban đầu, chúng em định thực kit FPGA nhà trường đóng cửa, chúng em khơng lên lab để thực kit, điều mà nhóm tiếc nuối Chúng em nghĩ rằng, sau mơn học thiết kế VLSI này, chúng em có tảng để tìm hiểu sâu thiết kế hệ thống số, lập trình verilog để sau trường làm việc lĩnh vực Chúng em học Thầy nhiều điều nội dung môn học, phong cách làm việc định hướng công việc Chúng em xin cảm ơn Thầy nhiều nội dung Thầy giảng dạy, hướng dẫn chia sẻ Dù chúng em nghiêm túc, cố găng thực tập lớn điều kiện thời gian hạn chế kiến thức nên chúng em nhiều thiếu sót thực bit parity có chức báo lỗi mà chưa có chức truyền lại hay sửa lỗi Chúng em mong nhận góp ý, đánh giá Thầy để chúng em tích lũy thêm kiến thức hồn thiện UART chúng em Chúng em xin chân thành cảm ơn Thầy NHÓM SINH VIÊN MỤC LỤC DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT UART Universal asynchronous receiver-transmitter FSM Finite-state machine FSM Finite-state machine with datapath FIFO First In, First Out 10 DANH MỤC HÌNH VẼ 11 DANH MỤC BẢNG BIỂU 12 TÓM TẮT BÁO CÁO Trong báo cáo tập lớn này, chúng em chia nội dung báo cáo thành chương: Chương 1: Chúng em trình bày chuẩn giao tiếp UART, cấu trúc truyền UART ứng dụng UART điện tử Ngoài ra, chúng em trình bày cách thiết kế số mạch điện tử, FSM, FSMD verilog để phục vụ cho trình thực chuẩn UART verilog chương Chương 2: Chúng em trình bày spec chuẩn UART mà nhóm thực tiến hành thiết kế Nhóm thiết kế sơ đồ khối UART gồm module là: Bộ thu, phát, tạo baud rate khối buffer Trong module có mơ tả chi tiết cách thức hoạt động module, thiết kế chi tiết bảng tín hiệu để thực cho trình lập trình verilog Chương 3: Chúng em trình bày kết mơ UART mà nhóm thực Chúng em thực kiểm tra kết mô module thực kiểm tra mô ghép nối phát thu Phần code degisn testbench tập lớn, chúng em có trích dẫn phần phụ lục 13 CHƯƠNG GIỚI THIỆU CHUNG Trong chương này, chúng em giới thiệu chuẩn giao tiếp UART, ứng dụng UART sở lý thuyết, phương pháp thiết kế loại mạch tổ hợp, mạch dãy, máy trạng thái (FSM), máy trạng thái với đường liệu (FSMD) verilog 1.1 Giới thiệu chuẩn giao tiếp UART 1.1.1 Giới thiệu chung Chuẩn giao tiếp UART (universal asynchronous receviver and transmitter) giao thức truyền thông nối tiếp không đồng Năm 1960 hiệp hội điện tử ETA xây dựng chuẩn giao tiếp RS – 232 , chuẩn được sử dụng cho giao tiếp liệu nối tiếp Bên cạnh RS – 232 , cịn có chuẩn RS – 422 , RS – 485 phổ biến áp dụng cho mạch UART Các chuẩn đề xuất nhiều tính thực tế giao tiếp nhiều so với RS -232 Một khung liệu UART bao gồm bit start, 5-8 bit liệu, bit parity (tùy chọn) bit stop Bit stop có độ dài 1, 1.5 bit Dữ liệu truyền bit theo khung, bit truyền bit start (mức logic 0), bit data, có bit parity, cuối bit stop (mức logic 1) Hình 1 Cấu trúc truyền liệu UART Hình ảnh mơ tả cấu trúc truyền liệu UART truyền bit/ khung liệu, khơng có bit parity sử dụng bit stop 14 @(negedge clk); s_tick=1; repeat(15)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b1; repeat(15)@(negedge clk); rx=1'b1; repeat(17)@(negedge clk); rx=1'b1; #200 repeat(2) @(negedge clk); rx= 0; @(negedge clk); s_tick=1; repeat(15)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b1; repeat(15)@(negedge clk); rx=1'b1; repeat(17)@(negedge clk); rx=1'b1; #200 repeat(2) @(negedge clk); rx= 0; @(negedge clk); s_tick=1; repeat(15)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b0; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b1; repeat(16)@(negedge clk); rx=1'b1; repeat(15)@(negedge clk); rx=1'b1; repeat(17)@(negedge clk); rx=1'b1; repeat(20)@(negedge clk); $stop; end endmodule TESTBENCH KHỐI TX module uart_tx_tb(); localparam T = 4; parameter DBIT=8, SB_TICK = 16; reg clk, reset; reg tx_start, s_tick; reg [7:0] din; wire tx_done_tick; wire tx; uart_tx dut(.din(din), clk(clk), reset(reset), tx_start(tx_start), s_tick(s_tick), tx_done_tick(tx_done_tick), tx(tx)); always begin clk = 1'b1; #(T/2); clk = 1'b0; #(T/2); end initial begin reset = 1'b1; #(T/2); reset = 1'b0; end initial begin din = 8'b10110101; tx_start=0; repeat(3) @(negedge clk); tx_start=1; // din = 8'b10110111; @(negedge clk); s_tick=0; repeat(10) @(negedge clk); #200 din= 8'b11100111; tx_start = 1; @(negedge clk); s_tick=1; #200 din= 8'b11100011; tx_start = 1; @(negedge clk); s_tick=1; end endmodule TESTBENCH KHỐI BAUD RATE `timescale 1ns / 1ps module baudrate_generator_test(); localparam T = 2; localparam N = 8; reg clk, reset; wire s_tick; baudrate_generator #(.M(163), DUT(.clk(clk), reset(reset), s_tick(s_tick)); always begin clk = 1'b1; #(T/2); clk = 1'b0; #(T/2); end initial N(8)) begin reset = 1'b1; #(T/2); reset = 1'b0; end initial begin repeat(500) @(negedge clk); end endmodule TESTBENCH KHỐI BUFFER `timescale 1ns / 1ps module Fifo_buffer_test(); localparam T = 20; reg wr, rd, clk, reset; reg [7:0] data_w; wire full, empty; wire [7:0] data_r; Fifo_buffer #(.W(8), N(2)) DUT(.wr(wr), rd(rd), clk(clk), reset(reset), data_w(data_w), full(full), empty(empty), data_r(data_r)); always begin clk = 1'b1; #(T/2); clk = 1'B0; #(T/2); end // ==== initialization ==== initial begin reset = 1'b1; #(T/2); reset = 1'b0; #(T/2); end // ==== test vector ==== initial begin wait(reset == 1'b0); @(negedge clk); data_w = 4'b1001; // write first wr = 1'b1; rd = 1'b0; repeat(3) @(negedge clk); // read wr = 1'b0; rd = 1'b1; repeat(3) @(negedge clk); // full test rd = 1'b0; wr = 1'b1; repeat(5) @(negedge clk); // empty test rd = 1'b1; wr = 1'b0; repeat(6) @(negedge clk); // apply both rd and wr wr = 1'b1; repeat(10) @(negedge clk); $finish; end endmodule TESTBENCH KHỐI TOP module top_uart_tb(); // Default setting: // 19,200 baud, data bits, stop bit, 2^2 FIFO localparam DBIT = 8, // # data bits SB_TICK = 16, // # ticks for stop bits, 16/24/32 // for 1/1.5/2 stop bits DVSR = 163, // baud rate divisor // DVSR = 50M/(16*baud rate) DVSR_BIT = 8, // # bits of DVSR FIFO_W = 2, // # addr bits of FIFO T = 20; // # words in FIFO=2^FIFO_W reg clk, reset; reg rd_uart, wr_uart; reg [7:0] w_data; wire tx_full, rx_empty; wire [7:0] r_data; top_uart DUT(.clk(clk), reset(reset), rd_uart(rd_uart), wr_uart(wr_uart), w_data(w_data), tx_full(tx_full), rx_empty(rx_empty), r_data(r_data)); always begin clk = 1'b1; #(T/2); clk = 1'b0; #(T/2); end initial begin reset = 1'b1; #(T/2); reset = 1'b0; #(T/2); end initial begin rd_uart = 1'b0; wr_uart = 1'b1; w_data = 8'b11100101; repeat(2) @(negedge clk); w_data = 8'b10010101; @(negedge clk); w_data = 8'b11001100; repeat(2) @(negedge clk); wr_uart=1'b0; #(2282880); rd_uart = 1'b1; #70; rd_uart = 1'b0; end endmodule ... trình bày chuẩn giao tiếp UART, cấu trúc truyền UART ứng dụng UART điện tử Ngồi ra, chúng em trình bày cách thiết kế số mạch điện tử, FSM, FSMD verilog để phục vụ cho trình thực chuẩn UART verilog. .. chúng em tiến hành thiết kế chuẩn giao tiếp UART Trước tiến hành thiết kế, chúng em trình bày specification, sơ đồ khối chuẩn UART nhóm thực chia sơ đồ khối thành module để thiết kế Trong module... giao tiếp RS – 232 , chuẩn được sử dụng cho giao tiếp liệu nối tiếp Bên cạnh RS – 232 , có chuẩn RS – 422 , RS – 485 phổ biến áp dụng cho mạch UART Các chuẩn đề xuất nhiều tính thực tế giao tiếp

Ngày đăng: 25/08/2021, 17:35

HÌNH ẢNH LIÊN QUAN

Hình 1.2 Một số ứng dụng của UART 1.2 Thiết kế hệ thống số bằng verilog - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1.2 Một số ứng dụng của UART 1.2 Thiết kế hệ thống số bằng verilog (Trang 11)
Hình 1.3 Sơ đồ mạch tổ hợp - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1.3 Sơ đồ mạch tổ hợp (Trang 12)
Hình 1.4 Sơ đồ mạch dãy - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1.4 Sơ đồ mạch dãy (Trang 13)
Hình 1.5 Sơ đồ mạch theo sơ đồ chuyển dịch trạng trái Moore và Mealy - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1.5 Sơ đồ mạch theo sơ đồ chuyển dịch trạng trái Moore và Mealy (Trang 15)
Hình 1 .6 Hoạt động chuyển dịch của một node đơn trong ASM - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1 6 Hoạt động chuyển dịch của một node đơn trong ASM (Trang 16)
Hình 1. 7 Mô tả một block ASM - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1. 7 Mô tả một block ASM (Trang 17)
Hình 1 .9 Khối FSMD - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1 9 Khối FSMD (Trang 22)
Hình 1. 10 Một trạng thái trong FSMD - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 1. 10 Một trạng thái trong FSMD (Trang 23)
Hình 2.2 Sơ đồ khối hệ thống UART sử dụng - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2.2 Sơ đồ khối hệ thống UART sử dụng (Trang 26)
Bảng 2.1 Bảng tín hiệu của khối Baudrate - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Bảng 2.1 Bảng tín hiệu của khối Baudrate (Trang 27)
Tên tín hiệu  - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
n tín hiệu (Trang 27)
Hình 2.3 Sơ đồ khối của khối phát - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2.3 Sơ đồ khối của khối phát (Trang 28)
Hình 2.4 State machine khối phát - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2.4 State machine khối phát (Trang 29)
Hình 2. 7 State machine khối nhận - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2. 7 State machine khối nhận (Trang 36)
Hình 2. 8 ASMD chart of Uart receiver - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2. 8 ASMD chart of Uart receiver (Trang 38)
Hình 2 .9 Sơ đồ khối của FIFO Buffer - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2 9 Sơ đồ khối của FIFO Buffer (Trang 42)
Hình 2. 10 Cơ chế hoạt động của FIFO - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2. 10 Cơ chế hoạt động của FIFO (Trang 43)
Bảng 2.4 Miêu tả trạng thái con trỏ trong FIFO - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Bảng 2.4 Miêu tả trạng thái con trỏ trong FIFO (Trang 44)
Hình 2. 11 Sơ đồ ghép nối hệ thống - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 2. 11 Sơ đồ ghép nối hệ thống (Trang 47)
2.6.2 Bảng giá trị tín hiệu - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
2.6.2 Bảng giá trị tín hiệu (Trang 47)
Hình 3.1 Kết quả mô phỏng khối baudrate - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3.1 Kết quả mô phỏng khối baudrate (Trang 50)
Hình 3.2 Kết quả mô phỏng khối phát – truyền 1 lần - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3.2 Kết quả mô phỏng khối phát – truyền 1 lần (Trang 51)
Hình 3.4 Kết quả mô phỏng khối phát – truyền 3 lần liên tiếp - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3.4 Kết quả mô phỏng khối phát – truyền 3 lần liên tiếp (Trang 52)
Hình 3.5 Kết quả mô phỏng khối thu – nhận 1 khung - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3.5 Kết quả mô phỏng khối thu – nhận 1 khung (Trang 54)
Hình 3 .6 Kết quả mô phỏng khối thu – nhận 1 khung (zoom) - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3 6 Kết quả mô phỏng khối thu – nhận 1 khung (zoom) (Trang 54)
Hình 3. 8 Kết quả mô phỏng khối buffer - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3. 8 Kết quả mô phỏng khối buffer (Trang 56)
3.2.3 Kết quả kiểm tra đánh giá - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
3.2.3 Kết quả kiểm tra đánh giá (Trang 58)
Hình 3.9 Kết quả mô phỏng các tín hiệu cúa bộ đệm bên phát sau khi khởi tạo đầu vào - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3.9 Kết quả mô phỏng các tín hiệu cúa bộ đệm bên phát sau khi khởi tạo đầu vào (Trang 58)
Hình 3.10 Kết quả mô phỏng toàn bộ quá trình truyền và nhận tín hiệu của cả hệ thống - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3.10 Kết quả mô phỏng toàn bộ quá trình truyền và nhận tín hiệu của cả hệ thống (Trang 59)
Hình 3.11 Kết quả mô phỏng tập trung vào tín hiệu đầu ra - VLSI THIẾT KẾ CHUẨN GIAO TIẾP UART BẰNG VERILOG
Hình 3.11 Kết quả mô phỏng tập trung vào tín hiệu đầu ra (Trang 59)

TỪ KHÓA LIÊN QUAN

w