SOPC实验报告.docx

上传人:b****0 文档编号:25885900 上传时间:2023-06-16 格式:DOCX 页数:12 大小:20.23KB
下载 相关 举报
SOPC实验报告.docx_第1页
第1页 / 共12页
SOPC实验报告.docx_第2页
第2页 / 共12页
SOPC实验报告.docx_第3页
第3页 / 共12页
SOPC实验报告.docx_第4页
第4页 / 共12页
SOPC实验报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

SOPC实验报告.docx

《SOPC实验报告.docx》由会员分享,可在线阅读,更多相关《SOPC实验报告.docx(12页珍藏版)》请在冰豆网上搜索。

SOPC实验报告.docx

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

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

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1