This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,应该是周期性发送,我看了下TLK1221的数据手册,也是使用的8b/10b编码机制,里面的时序给出了同步码K28.5是周期性发送的。
您看下它的数据手册Figure2-3, 以及当不同步时重复排列的Figure4的时序:
同步的目的是为了在接收端将原始输入的数据进行数据恢复和时钟修正,保证接收端输出的数据和原始数据对齐,如果不同步,则会发生错位现象。
发送端的时序应该就是同步码放在帧开头,然后 就是数据,而同步部分是在串并转换过程中,如果将接收端接收到的数据流进行边界的划分,使其和原来的数据对齐,这是关键,我在网上搜了下8B/10B 的编码机制,您也可以看下:
在只发模式下,虽然会接收到TLK1501发送的K码(同步码,不是0x50bc,强制发送的同步码和自动发送的同步码还会不同吗?),总体的接收情况仍是乱码
但是控制TX-EN,TX-ER 为00 使发送端强制发送同步码后(同步码为0x50bc),接收到的数据就正常了(为0xffff)
所以我想问他是否自动发送K码,周期是多少。每次测试都是强制发送K码后接收到的数据就正常
您好,我又看了下TLK1501 的数据手册,同步码是自动插入的(datasheet IDLE insertion 部分的介绍),但是comma字符的产生确实是由TX-EN,TX-ER这两个输入端确定的,参考datasheet “8-bit/10-bit encoder”部分的介绍。一旦器件上电power on reset之后,发送端持续发送idle直到接收端检测到输入来的idle字符或有效的data。 正常操作模式下,如果接收端接收到无效的数据之后,TLK1501会转成check状态,如果接收端检查到4个连续的有效数据之后,进入sync 状态,但是如果在check状态,检测到3个无效数据码则会转化成ACQ状态,然后当接收到一个有效的data之后又会进入sync状态,参考FIgure6的初始化同步过程。
所以根据Table1的,TX-EN=1,TX-ER=0时数据将被置为有效TXD[0:15]位被编码并正常发送。当TX-EN=0,TX-ER=1编码器生成一个包含两个 K23.7 (F7F7)代码的载波扩展. 当TX-EN=1,TX-ER=1则编码器会生成 K30.7 (FEFE)代码.由于数据是以20位串行字传输的,因此carrier extend(TX-EN=0,TX-ER=1) 和传输的 K 代码误差传播(TX-EN=1,TX-ER=1)作为两个10位 K 代码进行传输。
看了IDLE insertion部分,发现当没有可发送的有效载荷数据时,编码器插入IDLE字符集,我的板子是参考tlk1501给的参考电路画的,发送数据端TXD都上拉的高电平。这应该是有可发送的有效载荷数据吧。
在只发模式下,我将接受端复位后它可以周期的接收到tlk1501发送的0x50bc从而对齐,显示接受的数据为0xffff,应该是没有问题的。
就是这个发送0x50bc的周期是我给的GTX时钟50M吗?
还有当我通过控制TX-EN,TX-ER 为00 使发送端强制发送同步码后,这个周期的0x50bc就消失了,只发模式下也会进入那个状态机吗?
就是在只发模式下,上电后TLK1501会周期的发送同步码0x50bc
在使得TX-EN=1,TX-ER=0强制发送同步码后,就停止周期性的发送同步码了
是因为进入sync 状态了吗?
就是在只发模式下,上电后TLK1501会周期的发送同步码0x50bc
是的,只发模式下,接收端disable,相当于接收端没有接收到idle字符以及有效数据,所以会持续发idle字符。
但是TX-EN=1,TX-ER=0是正常工作状态,一旦接收器检查到4个连续的有效数据,就不会再持续发idle字符,而器件也会进入sync状态。