微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 片上总线Wishbone 学习(三)接口信号定义

片上总线Wishbone 学习(三)接口信号定义

时间:12-15 来源:互联网 点击:
所有的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的具体含义。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top