板上有精通8bit10bit编码的吗
串行发送器和接收器都是10bit宽的,可以使用8bit到10bit转化的,但是FPGA没有
8bit10bit转化的IP core,懒得自己写,就使用了最简单的办法,把8bit的数据分成两个
4bit,分别放在10bit的高四位和低四位,中间两个bit插入数据01。这样系统最多会出现
连续9个0或者连续9个1,不会再多了。
以前测试的时候一直正常,最近发现偶尔会丢掉一帧数据,我反复测试,发现丢掉的数据
前面连续传输了6字节0,难道真的是没有使用8bit10bit编码造成的吗?
要么外边做,要么里边做
老大,能说清楚一点吗?
和8-10转换没关系,应该是数据链路的问题。也可以试试其他的转换方法,比如加两bits校验码
如果把clock也用另一路光传过去,可以不用转换。
你的时钟怎么传得?
看样子是单独传的时钟的
有那么蛋疼用2根光纤的吗?光模块占地方,功耗大。
200M用光纤,多浪费啊
电完全隔离。
已经有8B10B了,再加个CDR,完全不用传时钟啊?
嗯,我最喜欢的方案,不怕雷劈。
lz没有8b10b
这种有可能是CDR瞬时crazy了,造成Rx Error;
可以将8B/10B做得简单点,去掉 parity的check,这样在FPGA里做个256 entry
的look up table就可以了,至少run length部分还是比你这种简单的插01要好很
多
8b/10b编解码有开源的模块 何必自己造轮子
我使用的fpga是xilinux spartan3e,我试图找到8b/10b的IP core,但是没有成功,在网
上倒是搜到了Parameterizable 8b/10b Encoder,就是一个文档,也没说在哪里可以下载
代码或者说IP core的。
网上倒是能搜到一大堆的8b/10b代码,就是有点乱,只能在这个基础上自己改写啦
opencores上就有的,我用过,对千兆以太网数据进行8b10b的编解码,测试通过。
赞
千万不要自己去发明轮子,学习除外
lz沒說清楚,是連續6個字節的0,還是連續6個bit的0?
100Mbps原來不用8b/10b,只要4b/5b。假使用LUT實現codec,那麼在接收端最多是2^5=32的複雜度,比10b要小得多。
我理解lz是想搞清楚4b/5b的碼表如何生成,這個需要搞清楚100base-TX的MLT-3以及NRZI兩個東西,才可以正確理解4b/5b中的JK碼為什麼4b/5b可以用在100base-tx上。
中間繞了兩層,但是wiki已經將條件列明了,結合上preamble的binary raw data,自然就知道如何識別SOF了。
至於4b/5b是否是唯一解,我的推導是否定的。但是由於概率相關的東西我基礎是在太差,無法給出推導為什麼4b/5b這樣做是最好的......希望有朋友可以指導下。