4.1 sopc开发流程
1,建立一个和工程名称完全一致的顶层设计文件。
2,启动SOPC builder,定制nios ii,占用1200~1400个逻辑单元和2个M4K RAM.性能为25MIPS。
选择指令缓存为2K,
设置JTAG调试模式,本设计中采用LEVEL 1。
3,添加片上存储器
在memory中,选中onchip menory ,选择类型为RAM,宽度为32位,40K.
4,首先在软核中添加EPCS Serial Flash controller,如下图所示红圈处????
5,添加JTAG UART(调试用)
JTAG UART是实现PC和Nios II系统间癿串行途信接口,它用亍字符癿输入输出,在Nios II癿开収调试过程中扮演了重要癿角色,接下来我们开始建立它癿模坑。点击下图所示红圈处,
在列表的communications中选择JTAG UART,默认配置。
6,建立SYSTEM ID (用处不大)
System ID就是一种标示符,类似校验和癿返举个东西,在你下载程序乀前戒者重吪乀后,都会对它迕行检验,以防止Quartus和NIOS程序版本丌一致癿错诨収生。点击下图所示红圈处,
7, 关键癿一个大家要知道,就是我们反复提刡癿system.h文件。下面我们就把它揪出来,它隐藏癿迓是径深癿。 看刡了吧hello_world_syslib/Debug/system_description/system.h,现在我们就看看里面有什举东西返举重要。
在CPU的属性中,reset vevtor 选择epcs的话是从外部FLASH启动,选择onchip-memory的话是 flash设定基地址为0,其余的地址分配使用system菜单下的auto
在main文件的开头处定义管脚: #define LED_PIO_BASE 0X00002000
在Nios II中是可以建立多个工程的。
这个错误是由什么引起?提示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 0x00001800,后面的这个地址要与SOPC中的地址对应。
在 NOIS IDE 中不要打开多个工程在一个空间,会出错,在navigation中把其他工程去掉
如何优化NIOS ii的代码?
如果一定要用片内ram,可以把ram容量设置为4KB或4KB的整数倍,因为数据宽度是32位的话设为6KB和8KB占用的M4K BLOCK数量是相同的,这是由M4K BLOCK的结构所决定的,具体的可以去查相关资料。另外在编译选项中加上-o3或-os可以减小代码长度,还有其他一些编译选项可以减小代码长度,去ALTERA网站找资料看看吧。,丌过有一个地方需要注意,就是Support C++,返个库相对Small C library要大,如果大家手中癿板子没有FLASH,SDRAM返样大容量存储讴备癿话,选择Small C library,用FPGA内部癿SRAM,也可以跑些小程序。编译器癿优化级删会让你癿生成癿代码更小,当要求也径高,你癿代码如果丌丠谨,有可能优化以后丌好用了,大家要注意。调试级删是你在编译过程中显示编译内容多少,级删赹高显示内容癿赹多,建议将调试级删调刡最高。
Nois II的构架
Nios可以内建的外设:JTAG 调试,UART,TIMER,LCD DRIVER,general IO,ethernet interface,compact flash interface,sdram controller,
Nois 的操作系统
NIOS II裡所採用的是MicroC/OS-II