UART
能不能描述得稍微详细点?
可能是DSP与UART之间同步出了问题。BaudRate降低后,UART完成发送时间拉长,DSP不能按原来得速度发送数据了。
波特率的产生是不是有问题啊
首先非常谢谢你们的回答,现在是问题是,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,希望能得到高手指点。
首先非常谢谢你们的回答,现在是问题是,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,希望能得到高手指点。
自己顶一下
察看下40分频时,结果是否真确。
40分频是正确的啊,也就是分频越高,波特率越低,在移位寄存器里的数据越不好得到,DSP写的有效时间越长
可能是DSP写入数据丢失了,没写进去。
DSP数据载入是we的边沿触发么?
写进去了,UART发射不是有两级,一级是缓存区,二级是移动寄存器,现在缓存区是有数据,而移位寄存器如果DSP发6个数,可能就有2,3个。