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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 4127|回复: 8

[求助] 有没有人用过BASYS3上的UART功能呢?

[复制链接]
发表于 2021-10-15 16:17:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
现在想要实现两块板子间进行通信,即一方作为发射端,另一方作为接收端,实现数据的传输,反之亦然。
但是遇到一个问题,不知道A18、B18的引脚应该怎么送出去和另一块BASYS3连接。

希望对这方面了解的大佬能指点一二,万分感谢!
发表于 2021-10-15 16:43:07 | 显示全部楼层
猜的哈,估计你这个A18、B18引脚分别定义为你设计的UART的TXD、RXD,两块相同板子,相同程序,互连测试的话,交叉相接应该可行:
A板                  B板
A18    <---->    B18
B18    <---->    A18
回复 支持 反对

使用道具 举报

发表于 2021-10-15 17:24:58 | 显示全部楼层
你这个利用A18/B18测试两块BASYS3的UART的想法行不通。看了下BASYS3的手册,FPGA的B18/A18在板内接了一个UART to USB的桥接芯片,未连接至开发板的通用I/O连接器:
image.png
所以,你想测试和熟悉BASYS3的UART例程,按照开发板手册的方式呀,为什么要提出这个问题呢?!!!
按照手册,你需要:
1. 准备一条USB TypeA 转 Micro-USB的转接线(开发板多半配了的吧)
2. 在PC机上安装FT2232HQ的驱动程序
3. 下载一个PC机这一端的串口调试助手

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-17 22:30:24 | 显示全部楼层


   
innovation 发表于 2021-10-15 16:43
猜的哈,估计你这个A18、B18引脚分别定义为你设计的UART的TXD、RXD,两块相同板子,相同程序,互连测试的话 ...


对的,我就是想表达这个意思的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-17 22:34:57 | 显示全部楼层


   
innovation 发表于 2021-10-15 17:24
你这个利用A18/B18测试两块BASYS3的UART的想法行不通。看了下BASYS3的手册,FPGA的B18/A18在板内接了一个UA ...



嗯嗯,多谢前辈的回答,手册我看过了,也测试过一个BASYS3的UART功能是正常的。
目前的需求是:因为UART异步口的通信速率只有几百K,因此想尝试不和主机通信只是BASYS板子间通信,尝试通信速率能否到几M这样子,所以才有了这个提问的帖子。

回复 支持 反对

使用道具 举报

发表于 2021-10-18 00:12:29 | 显示全部楼层


   
come_on_sn 发表于 2021-10-17 22:34
嗯嗯,多谢前辈的回答,手册我看过了,也测试过一个BASYS3的UART功能是正常的。
目前的需求是:因为UART ...


1. UART通讯速率别人做到了多高?能到几M吗?


我目前了解到的商用UART控制器波特率高达31.25Mbps,即Exar的一款8通道的PCIe总线的UART桥:XR17V358:


image.png


2. 你能做到Mbps的UART通讯吗?


能。但不建议你按照你现在的思路做!
2.1) 你选择的这个A18/B18引脚,人开发板电路设计上已经占用,你非要强行用这两个引脚?那就查开发板的PCB图纸(不知道你买的开发板是否提供有PCB图纸),切断别人原来的印制板走线,然后自己飞线,你确定你能搞定这个?
2.2) 既然是开发板,肯定预留有上连接器的通用IO引脚供用户设计,那么,你可以将你逻辑代码中控制A18/B18的这个UART核,路由到开发板的通用IO引脚上,然后通过电缆采用RX/TX交叉连接的方式将两块开发板连接起来。但仍然不建议你这么干,因为Mbps的LVCMOS/LVTTL信号通过电缆传输,信号传输的信号完整性问题估计你处理不好。


3. 那你怎么办呢?


我觉得你现在的条件应该具备试验Mbps的UART通讯。


3.1) 你首先需要检查你的UART逻辑设计本身支持的最高波特率(主要是RX,因为UART RX通常会基于16x过采样设计,那么比如说,如果你UART核的系统时钟是48MHz的话,你这个设计支持的最高波特率就是48M/16 = 3Mbps);
3.2) BASYS3这个开发板采用的USB to UART桥芯片FT2232HQ,本身支持12Mbps的UART波特率,digilent不至于阉割设计;


image.png


3.3) 找一个PC机端支持自定义波特率功能的串口调试助手;
3.4) FPGA逻辑工程师本质是电路工程师,只是和常规意义的电路工程师采用的设计工具不同而已,所以,电路基础知识的要求仍然是电路工程师的要求(也许你本就具备电路工程师功底,那上面第2条请忽略)。






回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 09:57:19 | 显示全部楼层
本帖最后由 come_on_sn 于 2021-10-18 10:01 编辑

非常感谢前辈耐心细致地为后学解惑,万分感恩!



   
2. 你能做到Mbps的UART通讯吗?能。但不建议你按照你现在的思路做!
2.1) 你选择的这个A18/B18引脚,人开发板电路设计上已经占用,你非要强行用这两个引脚?那就查开发板的PCB图纸(不知道你买的开发板是否提供有PCB图纸),切断别人原来的印制板走线,然后自己飞线,你确定你能搞定这个?


RE:哦哦,了解了。那确实自己搞不定,我预想的也不是通过这样的方式来实现通信。



   
2.2) 既然是开发板,肯定预留有上连接器的通用IO引脚供用户设计,那么,你可以将你逻辑代码中控制A18/B18的这个UART核,路由到开发板的通用IO引脚上,然后通过电缆采用RX/TX交叉连接的方式将两块开发板连接起来。但仍然不建议你这么干,因为Mbps的LVCMOS/L号通过电缆传输,信号传输的信号完整性问题估计你处理不好。


RE:能请教下前辈,为什么速率较低的信号不存在完整性问题呢?以及信号传输完整性问题指的是什么呢?




   
我觉得你现在的条件应该具备试验Mbps的UART通讯。
3.1) 你首先需要检查你的UART逻辑设计本身支持的最高波特率(主要是RX,因为UART RX通常会基于16x过采样设计,那么比如说,如果你UART核的系统时钟是48MHz的话,你这个设计支持的最高波特率就是48M/16 = 3Mbps);

RE:嗯嗯,主要是我的工程里将BASYS3板上100M时钟作为主时钟,然后根据RB、x16 RB两个参数分别产生发射机、接收机所需要的时钟。然后工程中有一个button_debounce模块提供一个100MHz的短脉冲就不知道怎么处理了。(究其原因,还是自己代码能力太差了)




   
3.4) FPGA逻辑工程师本质是电路工程师,只是和常规意义的电路工程师采用的设计工具不同而已,所以,电路基础知识的要求仍然是电路工程师的要求(也许你本就具备电路工程师功底,那上面第2条请忽略)。

RE:感谢提点,不太具备电路工程师功底,您的提示对我很重要,再次感谢!



回复 支持 反对

使用道具 举报

发表于 2021-10-18 13:54:01 | 显示全部楼层
本帖最后由 innovation 于 2021-10-18 15:49 编辑


   
come_on_sn 发表于 2021-10-18 09:57
非常感谢前辈耐心细致地为后学解惑,万分感恩!



   
非常感谢前辈耐心细致地为后学解惑,万分感恩!


不客气。工程师队伍是需要“薪火相传”的,而恰好我对这的理解是“新人有问问题而不被嘲笑的权利,老家伙有看到即就自己所知耐心解答的义务!”



   
RE:能请教下前辈,为什么速率较低的信号不存在完整性问题呢?以及信号传输完整性问题指的是什么呢?


“信号完整性”这个话题太基础、太宏大,实在适合在一个帖子里面展开,简单聊几点:

1. 信号完整性从概念上可以这样理解:(电)信号在通过某种媒介从一点(A)传输到另一点(B),B点的电路能够精确(不多、不少、不错)地获得此信号所携带的全部信息,我们理解为此次信息传输是完整的,反之则是不完整的。事实上,你我之间的交流从这个意义上来说,也是信号完整性问题,你想要的答案,我想传递的知识,通过eetop这个媒介传输,至于这个过程是否维持了完整性,你可以感受一下。
2. 如果你是电子工程类专业的学生,可以尝试按顺序阅读下面三本书,如果不是,建议你暂时先不读,工作后慢慢补吧:
    a)《高速数字设计》,Howard Johnson,电子工业出版社
    b)《信号完整性分析》,Eric Bogatin,电子工业出版社
    c)《高级信号完整性技术》,Stephen H.Hall,电子工业出版社
3. 咱们逻辑工程师怎么来理解这个信号完整性问题呢,你可以这样看(当然,这只是帮助理解的类比不是问题的理论原理):
3.1) 信号传输的完整性问题,咱们可以用逻辑设计中的跨时钟域来类比,跨时钟域会出现亚稳态,可能导致目的域抓到错误的逻辑状态而导致错误的逻辑功能;
3.2) 亚稳态发生在源信号改变的边沿命中目的域触发器的建立时间/保持时间窗口,电信号传输的信号完整性问题也主要发生在信号变化边沿处的振铃;
3.3) “为什么速率较低的信号不存在完整性问题呢?”,这个问题不准确,速率低仍然存在完整性问题。电路工程师之间就高速/低速信号之争就像逻辑工程师就跨时钟域传输时,目的域打2拍还是3拍乃至更多拍的争论是一样的。打多少拍本有定数(1.厂家提供触发器恢复时间常数,2.设计师确定产品预期的MTBF,3.代入公式计算),只是因为厂家(我是用xilinx的FPGA)不提供参数,设计师懒得计算,所以就争起来了。低速率的数字信号传输时是否会引起(或考虑)信号完整性问题还是需要计算(或实际观测)信号边沿处的振铃大小及接收电路的判决阈值大小来判断。



   
RE:嗯嗯,主要是我的工程里将BASYS3板上100M时钟作为主时钟,然后根据RB、x16 RB两个参数分别产生发射机、接收机所需要的时钟。然后工程中有一个button_debounce模块提供一个100MHz的短脉冲就不知道怎么处理了。(究其原因,还是自己代码能力太差了)


1. 看来你这个设计UART核的系统时钟是100M,接收电路应该是采用的16x采样的原理,那Mbps的UART通讯的设计前提是具备的
2. “根据RB、x16 RB两个参数分别产生发射机、接收机所需要的时钟”,希望这仅是你描述不准确,希望产生的是“时钟使能(CE)”信号;
3. “button_debounce”模块从命名来看,似乎是按键消抖电路,这跟能不能实现Mbps的UART通讯我找不到啥联系。只能猜测你的开发板的例程可能是类似“按某个按键一次,触发一次UART发送一条或一包数据给上位机”。
4. 你这个板子的话,你可以考虑这样试验:将UART核的RXD/TXD信号分配到板子的Pmod Ports,为了减少两块板子间的连线电缆长度,建议你两块板子的引脚分配不同,RXD、TXD信号分别用两对双绞线(信号线和地线双绞),长度控制在10cm以内,再将FPGA引脚的驱动电流设低一点儿(4mA/8mA,你试一下),斜率设为SLOW,试验到你这个100M/16 = 6.25Mbps,我认为是可行的。

image.png

然后UART RX模块设计为收到的一个字节在数码管上显示,TX模块设计为按一次按键发一个字节,还可设计为不同按键发不同的数,还可设计同一按键连续按下时发送一定规律的数,还可设计把某个按键按下的次数发送到另一个板子用数码管显示出来。。。。总之,多得很。你甚至可以在第一阶段不跨板试验,直接用一块板子,把你分配到Pmod Ports的RXD/TXD信号用排针短接起来测试,这个我们在设计时通常称为“回环”测试。



回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-21 10:33:12 | 显示全部楼层


   
innovation 发表于 2021-10-18 13:54
不客气。工程师队伍是需要“薪火相传”的,而恰好我对这的理解是“新人有问问题而不被嘲笑的权利,老家伙 ...




   
不客气。工程师队伍是需要“薪火相传”的,而恰好我对这的理解是“新人有问问题而不被嘲笑的权利,老家伙有看到即就自己所知耐心解答的义务!”


RE:非常敬佩您的人格了!能在学生时代遇到您这样的前辈,实属我的福气!感恩~  也祝前辈工作顺利,身体康健




   
1. 信号完整性从概念上可以这样理解:(电)信号在通过某种媒介从一点(A)传输到另一点(B),B点的电路能够精确(不多、不少、不错)地获得此信号所携带的全部信息,我们理解为此次信息传输是完整的,反之则是不完整的。事实上,你我之间的交流从这个意义上来说,也是信号完整性问题,你想要的答案,我想传递的知识,通过eetop这个媒介传输,至于这个过程是否维持了完整性,你可以感受一下。
2. 如果你是电子工程类专业的学生,可以尝试按顺序阅读下面三本书,如果不是,建议你暂时先不读,工作后慢慢补吧:
    a)《高速数字设计》,Howard Johnson,电子工业出版社
    b)《信号完整性分析》,Eric Bogatin,电子工业出版社
    c)《高级信号完整性技术》,Stephen H.Hall,电子工业出版社


RE:非很细致,很专业的指导与建议了。确实是电子专业的学生,不过感觉自己学以致用的能力比较差。。



   
3. 咱们逻辑工程师怎么来理解这个信号完整性问题呢,你可以这样看(当然,这只是帮助理解的类比,不是问题的理论原理):
3.1) 信号传输的完整性问题,咱们可以用逻辑设计中的跨时钟域来类比,跨时钟域会出现亚稳态,可能导致目的域抓到错误的逻辑状态而导致错误的逻辑功能;
3.2) 亚稳态发生在源信号改变的边沿命中目的域触发器的建立时间/保持时间窗口,电信号传输的信号完整性问题也主要发生在信号变化边沿处的振铃;
3.3) “为什么速率较低的信号不存在完整性问题呢?”,这个问题不准确,速率低仍然存在完整性问题。电路工程师之间就高速/低速信号之争就像逻辑工程师就跨时钟域传输时,目的域打2拍还是3拍乃至更多拍的争论是一样的。打多少拍本有定数(1.厂家提供触发器恢复时间常数,2.设计师确定产品预期的MTBF,3.代入公式计算),只是因为厂家(我是用xilinx的FPGA)不提供参数,设计师懒得计算,所以就争起来了。低速率的数字信号传输时是否会引起(或考虑)信号完整性问题还是需要计算(或实际观测)信号边沿处的振铃大小及接收电路的判决阈值大小来判断。

RE 大概明白了,只要不是正确传输的情况,大概都可以理解为信号不完整传输。结合之前您讲的异步FIFO地址指针跨时钟域传输,对于亚稳态有了更深的理解了,非常感谢前辈了!





回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-8-22 04:24 , Processed in 0.019776 second(s), 5 queries , Gzip On, Redis On.

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