SOPC范例程序-入门_第1页
SOPC范例程序-入门_第2页
SOPC范例程序-入门_第3页
SOPC范例程序-入门_第4页
SOPC范例程序-入门_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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,表示e

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

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

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

6、gt; smallest,双击或点下方的OK。此元件为刚才使用SOPC Builder生成的片上系统。共有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 Work

8、space选择 <工程所在目录>software 作为NIOS II的工作空间。确认以后软件会重新启动。在欢迎界面中选择 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,点击

9、Finish完成。此时,NIOS II IDE左侧工程列表将多出3个工程并且程序会在后台开始自动索引。选择菜单栏Window -> Preferences弹出以下对话框选择Run/Debug -> Launching,取消General Options内Build (if required) before launching前面的勾。选择工程blank_project_0,右键单击,选择Properties,在C/C+ Make Project选项卡内选中Build(Incremental Build),在Project References选项卡内取消所有的勾,确认。类似地,右键

10、单击工程blank_project_0_syslib -> Properties,选中C/C+ Make Project选项卡中的Build(Incremental Build)。选中System Library选项卡,在下图所示界面中,取消掉Clean Exit (Flush Buffer)和Support C+前的勾,因为我们的程序不会退出,也不包含C+的函数和库。选中Program never exits,Reduce device drivers和Small C library以减小程序体积。其他保持默认设置即可。右键点击工程blank_project_0_syslib,选择Bu

11、ild Project,编译系统库。之后右键点击工程blank_project_0,选择New -> Source File,在弹出的对话框中指定文件名为main.c,并将以下代码复制进去,并保存。/ For FPGA project: runningled/ SOPC System: smallest #include "system.h"#include <sys/alt_irq.h>#include "alt_types.h"#include <io.h>/ Internal Timer Overflow interr

12、uptstatic void timer_overflow(void* context, alt_u32 id) IOWR(TIMER_BASE,0,0); if (*(alt_u8 *)context & 0x80) *(alt_u8 *)context = 0x01; else *(alt_u8 *)context = *(alt_u8 *)context << 1; IOWR(LEDG_BASE,0,*(alt_u8 *)context); return;int main() alt_u8 led = 0x01; / Register Interrupt Servic

13、e Routine (ISR) alt_irq_register(TIMER_IRQ, (void*)&led, timer_overflow); while(1);右键点击工程blank_project_0,选择Build Project。编译完成后,软件部分也就完成了。最后,选择菜单栏Run -> Run,出现以下对话框选择Nios II Hardware,点击左上角,出现以下界面。点击Run,NIOS II IDE将程序下载到开发板上,之后就能看到8个LED灯轮流点亮了。.二、 LCD液晶显示器同第一个例子一样,首先需要打开Quartus II软件并新建一个工程。我们将工程

14、取名为hello_lcd。选择好路径,其他同上例一样。注意两个不同工程路径不要完全相同。然后打开SOPC Builder,选择Verilog作为编译语言,系统名称设为lcd_sys。这个系统同样需要一个CPU核,以及显示用的LCD液晶模块。由于需要用到很多内置库,因此程序体积会比较大,需要一个容量较大的RAM,我们选择结构较为简单的512K SRAM。首先添加存储器,但在列表中并没有DE2开发板使用的SRAM芯片组件,需要我们手工添加。首先需要SRAM_16Bit_512K.v以及SRAM_16Bit_512K_hw.tcl两个文件,将它们复制到工程所在的目录。双击Create New Com

15、ponent选择File -> Open,选择SRAM_16Bit_512K_hw.tcl,打开。之后点击Finish即可。系统将会提示需要保存这个组件。保存以后,在左侧列表中多出了Terasic Technologies Inc一项,双击此项下面的SRAM_16Bit_512K,将SRAM加入系统中。然后添加CPU,双击Nios II Processor。在对话框中,可以选择三种CPU规模中的任意一种。我们仍然选择Nios II/e。Reset Vector以及Exception Vector都设为刚刚添加的sram。其他保留默认设置,点击Finish添加CPU。再添加LCD模块。选择

16、Peripherals -> Display -> Character LCD,将LCD加入系统中。之后将各组件地址设置好以后就可以生成系统了。硬件电路设计回到Quartus II,新建一个Block Diagram/Schematic File,双击空白部分加入刚才生成的系统lcd_sys。本系统需要两个输入端口以及多个输出端口。双击空白部分,输入input,添加输入端口。输入output,添加输出端口。注意LCD和SRAM的数据线需要使用双向IO口(bidir)。添加完以后,按照下图所示修改端口名称并连线。还需要一个输出IO口LCD_ON置高,打开LCD显示屏。最后,点击Qua

17、rtus II软件菜单栏上的Assignments -> Import Assignments 导入DE2开发板默认的管脚定义文件保存顶层图为hello_lcd.bdf,编译即可。编译完成后将程序烧写至FPGA开发板。由于目前还没有编写软件,因此开发板上不会有什么现象。软件设计打开NIOS II IDE,选择File -> Switch Workspace,选择 <工程所在目录>software 作为NIOS II的工作空间。确认以后软件会重新启动。在欢迎界面中选择 Workbench,进入主界面。同上例,选择File -> New -> Nios II C

18、/C+ Application,在Select Project Template内选择Hello World,其他保持默认设置。第二页中选择第一项Create a new system library。同上例,选择Window -> Preferences -> Run/Debug -> Launching,取消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的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论