boom1999 / blog-comments

0 stars 0 forks source link

HDB3 Decode And Endecode System | Haisen #33

Open boom1999 opened 2 years ago

boom1999 commented 2 years ago

https://www.lingzhicheng.cn/2021/09/30/HDB3%E7%BC%96%E8%A7%A3%E7%A0%81%E7%B3%BB%E7%BB%9F/

No fear of words,no fear of years

Charlenn commented 1 year ago

你好,如果我要在modelsim上仿真的话,tb文件要怎么编写呢

boom1999 commented 1 year ago

@Charlenn 你好,如果我要在modelsim上仿真的话,tb文件要怎么编写呢

Project File中的结构是使用Quartus ⅡModelsim联合进行时序仿真的,testbenchsimulation/modelsim/目录下的.vt文件,如果仅用Modelsim,可以适当修改。

Charlenn commented 1 year ago

你好,我试了一下仿真然后发现后面几组没有数据输出是什么原因呢?目前还没有修改数据。具体表现如下图:https://smms.app/image/lZ4omO8ksKdb6ny

boom1999 commented 1 year ago

@Charlenn 你好,我试了一下仿真然后发现后面几组没有数据输出是什么原因呢?目前还没有修改数据。具体表现如下图:https://smms.app/image/lZ4omO8ksKdb6ny

原因出在八位转双极性码以及时钟恢复模块,仿真环境和实际芯片存在差异。仿真环境没有A/D和D/A模块,编码后的信号和时钟都是直接相连,上述代码是在通过芯片的A/D和D/A转换后模拟传输,并且实际电路存在毛刺,因此在解码和时钟恢复时代码中修改了部分判决边界,具体应该在recover.vtrans8to1.v中,有注释说明。

若仅用于仿真,方案如下:

  1. 直接用原始时钟当做恢复后的时钟,将clk_16当作clk_recover
  2. 省略A/D和D/A模块,直接相连;

若要用芯片测试,可以根据实际情况修改判决边界

Charlenn commented 1 year ago

您好,我按照您说的方法试了把recover.v文件里的代码改成了被注释掉的那段,然后把HDB3.v文件里的recover和trans8to1里的输入信号都改为了data_out,也就是change模块的输出信号,然后把所有带ad,da的信号都删除了,然后出来的仿真结果好像还是跟原m序列有差异,想请教一下可能是什么原因呢,具体见图。另外请问一下方便加一下联系方式吗,我QQ是2513630169,想向您请教一下这个项目,我有些搞不懂的地方,谢谢 https://s2.loli.net/2023/04/12/fDy2k8qCBQ74JeP.png https://s2.loli.net/2023/04/12/1BSqL2QYRXedUKj.png https://s2.loli.net/2023/04/12/zorlmKOc2uWJAyQ.png