Quartus II 问题集锦

转载:http://blog.sina.com.cn/s/blog_612514b00100ftk9.html

QUARTUS II版本:9.0

FPGA型号:EP2C8Q208

配置芯片:EPCS4

SDRAM型号: HY57V28820HCT-H

FLASH型号 :TE28F320J3

前面的一些问题是入门时遇到的,能记得的都列出来了。后面的再遇到什么问题会不断更新……

一.SDRAM设置http://blog.sina.com.cn/spflying

在Nios II IDE 中下载时出现

Using cable "ByteBlasterII [LPT1]", device 1, instance 0x00
Pausing target processor: OK
Reading System ID at address 0x01001058: verified
Initializing CPU cache (if present)
OK


Downloading 00800000 ( 0%)
Downloaded 1KB in 0.0s        

Verifying 00800000 ( 0%)
Verify failed between address 0x800000 and 0x8001FF
Leaving target processor paused

 

找不到SDRAM、地址不存在的错误。

原因是搞错了SDRAM的型号并查错了PDF,导致SDRAM控制IO错乱。错误的设置是Quartus II 问题集锦_第1张图片

我的SDRAM型号是HY57V28820HCT-H128Mbit SDRAM内存芯片,刷新为4K Ref,数据带宽为8位,Bank为4,接口为LVTTL,芯片修正版本为第4版,速度是7.5ns(PC133 CL=3)。50M时PLL偏移是-40.低速条件下不偏移也可以。 应该设置成: 

Quartus II 问题集锦_第2张图片

二.CPU复位电路错误http://blog.sina.com.cn/spflying

Nios II IDE 下载时出现如下错误提示:

 

Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused

 

在网上找了很多资料,出现这种通信错误的情况基本上是由于PIN定义错误或者是复位错误。仔细检查后发现PIN定义没有问题,在检查delay_reset_block后发现一个连线没有连接上,导致不能正常复位。基本上属于上述情况。以后要注意细心了!

三.FLASH下载内容为空http://blog.sina.com.cn/spflying
在有SDRAM和FLASH的SOPC中,如果最后要下载程序到FLASH中,在NIOS II 中用FLASH PROGRAMER下载时有

# Programming flash with the project
"$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --base=0x03000000 --cable='ByteBlas
terII [LPT1]' --sidp=0x04001038 --id=417604522 --timestamp=1257256685  "ext_flas
h.flash"
Empty flash content cannot be programmed or verified

 

的错误。提示说要给flash编程的数据是空的。

原因是RESET VECTOR指向了SDRAM,应该指向FLASH。因为这里要下载的是一个工程,下载的是工程内容,reset vector指向了SDRAM与flash就没有关系了,也就不会下载到flash中。

四.LED基础实验PIO基地址错误http://blog.sina.com.cn/spflying

**** Build of configuration Debug for project hello_led_0 ****

make -s all includes
Compiling hello_led.c...
../hello_led.c: In function `alt_main':
../hello_led.c:141: error: `LED_BASE' undeclared (first use in this function)
../hello_led.c:141: error: (Each undeclared identifier is reported only once
../hello_led.c:141: error: for each function it appears in.)
../hello_led.c:190:80: warning: no newline at end of file
make: *** [obj/hello_led.o] Error 1
Build completed in 3.625 seconds

原因是在定制SOPC系统时PIO的定义与这里程序的名称不相同。有两种方法,一种是在这里直接改成SOPC里面PIO的名称,第二种方法是改SOPC里面的PIO名称。clean project后重新build就可以了~

五.NIOS II 9.0 BUGhttp://blog.sina.com.cn/spflying

一个论坛上看到的。问题现象:

在ep2c下试验过没有任何问题的NIOS II在ep3c中无法自举(启动),但是看上去附加的verilog IP core在工作,只是nios2的C主程序无法运行。nios2eds也没有什么明显的报错。

原因:

NIOS2_EDS_9.0 的Flash Programmer有bug!
解决方法是把/opt/altera8.1/nios2eds/bin/sof2flash.jar 复制到9.0的相应目录里。(需要此文件可以发邮件到[email protected]索取)
NIOS2_EDS_9_SP2应该没有这个问题。



QUARTUS II版本:9.0

FPGA型号:EP2C8Q208

配置芯片:EPCS4

SDRAM型号: HY57V28820HCT-H

FLASH型号 :TE28F320J3

之前已经接触QUARTUS II比较长的时间了,也遇到过不少问题,有些比较简单解决后就忘了,现在把能记得起来列在前面几个。后面的是自己后续遇到的问题的集锦...

1.多模块或多进程驱动同一信号http://blog.sina.com.cn/spflying

Error (10028): Can't resolve multiple constant drivers for net "FLASH_A[7]" at led.v(32)

    用Verilog描述电路时,一个信号只能在一个进程中驱动,如果在多个进程中对其驱动的话将产生如上错误。解决方法为可以另加一个信号,通过在另一个进程中监视这个信号做出相应的动作。

 

2.多功能管脚的设置http://blog.sina.com.cn/spflying

    在用FLASH分配完管脚后编译出现如下错误:


Error: Can't place multiple pins assigned to pin location Pin_108 (IOC_X34_Y2_N0)
Info: Fitter preparation operations ending: elapsed time is 00:00:00
Error: Can't fit design in device
Error: Quartus II Fitter was unsuccessful. 2 errors, 0 warnings
Error: Quartus II Full Compilation was unsuccessful. 4 errors, 56 warnings

 

    原因是不能分配给多功能管脚PIN_108。

    这是由于PIN_108是一个多功能管脚,还有一个功能是nCEO,也是默认的功能。如果要用它当普通IO,需要提前设置一下:assignments>device>device and pin options>dual-purpose pins里面把nCEO设置成use as regular i/o就可以了。

 

3.CLK 连接http://blog.sina.com.cn/spflying

    SOPC综合后资源占用LE只有几百,警告数量数百。http://blog.sina.com.cn/spflying

    原因一般是CLK的连接有问题。CPU在没有时钟的情况下形同虚设,在综合时被综合掉,产生大量警告。

 

4.负载电容(load capacitance)警告http://blog.sina.com.cn/spflying

 

Warning: Found 8 output pins without output pin load capacitance assignment

    load capacitance和IO输出结构有关的设置,用来控制波形的上升下降沿的控制,用于阻抗匹配防止产生过冲.低速电路一般不需要考虑.

消除此警告要在assignment>assignment editor>下指定负载电容。如下图所示:Quartus <wbr>II <wbr>问题集锦(不断更新鈥︹Γ

    以下是对此设置的英文介绍:

Specifies the capacitive load, in picofarads (pF), on output pins for each I/O standard.  Note: These settings affect FPGA pins only. To specify board trace, termination, and capacitive load parameters for use with Advanced I/O Timing, use the Board Trace Model tab. Capacitive loading is ignored if applied to anything other than an output or bidirectional pin, or if Advanced I/O Timing is enabled.

5.行波时钟警告http://blog.sina.com.cn/spflying

    分频计数作为了另外一个电路的时钟,这种用法叫做行波时钟。在FPGA设计中是不推荐的,所以在综合时会产生警告:

Warning: Found 2 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew.

    关于FPGA时钟,多说几句。FPGA设计中一般都会使用一个主时钟,也就是晶振的时钟。时序逻辑用到的各种时钟都是通过这个主时钟分频得到的。如果一个时钟驱动的逻辑门比较多的话,为了增加它的驱动能力就需要将它设置成全局时钟。多个时钟在FPGA内部是可以同时工作的,但是使用的时候要注意时序问题。

关于全局时钟,再多说几句。23,24,27,28是EP2C8Q208的四个全局时钟管脚。他们比一般的IO管脚驱动能力更强,通常建议将时钟信号绑定在这些管脚上,以保证时钟信号的驱动质量.4个管脚是等效的,可以用不同时钟同时驱动他们,这样FPGA内部可以工作在多个时钟域下,不同电路由不同时钟来驱动.

6.仿真时存储器初始化http://blog.sina.com.cn/spflying

    在使用FPGA内部的RAM时,会有一个初始化文件.mif,给RAM加上初始值或当作ROM用,因此仿真时必须把相应数据导入,首先要把mif文件转换为.hex文件或.rif文件。

  在Quartus II环境下,打开mif文件,点Save As,选择Hexadecimal(Intel-Format) File(*.hex),或者点击Export,用Save as type选择RAM Initialization File (*.rif),也可能在命令行下输入:

mif2rif

  打开ram模块文件,找到lpm_file或init_file,指向刚刚生成的hex文件或rif文件。

lpm_ram_dp_component.lpm_file = "path"

  使用hex文件时,不需要compiler directives,使用rif文件时,需要加入USE_RIF,如下

vlog -work alter_mf altera_mf.v +define+USE_RIF=1

  这样就完成了数据导入。


你可能感兴趣的:(Quartus II 问题集锦)