lcytms
发表于 2017-8-19 09:28:07
1032
另一种是保守的、悲观的、消极的方案。
我不能保证数据区不会出现55。
lcytms
发表于 2017-8-19 09:29:13
1033
帧检测只能在指定的时刻检测。
因为你已经知道帧结构,我们完成一帧之后,做一次检查,走完一帧做一次检查。
或者是走完若干帧,512个帧。
lcytms
发表于 2017-8-19 09:36:04
1034
它不能保证帧头不出现在数据区,需要定时进行帧检测。
这是串行通信的又一个问题。
必须要知道帧结构,由帧结构恢复出帧边界。
得到了帧边界,就得到了字边界,字节边界。
关于帧边界,就是用帧结构来解决。
下面呢,我们来看一下Altera的Cyclone IV,它的架构。
高速串行通信的架构Altera的Cyclone IV器件手册。
打开高速收发器。
看它支持哪些协议。
lcytms
发表于 2017-8-27 16:03:20
1035
SATA可以到1.5到3个G。
重点是串行通信的部分。
lcytms
发表于 2017-8-27 16:03:52
1036
这张图我们解释一下。它内部有一个PCIe的硬核。
还有一个流水线的接口。
有一个调整相位的双时钟的FIFO。
lcytms
发表于 2017-8-27 16:04:20
1037
跨时钟域。
通信是一个时钟,内核逻辑又是一个时钟。
再后面是字节的串化器。
要把字节转换成串行的比特。
lcytms
发表于 2017-8-27 16:05:20
1038
然后是8B/10B,必须要把静音消除掉。
然后就是串行化。
这个是一个字节的串化器。
内核的逻辑可能是32位的,16位的,把它转换成字节。
字节串化器的输出一定是8个比特。
48位也好,64位也好。
把它都转成一个字节一个字节。
lcytms
发表于 2017-8-27 21:56:46
1039
8B/10B就是把8个比特变成10个比特。
仍然是并行的,10位的串化器,转成差分信号了。
我们内核逻辑是400M、500M。
lcytms
发表于 2017-8-27 21:57:15
1040
这是发送端。
下面是它的接收器。
接收到以后,首先进入CDR。
这是一个无随路时钟的。
它要从信号上恢复出时钟。
之后是一个并化器。
把串行的比特装配成一个并行的数据。
lcytms
发表于 2017-8-27 21:57:42
1041
并行的数据,它首先要做对齐。
它要找到帧边界在什么地方。
要求字对齐。
下面会借助很多FIFO来调节偏斜,调节速率。
并化器已经把单比特变成了10比特了,接着要从8B/10B恢复出原始信息。