当前位置:文档之家› Zinus教你学SOPC和NiosII

Zinus教你学SOPC和NiosII

系统环境:

操作系统:windows7 旗舰版

QuartusII:QuartusII 9.1 sp2

Nios II IDE:Nios II IDE 9.1 sp2

1.打开QuartusII file->new project wizard

设置工程名xxx

Finish

2.Tools->SOPC Builder

设置系统名xxxsopc

设置系统时钟频率(即PLL的输出system时钟)(笔者使用Cyclone EP3C10E144 设置频率130 MHz)

3.新建NiosII 系统e经济型s标准型f快速型(不建议使用f,因为f型有自己的cache,

笔者在上面创建工程总是不能下载软件)

(1DMIPS 的性能是指:这个处理器测整数计算能力为1*100万条指令/秒)

(系统的DMIPS 与Fsystem相关)

4.选择外部SDRAM

选择Custom 根据开发板,我们做如下设置

Bits:16 Chip Select:1 Banks:4 Row:12 Column:8

选中Generic memory model

其余不变

Finish

5.再次进入cpu ,设置reset vector 和exception vector

6.新建I/O口,8位输出

7.选择自动配置地址,自动配置中断。

System->auto-assign base address

System->auto-assign IRQs

然后生成符号文件点击Generate

8.在生成NiosII符号文件的同时,我们回到QuartusII界面

新建block文件并立即file->save as->xxx

9.拖出一个ALEPLL 并设置两个输出c0 c1 input设置为晶振频率(笔者为20MHz)

C0 用作Fsystem

C1 用作Fsdram

10.拖出刚刚生成的NiosII符号文件(双击屏幕空白地方选中选项并单击OK)

因为altpll的复位端为高电平有效,而我们的按键为低电平有效,所以我们在pll的复位端前面加上一个非门

11.添加I/O引脚,并修改每个引脚的名称

其中最注意为SDRAM的时钟引脚,其前缀和后缀最好与SDRAM的其他引脚保持一致

12.保存并编译文件,然后打开Assignments->Pin Planner

配置引脚如下图(笔者开发板引脚配置图),并再次编译和下载

(这时候编译会报错,说不能多匹配Pin_101 解决方法如下:Assignment->Settings->Device and Pin Options->Dual-PurposePins->nCEO 双击改为use as regular I/O)

13.打开NiosII IDE (需要运行在XP sp3 兼容模式和管理员模式下面有设置方法)

File->new->nios II application and BSP from template

SOPC Info file Name 路径为Quartus II 工程的路径,并选择.sopcinfo 文件

Project name 为xxxnios

其余不变

Finish

14.在下载软件时,要先进行project->Build All

在工程名上右击->run as->nios ii hardware

在弹窗时,选中标签target connection -> refresh connection

选中两项ignore 和reset 再apply 和run

下面是笔者在Hello模板下写的一个LED流水灯程序,其中操作I/O口就是对特定地址赋值,0和1分别对应L和H电平。

系统每个外设的地址都放在system.h文件中,对地址进行操作时需要包含此文件。

#include

#include"../lednios_bsp/system.h"

int main()

{

volatile unsigned char* led = (volatile unsigned char*)PIO_0_BASE;

*led = 0x01;

printf("Hello from Nios II!\n");

while (1)

{

*led = *led << 1;

if (*led == 0)

{

*led = 0x01;

}

}

return 0;

}

15.如果出现downloading elf process failed 请查看以下整理信息

1)时钟过高,导致程序下载失败

2)设置时钟时,同时还要注意SDRAM clk和SYSTEM clk之间的相差

3)地址最好不要从0x00 开始分配

4)每次烧写NiosII系统,最好断电重烧。

5)当重新编译SOPC硬件系统之后,Nios II IDE的工程也要重建

6)不要把杜邦线连接到SDRAM的I/O引脚上

16.笔者创建的Nios II 系统为e经济型,最大输入时钟为130MHz,I/O口操作频率为

386.40KHz

以下内容为各个网站论坛搜集,与笔者无关

今天继续调试,又出现了新问题。在执行NIOS程序代码时,不能下载了:

Pausing target

processor: not responding.

Resetting and trying again: FAILED downloading ELF

process failed

nios工程在编译通过后RUN的过程中出现Error Running Nios II Project: …Downloading ELF Process failed?问题原因:

1、nios2 cpu datamaster 没有和on chinp ram 连接导致程序在系统ram上无法下载。

2、在加载SDRAM模块时应注意其参数的准确性,否则同样影响data总线数据传输导致该问题。

3、还有,在建立工程选择软核.sopcinfo文件时要注意路径,一般nios ii 新建工程时默认上一次工程的.sopcinfo文件,很容易就选择了该文件,导致运行失败。

4、可能是sdram时钟与cpu时钟之间的问题。

5、PLL的问题, 重新配置PLL。关掉Nios II IDE重新编译。

Altea官网解释如下:

Title:Error Running Nios II Project: ‘Downloading ELF Process failed’

Description:

If the Nio s II processor?s cpu.data_master port is not connected to all program memories (memories to which the .elf file is downloaded) the software project fails to run on Nios II hardware.

Failure to connect cpu.data_master to all program memories is a design error that the Nios II SBT does not detect.

Workaround / Fix :Connect cpu.data_master to all program memories.

2、还有一个疑问,systemID 为默认的0时能导致以上问题吗?

答:没有影响。

3、关于Nios II中Verify failed between address 0xxxx and 0xxxx错误的解决:

Verifying 000xxxxx ( 0%) Verify failed between address 0xxxxxx and 0xxxxxx Leaving target processor paused, ?% s+ L8 p5 I" K4 \& U) L; {论坛和网络上关于这个问题问的特别多,也是新手常见的一个问题,下面我就这个问题稍微总结一下:) E; e7 o$ P& Z4 l4 v 1. 首先要根据address后面的两个地址判断出错的到底是什么器件。一般情况出现错误的大多是存储器。# a- N- A9 J- c* p0 V% \- W判断的方法是根据sopc中的地址,或者是system.h中的地址,查找相应出错的器件。2. 检查硬件焊接是否正常。, {4 g4 q) ^ 很多时候有些问题是硬件焊接造成的,这个主要针对的是自己焊接的板子,一旦地址数据总线有任何焊接问题,都会出现verify failed错误。

3. 检查sopc中的componet是否正常。' [# F. I7 \ x( M! \/ J如果是自己加入的接口逻辑,这个部分要确认其正常与否。

4. 检查Quartus中的设计:3 q9 b4 P( L* y$ w \5 检查引脚锁定是否正确,必须一一对应,不能有一个错误;! u' C! h' \5 R1 y3 s; 地址对齐问题:针对8、16、32位的外部存储器,对应地址最低位的应该是0、1、2。也就是说如果用16位的

外部存储器,那么它的最低位是ADD[1],而ADD[0]是不用的,其他同理。2 ~* k* H( h9 X) Q( B7 数据总线必须是双向IO 口,这点很容易忽略。如果是SDRAM,需要计算并设定PLL的相移。%& \+ h0 M N' g+ I) T& `- c3 q& W 5. Nios IDE中检查项目设计是否正确。

回复8#残无

我之前也遇到过DownLoad elf failed原因是Qsys builder有问题,download 了CPU没跑起来,所以失败。。。。。。仔细查看Qsys里面的配置与连线问题就解决啦。。

这个我也遇到过,好像是存储器的问题,你可以试一下ON-CHIP MEMORY,或则降低外部MEMORY的频率或调整相位

我当时是降低DDR2的频率就好了

今天也遇到同样问题了,后来仔细检查发现,是PLL的C1的移相-75 REG 选择成PS了,也就是移相应该是-75度,但默认是时间PS。

我遇到的是工程师可以用的,突然就不行了,后来是换个工作区(wokespace)解决的,我用的是12.0EDS

相信很多像我这样喜欢赶潮流的朋友早就在用Win7了。笔者这几天也给自己的爱机装上了Win7,之前一直没装是怕Win7对有的比较旧的开发工具兼容性不好。后来了解到Win7下自带了一个XP兼容模式,貌似挺不错,而且加上之前的使用经历(笔者的笔记本很早之前就装了Win7),觉得Win7确实不错。

笔者装好系统后,接着就折腾着装了一些专业软件。当笔者装完Quartus II 9.1和Nios II EDS 9.1后,当想要在DE2上跑一些自己之前做好的程序时,却发现在Nios II EDS 9.1中“Run As”菜单下的“Nios II Hardware”选项不翼而飞了(如下图)!

这可如何是好?后来就试着改了一下程序的兼容性选项,果然见效了。兼容性设置如下图所示:

设置好后不要忘了点击【确定】或【应用】,使你的设置生效。再次运行Nios II EDS 9.1,“Run As”菜单下的“Nios II Hardware”终于重见天日了!

希望本文能够帮助遇到此问题的朋友。

补充:如果有朋友使用上述方法依然不能找回“Nios II Hardware”选项,可尝试把Nios II EDS 9.1卸载,重新安装一遍后再进行如上的设置。

相关主题
文本预览
相关文档 最新文档