基于FPGA/CPLD设计与实现UART
出处:西蒙 发布于:2007-04-28 11:47:41
| 摘 要:UART是广泛使用的串行数据通讯电路。本设计包含UART发送器、接收器和波特率发生器。设计应用EDA技术,基于FPGA/CPLD器件设计与实现UART。 关键词:FPGA/CPLD;UART;VHDL |
---UART(即Universal Asynchronous Receiver Transmitter 通用异步收发器)是广泛使用的串行数据传输协议。UART允许在串行链路上进行全双工的通信。 一 UART简介 ---包括线路空闲状态(idle,高电平)、起始位(start bit,低电平)、5~8位数据位(data bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为1、1.5、2位)。 ---这种格式是由起始位和停止位来实现字符的同步。 ---UART内部一般有配置寄存器,可以配置数据位数(5~8位)、是否有校验位和校验的类型、停止位的位数(1,1.5,2)等设置。 二 UART的设计与实现 2 UART接收器 ---串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rsr,输出数据dout。还要输出一个数据接收标志信号标志数据接收完。 ---接收器的端口信号如所示。 ---实现的部分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 ; ---接收器仿真波形如所示。 3 波特率发生器 ---UART的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行地采样,以提出异步的串行数据。 ---根据给定的晶振时钟和要求的波特率算出波特率分频数。 ---波特率发生器仿真波形如所示。 三 小结 |
上一篇:高速电路的信号完整性分析
下一篇:基于CPLD的异步串行收发器设计
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 电缆电容对 PLC 系统的影响及应对措施2026/7/7 15:45:59
- PLC 模拟量转换:一个公式吃透所有场景2026/6/26 15:15:51
- 如何巧用自适应电源?PLC 输出功耗减半指南2026/6/9 14:44:44
- 10个PLC综合故障原因,看完轻松解决!2026/5/28 14:30:29
- 掌握这 10 个 PLC 综合故障原因,轻松应对设备难题2026/5/11 14:39:59









