片上电子信息系统,基于EDA的FPGA,串口通信及串口中断

发布时间 : 星期一 文章片上电子信息系统,基于EDA的FPGA,串口通信及串口中断更新完毕开始阅读

片上电子信息系统 课程设计指导书

一、课程设计目的和要求

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

二、课程设计方式

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

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

三、课程设计任务

任务一

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

头文件

#include \ #include \

参考函数

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 \ #include \#include \

参考函数

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 \ #include \#include \#include \#include \

函数说明

1. XUartLite_SendByte(BaseAddress, Data)

参数说明:

BaseAddress:Uart Lite的基地址 Data:uart发送的8bits数据 无返回值

2. XUartLite_RecvByte(BaseAddress) 参数说明:

BaseAddress:Uart Lite的基地址 返回值:8bits uart接收的数据

2

任务四(选作)

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

头文件

#include \

#include \#include \#include \

函数说明

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的地址。

4 XIntc_mEnableIntr(XPAR_OPB_INTC_0_BASEADDR, \\

XPAR_UART0_INTERRUPT_MASK) ;

INTC 中断允许位设置。参数分别为OPB_INTC的地址和中断掩码。 5 XUartLite_mEnableIntr(XPAR_UART0_BASEADDR); UART本身中断允许。参数为UART地址。

6 XUartLite_mIsReceiveEmpty(XPAR_UART0_BASEADDR)

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

提示:

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

整个流程可以简单归纳为: 1 中断使能 2 注册ISR 3 开中断

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

3

四、课程设计的步骤和进度

时间和进度 第十四周周一 内容 接受课设任务 地点和实验室开放时间 实验室 参加人员和验收方式 9:00-10:00全体学生听课,接受课设任务。 1. 任一检查环节不合格者不得继续进行课程设计,待成绩合格后

第十四周 1.设计并实现任务一和任务二2.验收 实验室8:00-17:00 周五9:00-12:00在实验室验收任务一和任务二。 第十五周 1.设计并实现任务三和任务四(选作)2.撰写课程设计报告 3.答辩 实验室8:00-17:00 周五9:00-12:00在实验室验收任务三和任务四并答辩。 方可进入后续环节。

2. 无故缺席任一检查环节者总成绩不合格。

五、课程设计的考核

编号 1 2 3 4 5 内 容 出勤 实际完成情况 设计报告 答辩 选作部分 评 分 10 30 30 30 加分 六、附录

V5 FPGA试验系统有两个串口,都位于端口J6,建议使用J6下面的接口。其信号的FPGA管脚定义为:

Net fpga_0_RS232_RX_pin LOC= N8; Net fpga_0_RS232_TX_pin LOC= R8;

4

联系合同范文客服:xxxxx#qq.com(#替换为@)