ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:1.06MB ,
资源ID:9102967      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9102967.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SOPC范例程序入门.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SOPC范例程序入门.docx

1、SOPC范例程序入门SOPC范例程序一、 跑马灯打开Quartus II,出现如下界面新建一个工程,选择File-New Project Wizard,出现以下界面选择Next ,出现以下对话框给新工程命名并选择工程目录,本例使用runningled作为工程名。点击两次Next ,出现如下对话框在Family中选择Cyclone II,Available devices中选择EP2C35F672C6,为我们使用的FPGA芯片型号。然后点击Finish,至此就建立好了新工程。再点击Quartus II软件右上方工具栏的,打开SOPC Builder程序。在弹出的对话框中指定SOPC系统的名称,注

2、意不要与工程名相同。指定Verilog为描述系统的语言。本例将建立一个包含CPU核、4Kb片上RAM、一个定时器和8个IO口的最小片上系统以演示跑马灯程序。 首先在系统中添加片上RAM。在程序左侧列表中选择Memory and Memory Controllers - On-Chip - On-Chip Memory (RAM or ROM),双击添加至系统中。在弹出的对话框中指定片上RAM的属性。保持默认设置即可。再添加CPU。双击Altera SOPC Builder - Nios II Processor,在弹出的对话框中间选择第一个Nios II/e,表示economy,最小的NIOS

3、 II核心。下面的Reset Vector和Exception Vector都选择onchip_men,即刚才添加的片上RAM的名称。其它的都保留默认设置即可。点击Finish添加CPU核。 添加定时器。在列表中选择Peripherals - Microcontroller Peripherals - Interval Timer,弹出如下对话框。定时器在本系统中主要作用是产生一个固定间隔的中断信号,让CPU改变LED灯的状态。因此在Period中选择500ms,表示灯的状态每500ms改变一次。Preset选择Simple periodic interrupt即可。 最后添加IO口控制器。双

4、击Peripherals - Microcontroller Peripherals - PIO (Parallel I/O),保持默认设置即可,表示有8个输出用IO口,分别控制开发板上的8个绿色LED灯(LEDG7.0)。至此系统组件添加完毕。为了方便,我们将PIO的名称改为LEDG。在pio上点击右键 - rename,将名称改为LEDG。 系统的每个组件都需要一个地址才能正常工作。某些组件,如定时器(Interval Timer)还需要分配一个IRQ号。如果发现各组件的地址或者IRQ号出现冲突,可以选择菜单栏上 System - Auto-Assign Base Addresses 以及

5、 System - Auto-Assign IRQs自动设定地址和IRQ。(注:系统IRQ可以是从0到31的整数,数值越小优先级越高。 至此系统已经构造完毕,点击下方 Generate 生成系统。程序将提示需要先保存,选是即可。出现以下画面说明SOPC系统已经生成完毕。硬件电路设计 SOPC系统生成完毕后,回到Quartus II软件,选择 File - New,在弹出的对话框中选择Block Diagram/Schematic File,点击OK。 双击空白处,打开新对话框,在左侧的列表中选择Project - smallest,双击或点下方的OK。 此元件为刚才使用SOPC Builder

6、生成的片上系统。共有3组IO口,分别是clk时钟输入、reset_n重启信号输入和绿色LED灯信号输出IO口。再次在空白部分双击,在Name框内输入input,添加输入端口。一共需要两个。然后使用同样步骤添加一个ouput输出端口。结果应如下图所示。双击输入或输出元件可以更改它们的名称。将两个输入端分别改名为CLOCK_50及KEY0,代表开发板上的50MHz晶振和KEY0按钮。将输出端改名为LEDG7.0,代表开发板上的LEDG7到LEDG0 共8个绿色LED灯。需要注意的是SOPC Builder生成的系统的重启信号为低电平有效,开发板上的按键按下后代表低电平,弹起代表高电平。然后将这几个

7、元件连接起来,硬件电路部分设计完毕。电路应如下图所示。 最后,点击Quartus II软件菜单栏上的Assignments - Import Assignments 导入DE2开发板默认的管脚定义文件 保存顶层图为runningled.bdf,编译即可。编译完成后将程序烧写至FPGA开发板。由于目前还没有编写软件,因此开发板上不会有什么现象。软件设计 接下来是软件设计。打开NIOS II IDE软件。第一次打开的时候会提示选择工作空间。也可在程序打开后选择菜单栏 File - Switch Workspace 选择 software 作为NIOS II的工作空间。确认以后软件会重新启动。在欢迎

8、界面中选择 Workbench,进入主界面 选择 File - New - Nios II C/C+ Application 在Select Project Template内选择第一项Blank Project,Name使用默认blank_project_0,SOPC Builder System PTF File使用默认设置,即刚才生成的SOPC系统。点Next ,在下一个界面中选择第一项,Create a new system library,点击Finish完成。 此时,NIOS II IDE左侧工程列表将多出3个工程 并且程序会在后台开始自动索引。选择菜单栏Window - Pref

9、erences弹出以下对话框选择Run/Debug - Launching,取消General Options内Build (if required) before launching前面的勾。选择工程blank_project_0,右键单击,选择Properties,在C/C+ Make Project选项卡内选中Build(Incremental Build),在Project References选项卡内取消所有的勾,确认。 类似地,右键单击工程blank_project_0_syslib - Properties,选中C/C+ Make Project选项卡中的Build(Increm

10、ental Build)。选中System Library选项卡,在下图所示界面中,取消掉Clean Exit (Flush Buffer)和Support C+前的勾,因为我们的程序不会退出,也不包含C+的函数和库。选中Program never exits,Reduce device drivers和Small C library以减小程序体积。其他保持默认设置即可。右键点击工程blank_project_0_syslib,选择Build Project,编译系统库。之后右键点击工程blank_project_0,选择New - Source File,在弹出的对话框中指定文件名为main

11、.c,并将以下代码复制进去,并保存。/ For FPGA project: runningled/ SOPC System: smallest #include system.h#include #include alt_types.h#include / Internal Timer Overflow interruptstatic void timer_overflow(void* context, alt_u32 id) IOWR(TIMER_BASE,0,0); if (*(alt_u8 *)context & 0x80) *(alt_u8 *)context = 0x01; else

12、 *(alt_u8 *)context = *(alt_u8 *)context Run,出现以下对话框选择Nios II Hardware,点击左上角,出现以下界面。点击Run,NIOS II IDE将程序下载到开发板上,之后就能看到8个LED灯轮流点亮了。.二、 LCD液晶显示器同第一个例子一样,首先需要打开Quartus II软件并新建一个工程。我们将工程取名为hello_lcd。选择好路径,其他同上例一样。注意两个不同工程路径不要完全相同。然后打开SOPC Builder,选择Verilog作为编译语言,系统名称设为lcd_sys。 这个系统同样需要一个CPU核,以及显示用的LCD液晶

13、模块。由于需要用到很多内置库,因此程序体积会比较大,需要一个容量较大的RAM,我们选择结构较为简单的512K SRAM。首先添加存储器,但在列表中并没有DE2开发板使用的SRAM芯片组件,需要我们手工添加。首先需要SRAM_16Bit_512K.v以及SRAM_16Bit_512K_hw.tcl两个文件,将它们复制到工程所在的目录。双击Create New Component 选择File - Open,选择SRAM_16Bit_512K_hw.tcl,打开。之后点击Finish即可。系统将会提示需要保存这个组件。保存以后,在左侧列表中多出了Terasic Technologies Inc一项

14、,双击此项下面的SRAM_16Bit_512K,将SRAM加入系统中。 然后添加CPU,双击Nios II Processor。在对话框中,可以选择三种CPU规模中的任意一种。我们仍然选择Nios II/e。Reset Vector以及Exception Vector都设为刚刚添加的sram。其他保留默认设置,点击Finish添加CPU。 再添加LCD模块。选择Peripherals - Display - Character LCD,将LCD加入系统中。 之后将各组件地址设置好以后就可以生成系统了。硬件电路设计 回到Quartus II,新建一个Block Diagram/Schematic

15、 File,双击空白部分加入刚才生成的系统lcd_sys。 本系统需要两个输入端口以及多个输出端口。双击空白部分,输入input,添加输入端口。输入output,添加输出端口。注意LCD和SRAM的数据线需要使用双向IO口(bidir)。添加完以后,按照下图所示修改端口名称并连线。还需要一个输出IO口LCD_ON置高,打开LCD显示屏。 最后,点击Quartus II软件菜单栏上的Assignments - Import Assignments 导入DE2开发板默认的管脚定义文件 保存顶层图为hello_lcd.bdf,编译即可。编译完成后将程序烧写至FPGA开发板。由于目前还没有编写软件,因

16、此开发板上不会有什么现象。软件设计 打开NIOS II IDE,选择File - Switch Workspace,选择 software 作为NIOS II的工作空间。确认以后软件会重新启动。在欢迎界面中选择 Workbench,进入主界面。同上例,选择File - New - Nios II C/C+ Application,在Select Project Template内选择Hello World,其他保持默认设置。第二页中选择第一项Create a new system library。 同上例,选择Window - Preferences - Run/Debug - Launchi

17、ng,取消Build (if required) before launching。打开两个工程hello_lcd_0及hello_lcd_0_syslib的属性对话框,在C/C+ Make Project选项卡内选中Build (Incremental Build),并取消Project References选项卡内的所有选项。在hello_lcd_0_syslib的属性对话框,System Library选项卡内,选中Clean exit (flush buffers),取消其他选项。stderr,stdout和stdin都选为lcd,如下图所示 然后依次编译hello_world_0_syslib和hello_world_0。完成以后选择菜单栏Run - Run,选择Nios II Hardware,点击出现以下界面,点击Run,程序将被下载到开发板上运行。 注意开发板上液晶显示器每行只能显示16个字符,因此程序中输出的”Hello from Nios II!”只能显示出前16个字符”Hello from Nios “。

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

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