1、Nios II 学习札记Nios II 学习札记1 学习平台1.1 软件平台 Quartus II: V4.0 Build 214, SP 1 SOPC Builder: V4.01 Build 214 Nios II: V1.0.0 Build 3931.2 硬件平台Nios Development Board, Cyclone Edition EP1C20F400C72 参考文献: Nios II Development Kit Getting Started User Guide 文档版本: May 2004三种类型的CPU核: Nios II/e, Nios II/s, Nios II
2、/f。 根据文档的指示,上电以后没有所述的现象。不知是不是有地方出现损坏。 根据文档的指示,把standard.sof通过ByteBlasterII下载到Cyclone中,七段数码管出现“8.8.”。“Loading”、“Error”、“User”和“Safe”指示灯全部熄灭。 根据文档的指示,生成“Hello World”C/C+应用程序,将其运行(使用ByteBlasterII电缆下载)。出现如图1的对话框。这个对话框,有两个很奇怪的地方: 提示说,所使用的JTAG下载电缆不为Nios II所支持。奇怪! 按理应该显示“Hello from Nios II!”,但奇怪的是什么都没有显示!在
3、“Nios II terminal communication device”选项中,无论是选“Jtag UART”,还是“uart1”;或者是以“Run As . Nios II hardware”方式运行,都不能显示正确的字符串。3 参考文献: Nios Development Board Reference Manual, Cyclone Edition 文档版本: May 20043.1 Flash存储器 8MB = 1M x 8,AM29LV065DU-120REI,与SRAM和网卡共享数据和地址总线。 主要有两个作用: 作为通用可读存储器以及不可挥发存储 容纳Cyclone配置数据
4、实现Nios参考设计的硬件配置数据预先存储在该Flash存储器中。这个预先装载的Nios参考设计,一旦装载,可以识别该Flash存储器;并包含可以下载文件(新的Cyclone配置数据,或者嵌入式处理器软件,或兼而有之)到Flash存储器的监控软件。嵌入式处理器软件包含对特定AMD Flash存储器的写和擦除的子程序。3.2 同步动态存储器(SDRAM)16MB = 4M x32,MT48LC4M32B2,具备PC100和自刷新功能。 SDRAM控制器外设包含在Nios开发板中,使得处理器可将SDRAM器件当作一个大容量的、可线性寻址的存储器设备。3.3 异步静态存储器(SRAM) 1MB =
5、2 x 256K x 16,IDT71V416S10PH,被Nios当作通用存储器。可实现32位宽的存储器子系统。预装载的Nios参考设计将这些存储器当作连续的1MB、32位宽、零等待主存储器。3.4 UART串口 标识为“Console”,包括UART的所有的信号(DB-9) 标识为“Debug”,仅包含TXD、RXD和GND信号3.6 串行配置器件(EPCS4) 串行的配置器件是一种Flash存储器,具备串行接口,为Cyclone器件存储配置数据。当上电或需重新配置时重新装载配置数据。 SOPC Builder包含串行存储器接口部件,允许处理器来访问串行配置存储器。3.7 配置控制器(EP
6、M7128AE)3.7.1 复位电路 从上电复位芯片LT1326获取上电复位信号,并通过内部逻辑分配给其他的板上外设: 网卡、Flash存储器以及连接插座。3.7.2 开始配置 有四种方式来开始对Cyclone器件进行配置: 上电 按下“复位按钮(SW10)”- 复位芯片的手动复位 Cyclone将reconfigreq_n驱动为低 按下“Force Safe”按钮(SW9)4 生成nios_small处理器以及软件编程、调试4.1 建立工程【1】在d:NiosIIDesign目录下,建立子目录nios_small。【2】在Quartus中选择菜单“File - New Project Wiz
7、ard.”,设置工程路径为 d:NiosIIDesignnios_small,设置工程名为nios_small,设置顶层模块名为nios_small。【3】暂时不加入任何文件。【4】对EDA工具不作任何的设置。【5】选择实现器件为Cyclone系列,并将要指定具体型号。【6】选择器件封装为FBGA-400,速度等级为7,具体信号为EP1C20F400C7。【7】工程设置情况概览。【8】按照下表进行管脚定义。管脚K5C4E14E13C14D14E12F12B3B14信号clkrst_nled0led1led2led3led4led5led6led7 注意: 所有未使用的管脚必须设置成“三态输入”
8、,如下所示。4.2 使用SOPC Builder生成nios_small处理器【1】在Quartus中选择菜单“Tools - SOPC Builder.”,打开SOPC Builder。将系统名设置为“nios_small”,HDL语言选择“Verilog”。【2】将目标板设置为“Unspecified Board”,器件为Cyclone系列,系统时钟频率为50MHz。【3】双击左侧“Avalon Modules - Nios II Processor Altera Coporation”,出现如下的对话框。选择CPU类型为Nios II/e(经济型),可以看到该CPU为32位的RISC的C
9、PU,速度可达6DMIPS,需要600700个LE,存储器需要2个M4K。在上面的对话框中选择“JTAG Debug Module”,或直接按“Next”。出现下面的对话框。选择“Level 1”调试功能,具备“JTAG目标连接”、“软件下载”和“软件断点”的调试功能。若选择“No Debugger”,将不能下载和调试软件。 在上面的对话框中选择“Custom Instructions”,或直接按“Next”。由于没有任何的客户定制指令需要添加,不作任何更改。 最后选择“Finish”,结束对Nios CPU的设置。并将“cpu_0”改名为“cpu”。【4】双击左侧“Avalon Module
10、s - Memory - On-Chip Memory(RAM or ROM)”,出现如下的对话框。存储器类型选择“RAM(writeable)”,32位位宽,2K字节。注意在上面的对话框中说到,存储器将用onchip_memory_0.hex进行初始化。实际上该hex文件存储的就是运行于nios_small的软件执行代码。最后选择“Finish”,并将“onchip_memory_0”改名为“onchip_memory”。【5】双击左侧“Avalon Modules - Other - PIO(Parellel I/O)”,出现如下的对话框。8位位宽,仅作为输出端口。最后选择“Finish”
11、,并将“pio_0”改名为“led_pio”。结束完上述设置以后,选择菜单“System - Auto-Assign Base Addresses”自动分配基地址;再选择菜单“System - Auto-Assign IRQs”自动分配中断号。最后,右侧将出现如下的设置概览。 再选择“More “cpu” Settings”,出现下面的对话框。从中可以看到CPU复位以后,将从onchip_memory的地址为0x00000800处执行软件代码。另外还可以看出异常向量位于onchip_memory的地址为0x00000820处。 选择“System Generation”,最后点击按钮“Gene
12、rate”生成nios_small处理器。注意: 生成的CPU代码为加密的Verilog代码,不能列出其内容。 当看到下面的对话框时,就表明你已经接近成功了。4.2 生成的nios_small CPU在Quartus中的使用【1】SOPC Builder将自动生成nios_small.bsf,如下图所示。 若在上面的CPU的生成设置中选择的是“No Debugger”,上图将变成下面的样子。 差别在于信号管脚“E_en_to_the_cpu”,没有看到文档中提到该信号,但从信号名可以猜测该信号的功能为CPU的使能的信号。实际连接时,可以固定接高,一直使能。 实际上,SOPC Builder不但
13、生成了原理图的文件,也生成基于Verilog或VHDL的源代码文件(如nios_small.v)。设计人员可以根据自己的喜好,选择原理图的方式,还是Verilog的方式,或是VHDL的方式,都是可以的。作者偏爱Verilog这种方式,这仅仅是跟人喜好的问题。【2】生成顶层设计文件nios_small_top.v,其文件内容如下:module nios_small_top(input clk,input rst_n,output reg 7:0 led);nios_small h_nios_small( .clk (clk ), / 系统时钟 .reset_n (rst_n ), / 系统复位
14、.E_en_to_the_cpu_0 (1b1 ), / 使能 .out_port_from_the_pio_0 (led ) / LED端口);endmodule4.3 在NiosII IDE中生成软件代码【1】在SOPC Builder的最后的对话框中按下“Run Nios II IDE”,将进入NiosII IDE。【2】选择菜单“File - New - C/C+ Application”,将出现下面的对话框。请参照该对话框内容进行设置。 注意上图右下角中“Details”的描述:This is a simple freestanding application that will r
15、un on any Nios II system with an LED PIO named led_pio such as the standard or full-featured hardware example designs. It does not use main() as its entry point. Instead, it uses alt_main(), an alternative entry point which bypasses all initialization, a technique that can reduce overall code size. Be warned however. If you modify this example and try to call C library functions such as printf, t
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1