异步串口通信和逻辑分析仪

UART协议:

        UART和RS232(单端全双工)RS422(差分全双工)RS485(差分半双工)

UART的全称叫做通用异步收发传输器。将数据在串行通信和并行通信间的传输转换。通俗的讲就是把多比特的数据转化为单比特的数据,或者把单比特的数据转化为多比特的数据。工作原理是将数据的每个bit一位一位传输

UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。

RS232是UART的一种,是目前最常用的一种串行通讯接口,用于pc机跟外部板级通信。有两根线,分别是rx和tx,这两根线都是1比特位宽的。其中rx是接收线,tx是发送线。

rx,位宽为1比特,pc机通过串口往FPGA发8比特数据时,FPGA通过串口线rx一位一位地接收,从最低位到最高位依次接收,最后在FPGA里面位拼接成8比特数据。

tx,位宽为1比特,FPGA通过串口往pc机发8比特数据时,FPGA把8比特数据通过tx线一位一位的传给pc机,从最低位到最高位依次发送,最后上位机通过串口助手把这一位一位的数据位拼接成8比特数据。、

在不发送或者不接收数据的情况下,rx和tx处于空闲状态,此时rx和tx线都保持高电平(1),如果有数据传递,首先会有一个起始位(O),然后是8比特的数据位,接着有1比特的停止位(1),如果停止位以后不再发数据,将进入空闲状态,否则又将数据线拉低(进入起始位状态)。

波特率:在串口通信时的速率,单位时间内载波变化的次数,这里选用的是9600Bd,即发送一比特数据需要的时间为1/9600秒。

用串口发送或者接收数据(起始位、数据位、停止位)时,每发送或者接收一位数据的时间都需要1个波特,即1/9600秒。

串口发送或者接收一比特数据的时间为一个波特(1/9600),因此如果用50M的系统时钟来计数﹐就需要记数cnt=(1/9600s)/20ns~5208个系统时钟,才再次发送或者接收下一个数据。

上位机通过串口发8比特数据时,会自动在发8位有效数据前发一个波特时间的起始位,也会自动在发完8位有效数据后发一个停止位。同理,串口助手接收fpga发送的数据前,必须检测到一波特的起始位才会接收数据,接收完数据后,再接收一个停止位,所以FPGA通过串口除了发数据以外,还要发起始位和停止位。

RS232测试回环

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2025 All rights reserved
// -----------------------------------------------------------------------------
// Author : lvjitao lvjitao_o@163.com
// File   : top_uart.v
// Create : 2025-10-09 10:15:12
// Revise : 2025-10-09 10:42:54
// Editor : sublime text3, tab size (4)
// -----------------------------------------------------------------------------
`timescale  1ns/1ps



module top_uart(
	input	wire		rx,
	output	wire		tx

    );



assign tx = rx;

endmodule
set_property PACKAGE_PIN T11 [get_ports rx]
set_property IOSTANDARD LVCMOS18 [get_ports rx]
set_property PACKAGE_PIN T10 [get_ports tx]
set_property IOSTANDARD LVCMOS18 [get_ports tx]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值