片上系统课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

片上电子信息系统

课程设计指导书

一、课程设计目的和要求

设计一个片上电子信息系统,培养工程实践创新能力。在相关课程知识的拓宽、提高和综合应用的基础,强化培养理论联系实际能力、系统设计能力、实际动手能力。

二、课程设计方式

学生在教师指导下按照设计题目和任务,认真分析、查找资料,按照各阶段基本要求,按时完成各项内容。

十四周:星期二、三下午3:00。。。星期四、五下午9:00

十五周:暂定上午

三、课程设计任务

任务一

在开发板FPGA内部实现一个Microblaze软核,通过对其外设GPIO编程使开发板上的6盏LED灯闪烁。

头文件

#include "xparameters.h"

#include "xgpio_l.h"

参考函数

1.XGpio_mSetDataDirection(BaseAddress, Channel, DirectionMask)

此函数用于设置GPIO的方向。

参数说明:

BaseAddress:GPIO的基地址,可从xparameters.h头文件获得,下同。Channel:GPIO通道(1或者2)选择,针对本实验,此参数固定为1,下同。DirectionMask:GPIO输入输出选择,1选择输入,0选择输出。

无返回值

2.XGpio_mSetDataReg(BaseAddress, Channel, Data)

此函数用于往GPIO置数,GPIO会输出用户设置的数据。

参数说明:

BaseAddress:GPIO的基地址

Channel:GPIO通道(1或者2)选择

Data:写入寄存器的数据

无返回值

任务二

PC机通过串口RS232控制6盏LED灯,如果上位机发送‘1’(char),则LED亮,并且FPGA通过串口给PC机发送字符串“LED ON!”,否则LED灭,FPGA通过串口向PC 机发送字符串“LED OFF!”。//串口助手

头文件

#include "xparameters.h"

#include "xuartlite_l.h"

#include "xgpio_l.h"

参考函数

1.XGpio_mSetDataDirection(BaseAddress, Channel, DirectionMask)

参数说明:

BaseAddress:GPIO的基地址

Channel:GPIO通道(1或者2)选择

DirectionMask:GPIO输入输出选择,‘1’选择输入,‘0’选择输出

无返回值

2.XGpio_mSetDataReg (BaseAddress, Channel, Data)

参数说明:

BaseAddress:GPIO的基地址

Channel:GPIO通道(1或者2)选择

Data:写入寄存器的数据

无返回值

3.XUartLite_SendByte(BaseAddress, Data)

此函数作用是往串口发送数据。

参数说明:

BaseAddress:Uart Lite的基地址

Data:uart发送的8bits数据

无返回值

4.XUartLite_RecvByte(BaseAddress)

此函数作用是从串口接受数据。

参数说明:

BaseAddress:Uart Lite的基地址

返回值:8bits uart接收的数据

任务三

上位机通过串口向FPGA发送不多于4个字符(char)的10进制数,各个数据之间以空格键分隔,以回车键结束。然后在Microblaze内部进行最简单的FIR滤波,将数据与其前一个数据相加,即y(n) = x(n) + x(n-1),然后以字符型的10进制数输出,数据之间依然以空格分隔。

头文件

#include "xbasic_types.h"

#include "xparameters.h"

#include "xstatus.h"

#include "xuartlite.h"

#include "xuartlite_l.h"

函数说明

1.XUartLite_SendByte(BaseAddress, Data)

参数说明:

BaseAddress:Uart Lite的基地址

Data:uart发送的8bits数据

无返回值

2.XUartLite_RecvByte(BaseAddress)

参数说明:

BaseAddress:Uart Lite的基地址

返回值:8bits uart接收的数据

任务四(选作)

在程序的主循环中使LED灯闪烁。同时监听串口中断,如果串口上有接收数据,则把数据转发回PC机串口。需要使用Microblaze中断方式。

头文件

#include "xparameters.h"

#include "xintc.h" // interrupt controller

#include "xuartlite_l.h" // uart

#include "xgpio_l.h" // gpio

函数说明

1 microblaze_enable_interrupts();

使能microblaze全局中断,在程序开头调用。

2 XIntc_RegisterHandler(XPAR_OPB_INTC_0_BASEADDR, \

XPAR_OPB_INTC_0_UART0_INTERRUPT_INTR, \

(XInterruptHandler)uart0_int_handler, \

(void *)XPAR_UART0_BASEADDR);

注册中断处理函数。XPAR_OPB_INTC_0_BASEADDR为OPB_INTC的地址,XPAR_OPB_INTC_0_UART0_INTERRUPT_INTR为中断屏蔽位,uart0_int_handler为中断函

数名,XPAR_UART0_BASEADDR为中断源外设地址。这些宏可从xparameters.h

头文件获得,下同。

3 XIntc_mMasterEnable(XPAR_OPB_INTC_0_BASEADDR);

使能INTC (中断控制器)。参数为OPB_INTC的地址。

4XIntc_mEnableIntr(XPAR_OPB_INTC_0_BASEADDR, \

XPAR_UART0_INTERRUPT_MASK) ;

INTC 中断允许位设置。参数分别为OPB_INTC的地址和中断掩码。

5 XUartLite_mEnableIntr(XPAR_UART0_BASEADDR);

UART本身中断允许。参数为UART地址。

6XUartLite_mIsReceiveEmpty(XPAR_UART0_BASEADDR)

判断UART的数据是否读空。参数为UART地址。返回值1表示已经读空。

提示:

Microblaze会自动完成保护现场、返回时恢复现场等处理,我们主要把精力放在中断处理程序(ISR)的编写即可。

整个流程可以简单归纳为:

1 中断使能

2 注册ISR

3 开中断

可以参考两个文档:Microblaze中断管理.pdf和opb_intc参考.pdf,其中opb_intc 是microblaze中管理中断的外设。

相关文档
最新文档