SOPC实验报告.docx
- 文档编号:25885900
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:12
- 大小:20.23KB
SOPC实验报告.docx
《SOPC实验报告.docx》由会员分享,可在线阅读,更多相关《SOPC实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
SOPC实验报告
SOPC系统设计技术实验报告
姓名:
学号:
院系:
信息科学与工程学院
专业:
电子科学与技术
指导老师:
完成日期:
2015年04月25日
实验二、NIOSII实现串口收发数据及LCD显示
一、实验目的
(1)进一步熟悉Quartus II、SOPCBuilder、NIOSIIIDE的操作;
(2)掌握SOPC硬件系统及NIOSII软件的开发流程。
二、实验内容
(1)、实验平台:
硬件:
PC级、SmartSOPC+教学实验开发平台;软件:
QuartusII9.0,SOPCBuilder9.0,NIOSIIIDE9.0。
(2)、实验内容:
建立包含SDRAM、JTAG_UART、Timer、LCD的NIOSII处理器系统,通过JTAG_UART从IDE的控制端窗口读取输入值N,计算1至N的累加值,并将计算结果及计算花费时间的显示在LCD中。
三、实验步骤
3.1硬件设计
根据实验内容,可以得出本次实验的硬件结构图如图3.1所示:
图3.1硬件设计结构图
具体硬件设计步骤如下:
1)、在QuartusII中建立一个工程命名为:
smallCore,器件设置为EP3C55F484C8;
2)、以原理图输入方式建立空白顶层模块,并保持;
3)、打开SOPCBuilder,命名SOPC系统名称为nios2system,开始建立NIOSII系统。
4)、双击SOPCBuilder主界面左侧中的“NiosIIProcessor”,出现NiosIICPU的配置向导对话框,如图1.4所示,在这里可以有三种NiosIICPU选择,我们选择快速型的NiosII/f,不使用硬件乘法器及除法器。
然后单击Next进入下一步配置;InstructionCache项中选择2Kbytes,在DataCache项中选择512Bytes,单击Next进行下一步配置;在“AdvancedFeatures”和“MMUandMPUSettings”选项卡中选择默认参数,然后单击Next,到了“JTAGDebugModule”选项卡,如图1.6所示。
这里是选择JTAG调试接口,选择默认的模式Level1,然后单击Next,到了“CustomInstruction”选项卡,也选择默认参数,最后单击Finish完成对NiosIICPU的配置。
5)、添加了NiosIICPU内核后,选中ModuleName下的cpu_0,单击鼠标右键,在Rename项中可以重命名cpu_0的名称为cpu,并在“ClockSettings”一栏中将clk_0名称改为clk。
6)、双击在SOPCBuilder主界面左侧中的BridgesandAdapters→MemoryMapped→Avalon-MMClockCrossingBridge,出现ClockCrossingBridge的配置向导对话框,在“Slave-to-MasterFIFO”中的FIFOdepth中选择64。
单击“finish”退出配置对话框,并重命名clock_crossing_0的名称为clock_crossing。
7)、双击在SOPCBuilder主界面左侧中的MemoriesandMemoryControllers→SDRAM→DDRSDRAMHighPerformanceController,出现DDRSDRAMHighPerformanceController的配置向导对话框。
修改“GeneralSettings”选项卡的参数配置,参数修改如下:
Speedgrade:
8
PLLreferenceclockfrequency:
85
Memoryclockfrequency:
100
Localinterfaceclockfrequency:
full
修改“ModifyParameters”:
DDRSDRAM控制器参数,参数修改如下:
TotalMemoryinterfaceDQwidth:
16
Memoryvendor:
other
Columnaddresswidth:
9
8)、修改DDRSDRAM的控制器ddr_sdram_0的名称为ddr_sdram,并在ddr_sdram左侧中取消cpu.instruction_master和cpu.data_master中的实点,选择clock_crossing.m1的实点,将ddr_sdram控制器连接到ClockCrossingBridge的m1中。
9)、双击在SOPCBuilder主界面左侧中的BridgesandAdapters→MemoryMapped→Avalon-MMPipelineBridge,出现PipelineBridge的配置向导对话框,选择默认参数,单击“finish”添加到SOPCBuilder中,并重命名pipeline_bridge_0为pipeline_bridge。
10)、双击在SOPCBuilder主界面左侧中的Peripherals→MicrocontrollerPeripherals→PIO(ParallelI/O),出现PIO外设配置的对话框,在Wide一栏中选择8bit,在Direction一栏中选择Outputportsonly,如图1.13所示,最后单击Finish完成对PIO的设置,此时在SOPCBuilder中出现pio_0的外设,修改该名称为LED_PIO,并把LED_PIO外设连接到pipeline_bridge.m1上。
11)、双击在SOPCBuilder主界面左侧中的Peripherals→DebugandPerformance→SystemIDPeripheral,直接在SOPCBuilder中添加sysid的外设,修改sysid_0名称为sysid,并把sysid外设连接到pipeline_bridge.m1上。
12)、双击在SOPCBuilder主界面左侧中的PLL→PLL,单击“LaunchAltera’sALTPLLMegaWizard”,出现PLL配置对话框1。
在“whatisthefrequencyoftheinclock0input”一栏中设置输入的频率为50MHz,单击Next,进行下一步的设置。
在PLL配置对话框2中的“Lockoutput”中选择“Create‘locked’output”,PLL配置对话框的page3、4、5都选择默认参数,在page6中ClockTapSettings一栏中选择“Enteroutputclockfrequency”,将c0时钟输出为85MHz,单击Next,进行下一步的设置。
PLL配置对话框的page7-11都选择默认参数,在page12中单击“finish”退出PLL配置对话框,最后再单击“finish”退出。
在SOPCBuilder中重命名pll_0为sys_pll,并把sys_pll外设连接到pipeline_bridge.m1上。
13)、在“ClockSettings”一栏中将sys_pll_c0名称改为system_clk,并在SOPCBuilder中的Clock一栏中为每一个外设选择合适的clock信号。
需要特别注意的是sys_pll中的s1时钟需要选择clk,clock_crossing中的s1需要选择system_clk,m1需要选择ddr_sdram_sysclk,ddr_sdram对应选择system_clk,ddr_sdram中的s1需要选择ddr_sdram_sysclk,其它的外设选择system_clk。
14)、添加JTAG_UART:
使用缺省设置,命名为jtag_uart,对应system_clk,连接至pipeline_bridge;
15)、添加Timer:
InitialPeriod改为20ms,命名为sys_clock_timer,对应system_clk,连接至pipeline_bridge;
16)、添加Avalon-MMTristatebridge:
使用缺省设置,命名为ext_bus,对应system_clk,连接至cpu;
17)、添加zlg_avalon_lcd240_128:
命名为lcd240_128,对应system_clk,连接至ext_bus;
18)、添加pio:
1位输出,outputonly,命名为lcd_light,对应system_clk,连接至pipeline_bridge;
19)、单击SOPCBuilder菜单的system→Auto-AssignBaseAddress,进行自动分配地址,单击SOPCBuilder菜单的system→Auto-AssignIRQs,进行自动分配中断号。
20)、双击SOPCBuilder中的cpu,确认在ResetAddress一栏中选择ddr_sdram,在ExceptionAddress一栏中选择ddr_sdram。
完整的nios2系统如图3.2所示:
图3.2nios2系统构造图
时钟设制如图3.3所示:
图3.3系统时钟设置图
21)、生成系统。
在之前建立好的原理图文件中添加NIOSII系统至顶层模块,保存原理图文件。
22)、定制delay_reset_block模块:
原理图如图3.4所示:
图3.4delay_reset_block模块原理图
23)、在smallCore原理图中添加delay_reset_block模块原理图,并且添加输入输出端口,得到系统原理图,如图3.5所示:
图3.5系统原理图
24)、在QuartusII主界面中选择Assignments→Device。
在“Availabledevices”一栏中选择“EP3C55F484C8”器件。
对器件和引脚进行配置。
配置项有:
UnusedPins设置为:
Asinputtri-stated;configurationdevice设置为:
EPCS16;DefaultI/Ostandard配置为:
3.3-VLVTTL电平;Dual-PurposePins中的所有引脚设置为“UseasregularI/O”。
25)、将DDRSDRM引脚约束文件中的“YES”改为“NO”,运行DDRSDRM引脚约束文件。
26)、对系统进行引脚分配:
新建引脚约束文件:
”setup.tcl”。
setup.tcl文件见附录。
运行set.up.tcl引脚约束文件。
27)、编译整个工程,编译成功之后将系统下载到FPGA中去。
硬件设计完成。
3.2软件设计
本系统的软件设计流程图如图3.6所示:
图3.6软件设计流程图
具体步骤如下:
1)、在NiosIIIDE的工程中选择File→New→NiosIIC/C++Application,新建一个C/C++工程文件,在“SelectProjectTemplate”一项中选择空白文件。
在Name一项中填入工程名,在这里我们命名为num,在SOPCBuilderSystem一项里,我们选择QuartusII工程目录下的nios2system.ptf文件。
2)、选中NiosIIIDE工程右侧的num工程,单击鼠标的右键,选择“SystemLibraryProperties”一项,配置系统的参数,在这里,我们选择默认参数。
3)、添加主程序文件num.c文件(见附录),zlg_avalon_lcd240_128.c文件,zlg_avalon_lcd240_128.h文件。
4)、选中NiosIIIDE工程右侧的led_flow工程,单击鼠标的右键,选择“BuildProject”一项,开始编译工程,在工程下面的Console选项卡中查看编译信息。
5)、选中NiosIIIDE工程右侧的num工程,单击鼠标的右键,选择RunAs→NiosIIHardware,开始下载程序到FPGA,等待下载完毕后,在实验箱上可以看到LCD屏幕显示的变化。
四、结论
4.1结果展示
运行后的结果如图4.1所示:
图4.1实验结果图
当输入N为100时的计算结果为5050,耗时为2039,这里的2039是执行指令的时间,不是秒。
4.2实验总结
1、试验中遇到的问题:
1)、在使用SOPCbuilder设计nios2系统时,每个IP核对应的时钟很重要,要细心选择,经常选错;
2)、添加完所有IP核后,忘记对cpu的复位地址和异常处理地址进行设置,导致系统生成不成功:
3)、引脚分配不成功,导致编译通不过;
4)、软件程序下载不到DDRSDRM中,(可能原因:
没有对DDRSDRM的时钟设置-75度的相位偏移;)(尚未解决)
2、总结:
在本实验中,我们学习了SOPC系统的设计流程,从硬件设计到软件设计,深刻体会到了SOPC设计在系统设计中的优势
1)、设计全程,包括电路系统描述、硬件设计、仿真测试、综合、调试、系统软件设计,直至整个系统完成,都由计算机进行。
2)、设计技术直接面向用户,专用集成电路的被动使用者也可能成为专用集成电路的主动设计者。
3)、系统级专用集成电路的实现除了传统的ASIC器件外,还能通过大规模FPGA等可编程器件来实现。
在软件设计方面,NIOSII实际和一般的CPU设计方法是一样的,这样对于有一定单片机编程的设计人员来说具有极大优势。
并且开发环境也是功能齐全,界面环境友好。
具有开发简单,易于操作。
五、附录
5.1setup.tcl文件
set_global_assignment-nameFAMILY"CycloneIII"
set_global_assignment-nameDEVICEEP3C55F484C8
set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"ASINPUTTRI-STATED"
set_global_assignment-nameRESERVE_ALL_UNUSED_PINS_NO_OUTPUT_GND"ASINPUTTRI-STATED"
set_global_assignment-nameENABLE_CLOCK_LATENCYON
set_global_assignment-nameCYCLONE_CONFIGURATION_DEVICEEPCS16
#systemclockandreset----------------------------------------------------------------
set_location_assignmentPIN_T2-tosys_clk
set_location_assignmentPIN_B11-toreset_n
#ddrsdram-----------------------------------------------------------------------------
set_location_assignmentPIN_AA3-tomem_clk
set_location_assignmentPIN_AB3-tomem_clk_n
set_location_assignmentPIN_AB18-tomem_addr[0]
set_location_assignmentPIN_AB19-tomem_addr[1]
set_location_assignmentPIN_AB20-tomem_addr[2]
set_location_assignmentPIN_AA20-tomem_addr[3]
set_location_assignmentPIN_Y17-tomem_addr[4]
set_location_assignmentPIN_W17-tomem_addr[5]
set_location_assignmentPIN_Y15-tomem_addr[6]
set_location_assignmentPIN_Y14-tomem_addr[7]
set_location_assignmentPIN_AA15-tomem_addr[8]
set_location_assignmentPIN_AB15-tomem_addr[9]
set_location_assignmentPIN_AA17-tomem_addr[10]
set_location_assignmentPIN_AA14-tomem_addr[11]
set_location_assignmentPIN_AB14-tomem_addr[12]
set_location_assignmentPIN_Y3-tomem_dq[0]
set_location_assignmentPIN_W6-tomem_dq[1]
set_location_assignmentPIN_AA4-tomem_dq[2]
set_location_assignmentPIN_AA5-tomem_dq[3]
set_location_assignmentPIN_W7-tomem_dq[4]
set_location_assignmentPIN_Y7-tomem_dq[5]
set_location_assignmentPIN_U9-tomem_dq[6]
set_location_assignmentPIN_V8-tomem_dq[7]
set_location_assignmentPIN_AB7-tomem_dq[8]
set_location_assignmentPIN_Y8-tomem_dq[9]
set_location_assignmentPIN_U10-tomem_dq[10]
set_location_assignmentPIN_AA8-tomem_dq[11]
set_location_assignmentPIN_AB8-tomem_dq[12]
set_location_assignmentPIN_AA9-tomem_dq[13]
set_location_assignmentPIN_V11-tomem_dq[14]
set_location_assignmentPIN_W10-tomem_dq[15]
set_location_assignmentPIN_V10-tomem_dqs[0]
set_location_assignmentPIN_AB9-tomem_dqs[1]
set_location_assignmentPIN_V5-tomem_dm[0]
set_location_assignmentPIN_AA7-tomem_dm[1]
set_location_assignmentPIN_AA16-tomem_ba[0]
set_location_assignmentPIN_AB17-tomem_ba[1]
set_location_assignmentPIN_AB13-tomem_cas_n
set_location_assignmentPIN_AA13-tomem_ras_n
set_location_assignmentPIN_AB16-tomem_cs_n
set_location_assignmentPIN_AA19-tomem_cke
set_location_assignmentPIN_Y13-tomem_we_n
#extbusandlcd240x128----------------------------------------------------------------
set_location_assignmentPIN_G8-todata[0]
set_location_assignmentPIN_H3-todata[1]
set_location_assignmentPIN_H7-todata[2]
set_location_assignmentPIN_J7-todata[3]
set_location_assignmentPIN_K7-todata[4]
set_location_assignmentPIN_N7-todata[5]
set_location_assignmentPIN_M6-todata[6]
set_location_assignmentPIN_M5-todata[7]
set_location_assignmentPIN_C10-toaddress[0]
set_location_assignmentPIN_E15-toaddress[1]
set_location_assignmentPIN_G14-toaddress[2]
set_location_assignmentPIN_C8-towrite_n
set_location_assignmentPIN_F15-toread_n
set_location_assignmentPIN_C18-toout_port
set_location_assignmentPIN_D17-tochipselect_n
#peripheral-----------------------------------------------------------------------------
set_location_assignmentPIN_F13-toledout[0]
set_location_assignmentPIN_D10-toledout[1]
set_location_assignmentPIN_E10-toledout[2]
set_location_assignmentPIN_D8-toledout[3]
set_location_assignmentPIN_C17-toledout[4]
set_location_assignmentPIN_E12-toledout[5]
set_location_assignmentPIN_E13-toledout[6]
set_location_assignmentPIN_E11-toledout[7]
5.2num.c文件
#include
#include
#include
#include"system.h"
#include"alt_types.h"
#include"zlg_avalon_lcd240_128.h"
#include"sys/alt_timestamp.h"//时间标记服务头文件
#include"unistd.h"//usleep(intus)
int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SOPC 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)