一天一个同事问了我一个问题:“为什么波特率9600的串口通信线上也有很大的过冲?”
“有驱动芯片吗?”
“没有,机笼内紧靠两块板卡之间的通信,通信线长度不到100毫米,一个是FPGA,一个是DSP。”
这就是问题的根本,如果大家有注意,FPGA的I/O输出的信号,上升沿一般不会大于几个ns,而决定信号频率的指标就是信号的上升沿速率,那,这个信号的频率就是几百兆赫到几个GHz,对于一个几百MHz上GHz的信号,100毫米的通信线,可以带来相当严重的信号完整性问题。
这个帖子不想讨论什么是过冲?什么是振铃?什么是驻波行波?这些网上都有。只想突出一点:信号频率只是由信号的上升沿决定的。
allen_zhan_752827529 2011-10-12 23:57
我没有接触过冲, 振铃, 驻波行波等高速信号现象. 但是对基本RS232串口通讯的使用和需要, 我试着多思考和理解博主的文章, 博主的话言简意赅, 因此我作下列的假设, 我猜想这里应该是在阐述一个现象: 1. 这个现象属于高速信号现象. 2. 对于这里提到的过冲的概念, 与我们常说的串口通讯中的"过冲" - 收发的速度不一致的概念不同. 当我们在串口通讯中, 谈到的"过冲", 应指收发数据的双方速度不匹配, 我们通常应使用 RS232 的基本知识来克服: (1) 硬件流控 (2) 软件流控 (3) 简单在 TX 和 TX 定义更长的 buf来解决. 3. 文章中提到的"过冲"和"振铃"现象并列, 应不是指RS232 收发速率不匹配的现象, 而是指在 TX 和 RX 线路上, 出现电平异常. 最有可能这里"过冲"指高电平 "1" 异常增加. 我猜测一个举例是: TX或者RX线上的高电平 3.3v , 比如被意外抬高到 4.5v(举例), 特别是在初始数据阶段更容易发现. 那么这个"过冲", 如果在 TX 或者 RX 线上, 我们曾加入 TVS 管或者双电压二极管对信号进行保护, 可能会触发该 TVS管或二极管误动作, 导致保护管失效期提前或通讯数据畸变. 4. 我们应可假设, 这里的过冲现象, 不是特别针对 RS232 串口通讯, 无论是 9600bps 还是 115200bps, 甚至和选用何种通讯方式都关系不大. 5. 为什么假设串口驱动ic 可以解决这个问题. 一个猜测应该是, 串口驱动ic 一般有能力在 3.3v ~ 5.5v 的电压下, 向外输出 +5v "0"与 -5v "1" 的低电平与高电平, 简单说就是对输入信号的容忍度高, 同时没有多余的 tvs 器件来受其干扰. 6. 这个例子应该应明确指出在某个高速 FPGA 的高速IO变化下, 需要处理 IO 口的过冲现象. 7. 通过电气原理理解所谓过冲, 当io的急剧高频变化下, 线路寄生电感电容构成的 RLC 串联电路, 导致所谓过冲, 应该就是指电平的异常增加或减少以及相位发生移动.
用户1615480 2011-7-9 11:26
用户1603880 2011-6-11 15:29
用户1602634 2011-6-11 10:57
用户1190942 2011-6-2 20:17