第4章Nios嵌入式处理器Word文件下载.docx
- 文档编号:22094103
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:37
- 大小:1.02MB
第4章Nios嵌入式处理器Word文件下载.docx
《第4章Nios嵌入式处理器Word文件下载.docx》由会员分享,可在线阅读,更多相关《第4章Nios嵌入式处理器Word文件下载.docx(37页珍藏版)》请在冰豆网上搜索。
在系统运行时,用户可以对NiosCPU内的控制寄存器进行设置,来决定用指令、数据缓存功能是否起有效。
缓存命中:
在启用缓存功能情况下,NiosCPU在执行程序时,如果缓存中具有下一条要执行的指令或者具有当指令所使用的数据,那么NiosCPU就可以直接使用,从而省去从外部存贮器中获取指令或数据的时间,我们把这种情况简称为缓存命中。
当缓存有效时,缓存命中就会使得存储器的加载操作在单个时钟周期内完成。
缓存不命中:
缓存不命中时,就会引起额外的延迟。
当禁止缓存时(暂时以软件方式禁止缓存功能),访问存储器时就会引起额外的延时。
但当重新启用缓存时,存储器的存储操作将导致一个或两个额外的延迟周期。
(使用缓存的存储器,写操作都将导致一个或两个额外的延迟周期。
)
值得注意的是,高速缓存仅仅在32位NiosCPU系统中才能实现。
另外,Nios缓存单元也仅仅在Stratix,StraixGX和Cyclone系列芯片中才能配置。
4.1.4移位单元
Nios处理器使用固定的不可配置的桶形移位逻辑来执行所有的移位指令(ASR,ASRI,ASL,ASLI,LSL,LSLI,RLC和RRC),并在两个时钟周期内完成(与移位的位数无关)。
在做控制和数字信号处理时,移位单元对所需的移位操作提供了必要方便的支持。
4.1.5乘法支持
Nios处理器有三种不同的方法来实现整数乘法:
1.MUL指令
32位的NiosCPU可以选择配置成16x16–>
32整数硬件乘法器,MUL指令可以在3个或更短的时钟周期内计算出一个32位的结果。
MUL选项选中后,MUL指令将利用由SDK自动产生的C语言运行支持库(C-runtime库)来实现乘法运算。
值得注意:
16位的Nios指令系统不支持此选项。
2.MSTEP指令
32位的NiosCPU可以配置成执行单步16x16的乘法运算器,硬件乘法器将在2个时钟周期内完成部分(其余部分在软件辅助下完成)乘法运算。
MSTEP选项选中后,SDK生成的C语言运行支持库就会支持相应的乘法操作,它通过连续的MSTEP实现乘法操作,例如用16个连续的MSTEP指令实现16x16–>
32乘法。
由于使用MSTEP所占用的CPU硬件资源还不到5%,很多情况下利用如此小的硬件开销,换得了对硬件乘法的支持,无疑对于软件设计带来很大的方便,所以系统将MSTETP作为默认选项。
同样值得注意:
3.软件乘法器
当禁止MSTEP和MUL两种选项时,如果需要完成乘法运算,则由SDK中的C语言运行支持库,利用移位和加法指令来实现整数乘法运算。
软件乘法器虽然占用了很少的CPU硬件逻辑,但是比起以硬件实现的乘法运算,其执行速度要慢很多。
下图是配置硬件乘法时的界面:
图1-3选择硬件乘法器或者无硬件乘法器
从图中可以看出,有两种选择,即“None”和“LogicElements”
4.1.6中断支持
中断处理能力能够反映一个CPU的处理能力。
NiosCPU有如下中断源可以向CPU提出中断申请:
1.IO口具有中断能力:
双向三态、输入、输入/输出,纯粹输出口不能申请中断,如下图所示:
2.
定时器:
SimplePeriodicInterrupt,Full_Featured,Watchdog均有中断申请能力
并行口串行口
3.串行口:
具有中断能力,还可以根据需要设定波特率,传输的位宽等。
由于NIOSCPU是可配置的,所以能够支持更多的中断源,这一点与习惯上的CPU不同!
4.2NIOSCPU模型
NiosCPU是单指令流的RISC处理器,大多数指令都是在一个单周期内完成的。
Nios中规定:
字节为8位,字为16位,双字为32位。
Nios处理器系列包括32位和16位两种结构体系,见表4.1。
表4.1NiosCPU体系结构
NiosCPU规格
32位NiosCPU
16位NiosCPU
数据总线宽度(位)
32
16
ALU宽度(位)
内部寄存器宽度(位)
地址总线宽度(位)
指令宽度(位)
Nios指令系统支持C/C++编译,它包括一个标准的算术逻辑操作集,支持位操作、字节提取、数据移动、控制流修改以及条件执行指令。
4.2.2存储器结构
Nios处理器的数据访问采用小端对齐方式(little-endian)。
使用数据存储器时,必须是连续的字对齐方式。
如果存储器的数据宽度小于字宽,则数据总线将会采用动态地址对齐方式(dynamic-bussizing)来模拟NiosCPU的全宽数据。
如果外设的寄存器宽度小于字宽,则在高位添加0来补齐字宽。
表4.5和表4.6给出了32位NiosCPU寄存器字宽的例子。
表4.5典型的32位NiosCPU在地址0x0100的程序/数据储存器
表4.6地址0x0100的N位宽的外设(32位NiosCPU)
NIOS板的设计样例:
NIOS板上的数据存贮器(低16位)
NIOS板上的数据存贮器(高16位)
NIOS板上的FLASH(16位)
数据/程序存贮器:
高位在前,低位在后
4.3Avalon总线
Avalon总线是一种相对简单的总线结构,主要用于连接片内处理器与外设,以构成可编程单芯片系统(SOPC)。
Avalon总线描述了主从构件间的端口连接关系,以及构件间通信的时序关系。
4.3.1概述
Avalon总线设计的基本目标:
简单:
提供简单的、易于理解的协议。
优化总线资源利用率:
节约了可编程逻辑器件的逻辑单元。
图4.5Avalon总线框图
同步操作:
易于与片上的其它用户逻辑集成,避免了复杂时序分析。
基本的Avalon总线传输,就是在主从外设之间传输一个字节、字或双字(8,16,32位)。
Avalon总线是为SOPC环境而设计的,互联逻辑由PLD内部的逻辑单元构成。
Avalon总线具有以下基本特点:
外设接口的时钟与Avalon时钟是同步的。
因此不需要复杂的异步握手/应答机制。
采用标准的同步时序分析技术就可以测出Avalon总线和整个系统的性能。
所有的信号都是高电平或低电平有效,有利于总线的切换(turn-around)。
Avalon总线内部的多路复用器决定驱动所对应的设备。
外设在未选中的情况下,也不需要将输出置为高租态。
地址、数据和控制信号使用独立的专用端口,简化了外设的设计。
外设不需要地址译码和判断总线周期,在未选中时,也不需要禁止输出。
Avalon总线还包括许多其它特性和约定,以支持由SOPCBuilder自动生成的系统、总线和外设,包括:
最大4GB的地址空间:
存储器和外设可以映像到32位地址空间中的任意位置。
内置地址译码:
Avalon总线自动产生所有外设的片选信号,极大地简化了基于Avalon总线的设计工作。
多主设备总线结构:
Avalon总线上可以包括多个主外设,并自动生成仲裁逻辑。
采用向导帮助用户配置系统:
SOPCBuilder提供图形化的向导,帮助用户进行总线配置(添加外设、指定主/从关系、定义地址映像等)。
编译器将根据用户在向导中输入的参数自动生成Avalon总线结构的总线配置文件。
动态地址对齐:
如果参与传输的双方总线宽度不一致,Avalon总线自动处理数据传输的细节,使得不同数据总线宽度的外设能够方便连接。
4.3.2术语和概念
Avalon总线模块是把与它连接的所有模块都视为外设。
如NiosCPU、存储器、DMA控制器、存储器控制器、以太网控制器等。
Avalon总线规范:
1.总线周期(BusCycle)
总线周期是总线传输中的基本时间单元,定义为Avalon总线时钟的两个连续的上升沿之间的时间。
2.总线传输(BusTransfer)
Avalon的一次总线传输定义为对数据的一次读或写操作,可能需要若干总线周期。
Avalon总线支持字节(8位)、字(16位)、双字(32位)传输。
3.流传输(SteamingTransfer)
流传输在流主外设和流从外设之间建立一个开放的通道以实现连续的数据传输。
在进行数据传输时,只要数据有效就可以在主从设备间传输,而此期间,主外设并不需要不断查询从外设的寄存器状态。
流传输使主从设备的数据吞吐量达到最大。
4.延迟读传输(ReadTransferwithLatency)
延迟读传输对于那些在第一次访问时需要几个周期而接下来可以连续读取的外设。
延迟传输允许主外设发出一个读请求后,转而进行其它不相关的工作,而在几个周期后继续接受数据。
这对于指令获取操作和DMA传输非常有利,因为这两种操作经常访问连续的地址。
有了延迟读传输这一特性,CPU或者DMA主设备就可以预取数据,从而降低访问的平均延迟时间。
5.Avalon总线模块(AvalonBusModule)
Avalon总线模块是外设组件之间通讯的主要通道。
它由各类控制、数据和地址信号以及仲裁逻辑组成,使用它就可以将系统模块的外设连接起来。
Avalon总线是可配置的,能够满足与用户外设互连的各种需要。
Avalon总线为外设提供以下支持:
数据通道复用(利用数据选择器);
地址译码(译码逻辑产生片选信号);
生成等待周期(加入等待周期以适应具有特殊等待要求的外设);
动态地址对齐(隐藏宽度不同的外设之间的细节);
中断优先级分配;
延迟传输功能;
流传输模式。
6.Avalon外设(AvalonPeripherals)
Avalon总线的外设就是一个逻辑设备。
它可以在片内也可以在片外,具有特定的功能,并能够与系统的其它组件间通讯。
外设是模块化的系统组件,可以在设计时根据系统的需求添加或者删除。
Avalon外设包括存储器和处理器,还包括传统的外设,例如UART、PIO、定时器和总线桥。
用户逻辑也是Avalon诸多外设之一,只要这种外设能够按照要求提供地址、数据以及控制信号即可。
连接到Avalon总线上的标准外设,都有相应地址范围或端口地址,还可以由用户对它们重新定义。
在SOPC环境中,区分以下两类外设十分重要:
●系统模块内部的外设
如果一个外设可以在SOPCBuilder的库中找到,或者用户指定了用户自定义外设的设计文件的位置,SOPCBuilder便会自动找到该外设并将其连接到Avalon总线模块上,即系统模块内部模块。
系统模块外部的外设
有时将Avalon总线外设放在系统模块的外部,可能出于以下几种原因:
1)外设存在于PLD芯片的外部;
2)外设需要通过一些时序转换逻辑连接Avalon总线模块;
3)尚未完全实现(由于资源限制,或者出于别的考虑)的外设的模块。
7.主端口(MasterPort)
主端口是主外设上用于在Avalon总线上初始化传输的连接端口。
主端口直接连接到Avalon总线模块上。
实际上,一个主外设可能有几个主端口和从端口。
主从端口之间的依赖关系取决于外设的设计。
然而,这些端口上的单个总线传输必须遵守规范要求。
8.从端口(SlavePort)
从端口是外设中用来接受来自另一个外设主端口的Avalon总线传输的连接端口。
从端口直接连接到Avalon总线模块。
主外设可能也有一个从端口,来接受来自其它主设备的总线传输。
9.主从端口对(Master-SlavePair)
通过Avalon总线模块连接的一个主端口和一个从端口称之为主从端口对。
结构上,主从端口对通过Avalon总线连接到相应的端口上。
这样,主端口就可以通过Avalon总线模块来实现有效的控制和数据的传输。
10.PTF文件与SOPCBuilder参数和选项(PTFFile&
BuilderParameters&
Switches)
可以在SOPCBuilder的GUI界面中配置Avalon总线和外设。
在GUI界面中,用户可以指定各种参数和选项,并按照这些参数和选项生成一个PTF系统文件。
在这个PTF文件,完整地定义了以下内容:
定义Avalon总线模块的结构与功能的参数
定义每个外设的结构与功能的参数
外设的主、从属性(角色)
外设所提供的端口信号(例如控制信号、地址信号、数据信号)
可被多个主端口访问的从端口的仲裁机制
在系统生成时,PTF文件被传递给HDL生成器用来创建系统模块的寄存器传输级(RTL)的行为描述。
4.3.2Avalon总线传输
Avalon总线的规范,定义了主从端口之间传输数据所需的信号和时序。
Avalon总线与外设接口的信号组成,因传输类型的不同而有所差异。
1.主端口与从端口的接口
从端口的有效信号总是主外设发起总线传输的结果。
但是连接到从端口的输入信号不是直接来自主端口。
2.Avalon总线时序
Avalon总线是一个同步的总线接口,由Avalon总线时钟驱动,所有总线传输的信号都与Avalon总线时钟同步。
所有总线传输总是在时钟上升沿到达时稳定,在有效捕获到数据后的下一个时钟的上升沿终止。
3.Avalon总线信号
通过对外设的每个端口分配一个有效的Avalon总线信号类型来确定外设的角色。
每个主、从端口使用的信号类型,取决于外设的设计本身。
例如,一个只有输出的PIO从外设,只需要定义用于写传输(输出方向)的信号,而不需要定义用于读传输的信号。
表4.13部分Avalon从端口信号
信号类型
宽度
方向
必须
说明
clk
1
in
no
系统模块和Avalon总线模块的全局时钟信号。
所有总线传输都由clk来同步。
只有异步从端口才能省略clk
Address
1-32
来自Avalon总线模块的地址信号
Read
从端口的读请求信号
readdata
out
读传输中输出到Avalon总线的数据线
write
从端口的写请求信号
writedata
写传输中来自Avalon总线模块的数据线
irq
中断请求
4.并发多主端口的Avalon总线
Avalon总线支持多主端口互连,而不需要额外的信号线。
当多个主外设同时访问同一个从外设时,由Avalon总线模块中的从端口仲裁来仲裁冲突。
从端口不会知道有多个主端口试图同时访问,同样,处于被迫等待的主端口也不会意识到另一个竞争获胜的主端口是谁,而只是等待,一直持续到等待信号取消。
4.3.3Avalon从端口传输
从抽象的系统级的角度来看,主端口传输的数据发生在主、从外设之间。
然而,从主外设的角度来看,数据传输发生在主端口与Avalon总线模块之间。
1.主传输的Avalon总线信号
表4.14Avalon从端口信号
Clk
Reset
全局复位信号
chipselect
yes
从端口的片选信号
begintransfer
在每个新的Avalon总线传输的第一个总线周期期间有效
bytenable
0,2,4
字节使能信号,在访问宽度超过8位的存储器时选择特定的字节段
read
readdatavalid
读取数据有效信号,仅用于具有可变读延迟的从端口
waitrequest
等待请求信号,当从端口不能立即响应时暂停Avalon总线模块
readyfordata
流传输模块信号。
表示流模式从端口可以接收数据
dataavailable
表示流模式从端口拥有有效数据
endofpacket
流传输模式信号。
用于向主端口报告“包结束”状态
resetrequest
复位请求信号,该信号使得一个外设可以复位整个系统模块
2.从端口读传输
Avalon总线的主端口读传输,有以下几种情况:
(1)基本的从端口读传输
图4.6基本从端口读传输
●1个总线周期完成;
●只适用于完全异步的外设;
●数据必须在第二个时钟的上升沿时刻达到稳定
(2)有固定等待状态的从端口读传输
图4.7具有一个固定等待周期的从端口读传输
●Avalon总线在第一个总线周期生成address、byteenable_n、read_n和chipselect信号。
●同步外设在第二个总线周期开始时的clk上升沿捕获地址和控制信号。
●在第二个周期期间,目标外设向Avalon总线提供readdata。
●在第三个时钟上升沿,Avalon捕获readdata并结束总线传输。
(3)由外设控制等待状态的从端口读传输
图4.8具有外设控制等待周期的从端口读传输
●当从端口得到有效的read_n信号后,从端口若要延长读传输,它必须在第一个总线周期内返回waitrequest(置1使之有效);
●Avalon总线模块发现waitrequest有效,便会处于暂停(stall)状态,直到waitrequst失效后的下一个clk上升沿才捕获readdata。
(4)有建立时间的从端口读传输
图4.9具有一个总线周期的建立时间和一个固定等待周期的从端口读传输
●进行一次总线传输所需的总线周期个数取决于建立和等待状态的周期个数。
●一个建立时间N意味着address和byteenable_n和chipselect信号产生后,还需要N个总线周期才能生成read_n信号。
例如,一个外设的参数是Setup_Time=2,Read_Wait_States=3,这样一次传输就需要6个总线周期:
2个总线周期的建立时间,3个总线周期的等待周期,1个总线周期来捕获数据。
3.从端口写传输
从端口写传输与从端口读传输是类似的,这里不再赘述。
需要注意的是,读传输数据线是readdata,写传输数据线是writedata,两数据线是相互独立的,这与传统总线不同。
4.3.4Avalon主端口传输
从主外设的角度来看,数据传输发生在主端口与Avalon总线模块之间。
主传输原则:
生成所有的启动总线传输信号,然后等待,直到Avalon总线撤消了waitrequest信号。
1.主端口传输的Avalon总线信号
表4.15Avalon主端口信号
所有总线传输都同步clk。
reset
输出到Avalon总线模块的地址信号
主端口发出的读请求信号
8,16,32
读传输中来自Avalon总线的数据线
主端口发出的写请求信号
写传输中输出到Avalon总线模块的数据线
迫使主端口等待
从外设发出的中断请求
irqnumber
6
发出中断的从端口的中断优先级
用于从端口向主端口报告“包结束”状态
仅用于延迟读传输模式。
指示从端口在readdata信号上提供了有效的数据
flush
延迟读传输模式信号。
主端口通过设置该信号能够清除所有挂起的延迟读传输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 Nios嵌入式处理器 Nios 嵌入式 处理器