FPGA报告书.docx

上传人:b****5 文档编号:8350024 上传时间:2023-01-30 格式:DOCX 页数:9 大小:122.95KB
下载 相关 举报
FPGA报告书.docx_第1页
第1页 / 共9页
FPGA报告书.docx_第2页
第2页 / 共9页
FPGA报告书.docx_第3页
第3页 / 共9页
FPGA报告书.docx_第4页
第4页 / 共9页
FPGA报告书.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

FPGA报告书.docx

《FPGA报告书.docx》由会员分享,可在线阅读,更多相关《FPGA报告书.docx(9页珍藏版)》请在冰豆网上搜索。

FPGA报告书.docx

FPGA报告书

 

《基于FPGA嵌入式软件开发》

综合设计报告书

 

设计题目:

uC/OS-II在SOPC中应用

 

设计组

姓名

成绩

组长

陈志智(200611701304)

组员

张楚民(200611701230)

组员

陈国正(200611701302)

组员

洪卓轩(200611701310)

组员

廖威(200611701316)

组员

林森阳(200611701319)

 

提交时间:

2008年6月25日

 

一、设计要求:

以NIOSII软核处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真,IDE环境的软件设计,软件调试等步骤进行嵌入式系统开发,利用uC/OS-II操作系统实现调用LCD、七段数码管和LED显示不同的内容。

二、工作进度要求

周期序号

周期划分

周期名称

周期的主要活动

1

第1~3天

需求分析

对整个系统进行需求分析

3

第4~5天

概要设计

据需求对系统硬件,软件进行概要设计

4

第6~8天

详细设计

据需求对系统硬件,软件进行详细设计

4

第9~12天

编码实现

依据设计进行编码实现

5

第13~14天

软件测试与维护

对软件进行测试

 

三、组员分工

设计者

完成具体工作

(组长)陈志智

综合移植操作系统资料,对操作系统进行移植

林森阳,洪卓轩

对该设计进行需求分析,完成需求分析文档

洪卓轩,廖威

对该设计进行概要设计,完成概要设计文档

张楚民,陈志智

对该设计进行详细设计,完成uc/osii操作系统的移植到DE2板上

陈国正,张楚民

在uc/osii的基础上进行编码

陈志智,陈国正

对该设计的最终实现进行测试

 

四、提交设计报告时间:

2009年6月25日

五、答辩时间:

2009年6月25日

 

题目:

uC/OS-II在SOPC中应用

一、功能描述

二、硬件结构分析和设计

三、软件结构分析和设计

四、问题总结

五、总结

 

功能描述

1.1uC/OS-II描述

嵌入式实时操作系统uC/OS-II是一个非常优秀的实时操作系统RTOS(RealTimeOperatingSystem),其性能已得到广泛认可。

uC/OS-II的特点有:

公开的源代码、可移植、可裁剪、可固化、抢占式内核。

而且uC/OS-II为一个可裁剪的操作系统,可以很方便地根据个人的需求来实现某些功能。

μC/OS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。

uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务。

 

1.2NiosIIIDE描述

NiosIIIDE提供设计者一个充足的niosII开发平台。

niosIIIDE包含MicroC/OS-II实时操作系统,为设计者提供快速地搭建基于niosII处理器的MicroC/OS-II应用程序的能力。

设计者能够在NisoII上实现软核代码的编写。

 

1.3uC/OS-II在SOPC中功能描述

设计是基于可添加的SOPC硬件环境,通过配置SOPC内的IP核,在DE2板上实现调

用LCD、流水灯和LED显示不同的内容。

在SOPC中,需要添加LED,LCD,译码管,系统时间time,flish,sdram等IP核,建立起uC/OS-II能在DE2板上运行的硬件环境,使用NiosIIIDE来嵌入uC/OS-II,通过编写代码来实现uC/OS-II在SOPC的基础上LED,LCD,和译码管这3个任务的调度。

 

硬件结构分析和设计

一.硬件结构分析

1.Altera公司推出的Nios软核CPU是一种可配置的通用精简指令集计算RISC(ReducedInstructionSetComputing)嵌入式处理器。

它可以与各种外设相结合,构成一个定制的可编程片上系统SOPC(SystemonProgramableChip)。

uC/OS-II是一个开放源码的RTOS。

2.Altera公司把uC/OS-II像外设驱动一样作为一个软件模块集成到了NisoIIIDE,本开发设计就是在NisoIIID环境下,不需要修改其原文件对uC/OS-II的配置,通过调用NisoIIIDE所提供的HellouC/OS模板来完成本实验的要求。

3.通过SOPCBuilder实现基于NiosII系统的uC/OS-II所需配置、生成以及NiosII系统相关的控制和软件调试平台的生成。

快速地搭建起uC/OS-II运行所需要的硬件环境。

4.通过使用SOPC技术搭建起的硬件环境,能够运行uC/OS-II系统,并在DE2板上控制LED,七段数码管和LCD

二.硬件结构设计

1.uC/OS-II在SOPC中应用的硬件设计是在SOPCBuilder中进行设计的。

主要添加的IP有CPU,SDRAM,Flish,Tri_state_bridge,Pio,Seg7_lut_8,jtag_uart,time.

CPU选用NisoII/s型内核,resetvector(重置向量)设置为:

cif_flish;exceptionvector(异常向量)设置为:

sdram.

SDRAM的数据总线宽度设置为16bit,其余设置不变。

Flish的地址宽度AddressWidth设置为22bit,数据宽度DataWidth设置为8bit

Time为系统时间,也是必须的外设,period设定为20ms,

Tri_state_bridge三态桥,是Avalon交换结构与片外外设相连的桥梁,全

设置为默认状态。

Pio命名为:

Led_pio,作为流水灯Led的输出信号,数据宽度设为8bit,而类型设定为只输出:

Outputportonly.

LCD设置按照默认设置,命名为:

lcd_display。

Seg7_lut_8设置为默认,命名为:

seven_seg_pio。

整个Nios2的sopc硬件配置如下图所示:

2.在Quartus上设计一个分频器Pll用于处理系统频率,获取硬件工作所需要的频率。

Pll将产生一个时钟脉冲和一个复位检测信号。

 

设计所得的整个工程顶层模块如下图所示:

图中niso主模块中有LCD,LED和数码管输出端口,通过对其进行引脚分配,能实现对外部设备的LED,LCD和数码管的控制。

 

软件结构分析和设计

1.软件结构分析

NisoIIIDE所提供的HellouC/OS模板不需要重写设备驱动程序,通过使用该模板可通过uC/OSII调度任务,uC/OS-II采用的是可剥夺型实时多任务内核,可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。

本次设计就是通过使用任务管理程序实现多任务程序调度,使之能实现LCD,七段数码管和LED的计数功能。

uC/OS-II提供了任务管理的各种函数调用,任务用户函数必须是个无限循环,因为程序执行流是由操作系统内核来改变的,主动把CPU的使用权让让给有需要的任务.

本实验总共有三个任务,优先级分别设为11,12,13(注,ucos中的优先级顺序是小的高,大的低)

voidtask1(void*pdata):

实现LED的计数,主要算法如下:

for(i=0;i<2600;++i){

if(count==0xff)

{

count=0;

}

while(j<100000)

j++;

count++;

/*LogictomaketheLEDscountfromright-to-left,

LSBontheright.*/

IOWR_ALTERA_AVALON_PIO_DATA(

LED_PIO_BASE,

((count*0x0802LU&0x22110LU)|

(count*0x8020LU&0x88440LU))*0x10101LU>>16

);

}

voidtask2(void*pdata):

实现LCD的计数,主要算法如下:

lcd=LCD_OPEN();

if(lcd!

=NULL){

lcd_init(lcd);

}

wait_time=0;

for(i=0;i<1400;++i)

{

wait_time=i/10;

LCD_PRINTF(lcd,"%c%s%ds\n",ESC,ESC_COL2_INDENT5,

wait_time+1);

while(j<10000)

j++;

}

LCD_CLOSE(lcd);

OSTimeDlyHMSM(0,0,13,0);

voidtask3(void*pdata):

实现七段管的计数,主要算法如下;

staticalt_u8segments[16]={

0x81,0xCF,0x92,0x86,0xCC,0xA4,0xA0,0x8F,0x80,0x84,/*0-9*/

0x88,0xE0,0xF2,0xC2,0xB0,0xB8};/*a-f*/

for(i=0;i<400;++i){

if(count==0xff)

{

count=0;

}

j=0;

while(j<100000)

j++;

count++;

unsignedintdata=segments[count&15]|(segments[(count>>4)&15]<<8);

IOWR_ALTERA_AVALON_PIO_DATA(SEVEN_SEG_PIO_BASE,data);

}

OSTimeDlyHMSM(0,0,13,0);

 

问题总结

5.1开发所出注意问题以及解决方法

1)在开发过程中,采用哪种中断机制的问题。

uc/osii本身有中断机制,而niosii也有中断机制。

当NiosII处理器采用自动初始化时,应用程序的运行环境和所有的服务系统都被初始化并准备运行。

如用alt_irq_init(ALT_IRQ_BASE)函数初始化中断控制器。

niosii的另一种启动方式:

用户自定义初始化alt_main()函数则提供了一个独立式的编程环境,能够让用户完全控制系统的初始化。

用这种方式可以实现自行定义的中断方式。

显然niosii提供的中断机制比较容易实现,而采用uc/osii系统的中断机制,则涉及处理器环境切换等更底层的问题。

另一方面,虽然niosii中断机制支持中断嵌套,但由于时间以及水平有限等问题,没有去做更深入的研究,中断嵌套暂未实现。

2)ISR函数限制

isr本身运行于中断背景,因此不能在isr中调用因为等待中断而被挂起的函数。

在实验的过程发现:

很多的HALapi不能在ISR中实现。

所以一开始想用一个按钮(作为中断触发条件)来控制LCD的单独计数,发现不知何从去实现这部分功能,主要受限于isr中函数的限制。

3)架构不合理

学习软件工程的时候知道,一个良好的项目应该分层次。

就基于DE2板的开发项目而言,应该分为硬件层、驱动层以及应用程序层。

在我们这个项目中,没有严格的按照这样的层次,初略的分为软件层和硬件层。

应用程序层和驱动层是没有真正意义上的分出来。

这是我们以后努力的方向。

 

总结

本次设计是在SOPC所配置的硬件环境下实现uC/OS-II任务调度的功能。

通过使用uC/OS-II操作系统实现调用LCD、七段数码管和LED显示计数功能,从而实现了任务之间的调度。

本次设计是将要显示的这三个功能分别封装成3个任务,分别为任务一(task1):

LED灯计数功能(task2);任务二:

LCD液晶屏计数功能(task3);任务三(task3):

七段数码管计数功能。

操作系统根据这三个任务的优先级高低来调用任务来完成任务的内容,当优先级高的任务完成后,就会进入等待状态,同时释放资源,使系统能够调用优先级较低的任务,直到较高优先级的等待延时结束,系统会立刻调用高优先级的任务进行运行。

设计所要的uC/OS-II操作系统不需要移植,只需通过Niso-II调用里面的工程模版就可以了,因为Altera公司已经将该系统集成到Niso软件中,我们就是在这个基础上,通过调用uC/OS-II操作系统内的函数来处理任务间的调用以及任务间的切换。

通过本次设计,是我们对SOPC的应用以及开发的流程有了更进一步的认识,通过SOPC来配置开发所需要的硬件环境,通过配置的方法从而不用考虑外设资源,通过使用Niso软件来编写软核代码,能使开发的难度减低。

在开发的过程中,测试要实现的这三个功能用了许多时间,原因是我们对uC/OS-II这个系统以及我们使用的Niso开发工具还有许多不认识的地方,但是只要我们继续学习这方面的知识,在我们现在已有的基础上添加各个方面的东西,就能够接触到不同领域方面的知识,例如VGA,DM9000等,均能在uC/OS-II中得到实现,这也是我们将来设计的内容之一。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1