|
大家好,
我在看DP1.2协议的时候,接触到了很多应该是每个数字工程师在经手项目的时候都会接触到的功能相对独立、算法积累成熟的模块,比如基于LSFR衍生出的BIST,PRBS,CRC,ECC等。这些独立于协议规范之外的模块,在我看来,就像是泥瓦匠手中的砖瓦,可以搬过来去造亭台楼阁,也可以搬过去建筑高楼。所以,何不把在平时把这些独立模块都写一遍,在经过充分验证之后保存起来,以备将来不时之需。在我初次看DP1.2协议的时候,一度势如破竹,攻城略地,遇到的都是小幅度的障碍,比如PRBS之类。直到遭遇DP1.2协议中采用的Reed Solomon编码,DP协议中寥寥数字,翻来翻去两三页的描述,看得我云山雾绕,稀里糊涂。。。。。。后,幸得公司一博士同事提点,推荐我看<<Error Control Code>> Second Edition by Lin Shu。这本书,迄今我只看到第7章,后来又翻了一些其他的小文章,前几日闲暇无事,就准备准备写了一下RS(15,13)的编码和解码算法。
EETOP论坛里面有大量的书籍,软件等学习资料,让我受益匪浅!但是另外我自己的感受是,坛子里学习资料丰富的同时缺少设计实例,尤其是坛友原创的设计实例。一方面为了方便初学RS编码的朋友们在看书的同时能够仿真真实的verilog设计,直观的了解一下RS的工作过程,另一方面寄许或许能够得到坛子里面数字功力深厚的朋友指点一二,我决定在EETOP上传一下自己写的RS(15,13)的RTL代码和两个仿真Test_bench,望高手勿喷。
上传的内容,RTL包括encoder部分和decoder部分。写了两个encoder,一个是需要多拍编程一个码字;另一个做了并行处理,可以一拍编程一个码字。decoder采用pipeline的形式,每拍可以解出一个码字。因为写了两个encoder,所以对应的我也写了两个仿真test_bench。利用encoder和decoder相互验证。
欢迎大家针对RS本身,也可以针对代码书写风格,踊跃地提出看法!
|
|