资源描述
5.4 Nios II 开发实例
5.4.1系统软硬件需求分析(见ppt)
根据所用到的外设和器件特性,在Qsys中建立系统要添加的模块如下:
(l)Nios Ⅱ 32 bit CPU。
(2)Jtag uart。
(3)on-chip memory。
(4)定时器 timer。
(5)按键PIO。
(6)LCD PIO。
5.4.2 系统硬件设计
1.创建一个Quartus Ⅱ工程
在Quartus Ⅱ软件中,利用创建工程向导新建工程clock,根据所用开发板类型选择相应器件,本例所用的是台湾友晶科技的DE2-115开发板,开发板上的FPGA器件为Cyclonc IV E系列EP4CE115F29C7芯片。在QuartusⅡ中选择该芯片,如图5 .31所示。
File->New 选Project
工作目录:D:/altera_design/my_clock
工程名:my_clock
Page 2 of 5
Page 3 of 5
Page 4 of 5
Page 5 of 5
点finish
2.创建NiosⅡ系统模块
(1)启动Qsys
①在Quartus Ⅱ中选择菜单Tools®Qsys命令,或者直接点击上具栏中Qsys的图标弹出如图5.32所示的Qsys界面。
②点击Clock Setting进行时钟设置,这里设为默认值,即50M,如图5.33所示。
13.1中View->Clock
(2)添加CPU和外围器件。从Qsys的元件池中选择以下元件加入到当前设计的系统中:
Nios Ⅱ32 bit CPU、jtag uart、片上存储器on-chip memory、定时器、按键PIO、LCD。
①添加Nios Ⅱ32 bit CPU。
a. 在Embedded Processors模块下,选择Nios ⅡProcessor。
b. 双击或点击Add,会出现Nios Ⅱ的设置向导(名为nios2_qsys_0)。
e.在Nios Ⅱ Core栏中选择Nios Ⅱ /S选项,如图5.34所示。
d.点击Caches and Memory Interfaces标签页,在Instruction Cache中选择4Kbytes,如图5.35所示。
e. 点击JTAG Debug Module标签页,Debug level选择Level 1,如图5.36所示。
f. 点击Finish回到Qsys界面。
g. 将nios2_qsys_0重命名为cpu,如图5.37所示。
选Rename ,输入cpu
h. 将cpu的clk和reset_n分别与系统时钟clk_0的clk和clk_reset相连,如图5.38所示。
注意:对模块命名时应遵循以下规则:
名字最前面应该使用英文。
能使用的字符只有英文字母、数字和下划线“_”。
不能连续使用下划线“_”符号,在名字的最后也不能使用下划线“_”。
②添加JTAG UART接口
JTAG UART是NiosⅡ系统嵌入式处理器新添加的接口元件,通过内嵌在Altera FPGA内部的JTAG电路,可实现在PC主机和Qsys系统之间进行串行字符流通信。
a. 在Qsys左侧的搜索栏中输入JTAG UART;
选择Interface protocols®Serial®JTAG UART并双击,或点击Add按钮,会出现JTAG UATT-jtag_uart_0的设置向导,如图5.39所示。
b. 系统其他选择默认设置,点击JTAG UART设置向导Finish按钮,返回Qsys窗口。
c. 将jtag_uart_0重命名为jtag_uart。
d. 进行clk、reset以及master-slave的连线,如图5 .40所示。
③添加定时器
定时器对于HAL系统库中器件的驱动非常有用。比如JTAG UART驱动使用定时器来实现10秒钟的暂停。添加定时器执行以下步骤:
a. 在Qsys搜索栏中输入timer,选择
Peripherals下Microcontroller peripherals下的interval timer并双击鼠标左键,或点击Add按钮,会出现Avalon Timer-timer_0的设置向导,如图5.41所示。
b.在设置向导的Timeout Period选项中选择1 ms,其他选项保持默认设置。
c.点击Finish按钮,返回Qsys窗口。
e. 将timer_0重命名为system_timer。
f. 进行clk、reset和s1的连线,连线如图5 .42所示。
④添加片上存储器on-chip memory
a. 在Qsys搜索栏中输入On-Chip Memory,
选择Memories and Memory controllers下On-Chip下On-Chip Memory(RAM or ROM)并双击鼠标左键,或点击Add按钮,会出现On-Chip Memory(RAM or ROM)-onchip_memory2_0的设置向导,如图5 .43所示。
b. Memory type选择RAM,Total memory size选择102400(100K)。
c. 点击Finish按钮,返回Qsys窗口。
d.进行clk1、reset1和s1的连线,连线如图5.44所示。
⑤添加Button PIO
a. 在Qsys搜索栏中输入pio,
选择peripherals®Mierocontroller peripherals®pio并双击鼠标左键,或点击Add按钮,会出现PIO(Parallel I/O)-pio_0的设置向导,如图5 .45所示。
b. 确定以下选项:Width为4bits,Direction选择Input。
c. 在Edge captue register 选取Synehronously capture, Edge Type选择FALLING。
d.在Interrupt下选择Generate IRQ,IRQ Type选择EDGE。
e.设置完成,如图5.45所示。点击Finish按钮,返回Qsys窗口。
f. 将pio_0重命名为button_pio。
g. 进行clk、reset和s1的连线,连线如图5.46所示。
⑥添加LCD
a. 在Qsys搜索栏中输入lcd,
选择Peripherals ®Display®Altera Avalon LCD 16207并双击鼠标左键,或点击Add按钮,会出现Altera Avalon LCD 16207-lcd_16207_0的设置向导。
b. 直接点击Finish,返回Qsys窗口。
c. 将Icd_16207_0重命名为lcd。
d. 进行clk、reset和control_slave的连线,连线如图5.47所示。
(3)指定基地址和分配中断号
①Qsys会给所添加的系统模块分配默认的基地址。
设计者可以更改Qsys分配给系统模块基地址的默认值。
没有分配给系统模块基地址时Address Map标签页中显示
在Qsys中选择菜单System->Auto Assign Base Adderss命令。
Auto Assign Base Address可以使Qsys给其他没有锁定的地址重新分配地址,从而解决地址映射冲突问题。
图5.48所示的Address Map标签页中显示了完整的系统配置及其地址映射。
②中断号的分配
本实例工程中用到了定时器和按键两个中断,根据系统功能,已知按键中断优先级要高于定时器中断,这里将定时器中断优先级设为6,按键中断优先级设为5。
具体设置方法是:先将定时器中断与cpu中断连接,用鼠标右键点击system-timer,选择connections®System_timer.irq®cpu.d_irq,如图5.49所示;
然后在其后面自动生成的中断号“0”上双击鼠标左键,将其修改为“6”。按键中断的设置与此类似,最终中断分配后如图5.50所示。
考虑Jtag-uart中断
此时尚有2个错误
(4)Nios Ⅱ处理器参数设置
在Qsys的System Contents标签页中,在添加的Nios Ⅱ处理器上双击鼠标左键,弹出如图5.51所示的Nios Ⅱ Processor对话框,
在该界面中设置Reset Vector和Exception vector。
由于本例中Nios Ⅱ的程序存储器和程序执行区均为片上RAM,因此这里Reset Vector和Exception Vector均选择片上存储器onchip_memory2_0.s1。(错误消失了)
实际工程中可以根据需要将Reset Vector指定为系统中添加的Flash控制器,将Exception Vector指定为系统中添加的SDRAM控制器。
点击Finish按钮返回到Qsys界面,可以看到所有Qsys系统错误都消失了。
(5)生成系统模块
①在Qsys界面中选择Generation标签页,如图5 .52所示。
应该是:在Generate菜单下选择Generate…
②在Generation标签页中进行系统生成前最后一步的设置,该工程中均使用默认设置。
③点击左下角Generate按钮。Qsys根据用户设定的选项不同,在生成的过程中执行的操作过程将有所不同。
点save
生成过程
生成完毕
点close
④系统成功产生后,可点击菜单File®Exit命令退出Qsys。
3.在原理图(BDF)文件中添加Qsys生成的系统符号
在Qsys系统成功产生后会生成用户系统模块的元件符号(symbol),可以像添加其他QuartusⅡ的元件符号一样将其添加到当前项目的原理图(B DF)文件中。
在本例中就可将生成的clock系统元件符号添加到BDF文件中。步骤如下:
File->New 选Block Diagram/Schematic File,结果如下图所示:
(1) 双击BDF文件窗口,出现Symbol对话框,如图5.53所示。
(2)在对话框中点击Project目录。
(3)在project下选择clock,会出现代表所建立的NiosⅡ系统的元件符号。
(4)点击OK,将其放入BDF文件中。
(5)将clock与输入、输出接口相连。
(6)右击该图标,选择Generate Pins for symbol Ports,
然后编译工程。
(7)分配引脚,完成系统的硬件设计,如图5.54所示。
Assignment->Pin Planner
分配引脚如下:
选processing->Start I/O Assignment Analysis
结果有9个错误
删除前4个引脚的分配
再进行processing->Start I/O Assignment Analysis
结果错误消失。
选close退出pin planner。可见引脚都已经分配。
4.编译Quartus Ⅱ的工程设计文件
选择菜单Processing®start Compilation命令对工程设计文件进行完全编译。
最后一步由于没有license而无法完成。
5.配置FPGA(返回教材和ppt)
将QuartusⅡ编译后产生的FPGA配置文件(clock.sof)下载到目标板上。
展开阅读全文