主卡子卡数据传输进展

  1. 中期报告
  2. 子卡主卡收发程序
  3. 教导学弟

中期报告

基本内容都写好了,接下来再简单检查修改一下准备给老师看看

子卡主卡收发程序

这个是和学弟一起做的,我提供思路和指导,学弟写程序时遇到的问题比较多,包括:

  1. Vivado的版本问题:更新版本即可,在这个地方有点浪费时间
  2. 时钟问题:对差分时钟对的使用模糊
  3. 硬件类型问题:一个硬件类型记不住正确的型号,反复出错
  4. 约束问题:约束文件错误
  5. debug core问题:不了解debug core的正确使用方法

目标

在下周二前做出个能实际测试的,子卡到主卡传输数据的demo出来

教导学弟

  1. 要记住或能复用以前的代码,信息,知识

之前我说过硬件型号是xczu7eg-ffvc1156-2-e,请在之后继续使用这个型号

之前我提供过时钟相关的代码Clock_Reset.v,并且另一个简单的led程序也有使用时钟的案例代码,这两个案例都可以复用,之后遇到时钟问题时可以参考这两个案例的代码

之前我提供过时钟相关的约束和关于sfp+信号的约束,建议是直接复用相关信号的约束,不要省略或者自己乱改

  1. 有文件管理意识

已经写好的程序或者我发的参考程序可以放到一个文件夹中,方便之后参考

请给每个程序写一个有意义的名字,有需要的话建议在文件夹里再写一个readme,说明这个程序是做什么的,有没有遇到什么问题,如何解决

  1. 先想好然后再开始写代码

举个例子:写verilog程序都需要时钟,首先要考虑,这个硬件提供的时钟的频率是多少,这个时钟是什么时钟,是否需要分频或者其他处理?如果没有这个思考的过程的话,就胡乱整一个时钟上去,结果是用不了的,不正确的

  1. 遇到问题的解决方法

首先遇到问题第一反应是去搜索,没问题,但不一定搜得到,另外,如果问AI的话,请慎重考虑其给出的答案

如果搜索解决不了问题(这是很常见的),那应该有目的的去定位问题所在的点,而不是大海捞针一样去试

举个例子:程序无法导入板子上,可能的原因有 1. 板子坏了 2. 接线有问题 3. vivado有问题 4. 写的程序有问题

那怎么排查呢?写一个简单的led程序,尝试导进板子里,如果也失败了,那问题就锁定在1,2,3这边上,如果成功了,那1,2,3是没问题的,就可以排除了,剩下就是4有问题了,这其实也是个控制变量法,其他条件都相同,只是换了个程序就能导入,那说明是程序的问题

然后排查程序里面仍然可以用控制变量法,另外写一个程序,有部分和源程序相同,有部分不同(或者就是某部分去掉),这时再去测试,如果能够导入,那说明问题就出在这个部分上

这样一步一步缩小问题所在的范围,最后找到问题所在,然后解决,就比无头苍蝇那样乱找好多了


本文章使用limfx的vscode插件快速发布