OPB总线学习日志

发布者:SparklingSun最新更新时间:2016-01-18 来源: eefocus关键字:OPB总线  学习日志 手机看文章 扫描二维码
随时随地手机看文章
OPB总线概述:

    在Xilinx EDK的Microblaze软核中有用到多种总线接口,其中OPB(On-chip Peripheral Bus)是一种将各种外部设备连接到Microblaze处理系统中的一种总线接口,比如Timer/Counter、Gpio、Uart等,就是通过OPB总线连接到Microblaze处理器内核。

    OPB总线能够在不影响OPB仲裁器(Arbiter)和总线上已连接的外围设备基础上添加新的外围设备,同步于系统时钟,共享32位地址总线,以及32位数据总线,支持主从设备之间单一周期数据传送。

(这里要说明下PLB总线,它是PowerPC硬核的高速总线,64位数据总线宽度,地址和读写数据总线分离,具备分别传输的能力。现在最新的ISE11已经将Microblaze的OPB总线也搞成PLB总线,目前还不确定是不是仅仅改了名称而已。问题:地址和读写数据总线分离怎么理解?是读和写操作可以同时进行?)

    OPB总线包含4个组成部分:(1)主设备 Master Device 最大16个(可能是受限于仲裁器)

                            (2)从设备 Slave Device 无限制,受限于FPGA的硬件资源

                            (3)仲裁器 Arbiter 根据设定的优先级,判决主设备的总线占用顺序

                            (4)互联器 Interconnect 用OR逻辑将各个主设备的地址,数据连接起来

  

总线的结构:

    总线,是指提供的一个数据通道,使得多个设备之间可以进行数据传递。能够主动向总线发出请求的是主设备(Master),只能被动接收请求的是从设备(Slave)。所以总线的系统结构一般分为三个部分:(1)Master

(2)Slave,

(3)总线逻辑,总线逻辑由互连器(Interconnect)和仲裁器(Arbiter)两部分组成。

    总线操作的一般流程是:Master向总线发出读写请求,总线逻辑接受请求并负责把这些请求传送给从设备;从设备收到后执行读写操作,完成后给出确认信号,总线逻辑再负责把确认信号传送给主设备,主设备收到确认后,数据传输过程完成。
    有的总线结构只允许有一个Master,而有的可以有几个Master。OPB总线属于后者。当可以有好几个Master时,如果多个Master都向总线发出请求,这时就需要进行仲裁,以确定哪个Master可以占有总线。因此,如果总线上挂有多个Master,就需要仲裁器(Arbiter);反之,如果只有一个Master(包括可以有几个Master但实际上只使用一个Master的情况),就一定不需要仲裁器。
    总线上往往有多个Slave,因为如果只有一个Master和一个Slave的话,似乎也就没有必要采用总线,直接传输数据就可以了。那么既然有多个Slave,Master向总线发出请求时,如何区分是对哪个Slave进行操作呢?这是通过地址来分辨的。Master向总线发出请求时,总是会将要操作的地址送出来,这个地址可能是通过单独的地址线,也可能是复用数据线。(片上总线往往采用单独的地址线,与外部连接的总线则往往复用以节省引脚数。)每个Slave都被分配有互不重叠的地址空间,根据这个地址和自己的地址空间比较,就可以知道Master是不是对自己进行操作,从而可以判断是否应该做出响应。

 

OPB总线信号命名规则:
    OPB总线中的信号命有三种:

   (1)Mn_打头的,是Master的输出;

   (2)Sln_打头的,是Slave的输出;

   (3)OPB_打头的,是总线逻辑的输出。

    OPB总线的连经逻辑采用OR逻辑,因此,当一个Master或者Slave不对总线输出时,应该将其输出置为0,就可以不影响总线的正常工作。

    总线逻辑一般都是接受Master的输出后,进行一定的或运算,变成OPB_打头的输出,送给Slave;或者接受Slave的输出后,进行一定的或运算,变成OPB_打头的输出,送给Master。所以,对于Master而言,它需要处理的信号有两种,Mn_打头的是它的输出,OPB_打头的是它的输入。对于Slave而言,它需要处理的信号也是两种,Sln_打头的是它的输出,OPB_打头的是它的输入。 

 

OPB总线的复位:

    OPB总线可以被多种复位信号复位,不过上电复位优先级最高。当FPGA装载成功后,系统会自动花费16个时钟周期来复位OPB总线,在这期间,OPB不响应任何其他复位信号的复位动作。其他复位信号有:

(1)SYS_Rst 系统复位 (2)WDT_Rst 看门狗定时器溢出复位 (3)Debug_SYS_Rst 通过JTAG接口,在调试软件上控制复位OPB总线(如何操作还需要另外研究研究)

 

OPB总线事物处理流程:
    (1)Master首先发出Mn_Request信号,要求占用总线;

    (2)仲裁器根据该周期的总线情况和其他Master的请求及优先权,可能回复OPB_Grant信号告知Master可能使用总线。

    (3)Master收到Grant后,发出Mn_Select占用总线,同时发出地址Mn_ABus和读写信号Mn_RNW,如果是写还会给出数据Mn_DBus。总线逻辑将这些转化为OPB_Select,OPB_ABus,OPB_RNW,OPB_DBus并送给Slave。

    (4)Slave根据OPB_Select和OPB_ABus来判断是否应该做出响应。如果是属于自己的地址空间,则升高Sln_En占据总线,同时完成相应的操作,并返回数据Sln_DBus和数据有效信号Sln_XferAck。

    (5)总线逻辑将Sln_DBus和Sln_XferAck转化为OPB_DBus和OPB_XferAck,并送给Master。Master收到后降低Mn_Select,结束总线事务。


关键字:OPB总线  学习日志 引用地址:OPB总线学习日志

上一篇:Profibus总线在双绞线上实现12M速率的初步研究
下一篇:基于CAN总线的分布式监控系统智能节点设计

推荐阅读最新更新时间:2024-05-03 00:11

STM32学习日志——光敏传感器实验
一、光敏二极管简介 光敏传感器是一种将光信号转换成电信号的传感器,光敏二极管的管芯是一个具有光敏特征的PN结,具有单向导电性,因此工作需加反向电压。当光照弱的时候,反向漏电流较小,当光照强的时候,反向漏电流较大。利用这个变化,串接一个电阻,就可转化成电压的变化,从而根据ADC读取的电压值判断光照强弱。 本次,将通过ADC3的通道6(PF8),来读取光敏二极管的强弱。 二、库函数编写 1)ADC3配置,与之前的ADC1配置一样,换个引脚而已,不再详细介绍; 2)获取光照强度,用0~100来表示,0代表光照最弱,即电流最小时,此时引脚电压最大;100代表光照最强,即电流最大时,此时引脚电压最小; 3)OLED显示 三
[单片机]
STM32学习日志——PWM输出实验
今天学习的是通用定时器的比较输出功能,也就是PWM;从它的工作过程图中很容易看出,就是计数器与比较值CCRx作比较,可以产生对应的IO口逻辑。而具体的对应关系需要对相应的寄存器进行配置。1)首先是选择工作模式,即对CCMR1的OC1M 配置,模式1是计数器小于比较值为有效电平,模式2是计数器大于比较值为有效电平。2)其次配置输出极性,0为高电平有效,1为低电平有效。3)使能比较输出。 在频率确定的情况下(上一节课有提到,通过预分频系数来设定),PWM的周期是由ARR自动重装载确定,占空比是由CCRx确定,通过对这两个参数的修改,就可以得到我们想要的脉冲波。 根据下面的步骤就可以输出PWM,因为使用的是PB5端口,所以需要开启T
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved