已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SOPC字母液晶屏实例一 关于SOPC 1)SOPC英文全名为:System-On-a-Programmable-Chip,即可编程片上系统。SOPC用可编程逻辑技术把整个系统放到一块硅片上,来用于嵌入式系统研究和电子信息处理。 SOPC是一种特殊的嵌入式系统,它是片上系统(System-On-a -Chip,SOC),即由单个芯片完成整个系统的主要逻辑功能但它不是简单的SOC,它也是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。 SOPC设计包括以32位NIOSII软核处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真、软件设计以及软件调试等。SOPC系统设计的基本软件工具有:1) QuartusII:用于完成NIOSII系统的综合、硬件优化、适配、编程下载以及硬件系统调试等;2) SOPC Builder:Altera NiosII嵌入式处理器开发软件包,用于实现NiosII系统的配置、生成,内嵌于QuartusII软件中;3) ModelSim: 用于对SOPC生成的NiosII系统的HDL描述进行系统的功能仿真;4) NiosII IDE:用于进行软件的开发、调试,以及向目标开发板进行Flash下载;二关于NIOSII处理器NIOSII 是一个可配置的软核处理器。“可配置”的意思是设计者可以根据性能和成本的要求来增加或删减处理器的功能。ALTERA公司并不销售NIOSII处理器芯片,而是销售空的FPGA,并提供NIOSII 系统相应的IP核来组成NIOSII系统,然后将这个系统下载到FPGA中实现。1) 关于AVALONAvalon总线是SOPC硬件系统的重要组成部分,Avalon总线规范是为了开发SOPC环境下外设而设计的。图1-1 一个SOPC的示例二 SOPC简单实例:软核控制LCD液晶字母显示器1 系统构成规划1) 系统功能:在character LCD上显示”Hello LCD from NiosII!”2) 本系统中需要的外围器件:(1) LCD:输出显示(2) SRAM存储器:程序运行时将其导入SRAM3) SOPC中建立系统需要添加的模块包括:(1) Nios II 32bit CPU(2) LCD display(3) 外部RAM总线(4) 外部RAM接口(5) JTAG UART Interface(6) 定时器2 硬件系统的建立1) 首先打开Quartus II 建立工程文件:将工程文件命名为hello_lcd,顶层文件与工程文件同名。如图2-1,图2-2所示。2) NEXT 选择与目标器件相对应的FPGA型号,CycloneIII Dev Kit上的FPGA型号为:EP3C120F780C7。点击Finish完成。工程建立之后,我们可以通过路径Assignment-Device中可以更改目标芯片的型号。图2-1 建立工程文件图2-2建立新工程文件图2-3-1 实验平台图2-3选择相对应的目标器件3) 新建顶层电路图,与工程文件同名:图2-4建立与工程名字相同的顶层电路图4) 打开SOPC Builder:有两种方式可以打开SOPC Builder,可以直接点击页面右上角的SOPC Builder图标,或者通过路径Tool-SOPC Builder打开,如图2-5所示。图2-5 进入SOPC Builer5) 新建SOPC系统,命名为lcd_sys。此时系统会自动生成一个默认值为50MHz的驱动时钟CLK,将其手动重命名为:sys_clk,并将其修改为100MHz。6) 在旁边的System Contents中选择添加需要的系统组件。可以在下面的检索栏中输入组件名,如Nios II,可以检索到组件,如图2-7所示。图2-6 建立新的SOPC系统图2-7搜索器件7) 双击添加一个Nios II内核,会打开Nios II的配置对话框,如图2-8所示。在NiosII CPU配置选项中可以根据用户需要,选择处理器类型。具体有以下三种:a. 经济型CPU内核(Nios II/e),最小的逻辑占用的优化,占用逻辑元素LE最少,功能最少。b. 标准型CPU内核(Nios II/s),平衡于性能和尺寸,具有NiosII CPU核的一般功能。c. 全功能CPU内核(Nios II/f),最高性能优化,具有NiosII CPU核的所有功能,包括一些高级功能,而需要使用的LE也是最多的。一般来说,选择NiosII/S 标准型CPU核即可满足一般系统需要。这里我们选择NiosII/s 标准型内核,其他参数采用默认值即可。8) 添加片上存储,用于系统程序和数据的存储:配置中选择类型为RAM,(Data width)数据宽度默认为32位,将存储大小改为64Kbit,点击Finish 完成添加。此时下方信息栏会出现地址冲突的error 提示,先不管它。图2-9 添加片上存储RAM9) 添加JTAG_UART串口模块:用于与计算机通信,使用默认配置即可。图2-10 添加JTAG_UART模块10) 添加interval timer定时器模块:可用于对JTAG UART驱动,而实现串口工作的暂停。选择超时周期设置为1ms。Preset有四个选项,在此选择Full-features,如图2-11所示。图2-11 添加定时器模块11) 添加外部SRAM接口。我们所用的板子上有共8M的32bit数据位的SRAM模块。在SOPC Builder中没有对应的IP模块,需要我们自己手动建立对应的接口模块。双击模块池中的“Create new component”,可以看到新建的元件模块可以通过HDL文件的形式(HDL File),或者直接添加信号(Signals)的形式创建。我们这里通过直接添加信号的方式,直接添加对应SRAM接口,作为AVALON总线的从端口。这里只需添加基本的、必备的信号:clk(模块时钟),chipselect(片选),output enable(输出使能),write(写使能),byteenable(字节段写使能),address(地址),data(数据)即可,如图2-12所示。图2-12 添加新建端口信号12) 当端口的信号都添加完成之后,点击选项卡中的Interfaces选项,设置该SRAM模块的时序参数。并勾选”show deprecated parameters”选项,务必勾选Deprecated 中的Memory device选项。 图2-13 设置模块时序参数 模块在SOPC系统中显示的名字(Display name),还有在模块槽中的位置(Group)等一些其他参数,都可以在“component wizard”中设置。当完成所有参数设置和修改之后,点击Finish,完成新模块的生成。如图2-14设置,我们可以在模块槽中的SRAM分类中找到新建的模块,双击添加入系统。图2-14 新建模块的一些其他设置13) 添加外部RAM总线(Avalon Tri-State Bridge):Avalon Tri-State Bridge是Nios处理器与FPGA片外存储器之间相互通信的桥梁。新添加的SRAM模块,需要通过三态桥的链接,才能与系统中的NiosII处理器进行通信。将三态桥添加入系统之后,将新添加的SRAM设置成为其从端口,并勾选三态桥”Shared Signals”选项卡中的 sram_address一项。若要对新添加的SRAM进行任何更改设置,每次更改过后,都要重新对三态桥的选项进行配置。图2-15 AVALON三态桥设置14) 添加 LCD模块,和系统ID。15) 由于SRAM模块的时钟,与系统时钟存在-3.5ns的偏差才能正常运行,则需要通过PLL锁相环电路生成另一个符合条件100MHZ的时钟,命名为sram_clk,来驱动SRAM,如图2-16所示。图2-16 SRAM的驱动时钟设置16) 当所有器件模块都添加以后,下面信息栏会发现很多的Error报警信息。此时右击CPU模块,选择Edit对CPU中的Reset Vector(复位地址) 和Exception Vector (异常地址)进行设置,此两项地址选择 onchip_mem ,即为之前添加的内部RAM存储模块。图2-17 CPU地址重新配置17) 调整基地址:SOPC Builder 为用户系统中每个IP模块制定默认的基地址,地址为一个32位的值,如果地址位出现重叠,则会出现error警告。自动调整基地址的方法是选择:system-auto-assignment base address.分配完基地址之后,之前的error提示就消失了。并可以通过Auto-assign IRQs自动分配中断优先级。图2-18 调整基地址以及分配中断优先级18) 系统配置成功选择 System Generation,点击Generate生成系统。当系统生成成功,点击EXIT退出SOPC Builder。 图2-19 系统生成成功19) 在顶层图中添加生成的系统模块,进行引脚连接与重命名。双击顶层图空白处,出现对话框,如图2-20,图2-21所示。这里必须要注意的一点是,我们在系统中添加的sram模块的地址宽度为21bit,但是生成的三态桥上的地址位宽为23bit。这是由于:AVALON总线中通过三态桥连接的片外存储设备的地址分配,遵循如下准则:当数据位为8bit时,地址位从最低位开始,即如:片外存储为24bit,则生成三态桥的地址也为24bit.当数据位为16bit时,地址位比实际存储多一位,低位舍弃,即片外存储为24bit,生成的三态桥地址为25bit,但只有实际上是24.1与片外存储的地址线相连接。以此类推,当数据线为32bit的时候,地址位的低两位舍弃。因而该系统在地址分配时,只需分配高21bit即可。图2-20 添加系统模块图2-21 引脚连接与重命名20) 添加锁相环PLL:由于SRAM的时钟和CPU的时钟存在一定角度的差,才能正常运行。因而需要通过PLL锁相环来进行时钟调整,获得相应的时钟。双击顶层图空白处出现对话框,点击如图2-22所示MegaWizard Plug-In Manager,新建一个宏模块。点击Next,在如图2-23的宏模块中选择ALTPLL,命名为pll0。点击Next,对PLL输入输出时钟进行配置。图2-22添加宏模块图2-23 添加PLL锁相环21) 对PLL时钟进行配置:输入时钟选择板上125MHZ的晶振。输出时钟c0选择100MHZ、0度偏转,作为系统驱动时钟。输出时钟c1选择频率为100Mhz,-3.5ns的偏转,作为SRAM模块的驱动时钟。点击Finish,完成对PLL的配置,并在顶层电路图中添加生成锁相环。最终生成顶层电路图,如图2-27所示。图2-25 输入时钟配置图2-26 输出时钟c1的配置图2-27 完整的顶层电路图22) 通过对照参考手册(reference manual),对生成的顶层电路图的引脚进行配置。配置方式有两种:a.综合仿真(Analysis & Synthesis)后通过路径Assignment-Pins进入引脚配置页面进行配置如图2-29所示;通过这种方法分配引脚时,通过路径Assignment-Device-Device and Pin Options 来将未用的引脚(unused Pins)改成输入三态(As input tri-state),以降低功耗。b.通过编写新的TCL文件进行引脚配置,TCL文件模板可以在新生成的TCL文件空白处右击,选择“Insert Template”查看模板。此处我们通过第一种方法来进行引脚配置。对于顶层图中没有,但reference manual中存在的模块信号,如sram_wait0和sram_wait1,可以在“pins”中将对应信号的对应引脚设置为默认的电压值即可。图2-28综合仿真图2-29 引脚配置23) 当完成引脚配置之后,检查电路,进行工程编译:路径为:Processing- Start Compilation。或是点击右上方的编译快捷图标。图2-30 工程编译24) 工程编译完成,生成整个工程的整体报告,显示芯片利用率等信息。图2-31工程报告25) 编译完成后,通过Programmer下载到板子上。路径为:Tools-Programmer。或者点击任务栏中programmer图标打开,如图1-22所示。将硬件程序烧录入芯片中。3 软件系统建立1) 打开Nios II软件,建立新工程:路径为File-new-project.或者点击如图2-1所示新建图标,选择NiosII C/C+ Application,点Next,进入工程设置页面。图3-1 新工程建立2) 在工程设置页面中,Nios II会给出许多模板,在这里,我们选择模板为空(Blank Project),选择Specify Location可以指定生成工程文件的路径。Select Target Hardware中,选择我们刚刚生成的硬件系统lcd_sys.ptf。这里需要注意的是:对比QuartusII中目标器件的选择,在工程建立之后,可以通过路径Assignment-Device来修改目标器件;而Nios II工程是建立在选定的硬件系统的基础之上的,根据选定的硬件系统,来生成系统头文件”system.h”,系统文件会随着硬件系统的更新而更新,但是不能在工程建立之后改变目标系统,因而在此处必须选择正确的对应系统。完成系统配置之后,点击Next进入下一页,选择“Create a new system library named”,点击finish完成工程建立。工程建立之后,Nios II IDE左边列表将出现3个工程,并且程序会在后台自动索引。如图3-3所示。图3-2 系统配置页面图3-3系统生成3) 选择菜单栏Window-Preferences.在弹出对话框中选择Run/Debug-Launching出现如图2-4页面,勾选掉Build(if required) before launching 前面的钩,以减少程序下载和调试前的准备时间。图3-4 References界面4) 选择工程hello_lcd,右击选择Properties,在C/C+ Make Project选项卡内选中Build(Incremental Build),在Project References选项卡内取消所有的勾,确认。类似地,右键单击工程hello_lcd_syslib - Properties,选中C/C+ Make Project选项卡中的Build(Incremental Build)。图3-5 Properties for hello_lcd5) 在properties for hello_lcd_syslib 中选中 system library选项卡如图3-6界面中,取消掉Clean Exit (Flush Buffer)和Support C+前的勾,因为我们的程序不会退出,也不包含C+的函数和库。选中Program never exits,Reduce device drivers和Small C library以减小程序体积。其他保持默认设置即可。System Library配置是Nios II中一个非常重要的配置界面。如图2-6中所示stdout,stderr,stdin等选项的目标接口,作为标准输出、错误输出、标准输入的接口,这里我们将stdout 接口选为“lcd”作为现实输出。界面右边的Program Memory选项,可以选择程序运行的存储设备,当系统有多个片外存储时,如sram和flash,我们可以选择flash存储硬件信息和程序,而当程序运行时,导入sram中运行。我们的系统在运行时要将其导入SRAM,因此选择sram。图3-6 system library 界面6) 右键点击hello_lcd_syslib,选择Build Project。生成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 除尘工安全规程竞赛考核试卷含答案
- 煮糖助晶工岗前理论水平考核试卷含答案
- 汽油煤油柴油加氢装置操作工岗前生产安全水平考核试卷含答案
- 供应链管理师复试竞赛考核试卷含答案
- 酸性水汽提装置操作工安全检查能力考核试卷含答案
- 煤制油生产工诚信道德考核试卷含答案
- 矿石处理工操作能力测试考核试卷含答案
- 链板冲压工安全技能测试考核试卷含答案
- 精细木工岗中安全风险考核试卷含答案
- 趸船水手岗前安全管理考核试卷含答案
- 口腔护士种植课件
- KNX智能家居系统培训资料
- 手术室物品管理与消毒灭菌
- 2025-2026学年广东省深圳实验学校初中部八年级(上)期中英语试卷
- 出生医学证明警示教育培训
- 困困困不醒大王原创课件
- (已压缩)(11)义务教育物理课程标准日常修订版(2022年版2025年修订)
- 2025年上海交通大学招聘真题(行政管理岗)
- Q-SY 13034-2024 物料主数据数字化描述规范
- 2025年法考主观题真题答案及解析
- 淝水之战课件
评论
0/150
提交评论