sopc课件第四章.ppt_第1页
sopc课件第四章.ppt_第2页
sopc课件第四章.ppt_第3页
sopc课件第四章.ppt_第4页
sopc课件第四章.ppt_第5页
免费预览已结束,剩余222页可下载查看

下载本文档

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

文档简介

第4章NiosII外围设备,主讲人:李兰英哈尔滨理工大学计算机学院,本章主要内容:(1)SDRAM控制器概述(8)SPI核综述(2)CFIFlash控制器概述(9)DMA控制器核综述(3)EPCS控制器综述(10)系统ID核综述(4)PIO控制器综述(11)PLL核综述(5)定时器控制器综述(12)Mutex核(6)UART核综述(7)JTAGUART核综述,第四章目录,1SDRAM控制器1.1SDRAM控制器概述1.2SOPCBuilder中的SDRAM控制器内核配置选项1.3配置实例1.4SDRAM软件编程模型1.5时钟、PLL和时序1.6Thumb指令集概述,2.CFI(通用Flash接口)控制器2.1CFIFlash控制器概述2.2SOPCBuilder中CFI控制器配置选项2.3CFI软件编程模型,3EPCS设备控制器3.1EPCS控制器综述3.2SOPCBuilder中EPCS控制器的配置选项3.3EPCS软件编程模型,第四章目录,4PIO控制器4.1PIO控制器综述4.2SOPCBuilder中PIO配置选项4.3PIO软件编程模型4.4PIO寄存器描述与中断,5定时器控制器5.1定时器控制器综述5.2SOPCBuilder中定时器核配置选项5.3定时器软件编程模型5.4定时器寄存器描述与中断,6UART核6.1UART核综述6.2SOPCBuilder中UART核配置选项6.3UART软件编程模型6.4UART寄存器描述与中断,第四章目录,7JTAGUART核7.1JTAGUART核综述7.2SOPCBuilder中JTAGUART核配置选项7.3JTAGUART的软件编程模型7.4JTAGUART寄存器描述与中断,8SPI核8.1SPI核综述8.2SPI配置实例8.3SOPCBuilder中SPI核配置选项8.4SPI软件编程模型8.5SPI寄存器描述,9DMA控制器9.1DMA控制器核综述9.2SOPCBuilder中DMA控制器配置选项9.3DMA软件编程模型9.4DMA寄存器描述与中断,第四章目录,10系统ID核10.1系统ID核综述10.2SOPC中系统ID配置选项10.3系统ID软件编程模型,11PLL核11.1PLL核综述11.2SOPCBuilder中PLL控制器配置选项11.3PLL寄存器描述,12Mutex核12.1概述12.2功能描述12.3在SOPCBulider中使用mutex核12.4Mutex软件编程模型12.5Mutex核的API,1SDRAM控制器1.1SDRAM控制器概述1.2SOPCBuilder中的SDRAM控制器内核配置选项1.3配置实例1.4SDRAM软件编程模型1.5时钟、PLL和时序1.6Thumb指令集概述,第四章目录,1SDRAM控制器概述,具有Avalon接口的SDRAM控制器IP核为FPGA片外SDRAM提供一个Avalon接口,使设计者在FPGA中创建一个方便与SDRAM芯片连接的定制系统。它支持PC100规范中所描述的标准SDRAM。SDRAM一般用在需要大容量易失性存储器且对成本敏感的应用中,即SDRAM相对便宜,但需要进行刷新、行打开(OpenRow)管理、延时及其他操作。SDRAM控制器与一个或多个SDRAM芯片相连,并由它处理所有的SDRAM协议请求。在FPGA内部,SDRAM控制器核提供一个线性存储器(flat地址空间)的Avalon从端口,与Avalon主外设相连。该核可通过不同的数据宽度(8、16、32或64位)来访问SDRAM,可访问不同容量且有多个片选的存储器。Avalon接口有延迟功能,允许进行流水读操作。该核可选择与其他片外Avalon三态设备共享地址和数据总线。这一点对引脚有限的系统很重要,此时,除了SDRAM之外,系统还必须与其他多个存储器芯片相连。具有Avalon接口的SDRAM控制器核包含在SOPCBuilder中,很容易集成到任何SOPCBuilder所创建的系统中。,图4-1是SDRAM控制器核的方框图。该控制器与一个外部SDRAM芯片相连。,1Avalon接口Avalon从端口是SDRAM控制器核唯一用户可见部分。该端口提供了一个平面的(flat)、连续的且与SDRAM容量相应的存储器空间。对从端口的访问完全是透明的。Avalon接口就像一个简单的存储器接口,无任何存储器映射配置寄存器。Avalon从端口允许外设控制插入读和写传送的等待周期,从端口等待直到外设提供有效数据。从端口也支持具有可变延时的读传送,允许高带宽的流水读传送。当主外设读取来自从外设的连续地址时,第一个延迟周期后,返回第一个数据,随后的读操作在每个时钟周期都可读取一个新的数据,但是不能保证每个时钟周期都能返回一个数据,因为SDRAM控制器必须周期地暂停读操作,而去刷新SDRAM。,2片外SDRAM接口SDRAM控制器核与片外SDRAM芯片的接口提供PC100定义的标准信号。这些信号必须通过FPGA的I/O引脚连接到SDRAM芯片上。(1)信号的时序与电气特性信号的时序取决于核的配置,由硬件设计者完成核的配置以匹配系统中所选择的SDRAM芯片。FPGA引脚的电气特性取决于FPGA型号和在QuartusII软件中的设定值。某些FPGA芯片系列支持较宽范围的电气标准,能够与多种SDRAM芯片接口。(2)同步时钟与数据信号SDRAM芯片的驱动时钟必须和Avalon接口的时钟速率相同,如图4-1所示。一个片内锁相环(PLL)常被用于SDRAM控制器核与SDRAM芯片之间的时钟相位调整。时钟速度较低的系统往往不需要PLL,在较高时钟频率下,PLL用于调整时钟以满足SDRAM的需要。PLL模块不是SDRAM控制器核的集成部件。若需要PLL,设计者必须添加altpll宏模块(在SOPCBuilder系统模块之外)或PLL核(QuartusII5.1以上版本支持),FPGA和SDRAM芯片不同的连接需要不同的PLL设置。若使用PLL,必须调整PLL来引入一个时钟相移,以使得SDRAM时钟沿在同步信号稳定之后才出现。SDRAM控制器不支持时钟禁止模式,它总是设置cke信号有效。(3)与其他Avalon三态设备共享引脚如果Avalon三态桥出现在SOPCBuilder系统中,SDRAM控制器核能与三态桥共享引脚。在这种情况下,该核的addr,dq(data)和dqm(字节使能)引脚与连接到Avalon三态桥的其他设备共享。这个特性节省I/O脚,这在包含多个外部存储器芯片的系统中很有用(例如,Flash,SRAM,SDRAM等)。,性能考虑在最优条件下,SDRAM控制器核的带宽为每个时钟周期接近一个字。然而,由于刷新SDRAM的开销,每一个时钟周期传送一个字是不可能的,其他影响内核性能的因素有:(1)行打开SDRAM芯片由多个存储器体(bank)组成,每个bank可独立地进行行打开地址管理。SDRAM控制器对每个bank进行行打开管理,在同一行和同一bank中将以接近每个时钟1个字的速率进行连续读和写操作。频繁地访问不同banks时,行的关闭和打开将需要额外的管理周期。(2)数据和地址引脚的共享当控制器与其他三态设备共享引脚时,通常平均访问时间要增加而带宽减少,当允许其他设备访问三态桥时,SDRAM需要行打开和关闭开销周期。SDRAM控制器被允许重新访问三态桥之前,必须等待几个时钟周期。为了使带宽最大化,只要在同一行和同一bank内进行连续地读或写操作,SDRAM控制器自动维护三态桥的控制。注意:这种方式可能降低其他共享Avalon三态桥的设备的平均访问时间。只要在连续的操作中有一个中断,或者需要刷新操作,SDRAM控制器就会关闭一个打开的行。这将使得控制器不能永久阻塞对其他共享三态桥的设备的访问;控制器保证不破坏SDRAM的行打开时间限制。(3)硬件设计与目标FPGAFPGA影响硬件设计中可达到的最大时钟周期频率。某些系列的芯片可获得较高的最大频率,相同系列中速度高的性能也高。在Altera高性能FPGA中(例如,Stratix系列),SDRAM控制器可达到100MHz,但并不是在所有的FPGA都可达到100MHz的性能。最高频率也取决于SOPCBuilder系统设计,SDRAM控制器时钟也可能驱动系统模块中的其他逻辑,这可能影响可达到的最大频率。对达到100MHz的SDRAM控制器,由同一时钟驱动的所有组件必须设计为100MHz,QuantusII软件中的时序分析必须验证硬件设计是否可以在100MHz下正常操作。SDRAM控制器核支持所有的AlteraFPGA系列,不同的FPGA系列支持不同的I/O标准,这可能影响该核与某些SDRAM芯片接口的能力。,1SDRAM控制器1.1SDRAM控制器概述1.2SOPCBuilder中的SDRAM控制器内核配置选项1.3配置实例1.4SDRAM软件编程模型1.5时钟、PLL和时序1.6Thumb指令集概述,第四章目录,设计者在SOPCBuilder中使用配置向导来指定SDRAM控制器的硬件特性和仿真特性。配置向导有2个标签:MemoryProfile和Timing。Presets表提供了多个预定义的SDRAM配置以方便对SDRAM的配置。若目标板上的SDRAM子系统与预定义配置中的某个相匹配,则选择相应的预置值很容易完成SDRAM控制器的配置。当选择一个预置配置时,MemoryProfile和Timing标签中的值自动改变。在标签中改变配置设定值,将使预置值变为定制的值。,1MemoryProfile标签该标签允许设计者指明SDRAM子系统的结构。例如,地址和数据总线的宽度、片选信号的个数和bank的数目等。表41列出了该标签下的所有设置选项。,对该标签中的设定值,配置向导以兆字节、兆位、可寻址字数等单位显示存储器的容量,来验证设定值是否正确。,2Timing标签Timing标签允许设计者设定SDRAM芯片的定时参数,正确的参数应参照厂家数据手册,表42列出了Timing标签的所有设置选项。表42Timing标签设定,3硬件仿真下面讨论SDRAM的仿真系统,其硬件仿真需要3个主要的部件:SDRAM控制器的仿真模型。SDRAM芯片的仿真模型,也称之为存储器模型。连线存储器模型到SDRAM控制器引脚的仿真测试台。上述部件部分或全部在系统创建时产生。(1)SDRAM控制器仿真模型SOPCBuilder创建的SDRAM控制器设计文件同时也适合综合和仿真。某些仿真特性在HDL中实现时通过使用“translateon/off”综合命令,以使HDL代码的某些段对综合工具是不可见的。仿真特性的实现主要是方便ModelSim仿真器对NiosII处理器系统进行仿真。没有ModelSim专用的SDRAM控制器仿真模型,但是对其他仿真器,可能需要某些小的改动。(2)SDRAM存储器模型仿真SDRAM存储器模型有2个选择。,使用通用存储器模型若Includeafunctionalmemorymodelthesystemtestbench选项在系统创建时被选中,则SOPCBuilder为SDRAM存储器创建一个HDL仿真模型。在自动创建的系统测试台中,SOPCBuilder自动地连线存储器模型到SDRAM控制器引脚。使用自动存储器模型和测试台加速包含SDRAM控制器系统的创建和验证过程。但是存储器模型是一个通用的功能模型,它并不能反映实际SDRAM芯片的时序和功能。通用模型总是被创建成单个、单片的存储器块。例如,对连接两片SDRAM芯片的系统,通用存储器模型被创建成一个单个实体。使用SDRAM制造商的存储器模型若上述选项未选中,设计者应从SDRAM生产厂家获取一个存储器模型并在系统测试台中手动连接该模型到SDRAM控制器的引脚。,4.1.3配置实例下面的实例表明如何把SDRAM控制器输出引脚连到SDRAM芯片。其中ctl是多个信号的集合体,例如cas_n、ras_n、cke和we_n。一个单片128MbitSDRAM芯片如图42所示,它具有32位数据总线,其地址、数据和控制信号直接与芯片相连。存储器空间是128M位(16M字节)。,图42具有32位数据总线的单片128bitSDRAM芯片图43中包含2个64M位SDRAM芯片,每片的数据总线为16位,2个芯片的地址和控制总线并连。注意:2个芯片共享cs_n片选信号。每个芯片提供32位数据总线的一半。结果获得一个容量为128M位(16M字节)的32位数据存储器。,图432个64M位SDRAM芯片(每个具有16位数据总线),图44中包含2个128M位SDRAM芯片,每个有32位数据线,控制、地址和数据线并联。片选cs_n1:0决定哪一片被选中,结果获得一个逻辑上256Mbit32位的存储器。,图442个128M位SDRAM芯片(每个具有32位数据总线),1SDRAM控制器1.1SDRAM控制器概述1.2SOPCBuilder中的SDRAM控制器内核配置选项1.3配置实例1.4SDRAM软件编程模型1.5时钟、PLL和时序1.6Thumb指令集概述,第四章目录,SDRAM软件编程模型当通过Avalon接口访问SDRAM控制器时,SDRAM控制器就是简单的存储器。没有任何可配置的设定,也没有任何存储器映射的寄存器;处理器访问SDRAM控制器不需要任何软件驱动程序。,1SDRAM控制器1.1SDRAM控制器概述1.2SOPCBuilder中的SDRAM控制器内核配置选项1.3配置实例1.4SDRAM软件编程模型1.5时钟、PLL和时序1.6Thumb指令集概述,第四章目录,时钟、PLL和时序下面讨论来自控制器核的同步信号与驱动SDRAM芯片的时钟问题。在SDRAM操作期间,SDRAM引脚上的地址、数据和控制信号在某个时间窗口内有效,在有效的时间窗口内SDRAM时钟必须切换(toggle)来捕获正确的值,当时钟频率较慢时,时钟自然落在有效的窗口内;当频率较高时,必须补偿SDRAM时钟使之与有效窗口对齐。通过计算或利用示波器分析SDRAM引脚,可以观察有效的窗口何时出现,然后,使用PLL调整SDRAM时钟的相位,以使得边沿发生在有效窗口的中间。为了满足目标板的要求,可能需要反复试验来调节PLL的相移。,1影响SDRAM时序的因素窗口的位置和持续时间取决于下面几个因素:PFGA和SDRAMI/O引脚的时序参数I/O时序参数随着PFGA器件系列和速度等级而变。在FPGA上的引脚位置与行布线(routing)连接的I/O引脚和与列布线连接的I/O引脚有不同的时序。在QuartusII编译期间使用的逻辑选项逻辑选项,例如,快速输入寄存器和快速输出寄存器,影响设计的布局布线。逻辑电路的位置和FPGA内部的寄存器影响信号到I/O的传播延时。SDRAM的CAS延迟。FPGA和SDRAM芯片的不同的连接,其有效的窗口时序不同,即窗口依赖于QuartusII的布局布线结果和引脚分配。2PLL的故障现象检测PLL调整的是否正确是困难的,数据传送不可能总是失败。例如,到SDRAM的单个传送可能成功,而突发(burst)传送可能失败。对基于处理器的系统,如果软件能对SDRAM进行读写操作,但当代码位于SDRAM中时却不能运行,则可能PLL调整的不正确。,3估计有效的信号窗口下面讨论使用由SDRAM数据手册和QuartusII编译报告提供的时序参数,如何估计信号窗口的有效位置和持续时间。找到窗口后,可以调整PLL以使SDRAM时钟边沿精确地发生在窗口的中间位置。计算窗口分两步进行:首先找到SDRAM时钟可能比控制时钟滞后多少,然后看它能超前多少。找到滞后和超前的最大值后,计算它们之间的中间点。这些计算仅提供一种估计。下面的延迟也能影响正常的PLL调整,但在下面的计算中没有考虑。由于在PCB板上的延迟引起的信号相位偏移。计算中假设零偏移。从PLL时钟输出节点到目标处的延迟。计算假设从PLLSDRAM时钟输出节点到引脚的延迟与从PLL的控制器时钟输出节点到SDRAM控制器中时钟输入的延迟相同。如果这些时钟延迟相差较大,在窗口计算中必须考虑这种相移。图4-5显示出如何计算SDRAM时钟滞后于控制器时钟的最大值。图4-6显示如何计算超前的最大值。相对于控制器时钟,滞后是一个负的时移,超前是一个正的时移。SDRAM时钟滞后于控制器时钟的最大值取读周期和写周期的最大滞后值的较小值,即MaximumLag=minimum(ReadLag,WriteLag)。类似地,超前值取读周期和写周期的最大超前值的较小值,即MaximumLead=minimum(ReadLead,WriteLead)。,图4-5计算SDRAM的最大时钟滞后,图4-6计算SDRAM的最大时钟超前,4计算实例下面是计算信号窗口的一个例子,SDRAM芯片的型号是MicronMT48LC4M32B2-7,FPGA设计是针对AlteraStratixIIEP2S60F672C5的设计。这个例子使用3个周期的CAS延迟、50MHz的时钟频率;在FPGA上的所有SDRAM信号被寄存在I/O单元;在QuartusII软件中选中FastInputRegister和FastOutputRegister选项。表4-3是从MT48LC4M32B2设备手册中节选的相关时序参数。,表4-3MT48LC4M32B2SDRAM器件的时序参数,表4-4显示了PFGA相关的时序信息,来源于QuartusII编译报告中的时序分析器。表4-4中的值是所有与SDRAM有关的FPGA引脚的最大和最小值。FPGA上的SDRAM引脚之间的时序上的变化不大(小于100ps),原因是这些信号的寄存器被放在I/O单元中。表4-4FPGA的I/O时序参数,FPGA设计的I/O时序信息必须通过设计的编译才能得到。虽然Altrera系列器件的数据手册包含一般的I/O时序信息,QuartusII编译报告为特定的设计提供最精确的时序信息。编译报告里的时序值可能随着布局、引脚分配和其他QuartusII逻辑设置而改变,当在QuartusII中重新编译设计时,需验证I/O时序没有太大的变化。根据表4-3和4-4、图4-5和4-6进行如下计算:SDRAM的时钟滞后控制器的时钟值取读滞后或写滞后中的较小值。ReadLag=tOH(SDRAM)-tH_MAX(FPGA)=2.5ns-(-5.607ns)=8.107ns或WriteLag=tCLK-tCO_MAX(FPGA)-tDS(SDRAM)=20ns-2.477ns-2ns=15.523nsSDRAM的时钟超前控制器的时钟值取读超前或写超前中的较小值。ReadLead=tCO_MIN(FPGA)-tDH(SDRAM)=2.399ns-1.0ns=1.399ns或WriteLead=tCLK-tHZ(3)(SDRAM)-tSU_MAX(FPGA)=20ns-5.5ns-5.936ns=8.564ns所以上例中,相对于控制器的时钟,SDRAM的时钟相移从-8.107到1.399。在这个窗口的中间选择一个相移的值为(-8.107+1.399)/2=-3.35ns。,2.CFI(通用Flash接口)控制器2.1CFIFlash控制器概述2.2SOPCBuilder中CFI控制器配置选项2.3CFI软件编程模型,第四章目录,CFIFlash控制器概述具有Avalon接口的通用Flash接口(CommonFlashInterface,CFI)控制器核很容易与SOPCBuilder系统外的符合CFI参数要求的外部Flash相连,CFI控制器是SOPCBuilder内部集成的,可以很轻松地集成到SOPCBuilder创建的系统中。对NiosII处理器,Altera为CFI控制器提供HAL驱动子程序。驱动程序为CFI兼容的Flash提供通用的访问子程序。HAL驱动子程序利用Flash的HAL通用设备模型,允许用户使用熟悉的HALAPI和/或ANSIC文件I/O标准库函数访问Flash。如何利用HALAPI读、写Flash详见第六章。NiosII开发工具提供了一个基于NiosII处理器和CFI控制器的FlashProgrammer实用程序。该实用程序可对任何连接到FPGA的CFI兼容的Flash进行编程。图47是CFI控制器在一个典型系统中的方框图。Flash芯片与Avalon接口通过一个Avalon三态桥相连接。三态桥创建一个片外存储器总线,允许Flash芯片与其他存储器共享地址和数据引脚。对连接到存储器总线的每个芯片,它提供单独的片选、读和写引脚。CFI控制器是一个Avalon三态从端口,需要配置的参数有:与Flash芯片相匹配的等待状态、建立和保持时间等。该从端口能进行Avalon三态从端口读传送和写传送。Avalon主端口能直接从CFI控制器的Avalon口进行读传送。,图47集成了CFI控制器的SOPCBuilder系统,2.CFI(通用Flash接口)控制器2.1CFIFlash控制器概述2.2SOPCBuilder中CFI控制器配置选项2.3CFI软件编程模型,第四章目录,SOPCBuilder中CFI控制器配置选项硬件设计者使用CFI控制器的SOPCBuilder配置向导来指明该核的特性。配置向导有2个标签:属性(Attributes)标签和时序(Timing)标签。1属性标签在该标签下的选项控制CFI控制器的基本硬件配置。(1)预定义设置(Presets)Presets设置是一使用CFI控制器的Flash芯片的下拉菜单,在菜单中选择一个芯片之后,向导将更改2个标签中与指定Flash芯片相匹配的所有设定值(板子信息设置除外)。若目标板上的Flash芯片没有出现在Presets菜单中,则必须手动配置所有选项。(2)尺寸设置尺寸设置指明Flash的尺寸,有2个设置:地址宽度Flash芯片的地址总线宽度。数据宽度Flash芯片的数据总线宽度。尺寸设置使SOPCBuilder为该设备分配正确的地址范围。SOPCBuilder将自动产生动态总线尺寸逻辑,以便将Flash正确地连接到不同数据宽度的Avalon主端口。(3)板子信息板子信息的设置内容为FlashProgrammer实用程序所使用,该设置内容将CFI控制器映射到一目标系统板上的已知芯片上。参考标志符(ReferenceDesignator)设定是一个下拉菜单,把当前Flash元件映射到一个目标板上参考标志符。当目标板上有多个Flash时下拉菜单才有效。如果板上的所有Flash芯片被CFI控制器的其他实例所代表,SOPCBuilder显示一个错误。,2时序(Timing)标签该选项指明Flash读和写传送的时序要求,设定包括:Setup片选有效后,发起读或写信号之前所需时间。Wait对每次传送,使能读写信号所需的时间。Hold写信号无效后,使片选无效之前所需的时间。Units定时单位,可以是ns,us,ms和时钟周期数。,2.CFI(通用Flash接口)控制器2.1CFIFlash控制器概述2.2SOPCBuilder中CFI控制器配置选项2.3CFI软件编程模型,第四章目录,CFI软件编程模型一般地,系统中任何Avalon主端口能直接对Flash进行读操作。对NiosII处理器用户,Altera提供HAL系统库子程序,通过HALAPI函数可对Flash进行擦除和写操作。1HAL系统库支持Altera提供了集成到NiosII的HAL系统库的Flash设备驱动程序。应用程序调用熟悉的HALAPI函数对CFI兼容的Flash进行编程。用户不需要了解底层驱动的任何细节。当前,CFI控制器的驱动程序仅支持AMD和Intel的Flash芯片。2软件文件下面文件定义了对硬件的底层访问,提供了HALFlash的设备驱动子程序,应用程序开发者不应该修改这些文件。alter_avalon_cfi_flash.h、alter_avalon_cfi_flash.c把驱动子程序集成到HALSystem库中所需的函数和变量的头文件及源代码。altera_avalon_cfi_flash_amd_funcs.h、altera_avalon_cfi_flash_table.c访问CFI列表的头文件和函数源代码。alter_avalon_cfi_flash_amd_funcs.h、Alter_avalon_cfi_flash_amd_funcs.c对AMDCFI兼容的Flash进行编程的头文件和源码。altera_avalon_cfi_flash_intel_funcs.h、Altera_avalon_cfi_flash_intel_funcs.c对IntelCFI兼容的Flash进行编程的头文件和源码。,3EPCS设备控制器3.1EPCS控制器综述3.2SOPCBuilder中EPCS控制器的配置选项3.3EPCS软件编程模型,第四章目录,EPCS控制器综述EPCS控制器允许NiosII系统访问Altera的EPCS串行配置芯片。Altera提供集成到NiosIIHAL系统库的驱动程序,可使用熟悉的访问Flash的HALAPI读和写EPCS设备。使用EPCS控制器,Nios系统可以:在EPCS芯片中存入程序源代码。EPCS控制器提供一个Bootloader功能,允许Nios系统把主程序代码存到EPCS芯片中。存储非易失性的程序和数据,例如一个串行码、NIC码和其他的固定不变的数据。管理FPGA配置数据。例如一个具有网络功能的嵌入式系统能通过网络接收新的FPGA配置数据,使用EPCS控制器把新的数据写到EPCS串行配置芯片中。EPCS控制器是SOPCBuilder内部集成的部件。很容易集成到SOPC系统中。利用NiosIDE中的FlashProgrammer实用程序可把数据固化到EPCS芯片中。,1功能描述图48是一个典型的系统配置EPCS控制器的方块图。如图所示,EPCS芯片中的存储区可分两个区:FPGA配置存储器该区保存FPGA配置的数据。通用存储器如果FPGA配置数据没有填满整个EPCS芯片,剩余的空间可用来存放通用数据和系统启动代码。,图48集成EPCS控制器的Nios系统.,依靠Flash的HAL通用设备模型,使用HALAPI访问EPCS设备的方法与任何Flash的访问是相同的。EPCS芯片有一个特殊的硬件接口,所以Nios的程序必须使用HALFlash驱动程序读写EPCS存储器。EPCS控制存储器包含1k字节的在片存储器用来存放bootloader程序。Nios处理器可配置为从EPCS控制器启动。在这种情况下,复位后,CPU首先执行bootloader中的ROM代码,将EPCS通用存储器的数据拷贝到RAM中,接着程序控制转到RAM。NiosIDE提供实用工具来编译存放在EPCS中的程序,创建一个能够写到EPCS中的编程文件。Altera的EPCS配置芯片通过FPGA上专用的引脚与之相连,而不是通过通用I/O引脚,所以EPCS控制器在顶层的SOPCBuilder系统模块上并不创建任何I/O端口。如果在电路板上EPCS芯片和FPGA相连,目的是使用EPCS进行配置(例如,主动串行配置模式),则不需要其他任何连线。当在Quartus软件中对SOPCBuilder系统进行编译时,EPCS控制器信号被自动连线到EPCS芯片的专用引脚。注意:如果使用Quatursprogrammer对EPCS进行编程,原来内容将被擦除。使用NiosIDE中的FlashProgrammerUtility,可将FPGA配置数据和Nios程序数据固化到EPCS的芯片中。,2Avalon从接口与寄存器EPCS控制器有一个Avalon从接口,提供对bootloader代码和控制该核的寄存器的访问。如表45所示,前256个字专门用来存放bootloader代码,紧接着7个字是控制和数据寄存器。NiosCPU可以读取从EPCS控制器的基地址开始的256条指令。表45EPCS控制寄存器映射,表45注:(1)Altera没有提供访问控制和数据寄存器的功能,必须通过HAL驱动程序来访问EPCS配置芯片。,3EPCS设备控制器3.1EPCS控制器综述3.2SOPCBuilder中EPCS控制器的配置选项3.3EPCS软件编程模型,第四章目录,硬件设计者使用EPCS控制器的SOPCBuilder配置向导来指明核的特性,该向导中只有一个选项。参考标志符设置是一个下拉菜单,允许在当前的SOPCBuilder目标板元件中选择一个参考标志符,目的是把当前的EPCS控制器与板上EPCS芯片的参考标识符相联。如果没有匹配的参考标识符(例如板上不包含一个EPCS芯片),则EPCS控制器不能被加到系统中。参考标识符被NiosIDEFlashProgrammer使用。详情请看NiosIIFlashProgrammerUserGuide。注意在每个FPGA设计中只能包含一个EPCS控制器。,EPCS软件编程模型Altera提供HAL系统库驱动程序,若利用HALAPI函数擦除和写入EPCS存储器,必须使用HAL驱动程序来访问EPCS配置芯片。1HAL系统库支持Altera提供一个HALFlash驱动程序,它集成到Nios系统的HAL系统库。软件调用HALAPI函数来对EPCS存储器进行编程,而不需要了解低层驱动程序的细节。2软件文件下面的软件文件提供了对硬件低层访问,应用程序开发人员不应该修改这些文件。altera-avalon-EPCS-flesh-controller.h、altera-avalon-EPCS-flesh-controller.c定义集成到HAL系统库所需头文件和驱动程序代码。EPCS-commend.h、EPCS-commend.c直接控制EPCS硬件进行读写操作的头文件和源文件,这些文件也依赖Altera的SPI核驱动程序。,4PIO控制器4.1PIO控制器综述4.2SOPCBuilder中PIO配置选项4.3PIO软件编程模型4.4PIO寄存器描述与中断,第四章目录,PIO控制器综述并行输入输出(PIO)核在Avalon从端口和通用I/O端口之间提供了一个存贮器映像接口。I/O端口与片上用户逻辑或者FPGA的I/O引脚相连,I/O引脚连接片外设备。下面列举了PIO的几种应用场合:控制LEDs。获取开关数据。控制显示设备。片外设备的配置与通讯。PIO能产生基于输入信号的中断请求,PIO是SOPCBuilder内部集成的,易于集成到SOPCBuilder创建的系统中。1功能描述每个PIO可提供32个I/O端口,处理器通过读写寄存器映象的Avalon接口控制PIO端口。在CPU控制下,PIO捕获输入端口的数据,传送数据到输出端口。当PIO端口直接与I/O引脚相连时,处理器通过写PIO控制寄存器可对I/O引脚进行三态控制。图49是多个PIO的应用实例。一个用于控制LEDs,一个用于捕捉片上复位请求控制逻辑,一个控制片外LCD显示。,图49使用多个PIO的系统实例,当集成到SOPCBuilder创建的系统时,PIO有2种用户可见功能部件。存贮器映像的寄存器,共有4个:data、direction、interruptmask和edgecapture。1到32个I/O端口。I/O端口能与FPGA内部逻辑相连,也可与连接片外设备的I/O引脚相连。寄存器通过Avalon接口提供与I/O端口的接口。在某些硬件配置中,某些寄存器不存在,对不存在的寄存器进行读操作返回一个未定义值,而进行写操作无影响。2数据输入/输出PIO核的I/O端口可连接片上逻辑或片外逻辑,PIO核可配置为输入、输出或双向。若用来控制双向I/O引脚,PIO核提供具有三态控制的双向模式。读和写数据寄存器的硬件逻辑是独立的。读数据寄存器返回输入端口的数据。写数据影响输出端口的内容。由于这些端口是独立的,读数据寄存器并不返回上次写入的数据。3边沿捕捉PIO可配置为对输入端口进行边沿捕捉,可捕捉低到高的跳变、高到低的跳变或者2种跳变均捕捉。只要在输入端检测到跳变,就会记录在edgecapture寄存器中,边沿的检测类型在系统创建时指明,不能通过寄存器进行更改。,4IRQ的产生可配置PIO在不同的输入条件下产生IRQ。IRQ产生的条件有:电平检测PIO硬件能检测一个高电平。可在外部插入一个NOT门改变检测电平。边沿检测PIO的边沿捕捉配置决定何种边沿能触发IRQ。每个输入端口的中断均可屏蔽,中断屏蔽决定哪一个输入端口能产生中断。5.配置实例在图410的方框图中,PIO被配置为输入和输出端口,也支持IRQs。,图410具有IRQ支持的PIO输入/输出端口,在图411中所示的方块图中,PIO被配置为双向模式,不支持IRQs。图411具有双向端口的PIO6Avalon接口PIO核的Avalon接口是一个Avalon从端口。从端口可进行基本的Avalon读和写传输,Avalon从端口提供IRQ输出以使PIO能够发出中断请求。,4PIO控制器4.1PIO控制器综述4.2SOPCBuilder中PIO配置选项4.3PIO软件编程模型4.4PIO寄存器描述与中断,第四章目录,硬件功能的设置通过PIO的SOPCBuilder配置向导来完成,配置向导有基本设定(BasicSettings)和输入选项(InputOptions)2个标签。1基本设定基本设定标签允许设计者指定I/O端口的宽度和方向。宽度设定是1到32之间的整数值,若设定值为n,则I/O端口位数为n。.方向设定有4个选项,如表46所示:表46方向设定设定描述双向(三态)端口在该模式下,每个PIO位共享一个引脚来驱动和捕捉数据。每个引脚的方向可单独选择,为了使FPGA的引脚为三态,应设置方向为输入。输入端口在该模式下,PIO端口仅能捕捉输入。输出端口在该模式下,PIO端口仅能驱动输出。输入/出端口在该模式下,输入和输出端口总线是独立的、单向的总线,其宽度为n。,2输入选项该标签允许设计者指定边沿捕捉和产生IRQ。若在基本设定标签只选择了输出端口,输入选项标签不可用。(1)边沿捕获寄存器当同步捕获(Synchronouslycapture)选项被打开后,PIO包含边沿捕获寄存器edgecapture。用户必须进一步指定检测何种类型的边沿:上升沿下降沿上升沿或下降沿当指定类型的边沿在输入端口出现时,边界捕获寄存器允许PIO核检测并产生一个中断请求(可选择);当同步捕捉选项关闭时,edgecapture寄存器不存在。(2)中断当GenerateIRQ选项被打开,一指定的事件在输入端口发生时,PIO能发出IRQ,用户必须进一步指定IRQ事件的原因。电平当指定输入为高电平,且中断屏蔽寄存器中的对应的输入允许时,PIO核产生一个IRQ。边沿当边沿捕捉寄存器中指定位置高,且中断屏蔽寄存器相应位被允许时,PIO核产生一个IRQ。当GenerateIRQ选项被关闭,中断屏蔽寄存器不存在。PIO核支持所有的AlteraFPGA系列。,4PIO控制器4.1PIO控制器综述4.2SOPCBuilder中PIO配置选项4.3PIO软件编程模型4.4PIO寄存器描述与中断,第四章目录,对NiosII处理器用户,Altera提供定义PIO核寄存器的HAL系统库头文件,PIO核与HAL支持的一般设备模型类型不匹配,因而不能通过HALAPI或ANSI标准库访问。与PIO核相关的软件文件是altera-avalon-pio-regs.h。该文件定义了PIO核的寄存器映像,提供访问底层硬件的符号常量。,4PIO控制器4.1PIO控制器综述4.2SOPCBuilder中PIO配置选项4.3PIO软件编程模型4.4PIO寄存器描述与中断,第四章目录,Avalon主外设,例如CPU,通过4个32位寄存器控制并与PIO通讯,表47列出了4个寄存器,PIO核的I/O端口的宽度为n位。表47PIO核的寄存器映象,表47注:(1)该寄存器是否存在取决于硬件配置,若寄存器不存在,读寄存器返回一个未定义的值,写寄存器无影响。(2)写任意值到边沿捕捉寄存器,将所有位清零。,1数据寄存器读data寄存器返回出现在输入端口的数据。如果PIO硬件配置为仅为输出模式,读data寄存器返回一个未定义数据。写数据到data寄存器存数据到驱动输出端口的寄存器。如果PIO硬件配置为只工作在输入模式,写数据到data没有任何意义。如果PIO硬件工作在双向模式,仅当方向寄存器的相应位被置为1时(输出),被寄存的数据出现在输出端口。2方向寄存器方向寄存器控制每个PIO端口的数据方向,设端口是双向的,当方向寄存器的位n被置为1时。端口n输出data寄存器的相应位。只有当PIO硬件配置为双向模式,方向寄存器才存在。模式(输入、输出或双向)在系统创建时设定,在运行时不能修改,在输入或输出模式,方向寄存器不存在,在这种情况下,读direction返回一个未定义值,写direction无影响。复位后,方向寄存器所有位为0,所有的双向I/O端口被配置为输入,如果PIO端口被接到PFGA引脚上,引脚处于高阻状态。3中断屏蔽寄存器中断屏蔽寄存器某位设置为1允许相应的PIO输入端口的中断,产生中断的条件取决于PIO核的硬件配置。只有当硬件被配置为能产生IRQ,中断屏蔽寄存器才存在。如果PIO不产生IRQ,读interruptmask返回一个未定义值,对interruptmask进行写操作无意义。复位后,中断屏蔽寄存器的所有位为0,所有PIO的端口中断被禁止。,4边沿捕捉寄存器当输入端口n的一个边沿被检测,edgecapture寄存器的位n被设置为1。Avalon主外设通过读edgecapture寄存器来决定一个边沿是否已在某个PIO输入端口产生。写任意值到edgecapture将清除寄存器中所有位。检测的边沿类型在系统创建时确定。当硬件被配置为捕捉边沿时,edgecapture寄存器才存在。如果没有配置为捕捉边沿,读edgecapture返回一个未定义值,对edgecapture进行写操作无意义。5中断PIO核输出一个IRQ信号,它可与系统中任何主外设相连。主外设能读data寄存器或边沿捕捉寄存器,决定哪一个输入端口引起中断。当PIO配置为电平中断,只要data和interruptmask寄存器的相应位为1,PIO发出IRQ信号。当配置为边沿中断,只要edgecapture和interruptmask寄存器的相应位为1,PIO发出IRQ信号,IRQ一直保持到interruptmask中相应位被禁止,或者对edgecapture进行写操作。6软件文件下面的软件文件提供对硬件的底层访问,应用程序开发人不应该修改该文件。Altera-avalon-pio-regs.h该文件定义了PIO的寄存器映像,提供访问底层硬件的符号常量,该文件的符号被设备驱动的函数使用。,5定时器控制器5.1定时器控制器综述5.2SOPCBuilder中定时器核配置选项5.3定时器软件编程模型5.4定时器寄存器描述与中断,第四章目录,定时器控制器综述具有Avalon接口的定时器核是一个32位的间隔定时器,具有下面的特性:可控制定时器的启动、停止和复位。2种计数模式:减1计数一次与连续减1计数。减1计数周期寄存器。计数值为0时可屏蔽的中断请求(IRQ)。可选择的看门狗定时器,当计数值为0时复位系统。当定时器为0时,可选择定时器周期脉冲发生器输出一个脉冲。可与32位和16位处理器兼容。对NiosII处理器,在HAL系统库中包含有该设备驱动程序。定时器是SOPCBuilder内部集成的,很容易集成到SOPC-Buidler创建的系统中。,功能描述定时器的方框图如图412所示:,图412定时器方块图,定时器有2个用户可见功能部件:提供访问6个16位寄存器的Avalon接口。一个可选的可用作周期脉冲发生器的脉冲输出。所有的寄存器是16位的,定时器可与16位和32位处理器兼容。某些寄存器只在某些配置中存在。例如,如果定时器被配置为具有一个固定的周期,在硬件中周期寄存器不存在。定时器的基本功能如下:一个Avalon主外设,例如,一个NiosII处理器,对定时器核的控制寄存器进行写操作,可以启动定时器、停止定时器、允许/禁止IRQ及指定减1计数一次或连续减1模式。处理器读状态寄存器以读取当前定时器的状态信息。处理器通过对周期寄存器periodl和periodh进行写操作,可设定定时器的周期。内部计数器可减到零,只要它减到0,定时器即从周期寄存器中重新装载计数值。通过先写snapl或者snaph寄存器、请求计数器的同步快照,处理器能读snapl和snaph寄存器以读取当前的32位计数值。当减1计数到0时:如果IRQ被允许,将产生一个IRQ;发起的输出脉冲(可选的)保持一个时钟周期;可选的看门狗输出用来对系统进行复位。,2Avalon从接口定时器核包含一个简单的Avalon从接口,以提供对寄存器文件的访问。Avalon从端口使用resetrequest信号实现看门狗的功能,该信号是不可屏蔽复位信号,它驱动SOPCBuilder系统的所有Avalon外设的复位输入。当该信号产生时,它强迫与系统相连的任何处理器重新启动。定时器核支持所有的AlteraFPGA系列。,5定时器控制器5.1定时器控制器综述5.2SOPCBuilder中定时器核配置选项5.3定时器软件编程模型5.4定时器寄存器描述与中断,第四章目录,设计者使用定时器的SOPCBuilder配置向导指定其硬件特性。定时器有以下选项可配置:1TimeoutPeriod该选项的设定决定了Periodl和Periodh寄存器的初始值。当writeableperiod被允许时,处理器通过写数据到periodl和periodh改变周期的值,当被禁止时,周期是固定的,在运行时不能修改。TimeoutPeriod设定可用us、ms、s或clocks(周期的时钟数)等单位。实际的周期取决于系统时钟,如果用us、ms或s等单位指定周期,实际的周期将是大于等于指定的TimeoutPeriod的最小时钟周期数。2硬件选项下面的选项影响定时器核的硬件结构,为方便起见,预置值配置(PresetConfigurations)表提供了几个预定义的硬件配置,它们是:简单的周期中断对于仅需要周期的产生IRQ信号的系统适用该选项,固定周期由前面选项设定,定时器不能停止,但IRQ可被禁止。完全特性该配置适用于需要一个变周期定时器的嵌入式处理器系统,处理器可控制定时器的启动和停止。看门狗在系统停止响应时,需要看门狗定时器复位系统时选用该选项。(1)寄存器选项表4-13列出了影响定时器核的寄存器。,表413寄存器的选项选项描述可写入周期当该选项允许时,主外设通过对periodl和periodh写操作改变递减

温馨提示

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

评论

0/150

提交评论