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

上传人:韩长文 文档编号:5025455 上传时间:2020-01-29 格式:DOC 页数:38 大小:1.19MB
返回 下载 相关 举报
片上电子信息系统课程设计指导书.doc_第1页
第1页 / 共38页
片上电子信息系统课程设计指导书.doc_第2页
第2页 / 共38页
片上电子信息系统课程设计指导书.doc_第3页
第3页 / 共38页
片上电子信息系统课程设计指导书.doc_第4页
第4页 / 共38页
片上电子信息系统课程设计指导书.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《片上电子信息系统课程设计指导书.doc》由会员分享,可在线阅读,更多相关《片上电子信息系统课程设计指导书.doc(38页珍藏版)》请在三一文库上搜索。

1、片上电子信息系统课程设计指导书一、课程设计目的和要求 设计一个片上电子信息系统,培养工程实践创新能力。在相关课程知识的拓宽、提高和综合应用的基础,强化培养理论联系实际能力、系统设计能力、实际动手能力。二、课程设计方式 学生在教师指导下按照设计题目和任务,认真分析、查找资料,按照各阶段基本要求,按时完成各项内容。十四周:星期二、三下午3:00。星期四、五下午9:00 十五周:暂定上午三、课程设计任务l 任务一 在开发板FPGA内部实现一个Microblaze软核,通过对其外设GPIO编程使开发板上的6盏LED灯闪烁。头文件#include xparameters.h#include xgpio_

2、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会输出用户设置的数据。参数说明:BaseA

3、ddress: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

4、)参数说明: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

5、数据无返回值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#i

6、nclude 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机串口。需要使用Mi

7、croblaze中断方式。头文件#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)

8、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 XInt

9、c_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会自动完成保护现场、返回时恢复现场等处理,我们主要把精力放在中断处理程

10、序(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:0

11、0-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;课 程 设 计 报 告课程名称_片上电子信息系统_指导教师 _那云

12、虓_王晓飞_系 别 _ 光电学院_ 专 业 电子信息工程_ 学生姓名 _ _ _ 班级/学号 _ 成 绩 _目 录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. 课程设计总结3

13、41. 课程设计概述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

14、 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 进入 Sel

15、ection 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

16、 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 界面,指出 BS

17、B 产生的文件,点击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 Xilin

18、x 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;# I

19、O 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 LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin LOC=;# Net fpga_0_L

20、EDS_GPIO_d_out_pin LOC=;# Net fpga_0_LEDS_GPIO_d_out_pin 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

21、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 LOC=AG6; Net fpga_0_LEDS_GPIO_d_out_pin LOC=AG5; Net fpga_0_LEDS_GPIO_d_out_pin LOC=AF5; Net fpga_0_LEDS_GPIO_d_out_pin LOC=AF6; Net fpga_0_LEDS_GPIO_d_out_pin LOC=AE7; Net fpga_0_

22、LEDS_GPIO_d_out_pin LOC=AE6;# Module SW constraintsNet SW_GPIO_in_pin LOC=AG7; Net SW_GPIO_in_pin LOC=AH5; Net SW_GPIO_in_pin LOC=AH7; Net SW_GPIO_in_pin LOC=AJ6; Net SW_GPIO_in_pin LOC=AJ7; Net SW_GPIO_in_pin LOC=AK6;# Module CTRL constraints Net CTRL_GPIO_d_out_pin LOC=C13;# IO16 piN Net CTRL_GPIO

23、_d_out_pin 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 0mai

24、n()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

25、 i;while(1)XGpio_DiscreteWrite(&leds_out, 1, 0x3F);/(XGpio *InstancePtr, unsigned Channel, u32 Mask); */for(i=0;i1000000;i+);XGpio_DiscreteWrite(&leds_out, 1, 0x00);for(i=0;i1000000;i+);实验结果:六盏LED灯循环往复,间歇性亮灭。实验结果符合任务要求。 2.2 任务二2.2.1 实验目的PC机通过串口RS232控制6盏LED灯,如果上位机发送1(char),则LED亮,并且FPGA通过串口给PC机发送字符串“L

26、ED 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 (&l

27、eds_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, 0x4

28、C);/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 XU

29、artLite_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, 0x

30、46);/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.

31、3.3 实验步骤及程序1、确定硬件环境及管脚的定义有无需要添加的,没有,沿用任务一硬件。2、修改.c文件#include xparameters.h#include xstatus.h#include xuartlite.h#include xuartlite_l.hmain() 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;

32、i+;while(in!=0x0A);/以回车结束,含空格及回车j=-i;/最后一位为回车调到会车前 for(i=0;ij;i+) if(ai!=0x20) a1k=ai;/去空格 k+;k-; a20=a10-48;/ascii转换十进制,第一位特殊 h+; for(i=1;ik;i+) a2h=a1i+a1i+1-48-48;/从第二个数开始符合公式前一个加后一个 h+; h-; for(i=0;iGenerate Netlist。选择Hardware-Generate Bitstream2、修改.c文件#include xparameters.h#include xgpio.h#incl

33、ude 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,

34、 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_ou

35、t, 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)

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

当前位置:首页 > 研究报告 > 商业贸易


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