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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4078|回复: 11

UART

[复制链接]
发表于 2006-10-23 16:12:39 | 显示全部楼层 |阅读模式

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

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

x
小弟刚刚接触FPGA,用的是cyclone,EPIC20系列的,现在正在FPGA上做一个UART中的发射部分,也即是通过DSP向FPGA发数据,和提供时钟。之后经过FPGA缓存,移位后异步串行输出。现遇到一个问题:当DSP向FPGA提供的系统时钟不变时,可通过不同的分频器得到不同的波特率。假设我80分频得到了4800的波特率,这样异步串出的结果是对的,当我设160分频后,这样得到的是2400的波特率,DSP发了5个数据,经过FPGA缓存器中有数据,并且正确,但到移位寄存器这一级,并不是每次DSP发数据后,移位寄存器都有数据,只出现了移位寄存器1,2个数据。结果异步串出也只有1,2个异步串行数据,弄了好几天不知是什么问题,不知道是不是移位寄存器的移位时序有问题,还是其它的??恳请高手指点下,谢谢!
发表于 2006-10-23 16:54:40 | 显示全部楼层
能不能描述得稍微详细点?
发表于 2006-10-23 16:56:34 | 显示全部楼层
可能是DSP与UART之间同步出了问题。BaudRate降低后,UART完成发送时间拉长,DSP不能按原来得速度发送数据了。
发表于 2006-10-23 17:19:19 | 显示全部楼层
波特率的产生是不是有问题啊
发表于 2006-10-24 10:09:30 | 显示全部楼层
首先非常谢谢你们的回答,现在是问题是,FPGA的数据来自于DSP的并行8位数据,而这些并行数据是由在DSP的写信号/WE周期时间里产生的,而FPGA的时钟也是由DSP提供,我现在提供给FPGA的时钟固定不变,在FPGA配置一个UART的发射端,也即是将DSP的8位并行数据转变为8位的异步串出,同时给出一个中断信号,引起DSP的边沿触发,DSP中断就向GPGA继续发一个8位数据,FPGA我配置了一个分频器和一个发射器,这时的波特率是由FPGA的不同的分频器所决定的,不同的分频产生不同的波特率。FPGA的时钟首先经过分频后提供给UART的发射端,也就是UART的要作的时钟,这个时钟是波特率的16倍。现在问题是我改变波特率,也即是改变波频器的大小,假设我原来是80分频得到了4800的波特率,这时DSP写的/WE有效周期时间是一定的,并且经过FPGA处理后DSP写的/WE有效周期时间得到的异步数据是完全对的,现在是提高分频,假如160分频,这样就得到了一个2400的波特率,这时我发现DSP写的/WE有效周期时间也相应的拉长了一倍,我觉得理论上不同的波特率与DSP并行的写的/WE时间周期是没有关系的,也就是说不管是多少波特率,它的写的/WE有效时间周期是不变的,它只是与分频有关的。而这时的现象表现为:假如是2400的波特率,假如我发6个数据给FPGA,经示波器测试,给UART的缓存器每次可得到8位数据,但是到了移位寄存器这一级,我就看到1,2个数据。假如我没有用中断发数,而在DSP上发一个数据之后再延迟一定的足够时间再发数,现象跟有中断是一样的,移位寄存器这一级有时没有数据移出。80分频得到了4800的波特率这现象都正常。难道跟DSP写的/WE有效周期时间有关,这是没有道理的,DSP的确已发到缓存区了,还是时序上有问题,真的不知所解。刚刚接触FPGA,希望能得到高手指点。
发表于 2006-10-24 10:10:18 | 显示全部楼层
首先非常谢谢你们的回答,现在是问题是,FPGA的数据来自于DSP的并行8位数据,而这些并行数据是由在DSP的写信号/WE周期时间里产生的,而FPGA的时钟也是由DSP提供,我现在提供给FPGA的时钟固定不变,在FPGA配置一个UART的发射端,也即是将DSP的8位并行数据转变为8位的异步串出,同时给出一个中断信号,引起DSP的边沿触发,DSP中断就向GPGA继续发一个8位数据,FPGA我配置了一个分频器和一个发射器,这时的波特率是由FPGA的不同的分频器所决定的,不同的分频产生不同的波特率。FPGA的时钟首先经过分频后提供给UART的发射端,也就是UART的要作的时钟,这个时钟是波特率的16倍。现在问题是我改变波特率,也即是改变波频器的大小,假设我原来是80分频得到了4800的波特率,这时DSP写的/WE有效周期时间是一定的,并且经过FPGA处理后DSP写的/WE有效周期时间得到的异步数据是完全对的,现在是提高分频,假如160分频,这样就得到了一个2400的波特率,这时我发现DSP写的/WE有效周期时间也相应的拉长了一倍,我觉得理论上不同的波特率与DSP并行的写的/WE时间周期是没有关系的,也就是说不管是多少波特率,它的写的/WE有效时间周期是不变的,它只是与分频有关的。而这时的现象表现为:假如是2400的波特率,假如我发6个数据给FPGA,经示波器测试,给UART的缓存器每次可得到8位数据,但是到了移位寄存器这一级,我就看到1,2个数据。假如我没有用中断发数,而在DSP上发一个数据之后再延迟一定的足够时间再发数,现象跟有中断是一样的,移位寄存器这一级有时没有数据移出。80分频得到了4800的波特率这现象都正常。难道跟DSP写的/WE有效周期时间有关,这是没有道理的,DSP的确已发到缓存区了,还是时序上有问题,真的不知所解。刚刚接触FPGA,希望能得到高手指点。
发表于 2006-10-24 20:27:04 | 显示全部楼层
自己顶一下
发表于 2006-10-25 15:39:14 | 显示全部楼层
察看下40分频时,结果是否真确。
发表于 2006-10-25 17:33:16 | 显示全部楼层
40分频是正确的啊,也就是分频越高,波特率越低,在移位寄存器里的数据越不好得到,DSP写的有效时间越长
发表于 2006-10-25 17:41:26 | 显示全部楼层
可能是DSP写入数据丢失了,没写进去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 21:47 , Processed in 0.030444 second(s), 10 queries , Gzip On, Redis On.

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