我用于测试的图片大小为 269*269 的,如果你的图片大小不同,就还得修改一些地方。写的比较仓促,我水平也有限,将就参考参考吧
这是我用于测试的图片:

8b/10b 编码器
首先生成需要编码的文件,这个文件以 0xBC 为同步码,以 0xFD 为帧头,以 0xFB 为帧尾,帧头和帧尾之间包含 64 字节的数据,数据包于数据包之间的同步码为 8 个,这个地方我用 C++ 和 OpenCV 实现,代码如下
1 | // get_data.cpp: 定义控制台应用程序的入口点。 |
运行这个程序就可以生成名为 data.txt 的待编码文件,下面用 Verilog 实现编码器
1 |
|
然后编写 testbench 进行仿真
1 |
|
仿真完成之后即可生成名为 after_code.txt 的编码之后的文件
哦,对了!要运行这个仿真的话需要改一些地方,要改的地方我写注释里了
8b/10b 解码器
首先用 Verilog 实现解码器
1 |
|
然后编写 testbench 进行仿真
1 |
|
emmmmm… 这个仿真同样也有需要改动的地方,就在注释那
仿真完成后即可得名为 after_decode.txt 的解码之后的文件,这个时候可以将 after_decode.txt 于 data.txt 进行比对,这两个文件的内容应该是一致的,然后就从 after_decode.txt 中恢复图片,这个地方仍用 C++ 和 OpenCV 实现,代码如下
1 | // recover.cpp: 定义控制台应用程序的入口点。 |
运行之后就可以看到你之前的图片了

