SOPC实验报告

合集下载

sopc实验心得

sopc实验心得

sopc实验心得
在进行SOPC(系统级可编程器件)实验的过程中,我深刻体会到了它的强大和灵活性。

SOPC是一种基于现场可编程门阵列(FPGA)技术的系统设计方法,它将硬件与软件相结合,可以实现高度集成和可重构的设计。

在实验中,我首先学习了SOPC的基本概念和原理,了解了它的组成部分以及各个组件之间的连接方式。

然后,我利用Quartus II软件进行了仿真和综合,将设计的硬件描述语言(HDL)代码转化为FPGA可以理解的形式。

通过仿真,我可以预先验证设计的正确性,并对其进行修改和优化。

接着,我进行了FPGA的编程和配置,将设计好的逻辑电路加载到FPGA芯片中。

通过这一步骤,我可以将自己的设计直接在硬件上实现,并进行实时的测试和调试。

这种即时性和灵活性是SOPC的一个重要优点,它使得我们能够更加高效地进行系统级设计和验证。

在SOPC实验中,我还学习了使用Nios II软核处理器进行嵌入式系统设计。

Nios II是一款可编程的32位RISC处理器,可以根据需求进行定制和配置。

通过Nios II,我可以在FPGA上实现复杂的嵌入式系统,并编写C语言程序进行控制和操作。

总的来说,SOPC实验让我深入了解了系统级可编程器件的原理和应用。

通过实践,我学会了使用Quartus II软件进行FPGA设计和配置,掌握了硬件描述语言
和嵌入式系统的开发方法。

这些知识和技能对我未来的学习和工作都具有重要的意义,我相信在不久的将来,SOPC技术将会在各个领域得到广泛应用。

EDA技术——SOPC设计“hello world”

EDA技术——SOPC设计“hello world”

昆明理工大学信息工程与自动化学院学生实验报告( 201—201学年 第 学期 )课程名称:EDA 技术 开课实验室: 年 月 日 年级、专业、班 学号 姓名 成绩 实验项目名称 SOPC 设计“hello world ”实验 指导教师教师评语教师签名:年 月 日一、实验目的通过本实验具体学习SOPC 开发流程。

二、实验设备1、 带有windows 操作系统,quartusII ,niosII 软件的PC 机台。

2、 FPGA 实验箱及电源线,下载线。

三、实验要求熟悉SOPC 从定制cpu 到nios 软核内程序编写的整个流程。

四 实验原理利用QuartusII 中的SOPCbuilder 来定制cpu ,然后配合niosII ,来实现一个完整的嵌入式系统功能,这是不同于FPGA 的开发方式。

五、实验步骤1、 按照前面实验在QuartusII 中建立工程,在TOOLs 菜单中选择SOPC Builder ,如图 3.1。

图3.1 建立工程✧新工程名命名为SOPC。

✧建完这个工程后,首先建一个原理图文件。

✧File->new->Block Diagram/Schematic File,通过此操作建好一个原理图文件,如图3.2所示。

图3.2 建立原理图文件2、定制CPU,参照上图,有一个图标,点击它打开SOPC builder,打开后,在弹出的界面system name后填写名字,这里写的是cpu,自己可以起其他名字,然后点ok,如图 3.3。

图 3.3 SOPC builder 界面1) 构建处理器模块:处理器就是用来做解释程序,运算等操作,图中左栏可以看到,Nios II Processer选项,双击后弹出处理器的属性选项框,我们自己设置参数,来定制所需的处理器,如图 3.4。

图 3.4 处理器属性框✧这里为我们提供了三种类型的CPU,Nios II/e 占用资源最少600-800LEs,功能也最简单,速度最慢。

《SOPC技术》课程实验报告模板

《SOPC技术》课程实验报告模板

《SOPC技术》课程实验报告姓名:学号:班级:同组者:指导教师:高金定信息科学与工程学院2013-2014学年第一学期《SOPC技术》课程实验报告学生姓名:所在班级:指导教师:高金定老师记分及评价:一、实验名称实验1:基于LPM的正弦信号发生器的设计二、任务及要求【任务】在QuartusII平台上,采用查找表的设计方法,利用LPM兆功能模块,完成64点(8位)的正弦信号发生器的设计。

正弦信号发生器结构框图如下:【要求】1.数据存储ROM和地址信号发生器均由LPM模块实现。

2.在Quartus II软件上进行时序仿真。

3.利用Signal Tap II嵌入式逻辑分析仪进行在线测试与分析。

(此步需使用实验箱,并且要确保实验箱与电脑处于在线可下载状态)【思考】1.编写DAC0832数模转换程序,利用示波器观察输出信号波形。

2.如何在此基础上设计方波、三角波等信号发生器?如何实现波形幅度等参数可调?三、实验程序(原理图)四、仿真及结果分析五、硬件验证1、选择模式:2、引脚锁定情况表:六、小结《SOPC技术》课程实验报告学生姓名:所在班级:指导教师:高金定老师记分及评价:一、实验名称实验2:基于DSP Builder正弦信号发生器的设计二、任务及要求【任务】采用DSP Builder系统建模的方法,设计正弦信号发生器,要求采用查找表的方法,完成正弦信号发生器模块的建模、仿真。

Signal Compiler【要求】:1.完成模型构建及仿真,得到如下波形图。

2.将模型转换成VHDL硬件描述语言,利用Modelsim软件进行RTL仿真。

3.再在Quartus II软件上进行编译、时序仿真与时序分析。

4.利用Signal Tap II嵌入式逻辑分析仪进行在线测试与分析。

(此步需使用实验箱,并且要确保实验箱与电脑处于在线可下载状态)三、仿真模型及参数四、仿真及结果分析五、小结《SOPC技术》课程实验报告学生姓名:所在班级:指导教师:高金定老师记分及评价:一、实验名称实验3:基于DSP Builder的FIR数字低通滤波器的设计二、任务及要求【任务】:调用DSP Builder模块,设计FIR低通数字滤波器,完成建模与仿真。

SOPC实验指导书2

SOPC实验指导书2

3.2 构建比较复杂的Nios II系统实验实验目的:1. 强化使用IP核构建系统的设计思想,学习使用SDRAM 等IP软核的方法;2. 学习使用MegaWizard Plug-In Manager添加PLL IP软核进行时钟倍频的方法。

实验内容:在前面实验的基础上添加SDRAM及用于倍频的锁相环,构建比较复杂的Nios II系统。

实验原理:FPGA片内嵌入式锁相环PLL可以与一输入的时钟信号同步,并以其作为参考信号实现锁相,从而输出一至多个同步倍频或分频的片内时钟,以供逻辑系统应用。

与直接来自外部的时钟相比,这种片内时钟可以减少时钟延时和时钟变形,减少片外干扰;还可以改善时钟的建立时间和保持时间。

实验设备:SOPC核心板、USB-Blaster下载线、电源。

实验步骤:1:打开工程如实验3.1方法,创建工程,工程名为nios_os,打开SOPC Builder;2:构建一个复杂的Nios 系统打开SOPC Builder,生成的Nios起名为nios_ucos,在Clock时钟设置中,填入所需要的时钟,48M;在对Nios II核选择时,选为标准型(Nios II/s),如图3-2-1所示:图3-2-1 Nios II处理器选型窗口在Caches & Tightly Coupled Memories的设置中,将Instruction Cache的设置改为2 Kbytes。

图3-2-2 指令缓存设置其它的按默认设置即可,更改cpu_0名称为cpu。

添加SDRAM控制器软核,双击Memory下的SDRAM Controller,数据位设置为16位,片选1位,4块banks,地址线12行,8列,其他参数设置及时序设置见图3-2-4:其中,Memory Profile的设置如图3-2-3所示:图3-2-3 SDRAM基本参数设置Timing的设置如图3-2-4所示:图3-2-4 SDRAM时序参数设置将sdram_0重命名为sdram,注意sdram的参数设置必须正确,否则将不能使用,时序参数的设置可以参考芯片的数据手册根据需要适当调整。

SOPC实验报告

SOPC实验报告

SOPC系统设计技术实验报告姓名:学号:院系: 信息科学与工程学院专业:电子科学与技术指导老师:完成日期: 2015年04月25日实验二、NIOSII实现串口收发数据及LCD显示一、实验目的(1)进一步熟悉Quartus II、SOPC Builder、NIOS II IDE的操作;(2)掌握SOPC硬件系统及NIOS II软件的开发流程。

二、实验内容(1)、实验平台:硬件:PC级、SmartSOPC+教学实验开发平台;软件:Quartus II 9.0, SOPC Builder 9.0, NIOS II IDE 9.0。

(2)、实验内容:建立包含SDRAM、JTAG_UART、Timer、LCD的NIOS II处理器系统,通过JTAG_UART从IDE的控制端窗口读取输入值N,计算1至N的累加值,并将计算结果及计算花费时间的显示在LCD中。

三、实验步骤3.1硬件设计根据实验内容,可以得出本次实验的硬件结构图如图3.1所示:图3.1 硬件设计结构图具体硬件设计步骤如下:1)、在Quartus II中建立一个工程命名为:smallCore,器件设置为EP3C55F484C8;2)、以原理图输入方式建立空白顶层模块,并保持;3)、打开SOPC Builder,命名SOPC系统名称为nios2system,开始建立NIOS II 系统。

4)、双击SOPC Builder主界面左侧中的“Nios II Processor”,出现Nios II CPU 的配置向导对话框,如图1.4所示,在这里可以有三种Nios II CPU选择,我们选择快速型的Nios II/f,不使用硬件乘法器及除法器。

然后单击Next进入下一步配置;Instruction Cache项中选择2 Kbytes,在Data Cache项中选择512 Bytes,单击Next 进行下一步配置;在“Advanced Features”和“MMU and MPU Settings”选项卡中选择默认参数,然后单击Next,到了“JTAG Debug Module”选项卡,如图1.6所示。

sopc课程设计

sopc课程设计

SoPC课程设计(报告)题目:液晶控制显示器学院:电子工程学院系部:微电子学系专业:集成电路设计与集成系统班级: 1002 学生姓名:曹松松指导教师:曾泽沧起止时间: 2013年6月17日——2013年6月28日目录1 课程设计要求 (2)基本要求 (2)2 实验使用平台 (2)3 题目:选题2 (2)4 课程设计总结 (5)5 附件 (5)1课程设计要求基本要求课程设计要求所有题目采用Quartus II 工具提供的图形输入或者VerilogHDL语言输入方式作为电路设计工具,在NiosII上采用C语言实现编程,自定向下正向设计方法,先设计硬件系统,再进行软件编程,能够生成正确的FPGA下载代码和NiosII执行的软件代码。

硬件功能仿真和时序仿真采用第三方工具(建议为:modelsim),综合与布局布线工具为:Quartus II,SOPC Builder建立软件运行环境,具体要求为:1)根据课设题目,进行总体设计方案(10分);2)硬件电路顶层设计、模块划分、引脚定义(10分);3)电路设计及NiosII设计,提交电路设计源代码或电路图(10分);4)综合与布局布线,提交综合与布局布线报告(10分);5)FPGA下载代码和引脚分布(10分);6)软件总体设计及画出流程图(10分);7)程序设计,提交程序代码(10分);8)程序编译下载及仿真调试(10分)。

2实验使用平台实验平台使用Altera的DE2开发板,开发工具使用Altera的Quartus II和Nios II IDE。

3 题目:选题2在字符型液晶显示器上移动显示“XIAN UNIVERSITY POST AND TELECOMMUNICATIONS YOUR NAME 2013-6”,要求FPGA 设计硬件,内嵌NiosII,液晶显示采用软件实现。

1)根据课设题目,进行总体设计方案;(10分)此次sopc课程设计选题2,题目相对比较简单。

实验七 SOPC 基础实验

实验七  SOPC 基础实验

实验七SOPC 基础实验SOPC即System-On-a-Programmable-Chip(可编程片上系统),本章通过一系列的实验,使学习者对SOPC的应用有较为深刻的认识,并对FPGA的仿真与设计环境有深入的了解,为进一步的工作奠定基础。

7.1 SOPC概述SOPC是PLD和ASIC技术融合的结果,它是一种特殊的嵌入式系统。

首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。

由于FPGA无论在逻辑门密度还是在运行频率等诸多方面都取得了长足进步,基于FPGA的嵌入式系统成为SOPC的热点。

目前已经可以把处理器软核、ASIC硬核、数字信号处理器件以及网络控制等各种数字逻辑控制器以IP核的形式集成到FPGA芯片里,构成嵌入式系统。

7.2 基本硬件设计实验嵌入式开发环境EDK是用于设计嵌入式处理系统的集成软件,是利用嵌入式PowerPC™硬处理器核和/或Xilinx MicroBlaze™软处理器核进行Xilinx平台FPGA设计时所需的全部技术文档和IP。

EDK包括硬件部分和软件部分:1. 硬件部分:Xilinx Platform Studio (XPS)XPS是设计嵌入式处理器系统硬件部分的开发环境和用户图形界面。

可使用底层系统生成器BSB(Base System Builder )创建XPS工程,BSB能够快速和有效地创建工程设计。

Xilinx推荐使用BSB向导来创建任何新的嵌入式设计工程,BSB能够满足你所有设计的需要,并且可以帮助你节省很多时间。

使用BSB创建XPS的过程如下:创建顶层工程文件(*.xmp File)选择板型选择和配置处理器选择和配置多重I/O口添加内部的外围设备设置软件观看系统摘要页2. 软件部分:Software Development Kit (SDK)SDK是综合的开发环境,是对XPS的补充,可用C/C++进行嵌入式软件应用的编写和验证。

SOPC实验系统的开发与研究的开题报告

SOPC实验系统的开发与研究的开题报告

SOPC实验系统的开发与研究的开题报告一、选题背景及意义数字系统设计平台(SOPC)已成为数字电路系统设计的重要基础。

SOPC系统是由可编程逻辑器件(如FPGA)和微处理器软件相互融合组成的。

这种系统的优势在于其具有高性能、低成本、快速产品更新、易于维护等特性。

在实际应用中,SOPC可以用于工业控制、军事装备、医疗器械等领域,其应用十分广泛。

因此,对SOPC系统的研究和开发具有重要的理论和实际意义。

本选题旨在对SOPC系统进行探讨,通过对不同实验系统的开发与研究,让学生更深入了解SOPC系统的基本原理和应用。

此外,SOPC系统的研究也可帮助学生掌握数字电路的设计方法和技术,提升其工程实践能力,并为学生将来从事相关领域的工作打下基础。

二、研究内容和技术路线1. 硬件平台搭建:选定FPGA平台,根据具体需求选择不同的芯片型号和开发板,进行SOPC系统的硬件平台搭建。

2. 软件开发:选择VHDL、Verilog等硬件描述语言,结合FPGA开发平台进行程序编写和仿真,达到对系统的操作控制效果。

选择C语言、汇编语言等作为协处理器程序和驱动程序开发工具,进行开发。

3. 实验系统设计:根据实验需求不同,确定系统的功能模块和硬件电路,进行电路设计和验证,并根据实验系统的需要做相应的调试和优化。

4. 实验系统研究:分析实验系统的性能和优缺点,优化其功能和性能特点,进一步提高实验系统的稳定性和可靠性。

5. 实验结果分析:对SOPC系统实验平台的开发和实验结果进行分析总结,评估其在不同应用场景中的优劣性,提出改进意见和建议。

三、预期的研究成果1. 搭建基于FPGA的SOPC系统硬件平台。

2. 设计实验(如数字时钟、闹钟、图像处理系统、音频处理系统等)需求的SOPC系统,并实现相应的功能。

3. 发表学术论文或科技论文,并在学术或行业会议上做相应的展示和汇报。

四、可能遇到的困难及解决方法1. 硬件系统集成难度大,需要克服模块之间相互影响的问题。

SOPC实验报告

SOPC实验报告

SOPC设计基础实验报告学院:电子与信息工程学院学号:姓名:实验一开发软件使用练习一实验目的实验目的:掌握基于SOPC硬核处理器的设计流程。

二实验设备安装Quartu II的PC、实验箱三实验内容和步骤1)打开Quarts II 11.1,建立工程2)在菜单栏的File中选择New选项3)默认是New Quartus II Project,选OK4)选择Next,工程目录选择自己新建的文件夹,工程名输入E_Play5)源文件添加,点击Next直接跳过6)选择编号为EP4CE6E22C8的器件7)EDA工具选择,直接点击Next跳过8)项目信息显示,点击Finish完成空工程的建立9)配置无用引脚:在主页面菜单栏点击Assignments,接着在下拉框中选择Device选项,出现如下窗口:As input tri-stated with weak pull-up.点击OK完成。

创建软核处理器系统1)点击菜单栏的Tools,在下拉框中选择SOPC Builder选项,将System Name定为E_Play,下方的Target HDL选VHDL,最后点击OK确认。

2)Device Family选择Cylone IV E,Clock Frequency定为50MHz3)配置软核处理器系统点开左侧Processors总选项,双击Nios II Processor,选择Nios II/e另外在JTAG Debug Module选项中选择第一项,点击Finish完成配置4)配置存储器点开左侧Memories and Memory Controllers总选项,点开第二个On-Chip分选项,双击On-Chip-Memory,在Total memory sizes后输入4096点击Finish,在Onchip-memory2_0上右击,Rename为onchip-memory5)点开左侧Interface Protocols总选项,点开Serial分选项,双击JTAG UART,点击Finish完成6)在jtag_uart_0上右击,Rename为jtag_uart产生软核处理器系统1)双击cpu_0,将Reset Vector和Exception Vector的Memory均设置为onchip_memory,点击Finish完成。

SOPC实验报告要求课件.doc

SOPC实验报告要求课件.doc

注意:实验报告不能雷同。

一、实验仪器:
1、用到实验箱的模块及模块功能描述等。

2、接线说明。

二、实验内容及目标:
根据教学大纲的内容(部分内容有修改,请仔细填写)
例:用Nios II 设计并实现Hello 实验(需修改为点亮LED实验)。

学会用Quartus II 开发SOPC的流程;学会用SOPC Builder 进行CPU 开发的流程;学会用Nios SDK Shell 进行C 语言编译和下载。

三、实验内容任务
根据教学大纲的内容(有部分修改)
四、实验内容实现:
1、分析该实验用到的部件。

2、建立最小系统的较为详细步骤(包括结果)
3、分析程序代码的含义(最好有自己的代码)
4、问题及心得。

对应后面的时间如:实验六,实验七:
主要是实验四部分跟修改为如下:
四:实验内容实现:
1分析该实验用到的部件。

(主要是新增部分)
2系统建立及配置(可只列出跟实验五不同的步骤说明)
3分析程序代码的含义(最好有自己的代码)
4问题及心得。

sopc实验报告

sopc实验报告

xx 学院实验题目VGA接口实验学院名称:电子与信息工程学院专业:电信101 嵌入式方向姓名:x x姓名:x x指导教师:xVGA接口实验一.实验目的了解VGA显示原理,熟悉VGA核的使用方法。

二.实验设备硬件:PC机,SmartSOPC教学实验开发平台,带VGA接口的显示器,SmartCore_VGA_PS2_lc6 Nios II系统;软件:Nios II IDE 5.0。

三.实验内容熟悉使用光盘中提供的VGA核(zlg_avalon_vga)。

VGA核(zlg_avalon_vga)采用了SRAM(IS61V25616AL)来做显存,每个像素点的RGB用一位字节来存放,则显示为256色,显存大小为640x480=300KB,格式如表5.2所列。

VGA接口的时序控制由FPGA 完成,主要有4个模块组成:行、场同步信号产生模块、FIFO缓冲模块、显存读/写仲裁模块及SRAM读/写操作模块。

其中后面3个模块主要是用SRAM来构成一个双口RAM。

其他还有一些控制测试模块,如鼠标指针显示模块。

VGA核使用外部SRAM作为显示缓冲。

对VGA进行操作时,也就是对显示缓冲区进行数据填充。

根据不同的数据显示不同的图形或字符。

显示缓冲区共有480行,每一行有640个像素点,使用低10为地址做列地址(0~639),高9位地作为行地址(0~479)。

这样做方便于显示区的数据更改和管理。

但是对现实缓冲区进行操作时要注意地址组合。

实验模板位于:配套光盘\SmartSOPC\SmartSOPC_Software_Template\VGA_test。

四.实验预习要求(1)预习光盘中提供的VGA核(zlg_avalon_vga)的Verilog代码,位于:配套光盘\SmartSOPC\SmartSOPC_Component\ zlg_avalon_vga文件夹中。

(2)熟悉第1章介绍的VGA硬件电路。

五.实验步骤(1)使用试验箱提供的排线按照引脚分配情况从核心板上PACK的45、43、41、23、20、18、16、14、15和17引脚连接到COM1(VGA_COM)的R2、R1、R0、G2、G0、B1、B0、VSYNC、HSYNC。

sopc学号显示电路设计实验报告

sopc学号显示电路设计实验报告

学号显示电路设计一.实验目的:1、练习使用Verilog HDL语言设计实现数字电路。

2、练习利用Verilog HDL语言和状态机设计电路。

3、熟悉EDA开发基本流程。

4、掌握多个数码管动态扫描显示的原理及设计方法。

二.设计源程序和说明://this program displays strings "A11070511"//by yangqingyun 2011-4//modified by xinyi 2011-4-28module xuehao_display(clk,rst,out);input clk,rst;output reg[6:0] out;reg [3:0] state;parameters0=4'd0,s1=4'd1,s2=4'd2,s3=4'd3,s4=4'd4,s5=4'd5,s6=4'd6,s7=4'd7,s8=4' d8;always@(negedge clk or negedge rst)beginif(!rst) begin out=7'b1111111;state=s0;endelsecase(state)s0:begin out=7'b0001000;state<=s1;end//显示As1:begin out=7'b1111001;state<=s2;end//显示1s2:begin out=7'b1111001;state<=s3;end//显示1s3:begin out=7'b1000000;state<=s4;end//显示0s4:begin out=7'b111000;state<=s5;end//显示7s5:begin out=7'b100000;state<=s6;end//显示0s6:begin out=7'b0010010;state<=s7;end//显示5s7:begin out=7'b1111001;state<=s8;end//显示1s8:begin out=7'b1111001;state<=s0;end//显示1default:state<=0;EndcaseEndEndmodule程序详解:这是一个非常简单的程序,定义8个输出变量,然后给他们赋值,使他们分别为A11070511,然后通过数码管显示出来功能仿真结果说明:从波形图可以看出a b c d e f g的值对应着计数器的 1 2 3 4 5 6 7 8 9依次为0001000(A) 1111001 (1) 1111001 (1)1 000000 (0)1111000(7) 1 000000 (0)0010010 (5) 1111001 (1) 1111001 (1)。

SOPC按键控制LED灯亮灭实验报告

SOPC按键控制LED灯亮灭实验报告

课程设计报告设计课题:SOPC按键控制LED灯亮灭按键控制LED灯泡亮灭一、设计任务与要求1.实现按键控制小灯泡的亮灭;2.学习并掌握Quartus II 9.0软件3.学会SOPC和FPGA电路设计方法二、方案设计与论证在Quartus II 9.0软件里利用Nios II完成对软核CPU的设计,设计完成后再搭建外围电路,后在Nios II IDE里完成代码的编写,最后将设计的电路和编写的代码下片后观察实验现象并调试直至成功。

方案一:1.新建一个New Quartus II Project,并命名为led_lab2.选择Cyclone III系列的EP3C25F324C8芯片3.CPU内核的设计:3.1新建一个SOPC Builder System,并命名为lab_led3.2将所要设计的CPU模块添加进来,并选择Nios II/e核心3.3再添加jtag和on-chip memory,并将内存设置为20KB3.4添加两个PIO(并行输入输出),将其中一个设置为Output ports only,并命名为led_pio,用作输出模块,另一个设置为Input ports only,并命名为key_pio,用作输入模块3.5保存好设计编译后无误4.外围电路的设计4.1新建一个Block Diagram/Schematic File文件,并命名为led_lab4.2将上一步设计好的CPU模块添加进来4.3自动生成好管脚后进行编译4.4对输入输出管脚进行分配,完成后再次进行编译5.Nios II代码控制CPU5.1点击Nios II IDE,新建一个lab_led.c文件5.2编写能够实现按键控制LED灯的代码,后编译、调试6.打开SOPC实验箱,将设计好的电路和编写好的代码下片,观察实验现象并调试四、总原理图及子模块结构图1.CPU内核的设计2.外围电路的搭建3.电路管脚的分配4.实验代码的编写及调试五、综合与调试最终实验代码:#include "sys/alt_stdio.h"#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"#include<unistd.h>alt_u8 K;int main(void){alt_putstr("\n Lab2_2 - LED key polling!\n");while(1){K= IORD_ALTERA_A VALON_PIO_DATA(KEY_PIO_BASE);IOWR_ALTERA_A VALON_PIO_DA TA(LED_PIO_BASE,K); usleep(10000);}return 0;}六、结果性能分析当按下KEY1后第一个LED点亮,松开后第一个LED熄灭当按下KEY2后第二个LED点亮,松开后第二个LED熄灭当按下KEY3后第三个LED点亮,松开后第三个LED熄灭当按下KEY4后第四个LED点亮,松开后第四个LED熄灭七、设计作品图片[八、结论与心得]因为有了前两次实验的经验和教训,所以这次实验并没有遇到多少障碍。

SOPC实训总结报告

SOPC实训总结报告

一熟悉SOPC功能,了解操作流程SOPC:System-On-a-Programmable-Chip,即可编程片上系统。

用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC。

可编程片上系统(SOPC)是一种特殊的嵌入式系统:首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。

二硬件开发QuartusII6.0和NIOSII操作流程首先,在开始处查找原physical address,找到替换文件Quartuslicense-v6.0.dat 中的HOSTID进行替换,进行破解。

然后,打开QuartusII6.0软件-在路径中选择quartuslicense-v6.0.dat出现product(0000)。

接下来,建立工程New Project Wizard,确定工程路径,工程名编辑,名称不能写数字,不能汉语以及符号打头。

接连点击两下Next,后在family内选择CycloneII,如图。

点击next后点击finish,完成建立工程。

1建立Block Diagram ,点击File-- new,点击OK,完成建立2进行构建NiosII软核,点击SOPC Builder 后运行3建立SDRAM模块后点击SDRAM,在Bits中选择16,点击next,点击finish,完成SDRAM控制器的设置。

4 建立EPCS控制器,直接finish完成添加EPCS Serial Flash controller.后建立SYSTEM ID,直接点击System ID Peripal后点击finish。

5 建立JTAG UART,双击更改bytes和RQ分别为64 、8,64、8。

点击next—finish,完成建立。

6 配置及编译NIOSII,将“-0”去掉,修改Rename,双击CPU,在memory中选择cfi-flash,exceptioni vector ,选择sdram,点击next,更改key的参数:Generate,开始进行编译。

SOPC课程设计实验报告--电子琴

SOPC课程设计实验报告--电子琴

FPGA-CPLD原理及应用课程设计报告题目:电子琴学院: 信息与电子工程学院专业: 电子科学与技术学号:姓名:指导老师:时间:2013-7-15~2013-7-20一、摘要电子琴是数字电路中的一个典型应用。

在实际的硬件设计中用到的器件非常多,连线比较复杂,同时会产生比较大的延时,从而造成测量误差较大,可靠性不好。

以EDA工具作为开发手段,运用VHDL硬件描述语言将使整个系统大大简化,提高了电子琴整体的性能和可靠性。

关键词:电子琴 SOPC SOPC Builder Nios II DE2 音符二、设计要求方案一:采用数字逻辑电路制作,用IC拼凑焊接实现。

其特点是直接用现成的IC组合而成,简单方便,但本系统需用到许多分频器,这就使得需要用到相当多的IC,从而造成了体积过于庞大,而且连线也会比较复杂。

方案二:采用单片机实现,通过软件编程,仿真后将程序用编程器写入到单片机芯片上,该方案成本低,稳定度也比较好,但外围电路多,特别是播放音乐时需要用到大容量的外部存储器,这样就增加了编程难度,调试不够直观,也不够灵活方便。

方案三:采用可编程逻辑器件(FPGA)制作,将所有器件集成在一块芯片上,大大减小了电子琴的体积,用VHDL编程实现时更加方便,而且易于进行功能扩展,并可调试仿真,制作时间大大缩短,因此选用了方案三进行设计。

电子琴设计原理乐曲都是由一连串的音符组成,按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。

为了准确地演奏出一首乐曲,仅仅让扬声器能够发出声音是远远不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。

由此可见,乐曲中每个音符的发音频率以及音符持续的时间是乐曲能够连续演奏的两个关键因素。

乐曲的12平均率规定:每2个八度音之间的频率要相差1倍,比如简谱中的中音2与高音2。

在2个八度音之间,又可分为12个半音。

另外,音符A(简谱中的低音5)的频率为392Hz,音符E到F之间、B到C之间为半音,其余为全音。

SOPC实验报告

SOPC实验报告

SOPC系统设计技术实验报告姓名:学号:院系: 信息科学与工程学院专业:电子科学与技术指导老师:完成日期: 2015年04月25日实验二、NIOSII实现串口收发数据及LCD显示一、实验目的(1)进一步熟悉Quartus II、SOPC Builder、NIOS II IDE的操作;(2)掌握SOPC硬件系统及NIOS II软件的开发流程。

二、实验内容(1)、实验平台:硬件:PC级、SmartSOPC+教学实验开发平台;软件:Quartus II ,SOPC Builder ,NIOS II IDE 。

(2)、实验内容:建立包含SDRAM、JTAG_UART、Timer、LCD的NIOS II处理器系统,通过JTAG_UART从IDE的控制端窗口读取输入值N,计算1至N的累加值,并将计算结果及计算花费时间的显示在LCD中。

三、实验步骤硬件设计根据实验内容,可以得出本次实验的硬件结构图如图所示:图硬件设计结构图具体硬件设计步骤如下:1)、在Quartus II中建立一个工程命名为:smallCore,器件设置为EP3C55F484C8;2)、以原理图输入方式建立空白顶层模块,并保持;3)、打开SOPC Builder,命名SOPC系统名称为nios2system,开始建立NIOS II系统。

4)、双击SOPC Builder主界面左侧中的“Nios II Processor”,出现Nios II CPU的配置向导对话框,如图所示,在这里可以有三种Nios II CPU选择,我们选择快速型的Nios II/f,不使用硬件乘法器及除法器。

然后单击Next进入下一步配置;Instruction Cache项中选择2 Kbytes,在Data Cache项中选择512 Bytes,单击Next进行下一步配置;在“Advanced Features”和“MMU and MPU Settings”选项卡中选择默认参数,然后单击Next,到了“JTAG Debug Module”选项卡,如图所示。

sopc实验报告

sopc实验报告

实验一[FPGA]基于 Qsys 的第一个 Nios II 系统设计一、基本说明1、软件平台: Quartus II 13.0(64-bit) Nios II 13.0 Software Build Tools for Eclipse2、硬件平台: Altera Cyclone II EP2C8Q208C8N二、设计目标完成 FPGA 平台上的“ Hello Word”实现,实现方式:基于 Qsys 的 Nios II 系统设计。

三、具体步骤1、打开 Quartus II 13.0(64-bit),新建一个工程, File -> New Project Wizard…,忽略Introduction,之间单击 Next> 进入下一步。

2、添加已经存在的文件,这里我们没有需要添加的文件,直接单击 Next> 进入下一步。

然后单击 Finish 完成即可。

3、新建 Block Diagram/Schematic File (方块图/原理图文件)。

单击 File -> New..,选择 Design Files 中的 Block Diagram/Schematic File,单击 OK 即可。

4、启动 Qsys 工具,进行硬件部分设计。

单击 Tools -> Qsys ,进入 Qsys 设置界面。

系统已经默认添加了时钟模块,名称为 clk_0 ,这里我们选中clk_0,右击,选择 Rename,将其名称更改为 clk。

5、添加软核处理器的各部分模块。

我们总共需要添加 Nios II Processor、On_ChipMemory(RAM or ROM)、 JTAG UART、 System ID Peripheral 这 4 个模块。

最终的完成效果如图 1 所示。

图 1 Qsys Connections 完成效果6、进行软核的相关设置。

首先双击 nios2_qsys,进入处理器设置模块。

基于sopc 蜂鸣器

基于sopc 蜂鸣器

实验五蜂鸣器音乐播放实验一、实验目的(1)、掌握蜂鸣器音乐播放的实验原理。

(2)、学习PWM对交流蜂鸣器的控制。

二、实验设备硬件:PC机,SmartSOPC教学实验开发平台SmartSOPC_standard_lc6 Nios II系统。

软件:Quartus Ⅱ6.0、SOPC Buider6.0、NiosⅡIDE6.0。

三、实验内容利用光盘提供的PWM对交流蜂鸣器进行控制,实现乐曲《大长今》的播放。

实验箱的蜂鸣器是交流蜂鸣器,在BEEP输入一定频率的脉冲时,蜂鸣器蜂鸣。

改变输入频率可以改变蜂鸣器的响声。

因此,可以利用一个PWM来控制BEEP,通过改变PWM的频率来得到不同的响声,以此来播放音乐。

实验模板位于:配套光盘\SmartSOPC\ SmartSOPC_Software_Template\Music_C。

四、实验步骤预习本书第1章的内容,熟悉蜂鸣器控制电路。

熟悉配套光盘中PWM核(altera_avalon_pwm)VHDL的源码,了解其实现原理。

了解配套光盘中PWM核驱动函数的功能和结构。

(1)启动NiosII IDE,新建一个空白C\C++工程,并命名为Music_C。

(2)参考提供的参考程序,在Music_C工程文件夹中新建应用程序文件music_c以及music_h。

(3)确认添加NiosII系统,请确认添加altera_avalon_pwm,并重命名为beep_pwm。

(4)在System Library设置页中,把标准输入输出设备指定为jtag_uart,这样可以通过jtag_uart来调试程序,再把程序和数据区都指定为adram。

(5)下载硬件配置文件(SmartSOPC_standard_1c6)到FPGA。

(6)编译整个工程,查找语法错误。

(7)将实验箱主板上JP6上的BEEP、JP7跳线短接。

(8)全速运行程序,听《大长今》乐曲是否标准。

程序清单#ifndef _MUSIC_H#define _MUSIC_H#include "system.h"#define RHYTHM 36#define _1 RHYTHM*4 //note#define _1d RHYTHM*6 //dotted note#define _2 RHYTHM*2 //halfnote#define _2d RHYTHM*3 //dotted halfnote#define _4 RHYTHM*1 //quarter note#define _4d RHYTHM*3/2 //dotted quarter note #define _8 RHYTHM*1/2 //eighth note#define _8d RHYTHM*3/4 //dotted eighth note #define _16 RHYTHM*1/4 //sixteenth note#define _16d RHYTHM*3/8 //dotted sixteenth note #define _32 RHYTHM*1/8 //thirty-second note//低音#define _1DO (ALT_CPU_FREQ/131)#define _1DOr (ALT_CPU_FREQ/139)#define _1RE (ALT_CPU_FREQ/147)#define _1REr (ALT_CPU_FREQ/155)#define _1MI (ALT_CPU_FREQ/165)#define _1FA (ALT_CPU_FREQ/175)#define _1FAr (ALT_CPU_FREQ/185)#define _1SOL (ALT_CPU_FREQ/196)#define _1SOLr (ALT_CPU_FREQ/207)#define _1LA (ALT_CPU_FREQ/220)#define _1LAr (ALT_CPU_FREQ/233)#define _1SI (ALT_CPU_FREQ/247)//中音#define _DO (ALT_CPU_FREQ/262)#define _DOr (ALT_CPU_FREQ/277)#define _RE (ALT_CPU_FREQ/294)#define _REr (ALT_CPU_FREQ/311)#define _MI (ALT_CPU_FREQ/330)#define _FA (ALT_CPU_FREQ/349)#define _FAr (ALT_CPU_FREQ/370)#define _SOL (ALT_CPU_FREQ/392)#define _SOLr (ALT_CPU_FREQ/416)#define _LA (ALT_CPU_FREQ/440)#define _LAr (ALT_CPU_FREQ/466)#define _SI (ALT_CPU_FREQ/492)//高音#define _DO1 (ALT_CPU_FREQ/523)#define _DO1r (ALT_CPU_FREQ/554)#define _RE1 (ALT_CPU_FREQ/579)#define _RE1r (ALT_CPU_FREQ/740)#define _MI1 (ALT_CPU_FREQ/651)#define _FA1 (ALT_CPU_FREQ/695)#define _FA1r (ALT_CPU_FREQ/740)#define _SOL1 (ALT_CPU_FREQ/784)#define _SOL1r (ALT_CPU_FREQ/830)#define _LA1 (ALT_CPU_FREQ/880)#define _LAR1r (ALT_CPU_FREQ/932)#define _SI1 (ALT_CPU_FREQ/983)#define SONG_SIZE 150#define MUTE(TONE) (TONE)>>2 //低音为25%占空比#define LOUD(TONE) (TONE)>>1 //高音为50%占空比//1=G 3/4//乐曲为一个多行3列的2维数组//第1列为音调,第2列为节拍,第3列音高(高音、低音) int dachangjin[SONG_SIZE][3] = {{_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_SI, _4d,LOUD(_SI)}, //3.{_LA, _8, MUTE(_LA)}, //2_{_SOL,_4, MUTE(_SOL)},//1{_MI, _4, LOUD(_MI)}, //.6{_SOL,_4, MUTE(_SOL)},//1{_SOL,_8d, MUTE(_SOL)},//1{_LA, _32,MUTE(_LA)}, //2__{_SOL,_2d,MUTE(_SOL)},//1--{_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_SI, _4d,LOUD(_SI)}, //3.{_RE1,_8, MUTE(_RE1)},//5{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_LA, _4, MUTE(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _2d,MUTE(_SI)}, //3--{_RE1,_4, LOUD(_RE1)},//5{_MI1,_4, MUTE(_MI1)},//6{_MI1,_4, MUTE(_MI1)},//6{_MI1,_4d,LOUD(_MI1)},//6{_RE1,_8, MUTE(_RE1)},//5{_SI, _4, MUTE(_SI)}, //3{_SI, _4, LOUD(_SI)}, //3{_RE1,_4, MUTE(_RE1)},//5{_MI1,_8, MUTE(_MI1)},//6{_RE1,_32,MUTE(_RE1)},//5{_MI1,_32,MUTE(_MI1)},//6{_RE1,_2d,MUTE(_RE1)},//5{_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_SI, _8, MUTE(_SI)}, //2{_SI, _4, MUTE(_SI)}, //3{_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_MI, _4, LOUD(_MI)}, //.6 {_SOL,_16,MUTE(_SOL)},//1{_MI, _2d,MUTE(_MI)}, //.6 {_MI, _4,0}, //stop {_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_SI, _4d,LOUD(_SI)}, //3. {_LA, _8, MUTE(_LA)}, //2_ {_SOL,_4, MUTE(_SOL)},//1{_MI, _4, LOUD(_MI)}, //.6 {_SOL,_4, MUTE(_SOL)},//1{_SOL,_8d,MUTE(_SOL)},//1{_LA, _32,MUTE(_LA)}, //2__ {_SOL,_2d,MUTE(_SOL)},//1-- {_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_SI, _4d,LOUD(_SI)}, //3. {_RE1,_8, MUTE(_RE1)},//5{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_LA, _4, MUTE(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _2d,MUTE(_SI)}, //3-- {_RE1,_4, LOUD(_RE1)},//5{_MI1,_4, MUTE(_MI1)},//6{_MI1,_4, MUTE(_MI1)},//6{_MI1,_4d,LOUD(_MI1)},//6{_RE1,_8, MUTE(_RE1)},//5{_SI, _4, MUTE(_SI)}, //3{_SI, _4, LOUD(_SI)}, //3{_RE1,_4, MUTE(_RE1)},//5{_MI1,_4, MUTE(_MI1)},//6{_RE1,_2d,MUTE(_RE1)},//5{_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SI, _4, MUTE(_SI)}, //3{_LA, _4d,LOUD(_LA)}, //3.{_SI, _4, MUTE(_SI)}, //3{_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_MI, _4, LOUD(_MI)}, //.6{_SOL,_16,MUTE(_SOL)},//1{_MI, _2d,MUTE(_MI)}, //.6--{_LA, _16,LOUD(_LA)}, //2{_LA, _16,LOUD(_LA)}, //2{_LA, _16d,LOUD(_LA)}, //2{_SOL,_8, MUTE(_SOL)},//1{_MI, _4, MUTE(_MI)}, //.6{_LA, _16,LOUD(_LA)}, //2{_LA, _16,LOUD(_LA)}, //2{_LA, _16d,LOUD(_LA)}, //2{_SOL,_8, MUTE(_SOL)},//1{_MI, _4, MUTE(_MI)}, //.6{_LA, _4, LOUD(_LA)}, //2{_SI, _4, MUTE(_SI)}, //3{_SOL,_4, MUTE(_SOL)},//1{_LA, _4d,LOUD(_LA)}, //2{_SI, _8, MUTE(_SI)}, //3{_RE1,_4, MUTE(_RE1)},//5{_MI1,_16,LOUD(_MI1)},//6{_MI1,_16,LOUD(_MI1)},//6{_MI1,_16d,LOUD(_MI1)},//6{_RE1,_8, MUTE(_RE1)},//5{_SI, _4, MUTE(_SI)}, //3{_LA, _16,LOUD(_LA)}, //2{_LA, _16,LOUD(_LA)}, //2{_LA, _16d, LOUD(_LA)}, //2{_SOL,_8, MUTE(_SOL)},//1{_MI, _4, MUTE(_MI)}, //.6{_MI, _4, LOUD(_MI)}, //.6{_RE, _4, MUTE(_RE)}, //.5{_MI, _4, MUTE(_MI)}, //.6{_MI, _2d,MUTE(_MI)}, //.6{_MI, _4,0}, //stop{_MI, _4,0}, //stop};/*{_1SOL, _4d, MUTE(_1SOL)}, //.1 {_1LA, _4d, MUTE(_1LA)}, //.2{_1SI, _4d, MUTE(_1SI)}, //.3{_DO, _4d, MUTE(_DO)}, //.4{_MI, _4d, MUTE(_MI)}, //.6{_FA, _4d, MUTE(_FA)}, //.7{_SOL, _4d, MUTE(_SOL)}, //1{_LA, _4d, MUTE(_LA)}, //2{_SI, _4d, MUTE(_SI)}, //3{_DO1, _4d, MUTE(_DO1)}, //4{_RE1, _4d, MUTE(_RE1)}, //5{_MI1, _4d, MUTE(_MI1)}, //6{_FA1, _4d, MUTE(_FA1)}, //7{_SOL1, _4d, MUTE(_SOL1)}, //1.{_LA1, _4d, MUTE(_LA1)}, //2.{_SI1, _4d, MUTE(_SI1)}, //3.#include <stdio.h>#include <string.h>#include "music.h"#include "altera_avalon_pwm_regs.h"#include "altera_avalon_pwm.h"#include "alt_types.h"#include "system.h"#include "priv/alt_busy_sleep.h"#ifndef BEEP_PWM_BASE //这是BEEP_PWM核的基地址#define BEEP_PWM_BASE 0xffffffff //user's definition here#endif#if BEEP_PWM_BASE == 0xffffffff#error "No definition of BEEP_PWM core.\n"#endif// delay msvoid delay_ms(alt_32 ms){while(ms--){alt_busy_sleep(1000);//Delay 1ms}}int main (){static int i;while(1){for(i=0; i<SONG_SIZE; i++){altera_avalon_pwm_disable(BEEP_PWM_BASE);delay_ms(40); //Delayabout 40msif(dachangjin[i][1]!=0){altera_avalon_pwm_init(BEEP_PWM_BASE, dachangjin[i][0],dachangjin[i][2]); //设置PWM频率实现不同音调、设置占空比实现不同音高altera_avalon_pwm_enable(BEEP_PWM_BASE);delay_ms(2*dachangjin[i][1]);//延时,控制播放速度}}}return 0;}生成的模块文件如下图:在SmartSOPC教学实验开发平台上可看到听到《大长今》乐曲的播放。

SOPC实验报告(不含综合实验)要点

SOPC实验报告(不含综合实验)要点

#SOPC 系统搭建实验步骤:一、系统模块设计二、建立Quartus 工程设定工程目录、工程名、选择器件等;建立一个与工程名相同的顶层图形设计文件; 将两个相关文件夹拷到工程目录下; 三、进入SOPC Builder ,搭建Nios2系统模块确定FPGA 芯片型号和和系统工作频率; 添加Nios2处理器并配置; 添加JTAG UART 调试模块; 添加SDRAM 控制器; 添加Time core 并配置; 添加UART 并配置;添加PIO Core ,配置为4位输出,控制台上的4个LED 灯; 添加CH452_controller ——IPcore ; 添加自主IPcore (PWM ); 选择自动分配地址和中断号;FPGA Nios IICPUJTAG UARTTimer定时器 A V A L O N SDRAM ctroller SDRAM chipCH452_controller_IPcore 4×4矩阵键盘led_pio (4 bits) 8个动态数码管 UART ctroller 电平转换RS-232 to PCCH452 键盘显示管理芯片PLL自主PWM_IPcore LED 灯(观察?) 控制四个LED 灯设定CPU启动地址和异常处理地址;Generate生成Nios2模块;四、在Quartus顶层图形设计文件中添加(insert symbol)Nios2系统模块;添加alt_pll并配置;添加Timer_out辅助电路;添加(insert symbol)input、output、bidir引脚并连线;设定未用引脚状态为三态,编译工程;进行引脚分配(如下所示);再次编译;下载.sof文件下为引脚分配示意图:系统搭建完毕后的硬件核截图:实验小结:系统搭建其实是本次实验中最难倒我们的部分,主要是在搭建过程中我们组与老师的进度脱节,以至于出现了不切实际的设计部分而我们又不自知。

SOPC实验报告

SOPC实验报告
}
}
COMPONENT altera_avalon_adapter_master_y
{
VERSION 6.05
{
local = "C:/altera/61/ip/sopc_builder_ip/altera_avalon_adapter_master_y";
}
}
COMPONENT altera_avalon_adapter_slave_y
{
local = "C:/altera/61/ip/sopc_builder_ip/altera_avalon_adapter_upstream_pipeline";
}
}
COMPONENT altera_avalon_adapter_waitrequest_pipeline
{
VERSION 6.05
}
}
COMPONENT altera_avalon_onchip_memory2
{
VERSION 6.05
{
local = "C:/altera/61/ip/sopc_builder_ip/altera_avalon_onchip_memory2";
}
}
COMPONENT altera_avalon_performance_counter
{
VERSION 6.05
{
local = "C:/altera/61/ip/sopc_builder_ip/altera_avalon_lcd_16207";
}
}
COMPONENT altera_avalon_mailbox
{
VERSION 6.05
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SOPC系统设计技术实验报告姓名:学号:院系: 信息科学与工程学院专业:电子科学与技术指导老师:完成日期: 2015年04月25日实验二、NIOSII实现串口收发数据及LCD显示一、实验目的(1)进一步熟悉Quartus II、SOPC Builder、NIOS II IDE的操作;(2)掌握SOPC硬件系统及NIOS II软件的开发流程。

二、实验内容(1)、实验平台:硬件:PC级、SmartSOPC+教学实验开发平台;软件:Quartus II 9.0,SOPC Builder 9.0,NIOS II IDE 9.0。

(2)、实验内容:建立包含SDRAM、JTAG_UART、Timer、LCD的NIOS II处理器系统,通过JTAG_UART从IDE的控制端窗口读取输入值N,计算1至N的累加值,并将计算结果及计算花费时间的显示在LCD中。

三、实验步骤3.1硬件设计根据实验内容,可以得出本次实验的硬件结构图如图3.1所示:图3.1 硬件设计结构图具体硬件设计步骤如下:1)、在Quartus II中建立一个工程命名为:smallCore,器件设置为EP3C55F484C8;2)、以原理图输入方式建立空白顶层模块,并保持;3)、打开SOPC Builder,命名SOPC系统名称为nios2system,开始建立NIOS II系统。

4)、双击SOPC Builder主界面左侧中的“Nios II Processor”,出现Nios II CPU的配置向导对话框,如图1.4所示,在这里可以有三种Nios II CPU选择,我们选择快速型的Nios II/f,不使用硬件乘法器及除法器。

然后单击Next进入下一步配置;Instruction Cache项中选择2 Kbytes,在Data Cache项中选择512 Bytes,单击Next进行下一步配置;在“Advanced Features”和“MMU and MPU Settings”选项卡中选择默认参数,然后单击Next,到了“JTAG Debug Module”选项卡,如图1.6所示。

这里是选择JTAG调试接口,选择默认的模式Level 1,然后单击Next,到了“Custom Instruction”选项卡,也选择默认参数,最后单击Finish完成对Nios II CPU的配置。

5)、添加了Nios II CPU内核后,选中Module Name下的cpu_0,单击鼠标右键,在Rename 项中可以重命名cpu_0的名称为cpu,并在“Clock Settings”一栏中将clk_0名称改为clk。

6)、双击在SOPC Builder主界面左侧中的Bridges and Adapters→Memory Mapped→Avalon-MM Clock Crossing Bridge,出现Clock Crossing Bridge的配置向导对话框,在“Slave-to-Master FIFO”中的FIFO depth中选择64。

单击“finish”退出配置对话框,并重命名clock_crossing_0的名称为clock_crossing。

7)、双击在SOPC Builder主界面左侧中的Memories and Memory Controllers→SDRAM→DDR SDRAM High Performance Controller,出现DDR SDRAM High Performance Controller的配置向导对话框。

修改“General Settings”选项卡的参数配置,参数修改如下:Speed grade:8PLL reference clock frequency:85Memory clock frequency:100Local interface clock frequency:full修改“Modify Parameters”:DDR SDRAM控制器参数,参数修改如下:Total Memory interface DQ width:16Memory vendor:otherColumn address width:98)、修改DDR SDRAM的控制器ddr_sdram_0的名称为ddr_sdram,并在ddr_sdram左侧中取消cpu.instruction_master和cpu.data_master中的实点,选择clock_crossing.m1的实点,将ddr_sdram控制器连接到Clock Crossing Bridge的m1中。

9)、双击在SOPC Builder主界面左侧中的Bridges and Adapters→Memory Mapped→Avalon-MM Pipeline Bridge,出现Pipeline Bridge的配置向导对话框,选择默认参数,单击“finish”添加到SOPC Builder中,并重命名pipeline_bridge_0为pipeline_bridge。

10)、双击在SOPC Builder主界面左侧中的Peripherals→Microcontroller Peripherals→PIO(Parallel I/O),出现PIO外设配置的对话框,在Wide一栏中选择8bit,在Direction一栏中选择Output ports only,如图1.13所示,最后单击Finish完成对PIO的设置,此时在SOPC Builder中出现pio_0的外设,修改该名称为LED_PIO,并把LED_PIO外设连接到pipeline_bridge.m1上。

11)、双击在SOPC Builder主界面左侧中的Peripherals→Debug and Performance→System ID Peripheral,直接在SOPC Builder中添加sysid的外设,修改sysid_0名称为sysid,并把sysid 外设连接到pipeline_bridge.m1上。

12)、双击在SOPC Builder主界面左侧中的PLL→PLL,单击“Launch Altera’s ALTPLL MegaWizard”,出现PLL配置对话框1。

在“what is the frequency of the inclock0 input”一栏中设置输入的频率为50MHz,单击Next,进行下一步的设置。

在PLL配置对话框2中的“Lock output”中选择“Create ‘locked’output”,PLL配置对话框的page3、4、5都选择默认参数,在page6中Clock Tap Settings一栏中选择“Enter output clock frequency”,将c0时钟输出为85MHz,单击Next,进行下一步的设置。

PLL配置对话框的page7-11都选择默认参数,在page12中单击“finish”退出PLL配置对话框,最后再单击“finish”退出。

在SOPC Builder中重命名pll_0为sys_pll,并把sys_pll外设连接到pipeline_bridge.m1上。

13)、在“Clock Settings”一栏中将sys_pll_c0名称改为system_clk,并在SOPC Builder中的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: Initial Period改为20ms,命名为sys_clock_timer, 对应system_clk,连接至pipeline_bridge;16)、添加Avalon-MM Tristate bridge: 使用缺省设置,命名为ext_bus,对应system_clk,连接至cpu;17)、添加zlg_avalon_lcd240_128: 命名为lcd240_128,对应system_clk,连接至ext_bus;18)、添加pio: 1位输出,output only, 命名为lcd_light,对应system_clk,连接至pipeline_bridge;19)、单击SOPC Builder菜单的system→Auto-Assign Base Address,进行自动分配地址,单击SOPC Builder菜单的system→Auto-Assign IRQs,进行自动分配中断号。

20)、双击SOPC Builder中的cpu,确认在Reset Address一栏中选择ddr_sdram,在Exception Address一栏中选择ddr_sdram。

完整的nios2系统如图3.2所示:图3.2 nios2系统构造图时钟设制如图3.3所示:图3.3 系统时钟设置图21)、生成系统。

在之前建立好的原理图文件中添加NIOS II 系统至顶层模块,保存原理图文件。

22)、定制delay_reset_block模块:原理图如图3.4所示:图3.4 delay_reset_block模块原理图23)、在smallCore原理图中添加delay_reset_block模块原理图,并且添加输入输出端口,得到系统原理图,如图3.5所示:图3.5系统原理图24)、在Quartus II主界面中选择Assignments→Device。

在“Available devices”一栏中选择“EP3C55F484C8”器件。

对器件和引脚进行配置。

配置项有:Unused Pins设置为:As input tri-stated;configuration device设置为:EPCS16;Default I/O standard配置为:3.3-V LVTTL电平;Dual-Purpose Pins中的所有引脚设置为“Use as regular I/O”。

25)、将DDR SDRM引脚约束文件中的“YES”改为“NO”,运行DDR SDRM引脚约束文件。

26)、对系统进行引脚分配:新建引脚约束文件:”setup.tcl”。

setup.tcl文件见附录。

运行set.up.tcl引脚约束文件。

27)、编译整个工程,编译成功之后将系统下载到FPGA 中去。

相关文档
最新文档