一切的Wishbone接口信号都是高电平有用,规划成高电平有用的首要原因是因为低电平有用信号的书写问题,不同的规划者表达低电平有用信号的办法不同,拿最常见的低电平有用的复位信号来说,其标明办法就有_RST_I、N_RST_I、#RST_I和/RST_I,而高电平有用的信号其表达办法一般只要一种。一切的Wishbone接口信号都以_I或许_O完毕。_I标明输入,_O标明输出。()标明该信号为总线信号,总线的宽度可认为1,也可认为大于1的任何值。
信号分类
SYSCON模块信号
CLK_O:输出信号,体系时钟,作为MASTER和SLAVE的时钟输入:
RST_O:输出复位信号,作为MASTER和SLAVE的复位输入,使得WISHBONE接口内部的状态机悉数康复到开端态。
MASTER和SLAVE的共有信号
CLK_I:输入信号,MASTER和SLAVE的时钟输入端,一切WISHBONE输出信号都在CLK-I的上升沿有用;
DAT_O():数据输出信号,最大位宽为64位;
RST_I:输入信号,使得WISHBONE接口内部的状态机悉数康复到开端态;
TGD_I():输入信号,数据标签类型;
TGD_O():输出信号,数据标签类型;
MASTER端信号
ACK_I:输入信号,承认信号,当该信号有用时,标明一个总线周期完毕;
ADR_O():输出信号,地址输出;
CYC_O:周期输出信号,当该信号有用,标明进程中的总线是有用的,即它承认了总线周期的继续时刻。CYC_O从数据传输的第一个比特开端有用,到数据传输完毕停止。
ERR_l:输入信号,当该信号有用,标明总线周期非正常完毕,标明有过错发生:
LOCK_O:输出信号,当该信号有用,标明当时总线周期确认,不能被其他进程中止;
RTY_I:输入信号,当该信号有用,标明MASTER还没有准备好接纳或发送数据,从头恳求总线;
SEL_O():输出信号,用于挑选数据信号线的输出;
STB_O:输出信号,标明一个有用数据传送周期;
WE_O():读使能信号,决议信号的读和写功用。
SLAVE端信号
ACK_O:输出承认信号,标明总线周期完毕;
ADR_I():地址输入信号:
CYC_I:输入信号,当该信号有用,标明进程中的总线是有用的,即它承认了总线周期的继续时刻。CYC一0从数据传输的第一个比特开端有用,到数据传输完毕停止。
ERR_O:过错输入信号,标明因为发生过错,周期停止;
LOCK_I:输入信号,当该信号有用,标明当时总线周期确认,不能被其他进程中止;
RTY_O:输出信号,当该信号有用,标明SLAVE还没有准备好接纳或发送数据,从头恳求总线;
STB_I:输入信号,标明SLAVE被选中和主端通讯;
WE_I:读写使能输入信号;

图1Wishbone总线标准中运用的首要信号(一个点到点互联的比方)
在图1中,主设备具有恪守Wishbone标准的主设备接口,从设备具有恪守Wishbone标准的从设备接口,INTERCON模块将主设备和从设备的对应数据、地址和操控线连接起来,SYSCON模块供给时钟和复位信号,这两个信号被送入主设备和从设备。图1给出了Wishbone接口的常见信号,这些信号有些是有必要的,有些是可选的。这些信号的基本功用描绘如下:
CLK_O/CLK_I:时钟信号。时钟信号由SYSCON模块发生,并送入各个主设备和从设备。SYSCON一般内部存在一个锁相环,将来源于芯片外的晶体振荡器或许时钟输入信号整形、分频或许倍频为芯片内所需求的时钟信号。一切Wishbone信号都同步到时钟信号上,包含复位信号。
RST_O/RST_I:同步复位信号,高电平有用。复位信号由SYSCON模块发生,并送入各主设备及从设备。
DAT_O()/DAT_I():主设备和从设备的之间的数据信号,数据能够由主设备传送给从设备,也能够由从设备传送给主设备。一对主设备和从设备之间最多存在两条数据总线,一条用于主设备向从设备传输数据,别的一条用于从设备向主设备传输数据。Wishbone规则数据总线的最大宽度为64位,这一规则实践上是考虑到现在商用处理器的最大位数为64,实践上数据总线的宽度能够是恣意值。就笔者看来,在64位处理器今后,处理器将向多核方向开展,总线将向高速串行方向开展。
ADR_O(n…m)/ADR_I(n…m):地址信号,主设备输出地址到从设备。n取决于IP核的地址宽度,m取决于数据总线DAT_O()/DAT_I()的宽度和粒度。数据总线的粒度指的是数据总线能够一次传送的最小比特数,许多处理器如ARM的数据总线的粒度为1个字节,可是也有一些处理器如CEVATeakLiteDSP的数据总线粒度为2个字节。一个位宽为32比特、粒度为1个字节的数据总线的地址信号应界说为ADR_O(n…2)/ADR_I(n…2)。在传送数据时,详细哪些字节有用经过SEL_O()/SEL_I()信号(见下文)操控。
TGD_O/TGD_I()、TGA_O()/TGA_I():TGD_O/TGD_I()为数据标签,详细讲是附加于在数据总线DAT_O()/DAT_I()的标签,该标签能够用于传送关于数据总线的额定信息如奇偶校验信息、时刻戳信息等。TGA_O/TGA_I()为地址标签,详细讲是附加于在地址总线ADR_O()/ADR_I()的标签,该标签能够用于传送关于地址总线的额定信息如地址总线奇偶校验信息、存储器维护信息等。Wishbone只规则了TGD_O/TGD_I和TGA_O()/TGA_I()的接口时序,用户能够界说TGD_O/TGD_I的详细含义。
TGC_O/TGC_I():TGC_O/TGC_I()为总线周期标签,该标签能够用于传送关于当时总线周期所进行操作的描绘如操作类型(包含单次操作、块操作、RMW操作)、中止应对类型、缓存操作类型等。相似的,Wishbone只规则了TGC_O/TGC_I()的接口时序,用户能够界说TGD_O/TGD_I的详细含义。
ACK_O/ACK_I、ERR_O/ERR_I、RTY_O/RTY_I:主从设备间的操作完毕办法信号。ACK标明成功,ERR标明过错,RTY标明重试(Retry)。操作总是在某一总线周期内完结的,因而操作完毕办法也称为总线周期完毕办法。成功是操作的正常完毕办法,过错标明操作失利,形成失利的原因或许是地址或许数据校验过错,写操作或许读操作不支持等。重试标明从设备当时忙,不能及时处理该操作,该操作能够稍后从头建议。接纳到操作失利或许重试后,主设备怎么呼应取决于主设备的规划者。
SEL_O()/SEL_I():有用数据总线挑选信号,标识当时操作中数据总线上哪些比特是有用的,以总线粒度为单位。SEL_O()/SEL_I()的宽度为数据总线宽度除以数据总线粒度。比方一个具有32位宽、粒度为1个字节的数据总线的挑选信号应界说为SEL_O(3:0)/SEL_I(3:0),SEL(4’b1001)代表当时操作中数据总线的最高和最低字节有用。
CYC_O/CYC_I、LOCK_O/LOCK_I、GNT_O()/GNT_I:总线周期信号CYC_O/CYC_I有用代表一个主设备恳求总线运用权或许正在占有总线,可是不用定正在进行总线操作(是否正在进行总线操作取决于选通讯号STB_O/STB_I是否有用)。只要该信号有用,Wishbone主设备和从设备接口的其它信号才有含义。CYC_O/CYC_I信号在一次总线操作过程中有必要继续有用,比方一次块读操作或许需求多个时钟周期,CYC_O/CYC_I信号有必要坚持继续有用。实践上,该信号的实践效果等同于其他总线标准中的裁定请求信号。当存在多个主设备时,它们或许期望一起进行总线操作,主设备经过裁定请求信号向裁定器请求总线占有权,裁定器经过必定的裁定优先级逻辑向其间一个选定的主设备发送总线答应信号GNT_O()/GNT_I,标明该主设备能够占用总线。GNT_O()是裁定器输出的答应信号,一般有多个;而关于一个主设备,其答应信号输入GNT_I却只要一个。一次总线操作或许需求多个时钟周期,比方一次块操作。在操作过程中,裁定器或许会提早将总线占用权回收并分配给其他主设备然后打断当时主设备的操作,LOCK_O/LOCK_I有用代表本次总线操作是不行打断的。裁定器收到LOCK_I信号,就不会提早回收总线运用权。图1中只要一个主设备和一个从设备,因而没画出裁定器模块,该模块能够视为是INTERCON的一部分,见本章最终给出的比方。
STB_O/STB_I:选通讯号。选通有用代表主设备建议一次总线操作。只要选通讯号有用(此刻CYC_O/CYC_I也有必要为高),ADR_O/ADR_I()、DAT_O()/DAT_I()、SEL_O()/SEL_I()才有含义。在Wishbone总线标准中,CYC_O/CYC_I是最高层的操控信号,只要该信号有用,STB_O/STB_I信号才有含义。一个信号有含义是指该信号的当时值是需求主设备或许从设备解说的,0为无效,1为有用,而一个信号没有含义是指该信号的当时值主设备和从设备不用关怀,是0仍是1都无效。
WE_O/WE_I:写使能信号,代表当时周期中进行的操作是写操作仍是读操作。1代表写,0代表读。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/232839.html