实验五nios系统设计交通灯DE190版.docx
《实验五nios系统设计交通灯DE190版.docx》由会员分享,可在线阅读,更多相关《实验五nios系统设计交通灯DE190版.docx(19页珍藏版)》请在冰豆网上搜索。
实验五nios系统设计交通灯DE190版
《基于软核技术的嵌入式系统设计》
实验五(上)、NiosII系统设计——电子钟
北京交通大学计算机学院
教师:
丁晓明
本实验指导书演示了NiosII系统的硬件设计,软件设计,能实现一个交通灯功能。
本实验在前面实验的基础上,同学已经能熟练的使用QuartusII软件和模块化输入方法。
本实验主要包括SOPCBuilder,NiosIIIDE,QuartusII的使用,主要目的在于指导同学学习如何定制一个NiosII硬件系统和如何在此基础上编写软件程序。
实验条件:
CycloneEP2C20教学套件
QuartusII9.0
SOPCBuilder9.0
NiosII9.0
NiosIIIDE
在本实验中,我们将以CycloneEP2C20学习板为平台,介绍开发一个交通控制灯的软、硬件方案设计,涉及到的代码,只需要按照实验指导书将代码拷贝到工程文件夹中即可。
系统软、硬件需求分析,
1.该系统要实现的功能:
(1).在数码管上显示交通控制灯的时间
(2).显示交通控制灯,使用开发板上的4个LED来演示
2.硬件系统组成规划
根据系统要实现的功能和开发板配置,本项目中需要用到的CycloneⅡ上的外围器件有:
数码管:
交通控制灯时间显示屏幕
LED:
交通控制灯
Flash存储器:
存储软、硬件程序
SRAM存储器:
程序运行时将其导入SRAM
根据所用到的外设和器件特性,在SOPCBuilder中建立系统要添加的模块包括:
NiosIICPU,数码管,外部RAM总线(Avalon三态桥),外部RAM接口,外部Flash接口,SDRAM。
3.软件系统规划
要实现系统所需的功能,大量的工作应该集中在软件设计和优化上。
电子钟的软件功能主要分为显示、设置和时间算法三大部分。
1.显示部分
显示部分的功能包括:
(1).显示交通控制灯改变的剩余时间(秒)
(2).显示当前闪亮的交通灯
2.LED部分
LEDR1:
相当于红灯
LEDR0,LEDG7:
相当于黄灯
LEDG6:
相当于绿灯
3.时间部分
时间累加,红灯闪亮时间为30秒,黄灯闪亮时间为10秒,绿灯闪亮时间为60秒
通过对软件要完成的功能进行分析可以看出,这里只有LED和显示部分需要涉及硬件,其它子程序可在进行硬件设计的同时开始编写。
4.软件流程图
实验内容:
1.系统硬件
(1)首先将DE1_traffic文件里的文件全部拷贝到一个空文件夹下,可以用自己的学号定义。
然后双击DE1_NIOS.qpf文件打开工程。
(2)然后点击Tools->SOPCBuilder,进入SOPCBuilder,运行SOPCBuilder.
(3)给要设计的系统模块命名,此处我们命名为system_0;TargetHDL项,选择VHDL,指定设计中各模块生成的HDL类型,命名完毕,点击OK。
(4)Clock为100MHz,TargetDeviceFamily为cycloneⅡ,clk_0改为clk。
(5)双击AvalonComponents→NiosIIProcessor,添加一个NiosII/f处理器
InstructionCathe:
4KB
JTAG调试模块等级:
Level1
然后点击Finish。
(6)添加JTAGUART,在interfaceprotocols/serial选项卡下选择CreateModelSimaliastoopenawindowshowingoutputasASCIItext,其他设置保持默认状态,如下图。
(7)添加(RS-232serialport)uart_0,选择默认设置。
(8)添加自定义外设sram,并改名为sram_0.
(8)添加EPCSserialflashcontroller,改名为epcs_controller。
(9)添加Flash存储器,地址宽度22bits,其它使用默认设置。
(10)添加avalone-MMtriStateBridge,设置为register,命名为tri-state-bridge0.
将flash存储器链接到(tri-states-bridge)三态桥
然后双击tri-states-bridge_0模块,并进行如下选择:
(11)添加SDRAM,按下图进行设置。
(12)添加一组PIO(ParallelI/O),选择默认设置,并改名为LEDG
相同方法添加另一组PIO(ParallelI/O),命名为LEDR:
(13)添加User_logic中的SEG7_LUT_4,命名为SEG7。
双击cpu_0模块,并进行如下设置:
然后选择System→Auto-AssignBaseAddresses,为各模块自动分配地址;再选择Auto-AssignIRQs,自动分配中断顺序。
最后系统整体配置如下图所示:
在System选项栏中,选中HDL选项,点击Generate生成系统
(20)SOPCBuilder完成,提示成功生成系统,点击Exit。
下图即为我们上面所生成的CPU的原理图
(24)点击编译工程。
2.系统软件
(1).首先打开NiosIIIDE,选择开始菜单下所有程序中的Altera→NiosIIEDS6.0→NiosIIIDE。
路径设到各自实验工程的software文件夹,若不存在,新建此文件夹。
(2).选择File→New→Project创建新的软件工程,选择C/C++Application,点击next。
并命名为clock,在目标硬件(TargetHardware)选项中指定为刚才完成的设计文件(nios2.ptf),并选用BlankProject作为模板
(3).点击Next,为刚创建的软件工程建立新的系统库(systemlibrary)
(4).将traffic.h和traffic_light.c拷贝到刚才建好.\software\traffic文件夹下,并在niosIDE中右键traffic,refresh下一:
(5).双击打开clock.c文件,浏览阅读代码
(6).编译程序,鼠标右键单击软件工程clock,选择BuildProject,由于第一次编译程序,NiosIIIDE会根据硬件配置和编译器配置生成很多库文件,所以时间比较长。
(7).将FPGA配置文件下载到Stratix芯片上,点击Tools->QuartusIIProgrammer
选择QuartusII生成的硬件工程配置文件.sof文件,并选中Program/Configure选项,点击Start。
(9).编译通过后的程序可以下载到芯片上运行,点击Run->Run..
在TargetConnection界面如下设置,其他保持默认设置。
如果对应列表中没有相应器件,请点击refresh。
设置完毕,点击apply。
(10).然后点击run,观察程序运行情况。
在LCD上有相应显示。
思考:
更改程序,填加秒表功能,要求能精确到百分之一秒。