• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

FPGA起步_硬件电路设计之可测试性设计

  昨天看了eeworld的fpga调试小结,写得很好,但是他是从调试的角度来谈,我今天就从如何设计FPGA硬件电路板来谈谈自己的一些体会,我将会着重关注于FPGA电路板的可测试性设计。

  所谓可测试性,很简单,就是在板级调试的时候,更方便调试,判决准则就是想看什么信号就可以看到什么信号,HOHO!

全部回复(4)
正序查看
倒序查看
2014-01-15 14:57

  我的个人经验:

  1. 电源电路设计

  电源电路,建议在电路的输出处增加一些跳线,在电源电路没有调通之前,可以确保电源不会输出到下一部分电路,保证后续电路的安全;

  电源电路部分,应该加上足够的测试点,包括反馈电压点、输出电源点以及地测试点,建议在PCB设计的时候,在电源输出测试点处就近放一个地测试点,个人不建议测量电压的时候,万用表的表笔直接点在电容或者电感上;

  同样建议,在每一个电源输出处,放上一个LED指示灯,电源OK后,LED点亮,所以整块板子有没有工作,一目了然。

0
回复
2014-01-15 14:58

  2. FPGA信号测试

  做过FPGA板级调试的朋友想必都有这样的体会,当项目调试不顺,输出结果不是想要的结果时,恨不得把FPGA给拆开,把逻辑分析仪或者数字示波器接入到内部信号通道的每个模块的输入输出端口处,看下波形,分析问题到底出在什么地方。

  虽然有chipscope/signaltap这样的辅助分析工具,但FPGA内部资源毕竟有限,不可能想看什么信号就看什么信号!

  建议如果FPGA设计有多的未用引脚的话,不妨在做FPGA电路设计的时候,引出8根或者16根线来,作为专用调试管脚,在PCB设计时连到一个排插上,用于调试,观察内部节点信号的波形,以下图为例,进行描述:

  如上图,在fpga内部电路设计时,可以添加如下测试代码:

  case(test_data_sel)

  n'h0:

  test_pin <= data_a_b;

  n'h1:

  test_pin <= data_b_c;

  default

  test_pin <= data;

  endcase

  这里的data_sel相对于FPGA来说是一个外部输入信号:

  在MCU + FPGA的电路架构中,这个data_sel可以通过MCU来配置;

  如果是单块FPGA作为唯一处理芯片,可以考虑通过拨码开关来设置,比如一个4位的拨码开关,它将有16种状态,对应到FPGA内部的话,不用修改代码,仅仅拨动开关,就可以观察到16个中间节点信号,是不是对调试很有帮助?

0
回复
2014-01-15 14:58

  3. 多放置一些状态指示灯

  放置状态指示灯的目的也是用于调试,哪个模块正常工作或者调试到哪个模块就让哪个LED灯亮,在调试遇到问题的时候,也有助于分析问题到底出现在哪个模块或者出在哪一步,提高调试效率。

0
回复
2014-01-15 14:58

  4. MCU + FPGA架构电路设计

  MCU+FPGA这样的架构,在做设计的时候,可以考虑在FPGA内部多例化一些小的ram,有两个作用:

  4.1 ram可以保存一些FPGA内部运行的结果,MCU通过总线把数据读取出来,可以判断当前FPGA内部工作是否正常;

  4.2 在FPGA调试不顺利的时候,可以配置一些数据写入到ram中,并强行断开FPGA数据通路,如上图中,可以强行断开模块A和B之间的数据通路,配置模块B从ram中读取数据,用于判断后续模块B以后的数据链路是否正确。

  FPGA硬件设计、调试都非一朝一夕之功,重在积累!

  我这儿就简单扔几块砖头,期待更多美玉,大家一起探讨,提高设计水平,HOHO!

0
回复