文档库 最新最全的文档下载
当前位置:文档库 › Linux_I2C总线分析(主要是probe的方式)1

Linux_I2C总线分析(主要是probe的方式)1

Linux_I2C总线分析(主要是probe的方式)1
Linux_I2C总线分析(主要是probe的方式)1

Linux I2C 总线浅析

㈠ Overview

内核空间层次!

i2c adapter 是一个struct, 用来抽象一个物理i2c bus ,而且还和linux 设备驱动架构柔和在一起..

如果只说硬件的话,就是在CPU内部集成的一个I2C控制器(提供给用户的就是那几个register),硬件上并没的所谓的adapter,client这些东东,,adapter和client都是linux 驱动软件抽象出来的东西

资料帖子:

i2c_algorithm {

/* If an adapter algorithm can't do I2C-level access, set master_xfer

to NULL. If an adapter algorithm can do SMBus access, set

smbus_xfer. If set to NULL, the SMBus protocol is simulated

using common I2C messages */

/* master_xfer should return the number of messages successfully

processed, or a negative value on error */

i nt (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs,

int num);

i nt (*smbus_xfer) (struct i2c_adapter *adap, u16 addr,

unsigned short flags, char read_write,

u8 command, int size, union i2c_smbus_data *data);

/* To determine what the adapter supports */

u32 (*functionality) (struct i2c_adapter *);

};

/*

* i2c_adapter is the structure used to identify a physical i2c bus along * with the access algorithms necessary to access it.

*/

struct i2c_adapter {

s truct module *owner;

u nsigned int id;

u nsigned int class; /* classes to allow probing for */

c onst struct i2c_algorithm *algo; /* the algorithm to access the bus */

v oid *algo_data;

/* data fields that are valid for all devices */

u8 level; /* nesting level for lockdep */

s truct mutex bus_lock;

i nt timeout; /* in jiffies */

i nt retries;

s truct device dev; /* the adapter device */

i nt nr;

c har name[48];

s truct completion dev_released;

};

Linux的I2C体系结构分为3个组成部分:

1·I2C核心:

I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(即“algorithm”)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。这部分是与平台无关的。

2·I2C总线驱动:

I2C总线驱动是对I2C硬件体系结构中适配器端的实现。I2C总线驱动主要包含了I2C适配

器数据结构i2c_adapter、I2C适配器的algorithm数据结构i2c_algorithm和控制I2C适配器产生通信信号的函数。经由I2C总线驱动的代码,我们可以控制I2C适配器以主控方式产生开始位、停止位、读写周期,以及以从设备方式被读写、产生ACK等。不同的CPU平台对应着不同的I2C总线驱动。

总线驱动的职责,是为系统中每个I2C总线增加相应的读写方法。但是总线驱动本身并不会进行任何的通讯,它只是存在在那里,等待设备驱动调用其函数。

这部分在MTK 6516中是由MTK已经帮我们实现了的,不需要我们更改。

3· I2C设备驱动:

I2C设备驱动是对I2C硬件体系结构中设备端的实现。设备一般挂接在受CPU控制的I2C 适配器上,通过I2C适配器与CPU交换数据。I2C设备驱动主要包含了数据结构i2c_driver和i2c_client,我们需要根据具体设备实现其中的成员函数。在Linux内核源代码中的drivers 目录下的文件,实现了I2C适配器设备文件的功能,应用程序通过“i2c-%d”文件名并使用文件操作接口open()、write()、read()、ioctl()和close()等来访问这个设备。应用层可以借用这些接口访问挂接在适配器上的I2C设备的存储空间或寄存器并控制I2C设备的工作方式。

设备驱动则是与挂在I2C总线上的具体的设备通讯的驱动。通过I2C总线驱动提供的函数,设备驱动可以忽略不同总线控制器的差异,不考虑其实现细节地与硬件设备通讯。

这部分在MTK 6516中是由具体的设备实现的。(比如camera)

struct i2c_client:

代表一个挂载到i2c总线上的i2c从设备,该设备所需要的数据结构,其中包括该i2c从设备所依附的i2c主设备 struct i2c_adapter *adapter 该i2c 从设备的驱动程序struct i2c_driver *driver 作为i2c从设备所通用的成员变量,比如addr, name等该i2c从设备驱动所特有的数据,依附于

dev->driver_data下

struct i2c_adapter:

代表主芯片所支持的一个i2c主设备。

struct i2c_algorithm *algo:

是该i2c主设备传输数据的一种算法,或者说是在i2c总线上完成主从设备间数据通信的一种能力。

Linux的i2c子系统新、旧架构并存。主要分为旧架构(Legacy)也有人称之为adapter方式,和新的架构new-style的方式。

这俩者的区别主要在于设备注册和驱动注册的不同。对于Legacy的设备注册是在驱动运行的时候动态的创建,而新式的new-style则是采用静态定义的方式。

注:MTK在版上用的是Legacy的架构,而在版上用的是new-style的架构。(在这里我就只说明的

new-style的实现方法)

要完成I2C设备的驱动,我们可以分三步走:

第一步:完成适配器的注册(总线);

第二步:完成I2C client的设备注册(设备);

第三步:完成I2C client驱动的注册(驱动);

我们分别给予介绍:()

⑴就总线而言,其本质只需要我们填充俩个结构体就可以了:

i2c_adapter;i2c_algorithm;

i2c_add_adapter(i2c->adap); 往总线上添加对应的适配器;

struct i2c_adapter {

struct module *owner;

unsigned int id;

unsigned int class; /* classes to allow probing for */

const struct i2c_algorithm *algo; /* the algorithm to access the bus */ void *algo_data;

/* --- administration stuff. */

int (*client_register)(struct i2c_client *);

int (*client_unregister)(struct i2c_client *);

/* data fields that are valid for all devices */

u8 level; /* nesting level for lockdep */

struct mutex bus_lock;

struct mutex clist_lock;

int timeout; /* in jiffies */

int retries;

struct device dev; /* the adapter device */

int nr; /*该成员描述了总线号*/

struct list_head clients; /* i2c_client结构链表,该结构包含device,driver 和 adapter结构*/

char name[48];

struct completion dev_released;

};

static struct i2c_algorithm mt6516_i2c_algorithm = {

.master_xfer = mt6516_i2c_transfer,

.smbus_xfer = NULL,

.functionality = mt6516_i2c_functionality,

};

2、设备注册

第一步:

记得以前的i2c设备驱动,设备部分喜欢驱动运行的时候动态创建,新式的驱动倾向于向传统的linux 下设备驱动看齐,采用静态定义的方式来注册设备,使用接口为:

int __init i2c_register_board_info(int busnum,

struct i2c_board_info const *info, unsigned len)

{

int status;

mutex_lock(&__i2c_board_lock);

/* dynamic bus numbers will be assigned after the last static one */

if (busnum >= __i2c_first_dynamic_bus_num)

__i2c_first_dynamic_bus_num = busnum + 1;

for (status = 0; len; len--, info++) {

struct i2c_devinfo *devinfo;

devinfo = kzalloc(sizeof(*devinfo), GFP_KERNEL); */

res = driver_register(&driver->driver);

if (res)

return res;

pr_debug("i2c-core: driver [%s] registered\n", driver->;

INIT_LIST_HEAD(&driver->clients);

/* Walk the adapters that are already present */

mutex_lock(&core_lock);

bus_for_each_dev(&i2c_bus_type, NULL, driver, __attach_adapter);

mutex_unlock(&core_lock);

return 0;

}

设备和驱动的关联过程:首先当I2C从设备和I2C驱动如果处于同一条总线上,那么其在设备和驱动注册之后,将会促使I2C_bus_type中的match获得调用;()如下:

struct bus_type i2c_bus_type = {

.name = "i2c",

.match = i2c_device_match,

.probe = i2c_device_probe,

.remove = i2c_device_remove,

.shutdown = i2c_device_shutdown,

.suspend = i2c_device_suspend,

.resume = i2c_device_resume,

};

继续跟进i2c_device_match;

i2c_match_id(driver->id_table, client) != NULL;

我们回到i2c_device_probe;

这个函数的关键是:

status = driver->probe(client, i2c_match_id(driver->id_table, client));

它将函数的流程交回到了driver->probe的手中;

流程图:

过程分享:

1、设备和驱动的关联

大家知道,对于一个驱动程序有两个元素不可或缺,即设备和驱动,一般驱动都是通过设备名和驱动名的匹配建立关系的,最开始我从代码中只能发现驱动的注册,却不见设备注册的踪影,令人疑惑,跟踪发现,在i2c adapter注册时会遍历i2c_board_info这样一个结构,而这个结构在29以前或更早的内核里是不存在的,它会完成驱动与设备的匹配问题,

2、名字匹配

一个i2c驱动是可以有多个名字的,即一个驱动程序可以支持多个设备,该机制是通过struct i2c_device_id实现的,驱动中建立这么一个结构体数组,i2c架构层便会扫描该数组,与设备名去匹配,匹配成功的都会进入相应probe函数。

3、进入probe

该过程困惑了我一段时间,其实要进入自己驱动的probe首先需要进入总线的probe,而进入总线probe的前提是与总线的match成功。

待解决的困惑:

1、I2C从设备名;

Legacy 的相关知识:

(一)Linux的I2C驱动框架中的主要数据结构及其关系

Linux的I2C驱动框架中的主要数据结构包括:i2c_driver、i2c_client、

i2c_adapter和i2c_algorithm。

i2c_adapter对应于物理上的一个适配器,这个适配器是基于不同的平台的,一个I2C 适配器需要i2c_algorithm中提供的通信函数来控制适配器,因此i2c_adapter中包含其使用的i2c_algorithm的指针。i2c_algorithm中的关键函数master_xfer()以i2c_msg为单位产生I2C访问需要的信号。不同的平台所对应的master_xfer()是不同的,开发人员需要根据所用平台的硬件特性实现自己的XXX_xfer()方法以填充i2c_algorithm的master_xfer指针。

i2c_ driver对应一套驱动方法,不对应于任何的物理实体。i2c_client对应于真实的物理设备,每个I2C设备都需要一个i2c_client来描述。i2c_client依附于i2c_adpater,这与I2C硬件体系中适配器和设备的关系一致。i2c_driver提供了i2c-client与i2c-adapter 产生联系的函数。当attach a_dapter()函数探测物理设备时,如果确定存在一个client,则把该client使用的i2c_client数据结构的adapter指针指向对应的i2e_ adapter,driver 指针指向该i2c_driver,并调用i2e_adapter的client_register()函数来注册此设备。相反的过程发生在i2c_ driver的detach_client()函数被调用的时候。

(二)Linux的I2C体系结构中三个组成部分的作用

I2C核心提供了一组不依赖于硬件平台的接口函数,I2C总线驱动和设备驱动之间依赖于I2C核心作为纽带。I2C核心提供了i2c_adapter的增加和删除函数、i2c_driver的增加和删除函数、i2c_client的依附和脱离函数以及i2c传输、发送和接收函数。i2c传输函数i2c_transfer()用于进行I2C适配器和I2C设备之间的一组消息交互i2c_master_send()函数和i2c_master_recv()函数内部会调用i2c_ transfer()函数分别完成一条写消息和一条读消息.

I2C总线驱动包括I2C适配器驱动加载与卸载以及I2C总线通信方法。其中I2C适配器驱动加载(与卸载)要完成初始化(释放)I2C适配器所使用的硬件资源,申请I/0地址、中断号、通过i2c_add_ adapter()添加i2c_adapter的数据结构(通过i2c_del_adapter()删除i2c _adapter的数据结构)的工作。12C总线通信方法主要对特定的I2C适配器实现

i2c_algorithm的master_xfer()方法来实现i2c_ msg的传输。不同的适配器对应的

master_xfer()方法由其处理器的硬件特性决定。

I2C设备驱动主要用于I2C设备驱动模块加载与卸载以及提供I2C设备驱动文件操作接口。I2C设备驱动的模块加载通用的方法遵循以下流程:首先通过register_chrdev()将I2C 设备注册为一个字符设备,然后利用I2C核心中的i2c_add_a_dapter()添加i2c_driver。调用i2c_add_adapter()过程中会引发i2c_driver结构体中的YYY_attach_adapter()的执行,它通过调用I2C核心的i2e_probe()实现物理设备的探测。i2c_probe()会引发yyy_detect()的调用。yyy_detect()中会初始化i2c_ client,然后调用内核的i2e_attach_client()通知I2C核心此时系统中包含了一个新的I2C设备。之后会引发I2C设备驱动中yyy_init_client()来初始化设备。卸载过程执行相反的操作。

I2C设备驱动模块加载与卸载的流程如图2所示。

第2章习题分析解析

第二章习题 一、判断题 1.计算机的性能指标完全由CPU决定。 2.RAM中的信息在计算机断电后会全部丢失。 3.存储地址是存储器存储单元的编号,CPU要存取某个存储单元的信息,一定要知道这个存储单元的地址。 4.通常把计算机的运算器、控制器及内存储器称为主机。 5.由于硬盘的外部传输速率要小于内部传输速率,所以外部传输速率的高低是评价一个硬盘整体性能的决定性因素。 6.存储容量是数码相机的一项重要性能,不论拍摄质量如何,存储容量大的数码相机可拍摄的相片数量肯定比存储容量小的相机多。 7.计算机硬件从逻辑上讲包括CPU、内存储器、外存储器、输入设备和输出设备等,它们通过系统总线互相连接。 8.PC机主板上有一个集成电路芯片是CMOS存储器,主要存放着计算机硬件工作时所设置的一些参数,这个存储器是非易失性存储器。 9.CD-R光盘是一种能够多次读出和反复修改已写入数据的光盘。 10.计算机的性能主要由CPU决定,CPU的运算速度又与CPU的工作频率密切相关。因此,主频为2GHz Pentium4作为CPU的一台PC机,比使用主频为1GHz Pentium4作为CPU 的PC机速度高一倍。 11.PC机的主板上有电池,它的作用是在计算机断电后,给CMOS芯片供电,保持该芯片中的信息不丢失。 12.大部分数码相机采用CCD成像芯片,芯片中像素越多,可拍摄的图像最高分辨率(清晰度)就越高。 13.计算机中总线的重要指标之一是带宽,它指的是总线中数据线的宽度,用二进位数目来表示(如16位,32位总线)。 14.计算机常用的输入设备为键盘、鼠标,常用的输出设备有显示器、打印机。 15.目前市场上有些PC机的主板已经集成了许多扩充卡(如声卡、以太网卡、显示卡)的功能,因此不再需要插接相应的适配卡。 16.I/O操作的启动需要CPU通过指令进行控制。 17.为了提高CPU访问硬盘的工作效率,硬盘通过将数据存储在一个比其速度快得多的缓冲区来提高与CPU交换的速度,这个区就是高速缓冲区,它是由DRAM芯片构成的。18.在使用输入设备进行输入时,目前还只能输入文字、命令和图像,无法输入声音。19.在使用配置了触摸屏的多媒体计算机时,可不必使用鼠标器。 二、选择题 1.以下设备中不属于输出设备的是_________。 A.打印机B.绘图仪C.扫描仪D.显示器 2.个人计算机使用的键盘中,Shift 键是_________。 A.换档键B.退格键C.空格键D.回车换行键3.目前大多数计算机,就其工作原理而言,基本上采用的是科学家_________提出的设计思想。 A.比尔·盖茨B.冯·诺依曼 C.乔治·布尔D.艾仑·图灵 4.下列说法中错误的是_________。 A.CD-ROM是一种只读存储器但不是内存储器

IIC时序程序

I2C总线信号时序分析 在I2C总线通信的过程中,参与通信的双方互相之间所传输的信息种类归纳如下。 主控器向被控器发送的信息种类有:启动信号、停止信号、7位地址码、读/写控制位、10位地址码、数据字节、重启动信号、应答信号、时钟脉冲。 被控器向主控器发送的信息种类有:应答信号、数据字节、时钟低电平。 下面对I2C总线通信过程中出现的几种信号状态和时序进行分析。 ①总线空闲状态。 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。 ②启动信号。 在时钟线SCL保持高电平期间,数据线SDA上的电平被拉低(即负跳变),定义为I2C总线总线的启动信号,它标志着一次数据传输的开始。 启动信号是一种电平跳变时序信号,而不是一个电平信号。启动信号是由主控器主动建立的,在建立该信号之前I2C总线必须处于空闲状态,如图1所示。 图1 I2C总线上的启动信号和停止信号 ③停止信号。

在时钟线SCL保持高电平期间,数据线SDA被释放,使得SDA返回高电平(即正跳变),称为I2C总线的停止信号,它标志着一次数据传输的终止。 停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,I2C总线将返回空闲状态。 ④数据位传送。 在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。 进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据0,高电平为数据1。 只有在SCL为低电平期间,才允许SDA上的电平改变状态。逻辑0的电平为低电压,而逻辑1的电平取决于器件本身的正电源电压VDD(当使用独立电源时),如图2所示。 图2 I2C总线上的数据位传送 ⑤应答信号。 I2C总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。

计算机组成原理第六章系统总线

第六章系统总线 第一节总线的基本概念 一、总线的分类 1.总线:计算机中连接功能单元的公共线路,是一束信号线的集合,包括数据总线、地址总线和控制总线。 2.系统总线:连接计算机系统中各个功能模块或设备的总线,作为计算机硬件系统的主干。3.内部总线:连接CPU内部各部件的总线。 4.总线的分类: ①按传送格式分为:串行总线、并行总线; ②按时序控制方式分为:同步总线、异步总线; ③按功能分为:系统总线、CPU内部总线、各种局部总线。 ④按数据传输方向分为:单工总线和双工总线,双工总线又分为半双工总线和全双工总线。历年真题 1.总线:计算机中连接功能单元的公共线路,是一束信号线的集合,包括数据总线、地址总线和控制总线。(2001年) 2.下列说法中正确的是()。(2003年) A.半双工总线只能在一个方向上传输信息,全双工总线可以在两个方向上轮流传输信息

B.半双工总线只能在一个方向上传输信息,全双工总线可以在两个方向上同时传输信息C.半双工总线可以在两个方向上轮流传输信息,全双工总线可以在两个方向上同时传输信息 D.半双工总线可以在两个方向上同时传输信息,全双工总线可以在两个方向上轮流传输信息 【分析】根据总线上信号的传递方向,总线可分为单向传输(单工)总线和双向传输(双工)总线,而双工总线又可分为半双工总线和全双工总线。其中单工总线只能向一个方向传递信号,半双工总线可以在两个方向上轮流传递信号,全双工总线可以在两个方向上同时传递信号。 【答案】C 二、总线的信息传输方式 1.串行传输:是指数据的传输在一条线路上按位进行。(只需一条数据传输线,线路的成本低,适合于长距离的数据传输)。在串行传输时,被传输的数据在发送设备中进行并行到串行的变换,在接收设备中进行串行到并行的变换。 2.并行传输:每个数据位都需要单独一条传输线,所有的数据位同时进行传输。 3.复合传输:又称总线复用的传输方式,它使不同的信号在同一条信号线上传输,不同的信号在不同的时间片中轮流地身总线的同一条信号线上发出。(它与并串传输的区别在于分时地传输同一数据源的不同信息。) 4.消息传输方式:总线的信息传输方式之一,将总线需要传送的数据信息、地址信息、和控制信息等组合成一个固定的数据结构以猝发方式进行传输。

计算机组成原理第四五章答案

期末试卷(四、五、六章) 一、选择题(每小题1分) 1 单地址指令中为了完成两个数的算术运算,除地址码指明的一个操作数外,另一个常需采用(C )。 A 堆栈寻址方式 B 立即寻址方式 C 隐含寻址方式 D 间接寻址方式 2 RISC访内指令中,操作数的物理位置一般安排在( D )。 A 栈顶和次栈顶 B 两个主存单元 C 一个主存单元和一个通用寄存器 D 两个通用寄存器 3寄存器间接寻址方式中,操作数在(B )。 A 通用寄存器 B 主存单元 C 程序计数器 D 堆栈 4 机器指令与微指令之间的关系是(A )。 A 用若干条微指令实现一条机器指令 B 用若干条机器指令实现一条微指令 C 用一条微指令实现一条机器指令 D 用一条机器指令实现一条微指令 5描述多媒体CPU基本概念中,不正确的是( D )。 A 多媒体CPU是带有MMX技术的处理器 B MMX是一种多媒体扩展结构 C MMX指令集是一种多指令流多数据流的并行处理指令 D 多媒体CPU是以超标量结构为基础的CISC机器

6 流水线中造成控制相关的原因是执行( A )指令而引起。 A 条件转移 B 访内 C 算逻 D 无条件转移 7 PCI总线是一个高带宽且与处理器无关的标准总线。下面描述中不正确的 是(B )。 A 采用同步定时协议 B 采用分布式仲裁策略 C 具有自动配置能力 D 适合于低成本的小系统 8 同步控制是( C )。 A 只适用于CPU控制的方式 B 只适用于外围设备控制的方式 C 由统一时序信号控制的方式 D 所有指令执行时间都相同的方式 9 描述PCI总线中基本概念不正确的句子是(CD )。 A PCI总线是一个与处理器无关的高速外围设备 B PCI总线的基本传输机制是猝发式传送 C PCI设备一定是主设备 D 系统中只允许有一条PCI总线 10当前的CPU由( B )组成。 A 控制器 B 控制器、运算器、cache C 运算器、主存 D 控制器、ALU、主存 11流水CPU是由一系列叫做“段”的处理部件组成。和具备m个并行部件的CPU相比,一个m段流水CPU的吞吐能力是( D )。 A 具备同等水平

IIC工作时序总结

1.概述: I2C是Inter-Integrated Circuit的缩写,发音为"eye-squared cee" or "eye-two-cee", 它是一种两线接口。 I2C 只是用两条双向的线,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。 SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM 器件输出数据。(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成" 线与"关系。 2.输出级 每一个I2C总线器件内部的SDA、SCL引脚电路结构都是一样的,引脚的输出驱动与输入缓冲连在一起。其中输出为漏极开路的场

效应管,输入缓冲为一只高输入阻抗的同相器,这种电路具有两个特点: 1)由于SDA、SCL为漏极开路结构(OD),因此它们必须接有上拉电 阻,阻值的大小常为 1k8, 4k7 and 10k ,但1k8 时性能最好; 当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线"与"关系。 2)引脚在输出信号的同时还将引脚上的电平进行检测,检测是否 与刚才输出一致,为"时钟同步"和"总线仲裁"提供了硬件基础。 3.主设备与从设备 系统中的所有外围器件都具有一个7位的"从器件专用地址码",其中高4位为器件类型,由生产厂家制定,低3位为器件引脚定义地址,由使用者定义。主控器件通过地址码建立多机通信的机制,因此I2C总线省去了外围器件的片选线,这样无论总线上挂接多少个器件,其系统仍然为简约的二线结构。终端挂载在总线上,有主端和从端之分,主端必须是带有CPU的逻辑模块,在同一总线上同一时刻使能有一个主端,可以有多个从端,从端的数量受地址空间和总线的最大电容 400pF的限制。 o主端主要用来驱动SCL line; o从设备对主设备产生响应;

三种片上总线的分析与比较

三种常用SoC片上总线的分析与比较 作者:李瑞张春元罗莉来源:国防科技大学发表时间:2006-02-22 内容摘要随着集成电路设计技术的发展,在片上系统(SoC)中,越来越多地使用各种功能IP核部件构成系统。总线是这些部件连接的主要方式,目前有数家公司和组织研发了多种面向SoC设计的总线系统。本文介绍SoC中常用的三种片上总线AMBA、Wishbone和Avalon,分析和比较其特性,并针对其不同的特点阐述其使用范围。 引言 嵌入式系统是当今计算机工业发展的一个热点。随着超大规模集成电路的迅速发展,半导体工业进入深亚微米时代,器件特征尺寸越来越小,芯片规模越来越大,可以在单芯片上集成上百万到数亿只晶体管。如此密集的集成度使我们现在能够在一小块芯片上把以前由CPU和若干I/O接口等数块芯片实现的功能集成起来,由单片集成电路构成功能强大的、完整的系统,这就是我们通常所说的片上系统SoC (System on Chip)。由于功能完整,SoC逐渐成为嵌入式系统发展的主流。 相比板上系统,具有许多优点: SoC ①充分利用IP技术,减少产品设计复杂性和开发成本,缩短产品开发的时间; ②单芯片集成电路可以有效地降低系统功耗; ③减少芯片对外引脚数,简化系统加工的复杂性; ④减少外围驱动接口单元及电路板之间的信号传递,加快了数据传输和处理的速度; ⑤内嵌的线路可以减少甚至避免电路板信号传送时所造成的系统信号串扰。 SoC的设计过程中,最具特色的是IP复用技术。即选择所需功能的IP(给出IP定义)核,集成到一个芯片中用。由于IP核的设计千差万别,IP核的连接就成为构造SoC的关键。片上总线(On-Chip Bus,OCB)是实现SoC中IP核连接最常见的技术手段,它以总线方式实现IP核之间数据通信。与板上总线不同,片上总线不用驱动底板上的信号和连接器,使用更简单,速度更快。一个片上总线规范一般需要定义各个模块之间初始化、仲裁、请求传输、响应、发送接收等过程中驱动、时序、策略等关系。 由于片上总线与板上总线应用范围不同,存在着较大的差异,其主要特点如下: ①片上总线要尽可能简单。首先结构要简单,这样可以占用较少的逻辑单元;其次时序要简单,以利于提高总线的速度;第三接口要简单,如此可减少与IP核连接的复杂度。 ②片上总线有较大的灵活性。由于片上系统应用广泛,不同的应用对总线的要求各异,因此片上总线具有较大的灵活性。其一,多数片上总线的数据和地址宽度都可变,如AMBA AHB支持32位~128位数据总线宽度;其二,部分片上总线的互连结构可变,如Wishbone总线支持点到点、数据流、共享总线和交叉开关四种互连方式;其三,部分片上总线的仲裁机制灵活可变,如Wishbone总线的仲裁机制可以完全由用户定制。 ③片上总线要尽可能降低功耗。因此,在实际应用时,总线上各种信号尽量保持不变,并且多采用单向信号线,降低了功耗,同时也简化了时序。上述三种片上总线输入数据线和输出数据线都是分开的,且都没有信号复用现象。 片上总线有两种实现方案,一是选用国际上公开通用的总线结构;二是根据特定领域自主开发片上总线。本文就目前SoC上使用较多的三种片上总线标准——ARM的AMBA、Silicore的Wishbone和Altera的Avalon进行讨论,对三者特性进行分析和比较。 1 AMBA总线 (Advanced Microcontroller Bus Architecture)总线规范是ARM公司设计的一种用于AMBA 高性能嵌入式系统的总线标准。它独立于处理器和制造工艺技术,增强了各种应用中的外设和系统宏单

计算机组成原理习题答案3解析

第3章习题参考答案 1、设有一个具有20位地址和32位字长的存储器,问 (1) 该存储器能存储多少字节的信息? (2) 如果存储器由512K ×8位SRAM 芯片组成,需要多少片? (3) 需要多少位地址作芯片选择? 解: (1) 该存储器能存储:字节4M 8 32 220=? (2) 需要 片88 232 28512322192020=??=??K (3) 用512K ?8位的芯片构成字长为32位的存储器,则需要每4片为一组进行字 长的位数扩展,然后再由2组进行存储器容量的扩展。所以只需一位最高位地址进行芯片选择。 2、已知某64位机主存采用半导体存储器,其地址码为26位,若使用4M ×8位的DRAM 芯片组成该机所允许的最大主存空间,并选用内存条结构形式,问; (1) 若每个内存条为16M ×64位,共需几个内存条? (2) 每个内存条内共有多少DRAM 芯片? (3) 主存共需多少DRAM 芯片? CPU 如何选择各内存条? 解: (1) 共需 条464 1664 226=??M 内存条 (2) 每个内存条内共有 328 464 16=??M M 个芯片 (3) 主存共需多少1288 464 648464226=??=??M M M 个RAM 芯片, 共有4个内存条,故 CPU 选择内存条用最高两位地址A 24和A 25通过2:4译码器实现;其余的24根 地址线用于内存条内部单元的选择。 3、用16K ×8位的DRAM 芯片构成64K ×32位存储器,要求: (1) 画出该存储器的组成逻辑框图。 (2) 设存储器读/写周期为0.5μS ,CPU 在1μS 内至少要访问一次。试问采用哪种刷新方式比较合理?两次刷新的最大时间间隔是多少?对全部存储单元刷新一遍所需的实际刷新时间是多少? 解: (1) 用16K ×8位的DRAM 芯片构成64K ×32位存储器,需要用16448 1632 64=?=??K K 个芯片,其中每4片为一组构成16K ×32位——进行字长位 数扩展(一组内的4个芯片只有数据信号线不互连——分别接D 0~D 7、D 8~D 15、

第六章 系统总线

第六章系统总线 6.1 总线的概念和结构形态 6.2 总线接口 6.3 总线的仲裁、定时和数据传送模式 6.4 PCI总线 6.5 ISA总线和Futurebus+总线 作业: 返回<< 6.1 总线的概念和结构形态 6.1.1 总线的基本概念 计算机的若干功能部件之间不可能采用全互联形式,因此就需要有公共的信息通道,即总线。总线是构成计算机系统的互联机构,是多个系统功能部件之间进行数据传送的公共通路。总线可分为三类: 内部总线:CPU内部连接各寄存器及运算器部件之间的总线。 系统总线:外部总线。CPU和计算机系统中其他高速功能部件相互连接的总线。 I/O总线:中低速I/O设备相互连接的总线。 通信总线:多个计算机之间相互连接的通信线路。 总线的特性可分为:物理特性、功能特性、电气特性、时间特性。 为了使不同厂家生产的相同功能部件可以互换使用,就需要进行系统总线的标准化工作。目前,已经出现了很多总线标准,如PCI、ISA、STD等。 总线带宽:总线本身所能达到的最高传输速率。 6.1.2 总线的连接方式 适配器(接口):实现高速CPU与低速外设之间工作速度上的匹配和同步,并完成计算机和外设之间的所有数据传送和控制。 单机系统中总线结构的三种基本类型: 单总线:使用一条单一的系统总线来连接CPU、内存和I/O设备。 双总线:在CPU和主存之间专门设置了一组高速的存储总线。 三总线:系统总线是CPU、主存和通道(IOP)之间进行数据传送的公共通路,而I/O总线是多个外部设备与通道之间进行数据传送的公共通路。 6.1.3 总线结构对计算机系统性能的影响 对最大存储容量和指令系统的主要影响体现在主存与外设的编址方式上。 对吞吐量的影响主要体现在数据的传输方式上。 6.1.4 总线的内部结构 总线按功能分类可分为:地址线(单向)、数据线(双向)和控制线(每一根是单向的)。早期总线实际上就是CPU芯片引脚的延伸和驱动能力的增强,存在以下不足: 1)CPU是总线上惟一的主控者。 2)总线结构与CPU紧密相关,通用性较差。 现代总线的趋势是标准总线,与结构、CPU、技术无关,又被称为底板总线。 现代总线可分为四个部分: 数据传送总线:由地址线、数据线、控制线组成。 仲裁总线:包括总线请求线和总线授权线。

微机原理考试试题与答案分析报告

微型计算机原理与接口技术综合测试题一 一、单项选择题(下面题只有一个答案是正确的,选择正确答案填入空白处) 一、单项选择题 1.(1)A (2)B 2.B 3.B 4.D 5.C 6.C 7.(1)C (2)B 8.(1)A (2)C 9.B 10.A 11 B 12 C 13 A 14 C 15 C 16 C 17 B 18 B 19 B 20 C 1.8086CPU通过(A )控制线来区分是存储器访问,还是I/O访问,当CPU执行IN AL,DX 指令时,该信号线为(B )电平。 (1) A. M/ B. C. ALE D. N/ (2) A. 高 B. 低 C. ECL D. CMOS 2.n+1位有符号数x的补码表示围为(B )。 A. -2n < x < 2n B. -2n ≤ x ≤ 2n -1 C. -2n -1 ≤ x ≤ 2n-1 D. -2n < x ≤ 2n 3.若要使寄存器AL中的高4位不变,低4位为0,所用指令为( B )。 A. AND AL, 0FH B. AND AL, 0FOH C. OR AL, 0FH D. OR AL 0FOH 4.下列MOV指令中,不正确的指令是( D )。 A. MOV AX, BX B. MOV AX, [BX] C. MOV AX, CX D. MOV AX, [CX] 5.中断指令INT 17H的中断服务程序的入口地址放在中断向量表地址( C )开始的4个存贮单元。 A. 00017H B. 00068H C. 0005CH D. 0005EH 6.条件转移指令JNE的条件是( C )。 A. CF=0 B. CF=1 C. ZF=0 D. ZF=1 7. 在8086/8088 CPU中,一个最基本的总线读写周期由(C )时钟周期(T状态)组成,在T1状态,CPU往总线上发(B )信息。 ⑴ A. 1个 B. 2个 C. 4个 D. 6个 ⑵ A. 数据 B . 地址 C. 状态 D. 其它 8. 8086有两种工作模式, 最小模式的特点是(A ),最大模式的特点是(C )。 ⑴ A. CPU提供全部控制信号 B. 由编程进行模式设定 C. 不需要8286收发器 D. 需要总线控制器8288 ⑵ A. M/ 引脚可直接引用 B. 由编程进行模式设定 C. 需要总线控制器8288 D. 适用于单一处理机系统 9.在8086微机系统的RAM 存储单元器0000H:002CH开始依次存放23H,0FFH,00H,和0F0H四个字节,该向量对应的中断号是( B )。 A. 0AH B. 0BH C. 0CH D. 0DH 10.真值超出机器数表示围称为溢出,,此时标志寄存器中的( A )位被置位 A. OF B AF C PF D CF 11.8086 系统中存储器地址空间为1M,而在进行I/O读写是,有效的地址线是( B ) A . 高16位 B. 低16位 C. 高8位 D. 低8位 12.8086 CPU中段寄存器用来存放( C ) A. 存储器的物理地址 B. 存储器的逻辑地址 C. 存储器的段基值 D. 存储器的起始地址 13.8259A可编程中断控制器的中断服务寄存器ISR用于( A ) A.记忆正在处理中的中断 B. 存放从外设来的中断请求信号

i2c简易时序图

启动信号: SCL为高电平的时候,SDA由高电平向低电平跳变。 结束信号: SCL为高电平的时候,SDA由低电平向高电平跳变。 应答信号: I2C总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功,对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。 写时序: 开始信号:主机+从设备地址+写命令,从机应答,应答成功,表示有这个设备,然后主机+设备内部寄存器地址,此时不用再加写命令控制字,从机应答,应答成功,表示设备内有这个地址,主机写入数据,从机应答,是否继续发送,不发送的话,发送停止信号P。 读时序: 要想读设备,首先要知道将要所读取设备的地址告诉从设备,从设备才能将数据放到(发送)SDA上使主设备读取,从设备将数据放入SDA上的过程,由硬件主动完成,不用人为的写入。所以首先先写入从机地址,然后+写控制命令,从机应答,应答成功,表示有这个设备,然后写入内部寄存器地址,此时不用再加写命令控制字,从机应答,应答成功,表示设备内有这个地址。然后主机继续发出:写入从机地址,然后+读命令,从机应答,应答成功,此时便可以读取数据了,从设备已经将数据放入到SDA上了。地址跟设备已经验证了,不用再进行验证。 启动信号与停止信号的时序图如下图所示: 数据位发送: 在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据0,高电平为数据1。只有在SCL为低电平期间,才允许SDA上的电平改变状态。逻辑0的电平为低电压,而逻辑1则为高电平。时序如下图所示:

计算机组成原理习题 第六章总线系统

第六章总线系统 一、填空题: 1.PCI总线采用A.______仲裁方式,每一个PCI设备都有独立的总线请求和总线授权两条信号线与B.______相连。 2.SCSI是处于A.______和B.______之间的并行I/O接口,可允许连接C.______台不同类型的高速外围设备。 3.总线有A 特性、B 特性、C 特性、D 特性,因此必须E 。 4.微型计算机的标准总线从16位的A 总线发展到32位的B 总线和C 总线,又进一步发展到64位的D 总线。 二、选择题: 1.计算机使用总线结构的主要优点是便于实现技术化,同时______。 A. 减少信息传输量 B. 提高信息传输速度 C. 减少了信息传输线的条数 D. 减少了存储器占用时间 2.描述PCI总线基本概念中正确的句子是______。 A.PCI总线的基本传输机制是猝发式传送 B.PCI总线是一个与处理器有关的高速外围总线 C.PCI设备一定是主设备 D.系统中允许只有一条PCI总线 3.描述PCI总线中基本概念表述不正确的是______。 A.PCI设备不一定是主设备 B.PCI总线是一个与处理器有关的高速外围总线 C.PCI总线的基本传输机制是猝发式传送 D.系统中允许有多条PCI总线 4.并行I/O标准接口SCSI中,一块适配器可以连接______台具有SCSI接口的设备。 A. 6 B. 7 C. 8 D. 9 5.下面对计算机总线的描述中,确切完备的概念是______。 A.地址信息、数据信息不能同时出现 B.地址信息与控制信息不能同时出现 C.数据信息与控制信息不能同时出现 D.两种信息源的代码不能在总线中同时传送 6.SCSI接口以菊花链形式最多可连接______台设备。 A.7台 B.8台 C.6台 D.10台 7.微型机系统中外设通过适配器与主板的系统总线相连接,其功能是___。 A. 数据缓冲和数据格式转换 B.监测外设的状态 C.控制外设的操作 D. 前三种功能的综合作用 8.计算机使用总线结构的主要优点是便于实现积木化,同时___。 A.减少了信息传输量

计算机组成原理简答题分析

问答: 1.什么是大小端对齐 Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 2.什么是指令周期、机器周期和时钟周期?三者有何关系? 答:指令周期是CPU完成一条指令的时间;机器周期是所有指令执行过程的一个基准时间,机器周期取决于指令的功能及器件的速度;一个指令周期包含若干个机器周期,一个机器周期又包含若干个时钟周期,每个指令周期内的机器周期数可以不等,每个机器周期内的节拍数也可以不等。 3.什么是总线判优?为什么需要总线判优? 答:总线判优就是当总线上各个主设备同时要求占用总线时,通过总线控制器,按一定的优先等级顺序确定某个主设备可以占有总线。因为总线传输的特点就是在某一时刻,只允许一个部件向总线发送信息,如果有两个以上的部件同时向总线发送信息,势必导致信号冲突传输无效,故需用判优来解决。 4.什么是“程序访问的局部性”?存储系统中哪一级采用了程序访问的局部性原理答:所谓程序访问的局部性即程序执行时对存储器的访问是不均匀的,这是由于指令和数 据在主存的地址分布不是随机的,而是相对地簇聚。 存储系统的Cache—主存级和主存—辅存级都用到程序访问的局部性原理。 对Cache—主存级而言,把CPU最近期执行的程序放在容量较小、速度较高的Cache中。对主存—辅存级而言,把程序中访问频度高、比较活跃的部分放在主存中,这样既提高了访存的速度又扩大了存储器的容量。 5.指令和数据都存于存储器中,从时间和地址两个角度,说明计算机如何区分它们?解:计算机区分指令和数据有以下2种方法: 通过不同的时间段来区分指令和数据,即在取指令阶段(或取指微程序)取出的为指令,在执行指令阶段(或相应微程序)取出的即为数据。 通过地址来源区分,由PC提供存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出的是操作数。 6.除了采用高速芯片外,从计算机的各个子系统的角度分析,指出6种以上(含6种) 提高整机速度的措施。. 针对存储器,可以采用Cache-主存层次的设计和管理提高整机的速度; 针对存储器,可以采用多体并行结构提高整机的速度; 针对控制器,可以通过指令流水设计技术提高整机的速度; 针对控制器,可以通过超标量设计技术提高整机的速度; 针对运算器,可以对运算方法加以改进,如两位乘,或用快速进位链; 针对I/O系统,可以运用DMA技术不中断现行程序,提高CPU的效率。 7.I/O有哪些编址方式?各有何特点? 解:常用的I/O编址方式有两种:I/O与内存统一编址和I/O独立编址。 特点:I/O与内存统一编址方式的I/O地址采用与主存单元地址完全一样的格式,I/O 设备和主存占用同一个地址空间,CPU可像访问主存一样访问I/O设备,不需要安排专

I2C总线时序详解之欧阳家百创编

I2C总线时序详解 欧阳家百(2021.03.07) 由于连接到I2C 总线的器件有不同种类的工艺(CMOS、NMOS、双极性),逻辑0(低)和逻辑1(高)的电平不是固定的,它由电源VCC的相关电平决定,每传输一个数据位就产生一个时钟脉冲。 数据的有效性 SDA 线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。 I2C位传输数据有效性 起始和停止条件 SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。

起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态 起始和停止条件 ,在停止条件的某段时间后总线被认为再次处于空闲状态。 如果产生重复起始条件而不产生停止条件,总线会一直处于忙的状态,此时的起始条件(S)和重复起始条件(Sr)在功能上是一样的。 字节格式 发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。 应答响应 数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA 线(高)。 在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。

《计算机组成原理》典型例题讲解

分析设计计算: 1.CPU 结构如图1所示,其中有一个累加寄存器AC ,一个状态条件寄存器,各部分之间的连线表示数据通路,箭头表示信息传送方向。 (1) 标明图中四个寄存器的名称。 (2) 简述指令从主存取到控制器的数据通路。 (3) 简述数据在运算器和主存之间进行存 / 取访问的数据通路。 图1 解: (1) a 为数据缓冲寄存器 DR ,b 为指令寄存器 IR ,c 为主存地址寄存器, d 为程序计数器PC 。 (2) 主存 M →缓冲寄存器 DR →指令寄存器 IR →操作控制器。 (3) 存贮器读 :M →缓冲寄存器DR →ALU →AC 存贮器写 :AC →缓冲寄存器DR →M 2. 某机器中,配有一个ROM 芯片,地址空间0000H —3FFFH 。现在再用几个16K ×8的芯片构成一个32K ×8的RAM 区域,使其地址空间为8000H —FFFFH 。假设此RAM 芯片有/CS 和/WE 信号控制端。CPU 地址总线为A15—A0,数据总线为D7—D0,控制信号为R//W ,MREQ(存储器请求),当且仅当MREQ 和R//W 同时有效时,CPU 才能对有存储器进行读(或写)。 (1)满足已知条件的存储器,画出地址码方案。 (2)画出此CPU 与上述ROM 芯片和RAM 芯片的连接图。 解:存储器地址空间分布如图1所示,分三组,每组16K ×8位。 由此可得存储器方案要点如下: (1) 用两片16K*8 RAM 芯片位进行串联连接,构成32K*8的RAM 区域。 片内地址 :A 0 ——A 13 ,片选地址为:A 14——A 15; (2) 译码使用2 :4 译码器; (3) 用 /MREQ 作为2 :4译码器使能控制端,该信号低电平(有效) 时,译码器工作。

I2C总线协议及工作原理

I2C总线协议及工作原理 一、概述 1、I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成"线与"关系。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平(SDL=1;SCL=1)。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 2、主设备与从设备 系统中的所有外围器件都具有一个7位的"从器件专用地址码",其中高4位为器件类型,由生产厂家制定,低3位为器件引脚定义地址,由使用者定义。主控器件通过地址码建立多机通信的机制,因此I2C总线省去了外围器件的片选线,这样无论总线上挂接多少个器件,其系统仍然为简约的二线结构。终端挂载在总线上,有主端和从端之分,主端必须是带有CPU的逻辑模块,在同一总线上同一时刻使能有一个主端,可以有多个从端,从端的数量受地址空间和总线的最大电容400pF的限制。 主端主要用来驱动SCL line; 从设备对主设备产生响应; 二者都可以传输数据,但是从设备不能发起传输,且传输是受到主设备控制的。 二、协议 1.空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。 2.起始位与停止位的定义: 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平信号。 停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。

计算机组成原理习题 第六章总线系统知识分享

计算机组成原理习题第六章总线系统

第六章总线系统 一、填空题: 1.PCI总线采用A.______仲裁方式,每一个PCI设备都有独立的总线请求和总线授权两条信号线与B.______相连。 2.SCSI是处于A.______和B.______之间的并行I/O接口,可允许连接 C.______台不同类型的高速外围设备。 3.总线有A 特性、B 特性、C 特性、D 特性,因此必须E 。 4.微型计算机的标准总线从16位的A 总线发展到32位的B 总线和C 总线,又进一步发展到64位的D 总线。 二、选择题: 1.计算机使用总线结构的主要优点是便于实现技术化,同时______。 A. 减少信息传输量 B. 提高信息传输速度 C. 减少了信息传输线的条数 D. 减少了存储器占用时间 2.描述PCI总线基本概念中正确的句子是______。 A.PCI总线的基本传输机制是猝发式传送 B.PCI总线是一个与处理器有关的高速外围总线 C.PCI设备一定是主设备 D.系统中允许只有一条PCI总线 3.描述PCI总线中基本概念表述不正确的是______。 A.PCI设备不一定是主设备 B.PCI总线是一个与处理器有关的高速外围总线 C.PCI总线的基本传输机制是猝发式传送 D.系统中允许有多条PCI总线

4.并行I/O标准接口SCSI中,一块适配器可以连接______台具有SCSI接口的设备。 A. 6 B. 7 C. 8 D. 9 5.下面对计算机总线的描述中,确切完备的概念是______。 A.地址信息、数据信息不能同时出现 B.地址信息与控制信息不能同时出现 C.数据信息与控制信息不能同时出现 D.两种信息源的代码不能在总线中同时传送 6.SCSI接口以菊花链形式最多可连接______台设备。 A.7台 B.8台 C.6台 D.10台 7.微型机系统中外设通过适配器与主板的系统总线相连接,其功能是___。 A. 数据缓冲和数据格式转换 B.监测外设的状态 C.控制外设的操作 D. 前三种功能的综合作用 8.计算机使用总线结构的主要优点是便于实现积木化,同时___。 A.减少了信息传输量 B.提高了信息传输的速度 C.减少了信息传输线的条数 9.多总线结构的计算机系统采用______方法,对提高系统的吞吐率最有效。 A.多口存储器 B.提高主存的速度 C.交叉编址多模存储器 D.高速缓冲存储器 10.系统总线中控制线的功能是______。 A.提供主存、I/O接口设备的控制信号和响应信号及时序信号

第六章习题

一.填空题 1.信息只用一条传输线,且采用脉冲传输的方式称为______。 A.串行传输 B.并行传输 C.并串行传输 D.分时传输 2.系统总线中地址线的功能是______。 A. 用于选择主存单元地址 B. 用于选择进行信息传输的设备 C. 用于选择外存地址 D. 用于指定主存和I/O设备接口电路的地址 3.三种集中式总线控制中,______方式对电路故障最敏感。 A.链式查询 B.计数器定时查询 C.独立请求 4.当采用______对设备进行编址情况下,不需要专门的I/O指令组。 A.统一编址法 B.单独编址法 C.两者都是 D.两者都不是 5.计算机使用总线结构的主要优点是便于实现积木化,同时______。 A. 减少了信息传输量 B. 提高了信息传输的速度 C. 减少了信息传输线的条数 6.在微型机系统中,外围设备通过______与主板的系统总线相连接。 A. 适配器 B. 设备控制器 C. 计数器 D. 寄存器 7.描述PCI总线中基本概念不正确的是______。 A. PCI总线是一个与处理器无关的高速外围总线 B. PCI总线的基本传输机制是猝发式传输 C. PCI设备不一定是主设备 D. 系统中只允许有一条PCI总线 8.同步控制是______。 A.只适用于CPU控制的方式 B.只适用于外围设备控制的方式 C.由统一时序信号控制的方式 D.所有指令控制时间都相同的方式 9. 从信息流的传送效率来看,______工作效率最低。 A.三总线系统 B.单总线系统 C.双总线系统 D.多总线系统 10.同步通信之所以比异步通信具有较高的传输频率是因为______。 A.同步通信不需要应答信号且同步通信方式的总线长度较短 B.同步通信用一个公共的时钟信号进行同步 C.同步通信中,各部件存取时间比较接近 D.以上因素的总和 11.系统总线中控制线的功能是______。 A.提供主存、I/O接口设备的控制信号和响应信号及时序信号 B.提供数据信息 C.提供主存、I/O接口设备的控制信号 D.提供主存、I/O接口设备的响应信号 12.根据传送信息的种类不同,系统总线分为______。 A. 地址线和数据线 B. 地址线、数据线和控制线 C. 地址线、数据线和响应线 D. 数据线和控制线 13.PCI总线的基本传输机制是______。 A.串行传输 B.并行传输 C.DMA式传输 D.猝发式传输

I2C总线时序详解

I2C 总线时序详解 I2C总线位传输 由于连接到I2C总线的器件有不同种类的工艺(CMOSNMOS双极性),逻辑0 (低)和逻辑1 (高)的电平不是固定的,它由电源VCC的相关电平决定,每传输一个数据位就产生一个时钟脉冲。 数据的有效性 SDA线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。 I2C位传输数据有效性 起始和停止条件 SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件; SCL线是高电平时,SDA线由低电平向高电平切换,这个情况表示停止条件。 起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态 SDA

起始和停止条件 ,在停止条件的某段时间后总线被认为再次处于空闲状态。如果产生重复起始条件而不产生停止条件,总线会一直处于忙的状态,此时的起始条件(S)和重复起始条件(Sr)在功能上是一样的。 I2C总线数据传输 字节格式 发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位 (MSB,如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平, 迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续。应答响应 数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA线(高)。 在响应的时钟脉冲期间,接收器必须将SDA线拉低,使它在这个时钟 脉冲的高电平期间保持稳定的低电平。 通常被寻址的接收器在接收到的每个字节后,除了用CBUS地址开头的 数。

对I2C总线时序的一点理解以及ACK和NACK(NAK)

对I2C总线时序的一点理解以及ACK和NACK(NAK)

关键字:i2c ,IIC,bus,ACK,NACK,NAK,SDA,SCL,timing,master,slaver,时序,响应,总线 关于i2c的响应问题:对于每一个接收设备(从设备,slaver),当它被寻址后,都要求在接收到每一个字节后产生一个响应。因此,the master device 必须产生一个额外的时钟脉冲(第九个脉冲)用以和这个响应位相关联。 在这个脉冲期间,发出响应的从设备必须将SDA拉低并在时钟脉冲的高电平期间保持住。这表示该设备给出了一个ACK。如果它不拉低SDA线,就表示不响应(NACK)。 另外,在从机(发送方)发送完最后一个字节后主设备(接收方)必须产生一个不响应位,用以通知从机(发送方)不要再发送信息了,这样从机就知道该将SDA释放了,而后,主机发出一个停止位给slaver。 总结下,i2c通讯中,SDA 和SCL 都是有主机控制的,从设备只是能够将SDA 线拉低而已。对于SCL线,从机是没有任何能力去控制的。从机只能被动跟随SCL 再说的清楚些: 主机发送数据到从机的状态下:主机控制SCL信号线和SDA信号线,从机只是在SCL线为高的时候去被动读取SDA线。 主机读取从机的数据:主机来发出时钟信号,从机只是保证在时钟信号为高电平的时候的SDA的状态而已。 //---------------------------------------- 补充@201108311142 SDA和SCL已经通过上拉电阻被上拉,master可以控制(拉低或者释放)这两条线,而slaver只能控制SDA线。当master发送数据时,master会适时地将SDA和SCL拉低或释放(拉高)。确切的时序应该是这样的: 当master要发送一个start时,master会将SDA拉低,这就可以了,因为此时的SCL一定是High。好了,一个start就这样发出去了。而slaver也会发现这个start信号的发生,slaver便会准备好接收接下来的数据了。紧接着,master 要发送一个Byte的数据了,一位一位的发出这8个bits。这时master会先将SCL拉低,然后在SCL为低的状态下将一个bit准备好放到SDA上(比如要发送一个0,master就会通过拉低SDA来放好这个0),然后master会把SCL

相关文档
相关文档 最新文档