在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
123
返回列表 发新帖
楼主: come_on_sn

[求助] 自己写的uart模块和主机通信的速率最高只能到400多K

[复制链接]
发表于 2022-5-14 15:16:26 | 显示全部楼层


come_on_sn 发表于 2022-5-13 11:57
如果你将逻辑设计修改为100,000,000/7/16 = 892,857.1 bps, 误差-3.12%,还得看发送端的波特率偏差情况! ...


既然是FT2232HQ,那么,波特率偏差需要重新计算(从FT2232HQ的手册来看,其UART波特率配置支持16x或10x过采样,并支持小数分频,但这些高级功能需要驱动和应用软件都支持才行,以下按照16x过采样,整数分频计算分析):

1,FT2232HQ发送 --> FPGA接收:
     FT2232HQ发送波特率 = 120,000,000/16/8 = 937,500 bps; FPGA接收波特率 = 100,000,000/16/7 = 892,857 bps。则FT2232HQ的发送波特率相对FPGA的接收波特率偏差为:(937,500 - 892,857)/892,857 = 5%,理论上能接收,但比较危险

2.  FPGA发送 --> FT2232HQ接收:
     各自波特率同上,FPGA发送波特率相对FT2232HQ接收波特率的偏差为: (892,857 - 937,500)/937,500 = -4.76%,理论上能接收,但比较危险。

发表于 2022-5-14 15:31:27 | 显示全部楼层


come_on_sn 发表于 2022-5-13 11:46
看了下手册FT2232是支持小数分频功能,问题在于我的设计可能没法产生精确的921.6K的速率(100,000,000/ ...


此处的测试,FPGA的波特率设置为:100,000,000/16/6 = 1,041,666.7 bps,FT2232HQ考虑没有实现小数分频,则设定波特率实际为:120,000,000/16/7 = 1,071,428.6 bps。

1. FT2232HQ相对FPGA的波特率偏差:(1,071,428.6 - 1,041,666.7)/1,041,666.7 = 2.86%;
2. FPGA相对FT2232HQ的波特率偏差:(1,041,666.7 - 1,071,428.6)/1,071,428.6 = -2.78%;

按这个波特率偏差来分析,通讯应该正常,但你测试又说不正常!

你在18#和19#给出的测试结果,按照同样的分析方法,得出了不太一致的结论,那么你可能忽略了一些测试细节?所以,我的建议是,你最好还是在理论分析的基础上结合示波器实际测试你在某个试验条件下FT2232HQ和FPGA各自的发送信号的真实波特率,与设计参数进行对比,找出设计和实际不一致的真实原因!
 楼主| 发表于 2022-5-14 22:26:56 | 显示全部楼层


innovation 发表于 2022-5-14 14:47
3M bps这个来自你的第二个文件,如下图:




感谢前辈的答疑,我自己上板测试了下,确实可以在12M下正常工作,但是有两个问题不太明白。

1、FT2232HQ芯片限制了最高传输波特率为12M,这个12M取决于电路中的什么参数呢?(想知其所以然)
2、FT2232HQ手册提到 不支持7、9、10、11M这四档波特率,能请教下是出于什么限制呢?(也是想搞明白背后的道理)

image.png
 楼主| 发表于 2022-5-14 22:34:27 | 显示全部楼层


innovation 发表于 2022-5-14 15:31
此处的测试,FPGA的波特率设置为:100,000,000/16/6 = 1,041,666.7 bps,FT2232HQ考虑没有实现小数分频, ...



明白了,可能需要把送入FPGA的信号通过Pmod接口拉到示波器上观测了
发表于 2022-5-15 00:16:56 | 显示全部楼层


come_on_sn 发表于 2022-5-14 22:26
感谢前辈的答疑,我自己上板测试了下,确实可以在12M下正常工作,但是有两个问题不太明白。

1、FT2232 ...


1,它的波特率发生器输入的系统时钟是120MHz的,采样倍率可选为16x或10x,也就是至少10x的分频,120M/10/1 = 12M bps,这就是限制为最高12M波特率的原因

2,不支持的波特率应该是来自它分频器的限制,我发现FTDI这个AN-232B虽然在FT2232H的手册中引用,但好像有点儿不完全对应,那只能按照现有资料来理解了。AN-232B中有这样的描述:
image.png
只能也套用FT2232H的小数分频器同样不支持2以下的小数分频,就是0.x, 1.x这些不行,至少2.x,然后你用这个原则去算它不支持的波特率应该就是分频严重不准的,就不支持咯,比如,咱们算一下7M?
1)16x过采样,那需要的分频系数:120M/16/7 = 1.0714,小于2了,按照不能小数分频理解?
2)10x过采样,那需要的分频系数:120M/10/7 = 1.7143,小于2了,按照不能小数分频理解?

但FT2232H的手册中又没有剔除掉8M这个波特率,8M需要120/10/1.5,那分频系数是1.5,又小于2了,估计还跟它的小数分辨率有关,按AN-232B手册中,其小数分辨率为0.125,粒度较粗,同时,它对波特率的误差预算是小于3%,综合来看,这个部分手册上的信息不够明确

就UART本身能支持的波特率就是由波特率发生器的设计原理,然后考量在其原理下所能得到的满足波特率偏差预算的那些波特率就是UART能支持的波特率,比如你自己设计的UART,100M时钟,固定16x过采样,整数分频的话,你能支持的最高波特率就是6.125M,次高档就是3.125M,3.125M ~ 6.25M之间的波特率你是不支持的。

另外,我之前提到了UART通讯的波特率限制还跟驱动芯片支持的波特率有关,指的是RS232/RS422这些电平转换芯片,你这个试验由于在开发板内部,不涉及这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-4 00:45 , Processed in 0.022263 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表