Nios II 学习札记.docx
《Nios II 学习札记.docx》由会员分享,可在线阅读,更多相关《Nios II 学习札记.docx(21页珍藏版)》请在冰豆网上搜索。
NiosII学习札记
NiosII学习札记
1学习平台
1.1软件平台
⏹QuartusII:
V4.0Build214,SP1
⏹SOPCBuilder:
V4.01Build214
⏹NiosII:
V1.0.0Build393
1.2硬件平台
NiosDevelopmentBoard,CycloneEdition
EP1C20F400C7
2参考文献:
《NiosIIDevelopmentKitGettingStartedUserGuide》
文档版本:
May2004
三种类型的CPU核:
NiosII/e,NiosII/s,NiosII/f。
根据文档的指示,上电以后没有所述的现象。
不知是不是有地方出现损坏。
根据文档的指示,把standard.sof通过ByteBlasterII下载到Cyclone中,七段数码管出现“8.8.”。
“Loading”、“Error”、“User”和“Safe”指示灯全部熄灭。
根据文档的指示,生成“HelloWorld”C/C++应用程序,将其运行(使用ByteBlasterII电缆下载)。
出现如图1的对话框。
这个对话框,有两个很奇怪的地方:
⏹提示说,所使用的JTAG下载电缆不为NiosII所支持。
奇怪!
⏹按理应该显示“HellofromNiosII!
”,但奇怪的是什么都没有显示!
在“NiosIIterminalcommunicationdevice”选项中,无论是选“JtagUART”,还是“uart1”;或者是以“RunAs..NiosIIhardware”方式运行,都不能显示正确的字符串。
3参考文献:
《NiosDevelopmentBoardReferenceManual,CycloneEdition》
文档版本:
May2004
3.1Flash存储器
8MB=1Mx8,AM29LV065DU-120REI,与SRAM和网卡共享数据和地址总线。
主要有两个作用:
⏹作为通用可读存储器以及不可挥发存储
⏹容纳Cyclone配置数据
实现Nios参考设计的硬件配置数据预先存储在该Flash存储器中。
这个预先装载的Nios参考设计,一旦装载,可以识别该Flash存储器;并包含可以下载文件(新的Cyclone配置数据,或者嵌入式处理器软件,或兼而有之)到Flash存储器的监控软件。
嵌入式处理器软件包含对特定AMDFlash存储器的写和擦除的子程序。
3.2同步动态存储器(SDRAM)
16MB=4Mx32,MT48LC4M32B2,具备PC100和自刷新功能。
SDRAM控制器外设包含在Nios开发板中,使得处理器可将SDRAM器件当作一个大容量的、可线性寻址的存储器设备。
3.3异步静态存储器(SRAM)
1MB=2x256Kx16,IDT71V416S10PH,被Nios当作通用存储器。
可实现32位宽的存储器子系统。
预装载的Nios参考设计将这些存储器当作连续的1MB、32位宽、零等待主存储器。
3.4UART串口
⏹标识为“Console”,包括UART的所有的信号(DB-9)
⏹标识为“Debug”,仅包含TXD、RXD和GND信号
3.6串行配置器件(EPCS4)
串行的配置器件是一种Flash存储器,具备串行接口,为Cyclone器件存储配置数据。
当上电或需重新配置时重新装载配置数据。
SOPCBuilder包含串行存储器接口部件,允许处理器来访问串行配置存储器。
3.7配置控制器(EPM7128AE)
3.7.1复位电路
从上电复位芯片LT1326获取上电复位信号,并通过内部逻辑分配给其他的板上外设:
网卡、Flash存储器以及连接插座。
3.7.2开始配置
有四种方式来开始对Cyclone器件进行配置:
⏹上电
⏹按下“复位按钮(SW10)”-复位芯片的手动复位
⏹Cyclone将reconfigreq_n驱动为低
⏹按下“ForceSafe”按钮(SW9)
4生成nios_small处理器以及软件编程、调试
4.1建立工程
【1】在d:
\NiosII\Design目录下,建立子目录nios_small。
【2】在Quartus中选择菜单“File->NewProjectWizard...”,设置工程路径为d:
\NiosII\Design\nios_small,设置工程名为nios_small,设置顶层模块名为nios_small。
【3】暂时不加入任何文件。
【4】对EDA工具不作任何的设置。
【5】选择实现器件为Cyclone系列,并将要指定具体型号。
【6】选择器件封装为FBGA-400,速度等级为7,具体信号为EP1C20F400C7。
【7】工程设置情况概览。
【8】按照下表进行管脚定义。
管脚
K5
C4
E14
E13
C14
D14
E12
F12
B3
B14
信号
clk
rst_n
led[0]
led[1]
led[2]
led[3]
led[4]
led[5]
led[6]
led[7]
注意:
所有未使用的管脚必须设置成“三态输入”,如下所示。
4.2使用SOPCBuilder生成nios_small处理器
【1】在Quartus中选择菜单“Tools->SOPCBuilder...”,打开SOPCBuilder。
将系统名设置为“nios_small”,HDL语言选择“Verilog”。
【2】将目标板设置为“UnspecifiedBoard”,器件为Cyclone系列,系统时钟频率为50MHz。
【3】双击左侧“AvalonModules->NiosIIProcessor–AlteraCoporation”,出现如下的对话框。
选择CPU类型为NiosII/e(经济型),可以看到该CPU为32位的RISC的CPU,速度可达6DMIPS,需要600~700个LE,存储器需要2个M4K。
在上面的对话框中选择“JTAGDebugModule”,或直接按“Next”。
出现下面的对话框。
选择“Level1”调试功能,具备“JTAG目标连接”、“软件下载”和“软件断点”的调试功能。
若选择“NoDebugger”,将不能下载和调试软件。
在上面的对话框中选择“CustomInstructions”,或直接按“Next”。
由于没有任何的客户定制指令需要添加,不作任何更改。
最后选择“Finish”,结束对NiosCPU的设置。
并将“cpu_0”改名为“cpu”。
【4】双击左侧“AvalonModules->Memory->On-ChipMemory(RAMorROM)”,出现如下的对话框。
存储器类型选择“RAM(writeable)”,32位位宽,2K字节。
注意在上面的对话框中说到,存储器将用onchip_memory_0.hex进行初始化。
实际上该hex文件存储的就是运行于nios_small的软件执行代码。
最后选择“Finish”,并将“onchip_memory_0”改名为“onchip_memory”。
【5】双击左侧“AvalonModules->Other->PIO(ParellelI/O)”,出现如下的对话框。
8位位宽,仅作为输出端口。
最后选择“Finish”,并将“pio_0”改名为“led_pio”。
结束完上述设置以后,选择菜单“System->Auto-AssignBaseAddresses”自动分配基地址;再选择菜单“System->Auto-AssignIRQs”自动分配中断号。
最后,右侧将出现如下的设置概览。
再选择“More“cpu”Settings”,出现下面的对话框。
从中可以看到CPU复位以后,将从onchip_memory的地址为0x00000800处执行软件代码。
另外还可以看出异常向量位于onchip_memory的地址为0x00000820处。
选择“SystemGeneration”,最后点击按钮“Generate”生成nios_small处理器。
注意:
生成的CPU代码为加密的Verilog代码,不能列出其内容。
当看到下面的对话框时,就表明你已经接近成功了。
4.2生成的nios_smallCPU在Quartus中的使用
【1】SOPCBuilder将自动生成nios_small.bsf,如下图所示。
若在上面的CPU的生成设置中选择的是“NoDebugger”,上图将变成下面的样子。
差别在于信号管脚“E_en_to_the_cpu”,没有看到文档中提到该信号,但从信号名可以猜测该信号的功能为CPU的使能的信号。
实际连接时,可以固定接高,一直使能。
实际上,SOPCBuilder不但生成了原理图的文件,也生成基于Verilog或VHDL的源代码文件(如nios_small.v)。
设计人员可以根据自己的喜好,选择原理图的方式,还是Verilog的方式,或是VHDL的方式,都是可以的。
作者偏爱Verilog这种方式,这仅仅是跟人喜好的问题。
【2】生成顶层设计文件nios_small_top.v,其文件内容如下:
modulenios_small_top(
inputclk,
inputrst_n,
outputreg[7:
0]led
);
nios_smallh_nios_small(
.clk(clk),//系统时钟
.reset_n(rst_n),//系统复位
.E_en_to_the_cpu_0(1'b1),//使能
.out_port_from_the_pio_0(led)//LED端口
);
endmodule
4.3在NiosIIIDE中生成软件代码
【1】在SOPCBuilder的最后的对话框中按下“RunNiosIIIDE”,将进入NiosIIIDE。
【2】选择菜单“File->New->C/C++Application”,将出现下面的对话框。
请参照该对话框内容进行设置。
注意上图右下角中“Details”的描述:
ThisisasimplefreestandingapplicationthatwillrunonanyNiosIIsystemwithanLEDPIOnamed'led_pio'suchasthestandardorfull-featuredhardwareexampledesigns.Itdoesnotusemain()asit'sentrypoint.Instead,itusesalt_main(),analternativeentrypointwhichbypassesallinitialization,atechniquethatcanreduceoverallcodesize.Bewarnedhowever.IfyoumodifythisexampleandtrytocallClibraryfunctionssuchasprintf,t