您好,欢迎访问三七文档
SOPC设计基础实验报告学院:电子与信息工程学院学号:姓名:实验一开发软件使用练习一实验目的实验目的:掌握基于SOPC硬核处理器的设计流程。二实验设备安装QuartuII的PC、实验箱三实验内容和步骤1)打开QuartsII11.1,建立工程2)在菜单栏的File中选择New选项3)默认是NewQuartusIIProject,选OK4)选择Next,工程目录选择自己新建的文件夹,工程名输入E_Play5)源文件添加,点击Next直接跳过6)选择编号为EP4CE6E22C8的器件7)EDA工具选择,直接点击Next跳过8)项目信息显示,点击Finish完成空工程的建立9)配置无用引脚:在主页面菜单栏点击Assignments,接着在下拉框中选择Device选项,出现如下窗口:点击DeviceandPinsOptions按钮,弹出相应页面后点击左侧栏中的unusedpins,将他设为Asinputtri-statedwithweakpull-up.点击OK完成。创建软核处理器系统1)点击菜单栏的Tools,在下拉框中选择SOPCBuilder选项,将SystemName定为E_Play,下方的TargetHDL选VHDL,最后点击OK确认。2)DeviceFamily选择CyloneIVE,ClockFrequency定为50MHz3)配置软核处理器系统点开左侧Processors总选项,双击NiosIIProcessor,选择NiosII/e另外在JTAGDebugModule选项中选择第一项,点击Finish完成配置4)配置存储器点开左侧MemoriesandMemoryControllers总选项,点开第二个On-Chip分选项,双击On-Chip-Memory,在Totalmemorysizes后输入4096点击Finish,在Onchip-memory2_0上右击,Rename为onchip-memory5)点开左侧InterfaceProtocols总选项,点开Serial分选项,双击JTAGUART,点击Finish完成6)在jtag_uart_0上右击,Rename为jtag_uart产生软核处理器系统1)双击cpu_0,将ResetVector和ExceptionVector的Memory均设置为onchip_memory,点击Finish完成。2)选择System菜单栏,在下拉框中点击AssignBaseaddresses,排列软核处理器系统各部分地址。选择System菜单栏,在下拉框中点击AssignInterruptNumbers,排列软核处理器系统各部分中断。最后点击Generate,在弹出窗口点击Save。3)等待直到Systemgenerationwassuccessful出现4)点击Exit退出,在Quartus的File菜单下点击New,新建BlockDiagram/SchematicFile5)双击空白处,点开Project,选择自己设计的E_Play,选择模块,布线。四实验结果和分析实验二NiosII软件系统设计一、实验目的实验目的:掌握基于NiosII软核处理器的设计流程。二实验设备安装QuartuII的PC、实验箱三实验内容和步骤创建NiosII的应用工程1)打开NiosII11.1,利用此环境进行C语言的编译和调试2)点击File菜单栏,New新建,点击NiosIIApplicationandBSPfromTemplate,定位到测试程序3)点击Finish完成4)在左侧栏右击,New,新建C源文件,编写C语言代码,完成后点击菜单栏的Project,在下拉框中选择BuildProject进行编译在实验箱上测试程序1)连好实验箱上的线,点击QuartusII菜单栏的Tools,在下拉框中选择Programmer,将软核处理器系统配置到FPGA芯片中,下载线选择USB-Blaster,模式选择JTAG,点击Start下载2)回到Eclipse编辑窗口,点击菜单栏的Run,下拉框接着点Run3)先点击Apply,再点击Run,将C语言代码下载到实验箱,完成后可以看见实验箱上的灯循环闪烁,实验完成。四实验结果和分析#includesystem.h#includealtera_avalon_pio_regs.h#includealt_types.hintmain(void)__attribute__((weak,alias(alt_main)));intalt_main(void){alt_u8led=0x2;//流水灯的状态alt_u8dir=0;//用来转换方向的变量volatileinti;while(1){if(led&0x09){dir=(dir^0x1);//如果到末尾就转换方向}if(dir){led=led1;//dir非零led向右移}else{led=led1;//dir为零led向左移}IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led);i=0;while(i200000)i++;}return0;}实验三SOPC系统的PIO验证一、实验目的及要求实验目的:掌握PIO设备的访问方法。二实验设备安装QuartuII的PC、实验箱三实验内容和步骤1)打开NiosII11.1,利用此环境进行C语言的编译和调试2)点击File菜单栏,New新建,点击NiosIIApplicationandBSPfromTemplate,定位到测试程序,点击Finish完成3)在左侧栏右击,New,新建C源文件,编写C语言代码,完成后点击菜单栏的Project,在下拉框中选择BuildProject进行编译4)连好实验箱上的线,点击QuartusII菜单栏的Tools,在下拉框中选择Programmer,将软核处理器系统配置到FPGA芯片中,下载线选择USB-Blaster,模式选择JTAG,点击Start下载5)回到Eclipse编辑窗口,点击菜单栏的Run,下拉框接着点Run6)先点击Apply,再点击Run,将C语言代码下载到实验箱,完成后按不同的按键可以看见不同的灯亮起,实验完成。四实验结果和分析#includestdio.h#includeio.h#includesystem.h#includealtera_avalon_pio_regs.h#includealt_types.hvoidbutton_irq(void*context,alt_u32interrupt);intmain(){printf(BUTTON中断实验!\n);/*开放4BITBUTTON的中断屏蔽*/IOWR(BUTTON_PIO_BASE,0x02,0x0f);/*清除边沿捕获寄存器*/IOWR(BUTTON_PIO_BASE,0x03,0x00);/*注册中断处理函数*/if(alt_irq_register(BUTTON_PIO_IRQ,NULL,button_irq)){printf(alt_irq_registererror\n);return-1;}while(1);return0;}voidbutton_irq(void*context,alt_u32interrupt){unsignedintdata;/*读取边沿捕获寄存器值*/data=IORD(BUTTON_PIO_BASE,0x03);/*点亮相应的LED*/IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,data);/*清除边沿捕获寄存器*/IOWR(BUTTON_PIO_BASE,0x03,0x00);}实验四基于NIOS的交通灯实验一、实验目的实验目的:掌握NIOSII应用程序控制自定义Avalon总线外设的方法。二实验设备安装QuartuII的PC、实验箱三实验内容和步骤1)打开NiosII11.1,利用此环境进行C语言的编译和调试2)点击File菜单栏,New新建,点击NiosIIApplicationandBSPfromTemplate,定位到测试程序,点击Finish完成3)在左侧栏右击,New,新建C源文件,编写C语言代码,完成后点击菜单栏的Project,在下拉框中选择BuildProject进行编译4)连好实验箱上的线,点击QuartusII菜单栏的Tools,在下拉框中选择Programmer,将软核处理器系统配置到FPGA芯片中,下载线选择USB-Blaster,模式选择JTAG,点击Start下载5)回到Eclipse编辑窗口,点击菜单栏的Run,下拉框接着点Run6)先点击Apply,再点击Run,将C语言代码下载到实验箱,完成后可以看见实验箱上的灯有类似交通灯的效果,实验完成。四实验结果和分析unsignedintread_bus16(alt_u16ADDR);/*********************子函数定义*********************************/unsignedintwrite_bus16(alt_u16ADDR,alt_u16value){IOWR(USER_BUS16_BASE,ADDR,value);return0;}unsignedintread_bus16(alt_u16ADDR){alt_u16value=0;value=IORD(USER_BUS16_BASE,ADDR);returnvalue;}/*********************主函数*********************************/intmain(){alt_u16i=0,tmp=0;alt_u16*p=NULL;alt_u16flag=0;write_bus16(DOT_CLR,0x00);printf(\nprogrammestart!\n);while(1){write_bus16((cs7+8),0x0924);/*******全红************/usleep(4000000);write_bus16((cs7+8),0x030c);/*****东西绿南北红******/usleep(8000000);for(i=0;i5;i++)/*****东西黄南北红******/{write_bus16((cs7+8),0x0514);usleep(300000);write_bus16((cs7+8),0x0104);usleep(300000);}write_bus16((cs7+8),0x0861);/****东西红南北绿******/usleep(8000000);for(i=0;i5;i++)/****东西红南北黄******/{write_bus16((cs7+8),0x08a2);usleep(300000);write_bus16((cs7+8),0x0820);usleep(300000);}}return0;}
本文标题:SOPC实验报告
链接地址:https://www.777doc.com/doc-5723077 .html