SOPC开发

来源:互联网 发布:360数据恢复软件下载手机 编辑:程序博客网 时间:2024/05/20 21:47

SOPC开发

Altera的SOPC开发包括硬件开发和软件开发,硬件即搭建包括CPU的电路结构,软件即通过Nios写CPU中运行的程序。这些内容有我从网上找到的,也有我自己写的。学习SOPC,特别要感谢《NIOSII那些事儿》这本教程和它的作者,我从中学了好多。很感谢黑金动力社区的人,他们能够无条件共享这本教程给大家,也会认真回答你的问题,真的要谢谢他们。

一),硬件开发

1.      建SOPC时基本的内容要添加CPU、存储器SDRAM或FLASH等、JTAGUART、Avalon三态桥、System ID。

我们要建立一个Avalon三态桥,在NIOS系统中,要实现与FPGA片外存储器通信,就必须在Avalon总线和连接外部存储器的总线之间添加一个桥,这个桥就是Avalon三态桥。(连接cfi_flash)

System ID就是一种标示符,类似校验和的这么个东西,在你下载程序之前或者重启之后,都会对它进行检验,以防止错误发生,大家知道这个东西就可以了,没太大的用处,但需要有的。

JTAG UART是实现PC和NiosII系统间的串行通信接口,它用于字符的输入输出,在Nios II的开发调试过程中扮演了重要的角色。

2.      QuartusII中进行设置settings,如下:


3.      在原理图中自动生成引脚,右击模块


4.      利用Tcl分配引脚比较方便,先前先写好TCL文件,到时候建工程时根据TCL文件命名相应的管脚名称和TCL中一样即可。

二),软件开发

每次新建一个软件工程时,要先转换workspace,再新建工程。选择.ptf文件时要注意路径,不要选错了。

1.      系统库的属性:


红圈1处是标准输入(stdin)、标准输出(stdout)、标准错误 (stderr)的设置区,我们在软核中构建了JTAG UART,在此出现效果了吧,如果我们没有构建JTAG UART,那么,这个地方就不会出现jtag_uart选项了。在所红圈2处,这个地方也不需要修改,不过有一个地方需要注意,就是Support C++,这个库相对Small C library要大,如果大家手中的板子没有FLASH,SDRAM这样大容量存储设备的话,选择Small C library,用FPGA内部的SRAM,也可以跑些小程序。再说红圈3处,这个是一些有关内存的选项,我们构建了SDRAM模块,这个地方也用到了, 默认就可以,不用修改。该说红圈4了,点击红圈4后,出现下面界面,这个是对编译器就行配置的界面,大家可以自己观察一下,大部分都不需要修改,我们来看 一下比较重要的地方,点击红圈处。


点击后,我们看看是什么样子,这里有两个关键点,一个是红圈1处,这个地方时配置编 译器的优化级别,红圈2的地方是调试级别。编译器的优化级别会让你的生成的代码更小,当要求也很高,你的代码如果不严谨,有可能优化以后不好用了,大家要 注意。调试级别是你在编译过程中显示编译内容多少,级别越高显示内容的越多,建议将调试级别调到最高。


2.      寄存器操作方式与NIOS II IDE提供的API方式的比较

手册中PIO Core寄存器映射:第一项是数据data,第二项是IO口方向,第三项是中断控制位,第四项是边沿控制位。他们每一项都有n位,这个n就是我们在软核构建中的宽度(width)。


寄存器操作方式:

下面定义了一个结构体,将其命名为PIO_STR,这个结构体的结构是有说法的,它是根据前面的芯片手册来写的。


下面就是根据所定义的结构体的寄存器操作方式。


下面是NIOS II IDE提供的API方式控制LED的PIO口。


3.      注意有软件工程(nios)的例子,不能改路径或所在文件名。如果改了,在Run As时会出现下面错误:


注意下图红框中,可能是因为在建软件工程时,已指定.ptf的地址并且在后面不能改变了。