NIOS II 常见问题总结 下载本文

内容发布更新时间 : 2024/12/25 21:52:36星期一 下面是文章的全部内容请认真阅读。

NIOS II 常见问题总结

1. 怎样在TCL脚本分配管脚 source .tcl 有点问题: # source stratix_pin_assign.tcl

couldn't read file \答: From the Tools menu select Tcl Scripts, and then from the project folder choose the setup script for your particular development board, and click Run.

2.D:\\TEST\\nios_sst60下载时出现错误:

Error: Can't configure device. Expected JTAG ID code 0xDD for device 1, but found JTAG ID code 0x020B40DD. 答:SOPC所选器件和开发板上的不一致。

3.在NOIS II中Bulid例程hello_world都出现了错误,错误提示为:

gdrive/c/altera/kits/nios2/components/altera_nios2/HAL/src/alt_busy_sleep.c:68: error: parse error before '/' token等 错误全部由

alt_busy_sleep.c引起,都是关于括号不匹配的问题,而alt_busy_sleep.c是IDE中的一个默认程序。这个错误同 样出现在

D:\\TEST\\DE2Project\\software\\nios2 ,培训用的一个简单实验。

答:找到system.h文件,里面有个关于系统时钟频率的设置项,应该是没有赋值,你手动赋值。比如你用50MHZ的时钟,就设成

如果总是出现上述问题,可能和软件有关系,建议重新安装软件。注意quartus和NIOS安装版本一定要相同,不能混装。

4.这个错误是什么原因引起,把那个sdk_arm删除后,又提示另一个地方出错。

答:运行NIOS II IDE,点Project->Clear,重新Builde,应该可以解决问题。

5. 在SOPC中Generate出现如下错误是怎么回事? Error: Generator program for module 'epcs_controller' did NOT run successfully. 只要在SOPC中加入epcs_controller就会出现此错误,无法生成一个元件。

答:可能和软件有关系,建议重新安装软件(这个问题是我刚学NIOS遇到的最头痛的一个问题,问题的原因是Quartus和Nios安装的版本不一致)。

6.在Nios II IDE中,怎样打开一个已经存在的工程?每次新建工程比较麻烦。 答:指定一个Nios II IDE的工作目录,就打开了那个目录下存在的工程。另外,在Nios II中是可以建立多个工程的。

7.在Quartus II 中编译出现如下错误怎么办? Error: Can't place pins assigned to pin location Pin_AE24 (IOC_X65_Y2_N2) 答:按F1可以查看帮助,出现这样的错误的原因是:

CAUSE: You assigned two or more pins to the specified location, but the

Fitter cannot place all the pins in that location.删除这个管脚即可。有一种比较简便的方法,就是在工程目录中找到一个后缀为QSF的管脚配置文件,查找Pin_AE24删除那行语句就 行了。

8.如何在NIOS II IDE 下跟踪查看变量的定义或者函数的定义?

答:按住CTRL键,鼠标移动到变量或者函数名的地方,就可以发现这些地方高亮显示,单击就可以进入到变量或者函数定义的地方。

9. 在count_binary.c有这样一段程序,它是如何操作的? unsigned int data = segments[hex & 15] | (segments[(hex >> 4) & 15] << 8)

答:segments[hex & 15]显示个位0~F;(segments[(hex >> 4) & 15] << 8)显示十位数0~F,个位0~F,然后十位加一。

10.这个错误是由什么引起?

答: 提示LED_PIO_BASE没有声明,这是因为名字不一致引起的比如,在生成SOPC系统时,双击PIO(Parallel I/O)(在Avalon Modules -> Other 下),为系统添加输出接口,你没有把该组件改名成LED_PIO,而是保留了原始的名字:PIO_0;但你又通过 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);来向该组件写入数据,就会导致上述错误。解决办法:1.可以修改sopc系统,为该PIO改名为LED_PIO ;2.在hello_led.c的前面给LED_PIO_BASE赋值,如#define LED_PIO_BASE 0x,后面的这个地址要与SOPC中的地址对应。

11. 如何在NIOS II中驱动外部芯片或设备?

答:在开发过程中,我们经常会使用外接一些芯片,或外接一些实用电路,比如AD芯片、串并转换芯片等等,那么如何在NIOS II中去使用这些芯片呢? 我们在开发中会有多个选择:

1. 如果这个芯片是使用数据和地址总线的,并且补线时没有足够的单独引脚,那么这个芯片必须挂接在tri_stat总线上,这种用法和我们以往单片机或MCU 类似,在SOPC Builder中直接定义用户逻辑,如果有额外的控制引脚,就需要用PIO来驱动,虽然公用数据地址线节省了引脚,但做控制时序费劲了。 2.如果这个芯片单独使用数据和地址,那么我们会直接做成Avalone总线的Slave设备,在Sopc Builder中自己定义component。需要写HDL模块,自己定控制、状态、数据寄存器和控制位定义,这种方式控制灵活,易于实现复杂的控制时序。

3.在Quartus II 工程中画电路模块(或用HDL写电路模块),这种方式是独立于SOPC定义的模块之外的,做一个纯电路的处理模块,有时候会比较容易实现某些灵活的处理。

12.在SOPC添加Avalon Trisatate Bridge时,提示有如下错误,该如何解决? Tri state bridge/tristate master requires a slave of type Avalon tristate.Please add a slave of type Avalon tristate. Generate按钮为灰色,无法Generate

答:需要一个专门接三台桥的设备, 把flash添加到sopc中就可以了。

13. 在做count_binary这个例子时,出现一个错误: error: `BUTTON_PIO_IRQ' undeclared (first use in this function) BUTTON_PIO_IRQ的值如何给他定义? 答:这个错误可能是在sopc builder中定制的pio端口名称是否与程序中用的不一致,要和程序里的一致,把pio组件的名称就改为button_pio,如下图:

如果已经这样设置,还有可能是没有设置中断号,具体应该这样设置:

14.在Quartus II中编译时出现如下错误:

Error: Node instance \\

点击错误的地方弹出一个对话框

这个错误是怎么回事?怎样解决?

答:可能是在SOPC中所选的CPU型号不正确,换一个试试。

15.怎样自动分配管脚?

答:在Quartus II自动分配管脚有一个方法,点击Assignments->Import Assginments,导入一个管脚分配文件,后缀为.csv .txt等,前提是在顶层原理图中各个输入输出的名称要和这个文件中的名称一致。

16.在NIOS II中编译时出现如下错误怎么解决?错误是不是由SOPC中的RAM引起?

region ram is full (count_binary.elf section .text). Region needs to be 24672 bytes larger. address 0x80c1f8 of count_binary.elf section .rwdata is not within region ram

Unable to reach edge_capture (at 0x) from the global pointer (at 0xc) because the offset (-82296) is out of the allowed range, -32678 to 32767. 答:可能时RAM的大小不够,也有可能是中断地址(exception address) 的偏余量不够,设置大些就可以了。如果还是出现这个问题,加一个SDRAM试试。

17.在Quartus II中,为什么编译一些样板工程都会出错?

Error: DDR timing cannot be verified until project has been successfully compiled.

Error: Evaluation of Tcl script auto_verify_ddr_timing.tcl unsuccessful Error: Quartus II Shell was unsuccessful. 2 errors, 1 warning 答: 在做样板工程时要注意一个问题:Due to the library paths that are coded into the Quartus settings for this project, if a user wishes to modify the hardware design they must first strip out any old paths from within the project settings file (qsf) 在qsf文件中找到类似语句

set_global_assignment-nameVHDL_FILE