本帖最后由 独活草 于 2020-8-26 00:48 编辑
最近一直有做串口数据采集的相关工作,串口似乎已经是各种ARM、单片机芯片的标配了。PGL12G 板子厂家真的是很有良心的,担心玩家手头没有USB转TTL模块,在 PGL12G 板子上集成了USB转TTL。但还是忍不住想吐槽一下,为何不把串口引出来便于用户与TTL接口的串口设备连接呢? 此时,先埋下一个伏笔。 按照惯例,我是先把官方串口通讯测试的verilog代码编译下载进FPGA芯片,完美运行:
分析官方串口通讯的测试的verilog代码,主要实现了2个操作:1,串口发送端每隔1秒定时发送一个字符串;2,串口接收端接收到数据后,延迟1秒后,再通过串口发送端发出去;代码的详细注释就不讲解了,整个编程风格大概是先在 module 中申明定义好要用到的资源:输入、输出、IP核、中间变量(寄存器等),参数赋值,逻辑编写。
*********************************************分割线********************************************* 如何实现 PGL12G 板子的串口跟TTL串口设备连接呢?聪明的小伙伴,肯定想到了端口重映射。哈哈,此时先看看我的操作:
首先,我是对官方串口通讯测试的verilog代码进行了几处修改:
接着在Device-I/O ,新增了一个输入端口和一个输出端口分别作为新增串口的输入与输出端;
结合上面的代码,很容易看出,我是把新增的串口输入端 J16,跟已有的串口输入端J12 做了逻辑与运算后,作为uart的输入端;新增串口的输出端 J15 ,与已有的串口输出端 J11 是简单的并联;编译综合也没有报任何的错。生成的RTL图跟我预想的一样一样的:
接着给大家看看我的硬件实物图:
我是用了两台笔记本电脑,分别跟板载的USB串口、新增的串口进行连接,两边都运行了一个串口调试助手软件;
现在先测试串口接收数据情况:
板载串口接收数据
新增串口接收数据
看到两个串口都可以完美的接收数据;
接着测试两个串口发送数据情况:板载USB串口每隔1秒发送Thank you ;新增串口每隔1秒发送WS
板载串口发送数据
新增串口发送数据
如上图,发现两个串口都可以把数据发送出去,两个串口也都基本能接收到两边发送的数据,但有一点乱。
最后,有兴趣把玩 PGL12G 板子串口的小伙伴,也可以试试哦。
|