基于Verilog简易UART的FPGA/CPLD实现

测试平台:MACHXO640
可编程语言:Verilog
随机测试:是
波特率:9600
误码率:<1%oooooo

目标:在xo640上实现一个简单的Uart,能够解析串口数据,并在寄存器中存储,用FIFO实现数据的传递。那么后期可以通过开发板上的串口经CPLD访问各种数据。比如PC=CPLD=EEPROM等等,极大方便后期的开发和调试。

因为不是实现一个完整的UART,而是其核心功能Tx、Rx,并且是被动的。参照网上实例,一个叫特权的blog。网上已经很多源代码,可以借鉴与学习。

       下面介绍一下重点:
1、Speed波特率及采样设置
    这里的原理是:根据实际的波特率和板卡所使用的晶振频率,在容许的误差范围内(串口有一定的容错率)进行分频。这里强调一点,做法可以分为以下两类:分频与不分频。分频,就是采用baudrate_clock的整数倍频率采样;不分频就是直接global_clock/baudrate_clock,取整,以中间采样点作为串口电平判决点(可以3点采样)。前者的误差范围可能更小,但是软件分频受外界影响大。这里直接采用主时钟来采样,探究UART的FPGA/CPLD实现。

       通过示波器得出以下结论:

1、串口发送起始位为“0”;

2、串口发送接收位为“1”;

3、数据从高→低位发送;

本机测试,结束位是1位。1位速度稍快,2位更可靠。实际传输是以字节为单位的,若是8bit数据&#

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值