当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]调试FPGA电路板总结

  这两周都在调一块我们组画的FPGA电路板,遇到了不少的问题,在此总结一下。

  焊电路板肯定是从电源焊起,我们的电源部分基本上没有问题,3.3V、2.5V和1.2V输出都很正常。

  但是当我们把FPGA芯片焊上后,在quartus里用JTAG方式下载程序时,问题出错,提示是找不到芯片。起初我们认为是下载电路设计得有问题,于是我们对照着CycloneIII的芯片手册中找关于JTAG下载的描述。其中有一段是这样描述的:
For device VCCIO of 2.5 V, 3.0 V, or 3.3 V, refer to Figure 10–24. All I/O inputs must
maintain a maximum AC voltage of 4.1 V. Because JTAG pins do not have the internal
PCI clamping diodes to prevent voltage overshoot when using VCCIO of 2.5 V, 3.0 V, or
3.3 V, you must power up the download cable’s VCC with a 2.5- V supply from VCCA.
For device VCCIO of 1.2 V, 1.5 V, or 1.8 V, refer to Figure 10–25. You can power up the
download cable’s VCC with the supply from VCCIO.

  在我们在板子上,VCCIO用的是3.3V,因此VCCA应该用2.5V,再看我们的VCCA,竟然是1.2V,再查了CycloneIII的芯片手册,其中写到:
Each Cyclone III PLL uses separate VCC and ground pin pairs for their analog
circuitry. The analog circuit power and ground pin for each PLL is called VCCA<PLL
number> and GNDA. Connect the VCCA power pin to a 2.5-V power supply even if you
do not use the PLL.
  就是说VCCA是2.5V,看来我们是连错了,VCCA和VCCD分别是锁相环的数字电源和模拟电源,在画原理图的时候不小心画错了。这也是CycloneIII和CycloneII的区别,在CycloneII中,VCCA和VCCD_PLL都接1.2V,而在CycloneIII中,VCCA接2.5V,VCCD_PLL接1.2V。

  发现这个错误后,我们只能小心翼翼地飞线了,经过一翻折腾后,终于飞好了,上电,下载,成功!

  后面我们就要测SDRAM了,因为我们要用SOPC系统,程序要在SDRAM里跑。但是无论我们的程序怎么调,在nios里下载程序时,控制台总是显示verify failed between address 0x1000000 and 0x1000020,其中这个地址范围在SDRAM的地址空间中。出现这个问题是因为与SDRAM通信出现了问题,而且大部分是因为SDRAM的时钟与SDRAM CONTROLLER的时钟之间的相移设置得不正确。但是我设置得相移是根据quartus handbook中关于相移地介绍算出来的,应该不会有问题。话虽这么说,但是是不是算错了我也不敢确定,所以只能修改此相移(error and try),因为一般此相移都设为-72度,所以把相移修改为-72度,但是问题依旧。既然是error and try,于是我又试了一些其它的值,但是依然没有效果。此时我们认为问题出在电路板上的可能性会比较大,于是围绕着SDRAM检测硬件,SDRAM的连接非常简单,只需要把数据线、地址线和一些控制线直接连到FPGA的引脚上即可,所以在连接上不会有太大的问题。后来突然想到我们之前把PLL的电源接错了,没准当时已经把PLL烧坏了,而我们的SDRAM的相移是通过PLL来实现的。于是我们写了一个测试程序,看PLL的输出是否正确。结果果然不出我们所料,PLL的输出根本不是我们想要的方波(当然用示波器测应该是输出正弦波,因为方波的频率是50M,根据信号与系统的理论,此方波是由50M和及高次谐波组成的,而示波器的带宽也就60M,所以只能显示50M的正弦波),而是一些杂波,这说明我们这片FPGA的PLL已经被我们搞坏了,查看其芯片手机,VCCD_PLL最多只能接1.8V,之前我们用2.5V来虐待它,而且时间还不短,它不坏就不正常了。

  现在我们只能换FPGA芯片了,经我们小心翼翼地再次飞线,最终将芯片焊好后,一步一步地测,电源正常、硬件下载正常、PLL输出正常、nios下载正常。至此我们的工作算是暂告一段落。

  在以上调试过程中,还遇到了一些其它的问题。

  在nios里下载软件程序时,会出现
assertion "m_state == STATE_DEBUG" failed: file "nios2oci.cpp", line 157
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: D:\altera\81\nios2eds\bin\nios2-download: line 594:
 6300 Hangup                  nios2-gdb-server --instance 0 --tcpport none --wri
te-pid ./Debug/nios2-download.pid ./Debug/GigaCard.elf.srec
  这个问题在我调试的过程中偶尔会出现,而且是没有规律的,也正是这个问题,总是阻碍着我们前进的脚步,后来我们发现一个程序本来是可以下到onchip-memory中的,后来同样的程序无论如何都下不进去了,于是我们基本可以确定问题出在了硬件。对于有控制器的系统,晶振肯定是非常重要的,于是我们测晶振的输出是不是正常的,结果是有时正常有时不正常,这说明晶振虚焊了,经过我们小宝同学精心补焊,上面那个问题就再也没有出现过了。

  在nios里下载软件程序时,出现
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused
  这个错误在可编程部分的原因大多是引脚分配错误。网上有人说要在quartus将没有用到的FPGA的引脚设为“input tri-state”,但是我并没有发现这是必须的,可能只是一些特定地器件需要这样设置。

  经过这次调试,感觉自己增长了不少调试经验,虽然之前调试过51板子,但是画那块板子时,参考电路有很多,所以调试起来比较顺利,没出太多问题。这次就不同了,问题出了一大堆,真有点不知所措。总结一下调试有主控芯片的电路,首先要保证电源没有问题,不仅是电源模块地输出没有问题,还有芯片地电源不能接错,因为电源一错,所以一切都要玩儿完,就像我们这次就因为电源的问题烧了几百块钱的芯片。在电源没有问题的情况下,就要看看主控芯片的晶振有没有问题,很多问题都是晶振引起的,我之前调试51板子的时候也是因为用了一个已经坏掉的晶振导致不能下载程序。遇到硬件方面的问题时需要一点一点地排查,在确定前面的模块是正确的情况下再进行后面的部分。

  关于FPGA的调试,我想要分为以下几步,首先要保证FPGA芯片的几个电源是正确的,然后先用一个最简单地用硬件描述语言写的小程序测试FPGA芯片是否能够正常下载并工作正常。然后用nios建立软件工程并把程序放在onchip-memory上下载。接下来再继续调试外围的电路。

  在nios里把程序放到onchip-memory上进行编译时,很多时候都会遇到错误,提示onchip-memory的空间不足。这是因为程序是用main作为主函数,这样的话nios会在程序进入main函数前进行一些系统的初始化工作,这做占用不少的空间。要在onchip-memory上跑程序,最好是采用alt_main作为主函数,例如采用下面的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "system.h"
#include "sys/alt_sys_init.h"
#include "sys/alt_irq.h"
#include "priv/alt_file.h"
#include "altera_avalon_pio_regs.h"
int main (void) __attribute__ ((weak, alias ("alt_main")));
int alt_main(void)
{
  alt_irq_init (ALT_IRQ_BASE);
  alt_sys_init();
  alt_io_redirect (ALT_STDOUT, ALT_STDIN, ALT_STDERR);
  while(1)
  {
    IOWR(TEST_PIO_BASE,0,1);
    usleep(1000);
    IOWR(TEST_PIO_BASE,0,0);
    usleep(1000);
  }
 
  return 0;
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

要问机器人公司哪家强,波士顿动力绝对是其中的佼佼者。近来年该公司在机器人研发方面获得的一些成果令人印象深刻,比如其开发的机器人会后空翻,自主爬楼梯等。这不,波士顿动力又发布了其机器人组团跳男团舞的新视频,表演的机器人包括...

关键字: 机器人 BSP 工业机器人 现代汽车

南京2022年10月17日 /美通社/ -- 日前《2022第三届中国高端家电品牌G50峰会》于浙江宁波落幕,来自两百余名行业大咖、专家学者共同探讨了在形势依然严峻的当下,如何以科技创新、高端化转型等手段,帮助...

关键字: LINK AI BSP 智能家电

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭