基于fpga的niosii硬件开发论文_第1页
基于fpga的niosii硬件开发论文_第2页
基于fpga的niosii硬件开发论文_第3页
基于fpga的niosii硬件开发论文_第4页
基于fpga的niosii硬件开发论文_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

基于FPGA的NIOSII系统的硬件设计毕业设计(论文)说明书课题名称基于FPGA的NIOSII系统的硬件开发1基于FPGA的NIOSII系统的硬件设计1绪论11NIOSII简介随着大规模集成电路设计技术的进步和制造工艺水平的提高,以及单个芯片上的逻辑门数的增加,嵌入式系统设计变得日益复杂。与此同时,上市时间的压力也越来越大,传统的嵌入式系统设计方法已不能适应当前嵌入式系统设计的需要。单个芯片上的逻辑门数的增加在使设计任务复杂的同时,也为设计人员的开发设计开辟了新的天地可以把整个系统集成到一个芯片上,这就是所谓的SOC技术,即片上系统SYSTEMONCHIP。SOC技术是当前嵌入式系统设计的一个研究热点。ALTERA是世界知名的可编程逻辑器件公司。过去,ALTERA作为可编程逻辑器件供应商,他提供PLD器件。如今,ALTERA同时又是系统方案的供应商,他现在为客户提供的服务是如何把一个系统所需要的嵌入式功能块,也就是IP核,放到可编程逻辑器件上组成系统,这就是SOPCSYSTEMONPMGRAMMABLECHIP技术。ALTERA推出的NIOSII系列嵌入式处理器扩展了目前世界上最流行的软核嵌入式处理器的性能,把NIOSII嵌入到ALTERA的所有FPGA中,例如STRATIXII、STRATIX、YCLONEII,CYCLONE、APEX,ACEX和HARDCOPY系列器件中,用户可以获得超过200DMIPS的性能,用户可以从三种处理器以及超过60个的IP核中选择所需要的,NIOSII系统为用户提供了最基本的多功能性,设计师可以以此来创建一个最适合他们需求的嵌入式系统。NIOSCPU是L6位或32位结构可配置并包含5级流水线的通用RISC微处理器,包括指令系统、寄存器、高速缓存、中断处理、硬件加速。NIOSCPU是通过AVALON总线与外设进行数据交换。AVALON是一种协议较为简单的内部总线,提供完全的同步操作,占用FPGA现场可编程门阵列资源少,并具有嵌入式地址译码、数据流处理、带延时的读写操作等重要特性。NIOS嵌入式处理器系统可以组合ALTERA公司提供的标准外围设备库,并允许用户自定义逻辑接口。NIOS核是用户可随意配置和构建的32位总线指令集和数据通道的嵌入式系统微处理器IP核,采用AVALON总线结构通信借口,带有增强的内存、调试和软件功能;含有FS2开发的基于JTAG的片内设备内核(OCI)。此外,基于QUARTUSII平台的用户可编程的NIOS核含有许多可配置的接口模块核,包括可配置高速缓存(包括由片内ESB、外部SRAM,100MB以上单周期访问速度)模块,可配置RS232通信口、SDRAM控制器、标准以太协议接口、DMA、定时器、协处理器等。在植入FPGA前,用户可根据设计要求,利用QUARTUSII和SPOCBUILDER,对NIOS及其外围系统进行构建,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足用户系统设计的要求。NIOS核在同一FPGA中植入的数量没有限制,只要FPGA的资源允许。2基于FPGA的NIOSII系统的硬件设计12NIOSII处理器的优点特性121可定制特性集采用NIOSII处理器,将不会局限于预先制造的处理器技术,而是根据自定的标准处理器,按照需要选择合适的外设、存储器和接口。此外,还可以轻松集成自特有的功能,使设计具有独特的竞争优势。122配置系统性能所需要的处理器,应该能够满足当前和今后的设计性能需求。由于今后发展具有不确定性,因此,NIOSII设计人员必须能够更改其设计,加入多个NIOSIICPU、定制指令集、硬件加速器,以达到新的性能目标。采用NIOSII处理器,可以通过AVALONTM交换架构来调整系统性能,该架构是ALTERA的专有互联技术,支持多种并行数据通道,实现大吞吐量应用。123低成本实现在选择处理器时,为了实现需要的功能,可能要购买比实际所需数量多的处理器,也可能为了节省成本,而不得不购买比实际需要数量少的处理器。低成本、可定制NIOSII处理器能够帮助您解决这一难题。采用NIOSII处理器,可以根据需要,设置功能,在价格低至35美分的CYCLONETMIIFPGA等低成本ALTERA器件中实施。在单个FPGA中实现处理器、外设、存储器和I/O接口,可以降低系统总体成本。124产品生存周期管理为实现一个成功的产品,需要将其尽快推向市场,增强其功能特性以延长使用时间,避免出现处理器逐渐过时。可以在短时间内,将NIOSII嵌入式处理器由最初概念设想转为系统实现。这种基于NIOSII处理器的系统具有永久免版税设计许可,完全经得起时间考验。此外,由于在FPGA中实现软核处理器,因此可以方便实现现场硬件和软件升级,产品能够符合最新的规范、具备最新特性。125无与伦比的灵活性NIOSII具有完全可定制和重新配置特性,所实现的产品可满足现在和今后的需求。126定制指令NIOSII处理器定制指令扩展了CPU指令集,提高对时间要求严格的软件运行速度,从而使开发人员能够提高系统性能。采用定制指令,可以实现传统处理器无法达到的最佳系统性能。NIOSII系列处理器支持多达256条的定制指令,加速通常由软件实现的逻辑和复杂数学算法。3基于FPGA的NIOSII系统的硬件设计127硬件加速专用硬件加速器(图6)可以做为FPGA中的定制协处理器,协助CPU同时处理多个数据块。如图5中的循环冗余编码实例,采用硬件加速器处理64K字节缓冲比软件速度快530倍。SOPCBUILDER含有一个输入向导,帮助开发人员将其加速逻辑和DMA通道引入系统。13NIOSII的发展现状及趋势随着低复杂度FPGA器件成本的不断下降,具有灵活性和及时面市优势的FPGA与ASIC相比更有竞争性,在数字消费市场上的应用也急剧增加。第一代的CYCLONE系列迄今发售了3百多万片,在全球拥有3,000多位客户,对大批量低成本数字消费市场有着巨大的影响,该市场消纳了三分之一的器件。根据GARTNERDATAQUEST调查,在2004年光消费电子市场对FPGA需求就达到3亿9千万美元,预计2008年可到达11亿6千万美元,年复合增长率为31。9。同时,CYCLONEII器件系列也在电信、计算机外设、工业和汽车市场上获得了巨大的进步。CYCLONEII器件包含了许多新特性,如嵌入存储器、嵌入乘法器、PLL和低成本的封装,这些都为诸如视频显示、数字电视、机顶盒、DVD播放器、DSL调制解调器、家用网关和中低端路由器等批量应用进行了优化。消费类HDTV、等离子体显示器、机顶盒、DVD播放器通信宽带固定无线设备、中低端路由器、WLAN接入点、DSL路由器汽车软件无线接受器、远程信息处理/娱乐、网关控制器计算机和存储器件打印机、存储服务器工业工厂自动化、工艺控制、网络测试设备4基于FPGA的NIOSII系统的硬件设计2NIOSII的总体设计要求21功能需求嵌入式系统的构架可以分成四个部分处理器、存储器、输入输出和软件。处理器存储器软件输入输入图21嵌入式系统构架首先,嵌入式系统最核心的部分就是嵌入式处理器了。目前,世界上具有嵌入式功能特点的处理器已经超过了1000多种,30多个系列。不同的处理器有其不同的功能和优势。但是低成本、低功耗、高性能是嵌入式系统应用的特殊要求。目前主要的嵌入式处理器类型有POWERPC,X86,MIPS,ARM/STRONGARM系列等。其次,存储器也是构建嵌入式系统的重要部分。本系统就需要FLASH和SDRAMO虽然存储器的选择依赖于处理器的选择,但是就功能需求来说,需要考虑容量大的,性能稳定的存储器。就FLASH来说,还需要考虑FLASH的擦除等软件操作是否方便。再次,要结合实际情况和处理器的功能,确定系统外围设备。本系统是一个完整的嵌入式系统,根据实际的应用需要以下通信接口1RS232串行接口目前RS232是陀机与通信工业中应用最广泛的一种串行接口。RS232被定义为一种在低速率串行通信中增加通信距离的单端标准。系统需要通过该串口下载程序,或者进行串行通信。2以太网接口在工飞速发展的今天,网络己经渗透到了方方面面。在嵌入式系统方面,和网络的结合已经成为了嵌入式系统最新的研究方向。因此,在本系统中,以太网接口是必不可少的。5基于FPGA的NIOSII系统的硬件设计3CAN总线接口控制器局域网(CONTROLLERAREANETWORK,CAN)是国际上应用最广泛的国际标准现场总线之一,已有许多大公司采用CAN总线技术,应用范围已不再局限于汽车行业,而向过程控制、机械工业、机器人、数控机床、医疗器械及传感器等领域发展。4键盘、鼠标和液晶屏键盘和液晶屏是常用的输入输出设备,结合各具特色的嵌入式应用软件,可以把嵌入式控制器的功能发挥更大,并且可以用于现场调试。22主要器件选择中央芯片FPGA的芯片选用ALTERA公司的CYCLONE系列,选用性价比较高的EP1C6Q240C8,也可以在稍稍改动下选用EP1C12Q240C8;协控制芯片选用ALTERA公司的EPM7128AETC1007SRAM选用INTEGRATEDDEVICE公司的IDT71V416S;FLASH选用AMD公司的AM29LV065DMAC选用LAN91C111;CAN选用PHILIP公司生产的SJA1000;23设计规划系统整体规划图23如下所示6基于FPGA的NIOSII系统的硬件设计EP1C6(12)Q2407图23基于FPGA的NIOSII系统的硬件设计3NIOSII系统模块分析31设计方案的简介做为一个开发实验应用平台,为了能到达NIOS使用的最基本的要求,需要使用外部SRAM和FLASH等,而做为控制类应用,本设计中加入了CAN总线接口,而考虑到未来的发展趋势网络应用,加入了网络模块。具体如图23。系统时钟频率采用了50MHZ的有源晶振,保证能使系统得到很精确的时钟信号;总电源采用9V到15V输入,用7805转换成5V然后再使用1117芯片分别转换成33V和15V;配置采用了多种方法,CPLD的配置用J5口来实现,而FPGA的配置即可以采用JTAG口也可以采用AS模式来配置,JTAG口是J24,AS模式口用的是J28;使用了四个用户按键,还有一个硬件重启P9,一个软件重启P8;使用了8个发光二极管LED0到LED7,还使用了两个7段数码管;串行配置器预留了EPCS1或EPCS4的接口;使用两个RS232接口;使用了两片16位的SRAM来组成一个32位的系统,共1M字节;一个8M字节的FLASH作为配置数据或存储文件用;32CAN模块的工作原理321概述CAN是CONTROLAREANETWORK的缩写,是控制器局域网的意思。它采用差分驱动,可在高噪声干扰环境下使用,加之检错能力强等方面优点,已被应用于很多领域并特别适合于单片机的分布式控制系统。CAN是全数字式现场控制设备互连总线,它能有效的支持分布式控制和实时控制的串行通信网络,已成为一种国际标准(SIO11898)。CAN也由数据链路层及物理层构成。数据链路层LCC与MAC可以由单片机的软件来实现;物理层可采用双绞线,从而也很方便实现多个单片机的长距离的分布式控制。322SJA1000内部结构及引脚8基于FPGA的NIOSII系统的硬件设计9SJA1000的功能框图如图322(A)所示,其引脚形式如图322(B),管脚功能见表322。主要由接口管理逻辑IML、信息缓冲器含发送缓冲器TXB和接收缓冲器RXFIFO、位流处理器BSP、接收过滤器ASP、位时序处理逻辑BTL、错误管理逻辑EML、内部振荡器及复位电路等构成。IML接收来自CPU的命令,控制CAN寄存器的寻址并向主控器提供中断信息及状态信息。CPU的控制经IML把要发送的数据写入TXB,TXB中的数据由BSP处理后经BTL输出到CANBUS。BTL始终监视CANBUS,当检测到有效的信息头“隐性电平控制电平“的转换时启动接收过程,接收的信息首先要由位流处理器BSP处理,并由ASP过滤,只有当接收的信息的识别码与ASP检验相符时,接收信息才最终被写入RXB或RXFIFO中。RXFIFO最多可以缓存64字节的数据,该数据可被CPU读取。EML负责传送层中调制器的错误管制,它接收BSP的出错报告,使BSP和IML进行错误统计。图322SJA1000的内部结构及引脚表322引脚功能符号引脚说明AD7AD0122328多路地址/数据总线ALE/AS3ALE输入信号(INTEL模式),AS输入信号(MOTOROLA模式)/CS4片选输入,低电平允许访问SJT1000/RD/E5微控制器的/RD信号(INTEL模式)或E使能信号(MOTOROLA模式)/WR6微控制器的/WR信号(INTEL模式)或RD/(/WR)信号(MOTOROLA模式)CLKOUT7SJA1000产生的提供给微控制器的时钟输出信号,时钟信号来源于内部振荡器且通过基于FPGA的NIOSII系统的硬件设计编程驱动,时钟控制寄存器的时钟关闭位可禁止该引脚。VSS18接地XTAL19输入到振荡器放大电路;外部振荡信号由此输入。注XTAL1引脚必须通过15PF的电容连到VSS1XTAL210振荡放大电路输出使用外部振荡信号时左开路输出;注XTAL2引脚必须通过15PF的电容连到VSS1MODE11模式选择输入1INTEL模式0MOTOROLA模式VDD312输出驱动的5V电压源TX013从CAN输出驱动器0输出到物理线路上TX114从CAN输出驱动器1输出到物理线路上VSS315输出驱动器接地/INT16中断输出,用于中断微控制器/INT在内部中断寄存器各位都被置位时低电平有效/INT是开漏输出,且与系统中的其它/INT是线或的此引脚上的低电平可以把IC从睡眠模式中激活。/RST17复位输入,用于复位CAN接口(低电平有效)把/RST引脚通过电容连到VSS通过电阻连到VDD可自动上电复位(例如C1FR50K)VDD218输入比较器的5V电压源RX0RX11920从物理的CAN总线输入到SJA1000的输入比较器支配(控制)电平将会唤醒SJA1000睡眠模式;如果RX1比RX0电平高就读支配(控制)电平,反之读弱势电平;如果时钟分频寄存器的CBP(见表49)被置位就忽略CAN输入比较器以减少内部延时(此时连有外部收发电路);这种情况下只有RX0是激活的;弱势电平被认为是高而支配电平被认为是低VSS221输入比较器的接地端VDD122逻辑电路的5V电压源323SJA1000的寄存器结构及地址分配CAN控制器工作模式的设定、数据的发送和接收等都是通过这些寄存器来实现的。时钟分频寄存器OCR用于设定SJA1000工作于BASICCAN还是PELICAN,还用于CLKOUT引脚输出时钟频率的设定,在上电初始化控制器时必须首先设定;在工作模10基于FPGA的NIOSII系统的硬件设计式下,控制寄存器CR用于控制CAN控制器的行为,可读可写;命令寄存器CMR只能写;状态寄存器SR只能读;而IR、ACR、AMR、BTR0、BTR1、OCR在工作模式下读写无意义。通常,在系统初始化时,先使CR01,SJA1000进入复位模式。在此模式下IR、ACR、AMR、BTR0、BTR1及OCR均可读可写,此时设置相应的初值。当退出复位模式时,SJA1000即按复位时设定的相应情况工作于工作模式,除非再次使芯片复位,否则上次设定的值不变。当需要发送信息时,若发送缓冲器空闲,由CPU控制信息写入TXB,再由CMR控制发送;当接收缓冲器RXFIFO未满且接收信息通过了ASP,则接收到的信息被写入RXFIFO。可通过两种方法读取接收到的信息。一种方法是,在中断被使能的情况下,由SJA1000向CPU发中断信号,CPU通过SR及IR可以识别该中断,并读取数据释放接收缓冲器;另一种方法是直接读取SR,查询RXFIFO的状态,当有信息接收时,读取该信息并释放接收缓冲器。当接收缓冲器中有多条信息时,当前的信息被读取后,接收缓冲器有效信号会再次有效,通过中断方式或查询方式可以再次读取信息,直到RXFIFO中的信息被全部读出为止。当RXFIFO已满,如还有信息被接收,此接收信息不被保存,且发出相应的缓冲器溢出信号供CPU读取处理。33MAC模块的工作原理LAN91C111是SMSC公司为嵌入式应用系统推出的第三代快速以太网控制器。LAN91C111的芯片上集成了遵循SMSC/CD协议的MAC(媒体层)和PHY(物理层),符合IEEE8023/802U100BASETX/10BASET规范,其系统结构如图33所示EPROM接口总线接口模块DMA仲裁模块内存管理模块内部RAMCSMA/CD介质无关出口10/100PHY可选的部PHY控制总线地址总线数据总线RJ45图33LAN91C111系统结构该以太网控制器的主要功能如下自适应地选传输速率,支持10MB/S/100MB/S;11基于FPGA的NIOSII系统的硬件设计充分支持全双工交换式以太网;支持突发数据传输;8K字节的内部存储器用作接收发送的FIFO缓存;增强式能量管理功能;支持总线8位、16位、32位的CPU访问;提前发送和接收。LAN91C111以太网控制器遵循IEEE颁布的8023以太网传输协议。其832位数据总线接口单元通过控制总线、地址总线和数据总线与外部的CPU相连。外部数据可以8位、16位或32位的方式与LAN91C111进行交换。该电路还集成了EEPROM接口,自举时再通过EEOROM接口输入到芯片中,从而实现自动初始化。总线仲裁器(ARBITER)用来监视以太网总线的数据交流情况,一旦发生阻塞,仲裁器一方面通过总线接口单元与外部CPU联系,另一方面控制内存控制单元(MMU),实现总线数据协调。内存控制单元可控制8KB动态SRAM的存储情况,实现与DMA控制器之间的数据联络。DMA控制器与总线控制器一起控制DMA与以太网协议处理器(EPH)之间的数据交换。以太网协议处理器(EPH)之间的数据交换。以太网协议处理器出来的数量最终经过10MB/S/100MB/S的物理层(PHY)直接到达以太网总线。34SRAM模块的工作原理由于FPGA片内的存储器的容量有限,在一般的SOPC系统应用中,外接的SRAM总是必不可少的。一般情况下,在NIOS系统中使用通用的异步SRAM(静态随机存储器),NIOSCPU通过AVALON总线访问外部的异步SRAM。由于SRAM的数据端口一般都设计成输入复用,需要在系统中加入一个三态总线桥,来完成SRAM读写时序与内部AVALON同步总线的衔接。在NIOS系统工作时,外接的SRAM一般存放运行程序和数据,对SRAM的操作速度通常是比较快的,一般的高速SRAM的读写速度在10NS左右,完全可以满足NIOS系统工作在50HZ的要求。现在的SRAM的数据接口的位宽一般为16位,可以使用两片SRAM构成32位的存储器结构,以发挥NIOS32位CPU的性能。可是,SRAM是挥发型的存储器,在掉电后,在SRAM中存储的内容也随之消失,NIOS的程序不能在掉电的时候记忆在SRAM中。为了解决这个问题,一般还需要在系统中加入掉电可保持数据的存储器,例如FLASH。这里采用的信片是IDT71V416S,其引脚图如图34示。12基于FPGA的NIOSII系统的硬件设计图34A0A17是地址输入信号引脚CSN是芯片选择引脚在一个实际的系统中,一定具有很多片SRAM芯片,所以需要选择究竟从那一片SRAM芯片中写入或者读取数据WEN是写入启用引脚当SRAM得到一个地址之后,它需要知道进行什么操作,究竟是写入还是读取,WE就是告诉SRAM要写入数据VCC33是供电引脚D0D15是数据输入输出引脚GND是接地引脚OUTPUTENABLE(OEN)这个引脚同WE引脚的功能是相对的,它是让SRAM知道要进行读取操作而不是写入操作。SRAM读取操作1通过地址总线把要读取的BIT的地址传送到相应的读取地址引脚这个时候/WE引脚13基于FPGA的NIOSII系统的硬件设计应该没有激活,所以SRAM知道它不应该执行写入操作2激活/CS选择该SRAM芯片3激活/OE引脚让SRAM知道是读取操作第三步之后,要读取的数据就会从DOUT引脚传输到数据总线。SRAM写入操作1通过地址总线确定要写入信息的位置确定/OE引脚没有被激活2通过数据总线将要写入的数据传输到DOUT引脚3激活/CS引脚选择SRAM芯片4激活/WE引脚通知SRAM知道要尽心写入操作经过上面的四个步骤之后,需要写入的数据就已经放在了需要写入的地方。35FLASH模块的工作原理FLASH即闪速存储器,一般用于SOPC系统的程序存放和需要掉电保存的数据存放,但是,FLASH的读操作比SRAM慢,写速度更加缓慢(相对于SRAM而言)。一般在NIOS系统启动后,又NIOS的BOOT程序把存放在FLASH中的程序复制到SRAM后,再运行。由于对于不同厂家的FLASH的擦写时序往往是不一样的,NIOS只支持部分常用FLASH,对于不支持的FLASH类型,就只能又NIOS系统的设计者自己完成相关FLASH擦写子程序的编写,需要自己定义FLASH组件。现在,大部分FLASH支持CFI(公共FLASH接口)命令集,只要有个支持CFI的FLASH组件,就可以支持大部分的FLASH,不需要再自己定制FLASH组件了。一般情况下,FLASH与SRAM都挂接在同一个AVALON三态总线桥上,共用一条三态总线。图35是选用的AM29LV065D的引脚14基于FPGA的NIOSII系统的硬件设计图3536NIOSCPU模块工作原理361NIOS处理器内部结构NIOSCPU采用五级流水线设计,采用了HARVARD结构,使用指令和数据存储器分离的存储结构,具有灵活的结构可修改性(可重勾性),可以支持自定制指令。NIOS通过AVALON总线与CPU外的设备打交道。NIOSCPU内部可以支持指令缓存和数据缓存,以提高存储器效率。NIOSCPU具有灵活的用户可定制的中断控制功能,支持多种中断,并可以在生成NIOSCPU时,关闭某些高级中断特性。NIOSCPU可以支持片上调试,通过OIC模块(片上JTAG调试接口模块)可以实现指令单步、断点、连续运行等调试功能。以下是NIOSCPU的内部结构图36115基于FPGA的NIOSII系统的硬件设计16图361NIOSCPU内部结构示意图362内部寄存器组织NIOS32寄存器由通用寄存器和控制寄存器两类寄存器构成。,也可以称为寄存器文件很大,但NIOS有一个依存器窗口的概念,在软件上并寄存器的寄存器窗口移动无关,它们总是可见的,控制寄存器主要表362109410D指令译码器时钟时能中断控制通用寄存器文件OPEIANDFETCHQQCONTROL程序计数器NIOS32结构中含有一个较大的通用寄存器堆(REGISTERFILE),通用寄存器堆的大小是硬件上可变的,可以在128个、256个、512个中选择。每个寄存器都是一个字,即32位。虽然,NIOS32的通用寄存器容量非128、256个或者512个通用寄存器都是可见的(可被访问的),只有处于当前寄存窗口的32个寄存器才可见。而所谓在寄存器窗口外的通用寄存器不能被访问。这个含有32个寄存器的寄存器窗口是可以移动的,每次移动16个寄存器。在这个寄存器窗口中32个寄存器按照功能的不同被分配为4组IN(输入)、LOCAL(局部)、OUT(输出)、GIOBAL(全局)。而控制寄存器与通用有下列寄存器31181711存器K寄PC程序计数器CT19SET_IE义任何的写操作都会设置STATUS中IE位为1,读操作返回结构未定基于FPGA的NIOSII系统的硬件设计CT18CLR_IE任何的写操作都会设置STATUS中IE位为0,读操作返回结构未定义CT17DCACHE数据缓存行失效CT16CPU_IDCPUIDCT15ICACHE指令缓存行失效CT14保留CT13保留CT12WVALLDHI_LIMITLO_LIMITCT11ISTATUSSAVEDSTATUSCT10STATUSDCCWPNVZCICIEIPRI3118941716151483210363存储器组织到32位,即可寻址4GB的地址空间,NIOS32支持位宽为8位,16位,端模式进行数据访问。在CPU内部可以使用指令缓存和数据缓存以提高5/1接寻址简指令集架构)处理器。对于NIOS16和NIOS32这两种处理器,很少涉及汇编语言程序设计。37协控制芯片模块工作原理MAX7128模块,是一个供可编程逻辑设计者编程试验的功能模块,上面有一片ALTNIOS32位地址可达32位数据位宽的存储器,对于位宽不为32位的存储器或外设,在操作过程中会进行动态地址对齐NIOSCPU采用小存储器操作效率和速度,但在进行外设数据操作时,可以饶过缓存进行。NIOS支持多种寻址方式,主要有6位立即数寻址寄存器直接寻址寄存器间接寻址带偏移的寄存器间364NIOS指令集NIOS是一个RISC(精它们的指令集是有差异的,需要不同的编译器的支持。NIOS32和NIOS16都由GNDC/C进行NIOS程序的开发,ERA公司的EPM7128SLC100芯片、四个LED电源指示灯和一个10脚下载插头。与EP1K30器件相比,它器件容量较小、输出引脚少,但该器件是非易失性器件,下载17基于FPGA的NIOSII系统的硬件设计的程序掉电不丢失。它也可以完成许多逻辑设计功能。371EPM7128器件简介EPM7128是MAX7000系列器件,采用08MCMOSEPROM技术制造。是高密度、高性能的CMOSEPLD可擦除可编程的逻辑器件器件。它分为8个逻辑阵列块LAB,每一LAB又分为16个宏单元。其宏单元由逻辑阵列、乘积项选择矩阵和可编程触发器三个功能块组成。它共有2500个可用门,128个宏单元组成。100个外部引脚。8个逻辑阵列块通过可编程连线阵列PIA与全局总线连在一起。全局总线由所有的专用输入、IO引脚和宏单元馈给信号。EPM7128的4个专用输入,既可以作为通用输入,也可以作为每个宏单元和IO引脚的高速、全局控制信号,如时钟CLOCK、清除CLEAR和输出OUTPUTENABLE等。逻辑阵列实现组合逻辑,给每个宏单元提供5个乘积项。“乘积项选择矩阵”分配这些乘积项作为到“或”门和“异或”门的主要逻辑输入,以实现组合逻辑函数,或者把这些乘积项作为宏单元中触发器的辅助输入。比如清除、置位、时钟和时钟使能控制。每个宏单元的1个乘积项可以反相后回送到逻辑阵列。这个“可共享”的乘积项能够连接到同一个LAB中任何其它乘积项上。根据设计的逻辑需要,MAXPLUSL开发系统将自动优化乘积项的分配。每个宏单元的触发器可以单独地编程为具有可编程时钟控制的D触发器、T触发器、SR触发器或JK触发器。另外只要需要,也可将触发器旁路,实现组合逻辑工作方式。每个触发器也支持异步清零和异步置位功能,乘积项选择矩阵分配乘积项来控制这些操作。MAX70OO中有可编程连线阵列PIA、ILO控制,并且编程具有保密性,另外还增加了可编程速度功率控制和电压摆率的控制。18基于FPGA的NIOSII系统的硬件设计4焊接与调试41元件焊接411焊接调试工序焊接之前先检测电路板,尽可能的多测量,比如电源与其他部分是否短路等;不需要的外围电路部分的元件尽量不要焊接;焊接完基本部分的电阻电容后,焊接电源部分,先调试电源,正确后再焊接其他元件;先调试FPGA和SRAM部分,测量硬件电路连通并无短路的情况下,在不加电源的情况下对其进行检测,看电源部分与地等是否有短路的情况发生;之后加电测量电压,接近,33V的,15V的是可调的。设置下载模式,MSEL0和MSEL1,这两个接到GND,用导线将其连接到GND或VCC33,对其进行下载测试,成功后,编写小程序,检测是否正确;之后焊接CPLD和FLASH,再进行检测;其他部分略;412焊接调适过程发现的错误发现Q3的1脚未接GND;电源电路有所改动,(CYCLONEII的芯片是用12伏内核电压,可用FAN1589芯片,这个芯片使用时有技巧);CS3要接到VCC33,不是接到GND;PLD_RECONFIGREQ_N没有连接,不过这个可以不用,并无大碍;还有很多其它的问题,是由于焊接问题引起的,在此不说了;注意VCC33和GND之间的电阻为330欧姆左右,VCC15和GND之间的电阻为150欧姆就得了,其他的没啥了。42电源模块的调试焊接过后的电路板,很可能存在短路虚焊的情况,如果你此时直接通入电源的话,很可能造成主芯片的发热和烧毁,我已经出现这样的情况了,焊接好电路后,直接通入电源,FLASH就开始发热,直到烫手,这时一定不要轻举妄动,都花一点时间测试电源部分的正确。电源模块需要最先调试,有一个稳定的电源才能保证系统的正常运行;最先调试是保证输出稳定的电压、合理的电流,以免造成系统元件的损坏。由于买到的元件与原理图上的元件的不同,在使用时要注意管教的顺序和功能,在19基于FPGA的NIOSII系统的硬件设计本设计中选用的是LM1085的芯片,电路如原理图,但实际上5伏的电源由7805来提供,33伏与15伏的电源使用的却是1117芯片,所以在使用的时候需要注意管教的顺序。在FPGA内核电压调试上,刚开始使用输出电压可调的芯片,但由于负载上仅有100多欧的电阻,所以使得电源不能保证输出在15伏上,因此使用了恒定输出15的电源芯片。43主芯片(FPGA)模块的调试先验证FPGA配置数据下载的正确性,刚开始没有将跳线进行设置,而是将它悬空,所以数据得不到正确的下载,因此不能将跳线悬空,否则数据将得不到正确配置;对它进行简单的验证八个LED的公共点是GND,所以要点亮LED需要在管脚上输出高电平;七段数码管在电路上是共阳极的,但只找到一个共阳极的七段数码管,另外一个我使用了共阴极的数码管,将两个接地管脚悬空后用跳线的方式连接到GND上;因此,在控制上,要输出低电平才能点亮那个共阳极的数码管,输出高电平点亮共阴极的数码管。目前只调试了这些,作为正常的使用,还应该调试出SRAM;但目前也可以使用FPGA内部的SRAM来做简单的应用,接下来要调试SRAM和LED。20基于FPGA的NIOSII系统的硬件设计5NIOSII系统设计初步51SOPC设计用工具SOPC设计包括以32位NIOS软核处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真、软件设计、软件调试等。SOPC系统设计的基本软件工具主要有QUARTUSII用于完成NIOS系统的综合、硬件优化、适配、编程下载和硬件系统测试;SOPCBUILDER它是ALTEARNIOS嵌入式处理器开发软件包,用于实现NIOS系统的配置、生成、NIOS系统相关监控和软件调试平台的生成。MATLAB/DSPBUILDER可借助生成NIOS系统的硬件加速器,进而为其定制新的指令;MODELSIM用于对SOPCBUILDER生成的NIOS的HDL描述进行系统功能仿真。NIOSIIIDE,软件开发调试环境。52NIOS系统硬件开发流程与传统嵌入式系统设计不同,NIOS系统的开发非硬件开发和软件开发两个流程,硬件开发过程包括由用户定制系统硬件构成,然后由计算机完成系统硬件系统和对应的开发软件系统生成;软件设计则与传统方式比较接近。图521所示的是NIOS系统开发的流程图,概括了利用SOPC工具实现NIOS应用系统完整设计流程。NIOS系统开发的第一步是设计规则。需要根据产品电路系统的功能特点、性能指标、功耗成本等因素确定系统的软硬件结构与配置,NIOS系统的硬件结构及各个软件模块。完成的基于NIOS的SOPC系统是一个软硬件复合的系统,在开发时可以分为硬件和软件两个部分。在实际设计过程中,往往会遇到这样一种情形所需要的功能既可用软件的方式来实现,也可以用纯硬件逻辑来实现。若用硬件的方式来实现,显然需要占用额外的硬件资源,但是可以保证系统工作速度不受影响,可以不增加硬件逻辑,但动态扫描需要占用CPU的处理时间,增加了软件结构和编写的复杂度,若对系统的速度没有特殊要求,则可考虑用软件承担更多的功能。在设计这一步,就要综合考虑确定哪些功能用硬件哪些用软件实现。一般来说,用软件实现在设计上容易修改或者增删,查错也比较容易,又几乎不增加占用的硬件资源。所以,在设计规则下,当需要的软硬件代价相当并保证性能的情况21基于FPGA的NIOSII系统的硬件设计下,软件实现是被优先考虑的。设计规划自定义外设,指令(SOPCBUILDERQUARUS|ETC开发自定制硬件模块的驱动或字程序(SOPCBUILDER)定义NIOS系统模块(定制SDK(SOPCBUILDER)OS移植(SOPCBUILDER)SOPCBUILDER)图521确定好软硬件模块的划分,就可以开始具体的设计过程了,对于通常的嵌入式系统开发,CPU的硬件构成是不可更改的,因而外围设备的变动也受到了CPU的限制,甚至整个嵌入式系统的硬件已经固定,难以更改,因而通常的嵌入式开发更多的是PCB设计及软件开发,换言之,通常的嵌入式系统开发主要是软件开发。然而NIOS系统开发则不同,NIOS是一个可灵活定制的CPU,它的外设是可选的IP核或自定制逻辑,可以根据系统设计要求,通过SOPCBUILDER向导式的界面定制裁剪得当的SOPC系统,在设计规划后,分为硬件开发与软件开发两个流程。NIOS的硬件设计流程就是为了定制合适的CPU和外设,然后在SOPCBUILDER和生成系统模NIOS块(SOPCBUILDER)编写应用程序(SOPCBUILDER)锁定引脚、硬件编辑(QUARUS|)硬件原型设计(NIO开发版)编译、连接、调试(SOPCBUILDER)软件原型设计(开发版)NIO基于的NIOSSOPC系统实现22基于FPGA的NIOSII系统的硬件设计QUARTUSII中实现。由图521可知,硬件设计流程中,可以灵活定制NIOSCPU的许多特性甚至指令,可以使用ALERA提供的IPCORE来加快设计者开发NIOS外设的速度,提高外设的性能,也可以使用第三方的IPCORE,或者使用VHDL来自己定制外设。外设定义完成后,即可对NIOSCPU和各外设模块的特性、大小及在系统中地址分配等进行设定。接下去是启动SOPCBUILDER,使之生成用于综合的硬件语言描述。然后锁定端口引脚,启动QUARTUSII,对生成的NIOS系统描述文件进行综合、适配和下载。在NIOS的硬件系统生成的同时,SOPCBUILDER帮助开发者生成相应的SDK(软件开发包)。在生成的SDK基础之上,开发者可以进入软件开发流程。在这个部分,开发几乎与通常的嵌入式系统的开发没有区别,唯一的不同在于,设计者所面对的嵌入式系统是自己定制的、裁剪过的,因此,可能受到硬件的局限会小些,开发者可以使用汇编或者C语言来进行程序设计,使用GNU工具进行程序的编译连接以及调试。53NIOS系统软件开发流程NIOS软件开发流程包含有6个主要步骤,如图522获取目标NIOS系统SDK建立和编译应用软件下载可执行代码到开发板调试代码转换代码为自启动代码移植到目标硬件图522NIOS软件开发流程NIOSCPU之后,就会在其工作目录下生成该NIOSCPU系统发环境是一个用CYGWIN模拟的UNIX控制台环境。如果直531获取目标NIOS系统SDK利用SOPCBUILDER创建完成的SDK子目录。一般地,进行NIOS软件开发都是在该SDK目录环境下进行开发的。SDK中所包含的头文件和库文件,为软件开发人员省去了创建硬件映射表和编程底层硬件子程序的基础性编程操作。532建立和编译应用软件WINDOWS下的NIOS软件开23基于FPGA的NIOSII系统的硬件设计接在该控制台窗口下编写应用软件源程序,可以使用CYGWIN自带的文本编辑器。对于中小规模的软件项目,一般使用NIOSBUILD批处理命令就足够编译软件源程序了。533下载可执行代码到开发板通过使用NIOSRUN批处理脚本,可以将第二步编译生成的可执行代码下载到开发板上,并且立即执行该代码。NIOS开发包中的GERMS监控程序允许用户运行可执行代码,进行内存读写操作,装载大块代码到内存区,以及FLASH内存擦写操作等。534调试代码如果在源程序中使用了PRINTF()函数输出调试信息,那么该调试信息将被传送到标准输入输出端口(STDIO)上。NIOS开发板一般将STDIO指向一个串口或NIOSOCI调试器模块,并将NIOSRUN所在的控制台窗口作为消息显示终端。通过使用NIOS开发板自带的GNUDEBUGGER(GDB)调试器可以对OUT格式的可执行代码进行调试。如果调试过程中发现问题,那么就要返回到第2步重新修改源程序,然后编译,再次调试,直到程序调试通过。535转换代码为自启动代码应用程序代码完全调试通过后,还可以将可执行代码存储到开发板上的FLASH存储器中。之后,每次NIOSCPU复位重启后就会自动执行该可执行代码。在开发板上一般使用片外或片内存储器来存储非易失性代码。如果程序代码比较小,那么就可以将其放入CYCLONE芯片的片内存储器中。NIOS硬件开发人员在SOPCBUILDER环境下,通过为片内RAM或ROM指定初始化文件将程序代码放进片内存储器中。在这种情况下,NIOS开发者可以使用自己的自启动代码来完成替代GERMSMONITOR监控程序。536移植到目标硬件最后,当准备将软件设计实现在目标硬件平台上时,可能还是需要用到上述几步中提到的实用工具进行代码下载和调试。如果硬件结构与开发板相差太大,可能还需要对软件代码进行修改、调试,然后还是要用到NIOSRUN命令、NIOSOIC调试器控制台或GERMSMONITOR监控程序等。最后,就是基于NIOS的SOPC系统在实际产品上的实现。24基于FPGA的NIOSII系统的硬件设计6、实用例程61熟悉NIOSII开发环境NIOSII的开发涉及到多个软件工具,由于文档需要面向最广泛的开发者,在这一篇中以一般的开发流程,图文并列的方式进行探讨,首先要正确安装ALTERA公司的QUARTUSII42或更高版本、NIOSIIDEVELOPMENTKIT12或更高版本的软件,对软件安装不再赘述。NIOSII开发分硬件开发和软件开发两个流程,硬件开发过程主要由用户定制系统硬件,然后由SOPCBUILDER等工具完成系统硬件和对应的开发软件生成;软件设计和传统方式类似,接近于UNIX/LINUX系统开发,软件开发又可以细分为HAL驱动程序开发和应用系统开发。以一个简单的基于NIOSII的系统开发过程来介绍NIOSII系统的开发过程,该系统具有四个按钮,8个LED输出,SDRAM,FLASH硬件,实现简单的流水灯。项目名NIOS_STAR。1)建立开发目录,DNIOS_STAR2)启动QUARTUSII3)新建设计项目FILENEWPROJECTWIZARD按NEXT。在上图的输入表单中输入项目目录,项目名称和顶层模块名。添加项目需要包含进来文件或非默认库,本例中使用默认设置。25基于FPGA的NIOSII系统的硬件设计上图中选择FPGA器件,本例中选EP1C6Q240C8。设定第三方综合、仿真、时间分析等EDA工具。本例选默认按FINISH生成项目4)建立顶层模块FILENEW选择BLOCKDIAGRAM/SCHEMATICFILEFILESAVEAS保存文件名为顶层模块名。5)建立系统模块26基于FPGA的NIOSII系统的硬件设计选择QUARTUSII菜单TOOLSSOPCBUILDER,打开与QUARTUSII集成的SOPC开发工具SOPCBUILDER。弹出下图输入系统名,本例中为NIOS_STAR_CPU,HDL选择VERILOG。确认后进入SOPCBUILER设计界面。在右上部分选择目标板和系统时钟,本例中目标板选FREEDEV_BOARD_CYCLONE_1C6,系统时钟默认50M。6)加入NIOSCPUCORE(必需)27基于FPGA的NIOSII系统的硬件设计首先加入的是CPU核,选择组件栏中的AVALONMODULESNIOSIIPROCESSOR右键点击,选择ADDNEWNIOSIIPROCESSORALTERACORPORATION,打开配置对话框如下图NINIOSII提供三个选项,最小、标准、快速的CPU核,本例我们选最小核。其他选项表单中都默认,点击FINISH完成。7)加入ON_CHIP_MEMORY使用FPGA内部RAM资源,可以构成RAM或ROM,速度快,特别在调试时因为很少受外部连线等因素的限制很有用。组件栏中选择LEGACYCOMPONENTSONCHIPMEMORY打开界面,如下图本例中我们定义了4K字节的RAM。28基于FPGA的NIOSII系统的硬件设计8)加入JTAG_UARTJTAGUART在调试中非常有用,在调试中只要配置了CPU、ONCHIPMEMORY和JTAGUART就可以完成一个最小系统了,这些硬件资源都在FPGA器件的上,涉及的电路较少,比较容易正常工作,在调试时特别是自制开发板调试时很有效。在组件栏中选择COMMUNICATIONJTAGUART,弹出JTAGUART。9)加入UARTUART就是通用异步收发器,NIOSII系统可以通过串口和其他设备通讯,也可用于仿真调试。波特率、数据位数、停止位数和校验方式按需要设置,本例选择默认配置,只用到RXD、TXD、GND三根线。在组件选择栏中选择COMMUNICATIONUART(RS232SERIESPORT)配置UART,界面如下10)加入TIMER在嵌入式系统应用中,定时器是必不可少的,SOPCBUILDER提供了一个定时器组件。在组件拦中双击选择OTHERINTERVALTIMER进入配置界面,我们选用FULLFEATURE,1MS一次溢出事件。11)加入BUTTON_PIO在组件拦中双击选择OTHERPIO进入配置界面,选4位,对应4个按钮。对于PIO有4种模式输入(INPUTPORTSONLY);输出(OUTPUTPORTSONLY);三态(TRISTATEPORTS);双向口输入、输出(BOTHINPUTANDOUTPUTPORTS)在此选INPUTPORTSONLY。在INPUTOPTIONS选项单我们配置了上升沿触发,生成中断请求的模式。配置完成后右键单击SOPCBUILDER右半部分列表中的P

温馨提示

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

评论

0/150

提交评论