[导读]UART是广泛使用的串行数据通讯电路。本设计包含UART发送器、接收器和波特率发生器。设计应用EDA技术,基于FPGA/CPLD器件设计与实现UART。
摘 要:UART是广泛使用的串行数据通讯电路。本设计包含UART发送器、接收器和波特率发生器。设计应用EDA技术,基于FPGA/CPLD器件设计与实现UART。 关键词:FPGA/CPLD;UART;VHDL |
---UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。 ---串行外设用到RS232-C异步串行接口,一般采用专用的集成电路即UART实现。如8250、8251、NS16450等芯片都是常见的UART器件,这类芯片已经相当复杂,有的含有许多辅助的模块(如FIFO),有时我们不需要使用完整的UART的功能和这些辅助功能。或者设计上用到了FPGA/CPLD器件,那么我们就可以将所需要的UART功能集成到FPGA内部。使用VHDL将UART的核心功能集成,从而使整个设计更加紧凑、稳定且可靠。本文应用EDA技术,基于FPGA/CPLD器件设计与实现UART。
一 UART简介 1 UART结构 ---UART主要有由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分等组成。 ---功能包括微处理器接口,发送缓冲器(tbr)、发送移位寄存器(tsr)、帧产生、奇偶校验、并转串、数据接收缓冲器(rbr)、接收移位寄存器(rsr)、帧产生、奇偶校验、串转并。 ---图1是UART的典型应用。 2 UART的帧格式 ---UART的帧格式如图2所示。
---包括线路空闲状态(idle,高电平)、起始位(start bit,低电平)、5~8位数据位(data bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为1、1.5、2位)。 ---这种格式是由起始位和停止位来实现字符的同步。 ---UART内部一般有配置寄存器,可以配置数据位数(5~8位)、是否有校验位和校验的类型、停止位的位数(1,1.5,2)等设置。
二 UART的设计与实现 1 UART发送器 ---发送器每隔16个CLK16时钟周期输出1位,次序遵循1位起始位、8位数据位(假定数据位为8位)、1位校验位(可选)、1位停止位。 ---CPU何时可以往发送缓冲器tbr写入数据,也就是说CPU要写数据到tbr时必须判断当前是否可写,如果不判这个条件,发送的数据会出错。 ---数据的发送是由微处理器控制,微处理器给出wen信号,发送器根据此信号将并行数据din[7..0]锁存进发送缓冲器tbr[7..0],并通过发送移位寄存器tsr[7..0]发送串行数据至串行数据输出端dout。在数据发送过程中用输出信号tre作为标志信号,当一帧数据发送完毕时,tre信号为1,通知CPU在下个时钟装入新数据。 ---发送器端口信号如图3所示。
---引入发送字符长度和发送次序计数器length_no,实现的部分VHDL程序如下。 ---if std_logic_vector(length_no) = “0001” then ---tsr <= tbr ; --发送缓冲器tbr数据进入发送移位寄存器tsr ---tre <= '0' ; --发送移位寄存器空标志置“0” ---elsif std_logic_vector(length_no) = “0010” then ---dout <= '0' ; --发送起始位信号“0” ---elsif std_logic_vector(length_no) >= “0011” and std_logic_vector(length_no) <= “1010” then ---tsr <= '0' & tsr(7 downto 1); --从低位到高位进行移位输出至串行输出端dout ---dout <= tsr(0) ; ---parity <= parity xor tsr(0) ; --奇偶校验 ---elsif std_logic_vector(length_no) = “1011” then ---dout <= parity ; 校验位输出 ---elsif std_logic_vector(length_no) = “1100” then ---dout <= '1' ; --停止位输出 ---tre <= '1' ; --发送完毕标志置“1” ---end if ; ---发送器仿真波形如图4所示。
2 UART接收器 ---串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rsr,最后输出数据dout。还要输出一个数据接收标志信号标志数据接收完。 ---接收器的端口信号如图5所示。 ---实现的部分VHDL程序如下。 ---elsif clk1x'event and clk1x = '1' then ---if std_logic_vector(length_no) >= “0001” and std_logic_vector(length_no) <= “1001” then -----数据帧数据由接收串行数据端移位入接收移位寄存器 ---rsr(0) <= rxda ; ---rsr(7 downto 1) <= rsr(6 downto 0) ; ---parity <= parity xor rsr(7) ; ---elsif std_logic_vector(length_no) = “1010” then ---rbr <= rsr ; --接收移位寄存器数据进入接收缓冲器 ---...... ---end if ; ---接收器仿真波形如图6所示。
3 波特率发生器 ---UART的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行精确地采样,以提出异步的串行数据。 ---根据给定的晶振时钟和要求的波特率算出波特率分频数。 ---波特率发生器仿真波形如图7所示。
三 小结 ---通过波特率发生器、发送器和接收器模块的设计与仿真,能较容易地实现通用异步收发器总模块,对于收发的数据帧和发生的波特率时钟频率能较灵活地改变,而且硬件实现不需要很多资源,尤其能较灵活地嵌入到FPGA/CPLD的开发中。在EDA技术平台上进行设计、仿真与实现具有较好的优越性。 |
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
串行通信是一种通信方式,数据在通信线上按位进行传输。每位数据占据固定的时间长度,使用少数几条通信线路就可以完成系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
关键字:
串行通信
UART
虽然 USB 几乎完全取代那些旧电缆和连接器,但 UART 绝对不会成为过去。您会发现许多 DIY 电子项目都使用 UART。
关键字:
UART
串口通信
USB
UART(通用异步收发器),这是用于全双工串行通信的最常见协议。它是设计用于执行异步通信的单个LSI(大规模集成)芯片。该设备将数据从一个系统发送到另一系统。
关键字:
数据通信协议
UART
异步收发器
UART将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。
关键字:
UART
通信协议
北京2023年2月16日 /美通社/ -- 亚马逊云科技继2022年在中东、欧洲、亚太等地区推出5个区域(Region)、15个可用区(Availability Zone,简称AZ)后,2023年伊始又在亚太地...
关键字:
亚马逊
LENGTH
应用程序
ABILITY
苏州2023年2月3日 /美通社/ -- 2023年2月2日,国际独立第三方检测、检验和认证机构德国莱茵TUV大中华区(以下简称"TUV莱茵")为科沃斯家...
关键字:
UART
机器人
科沃斯
GO
发个方便测试I2C、SPI、1Wire接口的工具模块
总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成上面几种接口的硬件时序电信号,实现与这几种接口芯片、设备的快速测试。
首先声明一下,大家都是搞...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
CRDMO服务公司药明生物(WuXi Biologics)宣布位于杭州市的生物制剂八厂已经完成首批GMP生产,这标志着药明生物在全球范围内已经运营10个生物制剂生产厂,不断提升制剂灌装能力和规模。(医药健闻)...
关键字:
LOGIC
IO
DM
三星生物制剂公司(Samsung BioLogics)斥资2万亿韩元在韩国仁川市松岛园区建设的第四工厂10月11日举行竣工仪式。从10月开始部分投产的第四工厂生产能力为24万升,是世界最大规模的生物医药产品制造工厂。投产...
关键字:
三星
LOGIC
SAMSUNG
IO
合同研究、开发和生产(CRDMO)公司药明生物宣布子公司无锡药明生物技术股份有限公司已于10月7日正式从美国商务部的"未核实清单"(UVL)中移除。今年2月,药明生物两家子公司 -- 无锡药明生物技术股份有限公司和上海药...
关键字:
生物技术
LOGIC
SHANGHAI
IO
当使用导线连接外部设备或芯片时,导线不可过长,一般控制在 20CM 以内,IIC、SPI、UART 等数字接口数据线驱动能力有限,过长的导线会导致通讯波形迟缓。当导线确实无法缩短时,可通过降低通讯速率的方法来解决、缓解通...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
芯片选择下拉框内列出的每一个备选芯片的驱动文件和数据手册位于S2STool 工具文件夹中的chips 文件夹内,每一个芯片需要 1 个驱动文件和 1 个数据手册文件,用户可自行打开编辑,或者创建新的芯片驱动文件。
关键字:
可编程USB
UART
I2C
SMBusS
SPI
S2STool 是为 S2S 固件开发的测试工具,运行于 Windows 平台,内置串口调试助手和 S2S 参数配置工具,支持动态解析自定义的芯片驱动,用户可自行编写、修改、增加任何芯片的驱动程序, 方便对芯片进行测试和...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
DS1302 是实时时钟芯片,SPI 接口,可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302 内部有一个 31×8 的用于临时性存放数据的 RAM 寄存器。
关键字:
可编程USB
UART
I2C
SMBusS
SPI
GD25Qxx 是四线SPI 接口的 FLASH 芯片,最大容量可达 16Mbytes。板上集成有 GD25Q64 芯片, 每页 256 字节,每扇区 16 页(4k 字节),每块区 256 页(64k),写入前必须先擦...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
CAN
USB2S
VM501/511振弦采集模块 是稳控科技生产的振弦传感器测量模块,具有IIC 接口和 UART 接口。IIC 地址可通过UART 任意设置,假设其地址为 0xB0。
关键字:
可编程USB
UART
I2C
SMBusS
SPI
SHT3x-DIS 是 IIC 接口的温度、湿度传感器芯片,可工作于单次测量或连续自动测量模式。USB2S 已有 1 片 SHT31-DIS 芯片,芯片地址为 0x88。
SHT3X-DIS 的输出温度和湿度均为 3...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
驱动程序安装后,计算机通过 COMx 与 MCU 进行通讯,当 USB2S 的 UART 透明传输功能为开启状态时(默认),MCU 可将 UART1 与UART2 的双向数据进行透明转发,即:实现了计算机的COMx 端口...
关键字:
可编程USB
UART
I2C
SMBusS
SPI