查看Telecom-history的源代码
←
Telecom-history
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
===UART Decode === 推荐两个博文,第一个介绍异步串行传输的原理, 第二个将VHDL的异步解码逻辑用逻辑门来实现,是UART解码电路的一个简单的例子。 *[https://www.erg.abdn.ac.uk/users/gorry/course/phy-pages/async.html Asynchronous Communication] *[https://hackaday.io/project/8121-discrete-yasep/log/26931-asynchronous-serial-reception asynchronous serial reception] 异步传输就是说两边没有什么一样的clock, 全靠两边约定一个较精确的频率相同的的clock, 比如晶体振荡器. 如下图的 'W' 的ASSCII码在UART上的样子: [[文件:W_on_UART.png ]] 主要的问题是接收方如何把Bit 1, Bit2 ... 放到合适的位置, 如果和发送方放置的位置不一样,就不能得到正确的结果. UART 异步传输的方式是, 通过Start/Stop bit标记一个传输的开始和结束,这样, 接收方检测到开始之后,可以从Start bit开始,通过本地的时钟构造一个和发送方基本一致的时钟, 时钟只要在这10几个周期内不是变化无常,就能正确的标记Bit, Bit 2 ..在信号上的位置. UART解码的顺序基本上是如下图所示: 本地使用一个高于数据频率16倍(或者32倍)频率的时钟, 在每一个Start bit的边沿, 启动这个时钟, 然后延迟8个周期定位到这个bit的中心, 之后没16个周期采样一次,即可解码数据. [[文件:Async-clock.gif ]] 如果不考虑支持那么多的波特率, 也不考虑各种复杂的东西, 一个简单的解码器原可以用逻辑门来实现 *[https://hackaday.io/project/8121-discrete-yasep/log/26931-asynchronous-serial-reception asynchronous serial reception],原理图如下: [[文件:Usart rx-logic.png]] 解码器时序图: [[文件:Uart-decode-waveforum.JPG]] 另外推荐: *<<Implementation of UART with BIST Capability>>, 文中给出了带BITS能力的UART的实现. *<<Implementation of BIST Capability using LFSR Techniques in UART>>
返回到
Telecom-history
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面