IP核来源:https://opencores.org/projects/uart2bus
仅使用了这个IP核当中的串口收发模块。

波特率计算公式解释:
计算公式:
baud_freq=16*baud_rate/gcd(global_clock_freq,16 * baud_rate)

baud_limit = (global_clock_freq / gcd(global_clock_freq, 16*baud_rate)) - baud_freq

注意:
baud_limit为计数器计数上限,系统时钟计数满则产生一个分频的脉冲信号。
baud_freq为计数器计数步长值。
gcd:求最大公约数
转自博客:https://blog.csdn.net/qq_43042339/article/details/103798512

项目串口发送输出:
1个起始位,8个数据位,没有校验位,1个结束位。

问题:
波特率与计算的相差一个数量级,具体如图所示。
OpenCores 串口IP核使用记录
OpenCores 串口IP核使用记录
一个位的时间间隔为8680ps,但波特率11520的时间间隔应为8680ns,目前该问题尚未解决。

更新:
问题解决了,太晚了注意不集中,timescale设置错了,设成了1ps/1ps,导致50M时钟错误,应该设成1ns/1ns

部署到黑金AX301(芯片为EP4CE6F17)上也能够成功使用,对原来的工程进行了一定的改变与削减(
因为用不到那么多功能),不断通过串口发送05和0F,最终结果如图:
OpenCores 串口IP核使用记录
之后准备对串口接收进行测试与部分改变,然后将改过的IP核放到Github里,便于以后移植。

相关文章:

  • 2021-09-04
  • 2022-12-23
  • 2022-12-23
  • 2022-02-11
  • 2021-08-07
  • 2021-10-23
  • 2021-07-25
猜你喜欢
  • 2022-12-23
  • 2021-12-22
  • 2022-12-23
  • 2021-07-07
  • 2022-12-23
  • 2021-11-27
  • 2021-09-10
相关资源
相似解决方案