欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

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

    • 资源ID:5025455       资源大小:1.19MB        全文页数:38页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    片上电子信息系统课程设计指导书一、课程设计目的和要求 设计一个片上电子信息系统,培养工程实践创新能力。在相关课程知识的拓宽、提高和综合应用的基础,强化培养理论联系实际能力、系统设计能力、实际动手能力。二、课程设计方式 学生在教师指导下按照设计题目和任务,认真分析、查找资料,按照各阶段基本要求,按时完成各项内容。十四周:星期二、三下午3:00。星期四、五下午9:00 十五周:暂定上午三、课程设计任务l 任务一 在开发板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:写入寄存器的数据无返回值l 任务二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接收的数据l 任务三上位机通过串口向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接收的数据l 任务四(选作)在程序的主循环中使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的地址。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中管理中断的外设。四、课程设计的步骤和进度时间和进度内容地点和实验室开放时间参加人员和验收方式第十四周周一接受课设任务实验室9:00-10:00全体学生听课,接受课设任务。第十四周1.设计并实现任务一和任务二2.验收 实验室8:00-17:00周五9:00-12:00在实验室验收任务一和任务二。第十五周1.设计并实现任务三和任务四(选作)2.撰写课程设计报告 3.答辩实验室8:00-17:00周五9:00-12:00在实验室验收任务三和任务四并答辩。1. 任一检查环节不合格者不得继续进行课程设计,待成绩合格后方可进入后续环节。 2. 无故缺席任一检查环节者总成绩不合格。五、课程设计的考核编号内 容评 分1出勤102实际完成情况303设计报告304答辩305选作部分加分六、附录 V5 FPGA试验系统有两个串口,都位于端口J6,建议使用J6下面的接口。其信号的FPGA管脚定义为:Net fpga_0_RS232_RX_pin LOC= N8;Net fpga_0_RS232_TX_pin LOC= R8;课 程 设 计 报 告课程名称_片上电子信息系统_指导教师 _那云虓_王晓飞_系 别 _ 光电学院_ 专 业 电子信息工程_ 学生姓名 _ _ _ 班级/学号 _ 成 绩 _目 录1. 课程设计概述31.1 课程设计目的和要求31.2 课程设计方式32. 课程设计任务42.1 任务一42.1.1 实验目的42.1.1 实验内容42.1.3 实验步骤及程序42.2 任务二162.2.1 实验目的162.2.1 实验内容162.2.3 实验步骤及程序172.3 任务三202.3.1 实验目的202.3.1 实验内容202.3.3 实验步骤及程序202.4 任务四252.4.1 实验目的252.4.1 实验内容252.4.3 实验步骤及程序253. 课程设计总结341. 课程设计概述1.1 课程设计目的和要求设计一个片上电子信息系统,培养工程实践创新能力。在相关课程知识的拓宽、提高和综合应用的基础,强化培养理论联系实际能力、系统设计能力、实际动手能力。1.2 课程设计方式学生在教师指导下按照设计题目和任务,认真分析、查找资料,按照各阶段基本要求,按时完成各项内容。2. 课程设计任务2.1 任务一2.1.1 实验目的:在开发板FPGA内部实现一个Microblaze软核,通过对其外设GPIO编程使开发板上的6盏LED灯闪烁。2.1.2 实验内容:建立一个包含下列IP的处理器系统:1、MicroBlaze2、LMB BRAM controllers for BRAM3、BRAM4、PLB bus5、MDM (MicroBlaze Debug Module)6、UART7、GPIO (LEDs)8、Timer,为系统定时器2.1.3 实验步骤:1、编写硬件环境1、双击 Xilinx Platform Studio 图标启动 XPS2、选择Base System Builder wizard然后指定项目目录和项目文件名字。 3、 点击 OK 进入欢迎界面,如下图选择。随后进入 Select Board 对话框,选择 I would like to create a system for a custom board4、 点击 Next 进入 Selection Processor 对话框 选择virtex5、xc5vlx50t、ff1136、-1,选择 MicroBlaze 作为处理器。5、 点击 Next 进入 Configure MicroBlaze Processor 对话框如下选择· Processor Clock Frequency: 20 MHz· Processor-BusClock Frequency: 20 MHz· Debug Interface: On-chip H/W debug module· Local Data and Instruction Memory: 16 KB· Reset Polarity: active low· Cache Enabled: unchecked进入Configure IO Interface, 添加URAT(RS232), GPIO(LEDs) 两个外部设备。6、如下图配置外围 。7、点击 Next 进入 Add Internal Peripheral 对话框8、直接点击Next 进入Software Setup 对话框标准输入和输出设备都选择RS232,Memory test 和Peripheral selftest 都不必选。9、 点击 Next 进入 System Created 对话框10、 点击 Generate 进入congratulations 界面,指出 BSB 产生的文件,点击Finish 完成项目的建立。 11、 点击Bus Interfaces TAB,双击xps_timer_0进入配置IP对话框,在User Tab中勾选Only One Timer is present。图2-8 配置定时器配置定时器的地址,过程同SW。配置完成后地址应无冲突。图2-9 配置地址2、UCF File管脚分配定义和.c文件的编写UCF File管脚分配如下:# This system.ucf file is generated by Base System Builder based on the# settings in the selected Xilinx Board Definition file. Please add other# user constraints to this file based on customer design specifications.# Net sys_clk_pin LOC=;# Net sys_rst_pin LOC=;# System level constraintsNet sys_clk_pin TNM_NET = sys_clk_pin;TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 ps;Net sys_rst_pin TIG;# IO Devices constraints# Module RS232 constraints# Net fpga_0_RS232_RX_pin LOC=;# Net fpga_0_RS232_TX_pin LOC=;# Module LEDS constraints# Net fpga_0_LEDS_GPIO_d_out_pin<0> LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin<1> LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin<2> LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin<3> LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin<4> LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin<5> LOC=;Net sys_clk_pin LOC=H17; Net sys_rst_pin LOC=AD4;# System level constraintsNet sys_clk_pin TNM_NET = sys_clk_pin;TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 ps;Net sys_rst_pin TIG;# IO Devices constraints# Module RS232 constraints Net fpga_0_RS232_RX_pin LOC=N8; Net fpga_0_RS232_TX_pin LOC=R8;# Module LEDS constraints Net fpga_0_LEDS_GPIO_d_out_pin<0> LOC=AG6; Net fpga_0_LEDS_GPIO_d_out_pin<1> LOC=AG5; Net fpga_0_LEDS_GPIO_d_out_pin<2> LOC=AF5; Net fpga_0_LEDS_GPIO_d_out_pin<3> LOC=AF6; Net fpga_0_LEDS_GPIO_d_out_pin<4> LOC=AE7; Net fpga_0_LEDS_GPIO_d_out_pin<5> LOC=AE6;# Module SW constraintsNet SW_GPIO_in_pin<0> LOC=AG7; Net SW_GPIO_in_pin<1> LOC=AH5; Net SW_GPIO_in_pin<2> LOC=AH7; Net SW_GPIO_in_pin<3> LOC=AJ6; Net SW_GPIO_in_pin<4> LOC=AJ7; Net SW_GPIO_in_pin<5> LOC=AK6;# Module CTRL constraints Net CTRL_GPIO_d_out_pin<0> LOC=C13;# IO16 piN Net CTRL_GPIO_d_out_pin<1> LOC=H15;# IO17 piN.c文件:#include "xparameters.h"#include "xgpio.h"/此处中实验指导要求#include "xgpio-1.h",但是该文件只定义了XGpio_mGetDataReg函数,并无其他我们将要用到的函数/而#include "xgpio.h"中有如下字符段“ /#include "xbasic_types.h" /#include "xstatus.h" /#include "xgpio_l.h"/符合其它函数的调用需求,所以改用#include "xgpio.h" #define XPAR_LEDS_DEVICE_ID 0main()XGpio leds_out;/指向GPIOXGpio_Initialize (&leds_out, XPAR_LEDS_DEVICE_ID);/int XGpio_Initialize(XGpio *InstancePtr, u16 DeviceId); /对象的指针 XGpio_SetDataDirection (&leds_out, 1, 0x00); /XGpio *InstancePtr, unsigned Channel,u32 DirectionMask /确定如何设置GPIO信号为输出,通过调用XGpio_SetDataDirection函数实现。int volatile i;while(1)XGpio_DiscreteWrite(&leds_out, 1, 0x3F);/(XGpio *InstancePtr, unsigned Channel, u32 Mask); */for(i=0;i<1000000;i+);XGpio_DiscreteWrite(&leds_out, 1, 0x00);for(i=0;i<1000000;i+);实验结果:六盏LED灯循环往复,间歇性亮灭。实验结果符合任务要求。 2.2 任务二2.2.1 实验目的PC机通过串口RS232控制6盏LED灯,如果上位机发送1(char),则LED亮,并且FPGA通过串口给PC机发送字符串“LED ON!”,否则LED灭,FPGA通过串口向PC机发送字符串“LED OFF!”。/串口助手2.2.2 实验内容:建立一个包含下列IP的处理器系统:1、 硬件环境沿用任务一2、 设定任务一中建立的UART参数2.2.3 实验步骤及程序:1、 确定硬件环境及管脚的定义有无需要添加的,没有,沿用任务一硬件。2、 修改.c文件#include "xparameters.h"#include "xgpio.h"#include "xuartlite_l.h"#define XPAR_LEDS_DEVICE_ID 0main()XGpio leds_out;/指向GPIOXGpio_Initialize (&leds_out, XPAR_LEDS_DEVICE_ID);/int XGpio_Initialize(XGpio *InstancePtr, u16 DeviceId); /对象的指针 XGpio_SetDataDirection (&leds_out, 1, 0x00);char i; while(1) i=XUartLite_RecvByte(0x84000000); / 是否为1,BEGIN xps_uartlite/PARAMETER C_BASEADDR = 0x84000000,查找mhs if(i=0x31) XUartLite_SendByte(0x84000000, 0x4C);/PARAMETER C_BASEADDR = 0x84000000,查找mhs,L XUartLite_SendByte(0x84000000, 0x45);/E XUartLite_SendByte(0x84000000, 0x44);/D XUartLite_SendByte(0x84000000, 0x20);/空格 XUartLite_SendByte(0x84000000, 0x4F);/O XUartLite_SendByte(0x84000000, 0x4E);/N XGpio_mSetDataReg(0x81420000,1,0x3F); /led on else XUartLite_SendByte(0x84000000, 0x4C);/PARAMETER C_BASEADDR = 0x84000000,查找mhs XUartLite_SendByte(0x84000000, 0x45); XUartLite_SendByte(0x84000000, 0x44); XUartLite_SendByte(0x84000000, 0x20); XUartLite_SendByte(0x84000000, 0x4F); XUartLite_SendByte(0x84000000, 0x46);/FXUartLite_SendByte(0x84000000, 0x46);/F XGpio_mSetDataReg(0x81420000,1,0x00); /led off 实验结果:当串口输入为1时,LED六盏灯亮。当输入为非1时,LED六盏灯灭。2.3 任务三2.3.1 实验目的上位机通过串口向FPGA发送不多于4个字符(char)的10进制数,各个数据之间以空格键分隔,以回车键结束。然后在Microblaze内部进行最简单的FIR滤波,将数据与其前一个数据相加,即y(n) = x(n) + x(n-1),然后以字符型的10进制数输出,数据之间依然以空格分隔。2.3.2 实验内容建立一个包含下列IP的处理器系统:1、硬件环境沿用任务二2、添加.c文件2.3.3 实验步骤及程序1、确定硬件环境及管脚的定义有无需要添加的,没有,沿用任务一硬件。2、修改.c文件#include "xparameters.h"#include "xstatus.h"#include "xuartlite.h"#include "xuartlite_l.h"main() int i=0,j=0; int in; int k=0,h=0,q=0;char a10;char a110;char a210;char out10; while(1) i=0;k=0;j=0,h=0,q=0;/循环赋初值 do in=XUartLite_RecvByte(0x84000000); ai=in; i+;while(in!=0x0A);/以回车结束,含空格及回车j=-i;/最后一位为回车调到会车前 for(i=0;i<j;i+) if(ai!=0x20) a1k=ai;/去空格 k+;k-; a20=a10-48;/ascii转换十进制,第一位特殊 h+; for(i=1;i<k;i+) a2h=a1i+a1i+1-48-48;/从第二个数开始符合公式前一个加后一个 h+; h-; for(i=0;i<h;i+) outq=a2i/10;/判断是否结果大于9 if(outq!=48)/判断是否结果大于9 XUartLite_SendByte(0x84000000,outq+48); out+q=a2i%10; XUartLite_SendByte(0x84000000,outq+48); XUartLite_SendByte(0x84000000,0x20); q+; /附,十进制,百进制输入程序,输出未能实现while(c=XUartLite_RecvByte(0x84000000)!='n') if(c!=0x20)/判断是否为回车或者后退,如不是则为真 i=c-'0' aj=i; j=j+1; else if(c=0x20)/如果是空格k=j;j=0; if (k=3)/判断位数并进行转换q=a0*100+a1*10+a2;bh=q;h=h+1;else if (k=2)q=a0*10+a1;bh=q;h=h+1;else if (k=1)q=a0;bh=q;h=h+1;else q=0;/若没有输入则位数为,此时将值置else if(c='n')/如果是回车 /什么都不做 实验结果:当输入为两个数时结果如下:当输入为三个数时结果如下:当输入为四个数时结果如下:2.4 任务四2.4.1 实验目的在程序的主循环中使LED灯闪烁。同时监听串口中断,如果串口上有接收数据,则把数据转发回PC机串口。需要使用Microblaze中断方式。2.4.2 实验内容建立一个包含下列IP的处理器系统:1、新建硬件环境2、添加.c文件2.4.3 实验步骤及程序1、新建硬件环境在IP Catalog中从Clock,Reset and Interrupt部分添加XPS Interrupt Controller, 添加和连接中断控制器设置 intc 的地址。在PORT下,将RS232实例的interrupt端口设为New Connection, 出现信号名字RS232_Interrupt.通过选择New Connection,为microblaze_0实例的INTERRUPT(外部中断请求)端口生成一个新的连接。这样就创建一个叫microblaze_0_ INTERRUPT的信号。使用microblaze_0_INTERRUPT网络,连接intc实例的中断输出端口Irq到Microblaze中断输入端口。点击intc域的intr域,来打开Interrupt Connection 对话框。点击左侧的RS232_Interrupt,并且点击符号添加Connected Interrupts域,点击OK按钮。选择Hardware->Generate Netlist。选择Hardware->Generate Bitstream2、修改.c文件#include "xparameters.h"#include "xgpio.h"#include "xgpio_l.h"#include "xintc.h" / interrupt controller#include "xuartlite_l.h" / uart#define XPAR_RS232_BASEADDR 0x84000000char buff;void uart0_int_handler(void) XGpio leds_out;/指向GPIOXGpio_Initialize (&leds_out, XPAR_LEDS_DEVICE_ID);/ /对象的指针 ;deviceid是Xgpio控制的唯一识别号 XGpio_SetDataDirection (&leds_out, 1, 0x00);/此函数用于说明指针的方向,DirectionMask是离散输出输入标志0 in,1 out while(!XUartLite_mIsReceiveEmpty(XPAR_RS232_BASEADDR) /判断串口不为空 /判断UART的数据是否读空。参数为UART地址。返回值1表示已经读空。 buff =XUartLite_RecvByte(XPAR_RS232_BASEADDR); XUartLite_SendByte(XPAR_RS232_BASEADDR, buff); switch(buff) case 0x31: XGpio_DiscreteWrite(&leds_out, 1, 0x01); break; case 0x32: XGpio_DiscreteWrite(&leds_out, 1, 0x02); break; case 0x33: XGpio_DiscreteWrite(&leds_out, 1, 0x04); break; case 0x34: XGpio_DiscreteWrite(&leds_out, 1, 0x08); break; case 0x35: XGpio_DiscreteWrite(&leds_out, 1, 0x10); break; case 0x36: XGpio_DiscreteWrite(&leds_out, 1, 0x20)

    注意事项

    本文(片上电子信息系统课程设计指导书.doc)为本站会员(韩长文)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开