嵌入式系统课程设计基于SOPC的彩灯控制器设计

上传人:新** 文档编号:548167521 上传时间:2023-05-11 格式:DOC 页数:16 大小:819.50KB
返回 下载 相关 举报
嵌入式系统课程设计基于SOPC的彩灯控制器设计_第1页
第1页 / 共16页
嵌入式系统课程设计基于SOPC的彩灯控制器设计_第2页
第2页 / 共16页
嵌入式系统课程设计基于SOPC的彩灯控制器设计_第3页
第3页 / 共16页
嵌入式系统课程设计基于SOPC的彩灯控制器设计_第4页
第4页 / 共16页
嵌入式系统课程设计基于SOPC的彩灯控制器设计_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《嵌入式系统课程设计基于SOPC的彩灯控制器设计》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计基于SOPC的彩灯控制器设计(16页珍藏版)》请在金锄头文库上搜索。

1、各专业全套优秀毕业设计图纸等级:湖南工程学院课 程 设 计课程名称 嵌入式系统课程设计 课题名称 基于SOPC的彩灯控制器设计专 业 电子科学与技术 班 级 1102 班 学 号 2011010402 姓 名 德 指导教师 李 延 平 2014 年 12 月 08 日湖南工程学院课程设计任务书课程名称:嵌入式系统课程设计 题目:基于SOPC的彩灯控制器设计 专业班级: 电科1102 班 学生姓名: 学号: 指导老师:李延平 审 批:任务书下达日期 2014年 11 月 24日设计完成日期 2014年 12月 08日 设计内容与设计要求一 设计内容:采用SOPC技术设计一个彩灯控制器;1、 功能

2、要求1) 配置NIOS II软核系统;2) 在基于Eclipse的Nios 集成开发环境 (IDE)上开发彩灯控制器3) 至少实现8个LED,3种以上的花色。2、 功能扩展自拟二 设计要求:1 设计思路清晰,给出整体设计框图2 NIOS II处理器选择配置合理;3 仿真 、调试、验证电路模块;4 撰写设计报告。目 录1 设计思路12 系统框图13 NiosII软核配置14 原理图设计35 软件设计35.1 工程创建35.2 程序设计45.3 控制流程图45.4 软件调试56 实物演示57 结束语68 参考文献69 附 录81 设计思路完整的基于Nios的SOPC系统是一个软硬件复合的系统,在开

3、发时可以分为硬件和软件两个部分。本设计通过QuartusII软件内置的SOPC Builder定制一个基于NIOS II软核的SOPC系统,加入必要的存储器及IO,然后编写动态扫描程序对PIO进行操作来完成彩灯动态显示的功能。本系统的软件设计在基于Eclipse的Nios 集成开发环境 (IDE)上进行开发,编写彩灯控制器程序,实现8个LED多种样式亮灭的变换。2 系统框图图1 基于NiosII 软核的SOPC彩灯控制系统框图3 NiosII软核配置按照彩灯控制系统框图用SOPC Builder 定制Nios II 系统。本系统包含“CPU、onchip_ROM、onchip_RAM、LED_

4、PIO、CONTROL”。添加NiosII CPU Core 。Nios II 有三种标准:经济型、标准型、全功能型。这里选择经济型。分别添加片内RAM、片内ROM“。添加IO 口,8 位输出,对应开发板上8 个LED;1位输入,对应开发板上的按键。8位输出端口及1位输入端口分别添加到系统中,分别该名称位“LED_PIO”、“CONTROL”(软件开发编程时要与这里模块组件名称一致)。图2 添加所需的组件系统NiosII 所需组件添加完毕,自动分配基地址和中断,生成NiosII.sopcinfo文件。 图 3 自动生成NiosII核成功图4 生成NiosII软核元件符号4 原理图设计由生成的N

5、iosII软核作为主部件,加入时钟输入和复位键和控制键输入,再加上8位的输出(连接8个LED)构成彩灯控制系统的原理图。图5 总原理图5 软件设计5.1 工程创建通过“Nios II Softeare Build Tools for Eclipse”进行彩灯控制系统的软件设计。新建一个“Nios II Application and BSP from Template”工程,选择刚刚生成Nois文件“NiosII.sopcinfo”,即可连接到CPU。Project template选择“Hello World”模板。图6 基于Eclipse的Nios 工程创建5.2 程序设计程序中数据结构定

6、义是与Nois软核定制的组件名一致的。彩灯输出对应PIO组件的“LED_PIO”,连接开发板的led;输入控制对应PIO组件的“CONTROL”,连接开发板上的按键。程序代码见附录。5.3 控制流程图图7 彩灯控制流程图5.4 软件调试通过Eclipse自带的调试工具对程序设置断点进行调试。图8 调试程序6 实物演示 图9 奇偶数位灯间隔亮灭 图10彩灯左移与右移7 结束语通过两周的课程设计对SOPC系统有了更进一步的理解,并了解其设计过程,初步掌握了通过SOPC Build对基于NIOS II软核的SOPC系统的定制。采用SOPC技术设计并实现的芯片是面向特定用户的芯片,它能最大程度满足嵌入

7、式系统的要求,减少了产品设计复杂性和开发成本,缩短了产品开发的时间。因此,SOPC 技术及应用的特点决定它可以为复杂的板上系统提供一种更高效更稳定的解决方案。每一次课程设计都能从中学到可课本上没有的知识,积累一些处理问题的经验。困难是有的,但必须要有耐心,不放弃,慢慢的,最终课程设计还是能成功做出来的,虽然不是很完美。这次的课程设计,前面的NiosII软核的定制还是很顺利的,因为学习过,而且实验也做过多次,但在后面的程序设计就不那么顺利了,多次出错。经过慢慢的调试,最终发现时按键出了问题。第一是按键消抖不合理;第二是按键消抖之后没有松手检导致按键次数出了问题,不能出现预期效果。最终经过不厌倦的

8、调试与修改把程序修改好了,彩灯控制系统可按照要求正常运行起来了!这次课程设计,让我更加清楚的认识到自己知识的局限性,进一步发现了自己的不足,对问题考虑的不周到,也让我找到了前进的方向,为以后的设计又积累了一次经验,相信在将来的设计中一定会设计的更好!8 参考文献【1】 宋彩利,康磊.数字系统设计与SOPC技术.西安交通大学出版社.2012.10【2】 潘松,黄继业,曾毓. SOPC 技术实用教程.清华大学出版社,2004 . 6.【3】 周立功.SOPC嵌入式系统基础教程M.北京航空航天出版社.2006.11.9 附 录彩灯控制系统源代码:#include stdio.h#include sy

9、stem.h#include altera_avalon_pio_regs.h#include alt_types.halt_u8 flag=0;int main(void) _attribute_ (weak, alias(alt_main);int isKeyPress()/判断是否有按键按下if(0 = IORD_ALTERA_AVALON_PIO_DATA(CONTROL_BASE)/usleep(10);/消抖if(0 = IORD_ALTERA_AVALON_PIO_DATA(CONTROL_BASE)/if(0 != IORD_ALTERA_AVALON_PIO_DATA(CON

10、TROL_BASE)/松手检测if(4 = flag)flag = 0;elseflag+;return 0;return 1;void style0(alt_u8 temp)alt_u8 j=0;for(j=0;j2;j+)if(0 = isKeyPress()/判断是否有按键按下break;if(0 = j)temp = 0;IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, temp);usleep(800000);elsetemp = 0xff;IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, temp);usleep(

11、800000);void style1(alt_u8 temp)/奇偶间隔闪亮alt_u8 j=0;for(j=0;j2;j+)if(0 = isKeyPress()/判断是否有按键按下break;if(0 = j)temp = 0x55;IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, temp);usleep(800000);elsetemp = 0xaa;IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, temp);usleep(800000);void style2(alt_u8 temp)/左移 alt_u8 a,b

12、,j=0;temp = 0xfe;for(j=1;j8;j+)if(0 = isKeyPress()/判断是否有按键按下break;a=temp(8-j);IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, (a|b);usleep(800000);void style3(alt_u8 temp)/右移alt_u8 a,b,j=0;temp = 0xfe;for(j=1;jj;b=temp(8-j);IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, (a|b);usleep(800000);void style4(alt_u8 temp)/逐个点亮temp = 0xfe;alt_u8 j=0;for(j=1;j8;j+)if(0 = isKeyPress()/判断是否有按键按下break;IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, temp);usleep(800000);temp = temp 1;int alt_main(void)alt_u8 led = 0;flag = 0;while(1)if(0 = IORD_ALTERA_AVALON_PIO_DATA(CONTROL_BASE)usleep(50);/消抖if(0 = IORD_ALTERA_AVAL

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号