基于NIOS II的IC总线接口设计
2
因为每个电路模块都有唯一的地址,在信息的传输过程中,I2C总线上连接的每一个模块电路既是主控器又是被控器,既是发送器也是接收器,主要取决于它所要完成的功能。CPU发出的信号分地址和控制量两部分,地址码选定器件,确定控制种类,控制量决定被控制电路完成的功能,调整的量。这样就使得所有控制电路虽然都挂载在同一条总线上,但是彼此独立,互不相干扰。总线连接图2-1所示。
VccDevice ASDAMCUSCLDevice BDevice C 图2-1 I2C总线连接图
I2C总线在传输过程中有4种基本类型信号:开始信号,数据传输信号,应答信号和结束信号[13]。
开始信号:SCL为高电平时,SDA从高电平向低电平跳变,开始传送数据。所有的指令都必须在开始信号条件以后进行。
结束信号:当SCL为低电平,SDA由低电平向高电平跳变,结束数据传输。所有的操作都必须在结束条件以前结束。传输时序图如图2-2所示。
SDASCLSP起始条件停止条件
图2-2 I2C起始和停止条件
应答信号:接收数据的IC在收到8BIT数据以后,向发送数据的IC返回发出特定的低电平脉冲,表示数据已经收到。CPU向被控制单元发送出一个信号以后,等待被
11
基于NIOS II的IC总线接口设计
2
控制单元返回一个应答信号,CPU收到应答信号后,才能决定根据实际情况是否继续发送数据。如果没有收到应答,则判断为被控单元出现故障。
数据的有效性:在数据传输过程中,SDA线必须在时钟高电平周期内保持稳定,SDA的高低电平状态只有SCL线的信号是低电平时才能改变。
2.2.2 I2C总线上的数据传输
I2C总线总线运用双向通讯。器件发送数据到总线上,定义为发送器,接收数据的定义为接收器。主从器件都可以工作于发送和接受状态。总线必须由主器件即微控制器控制,主器件产生串行时钟控制总线的传输方向,产生起始和停止的条件。SDA数据状态仅在SCL为低电平器件才能改变,SCL为高电平器件,数据总线SDA的状态改变被用来表示起始和停止条件。
发送到数据总线上的每个字节必须是8位,每个字节之后必须跟有一个响应位,需要9个时钟脉冲。时钟信号由主机产生,传输过程:主机产生起始位,然后传输第一个字节。8为数据首先传输的是数据的最高位,最低位为读写指示位,1表示主机读取数据,0表示写数据,高七位为寻址,可选定128个从器件。如图2-3所示。
SDASCL数据线稳定数据正常允许数据改变
图2-3 数据传输
从机收到主机发送的信号后发响应信号,主机收到响应后接着发第二个字节的数据。数据发送完毕后生成结束位,结束数据传输。传输数据过程中,时钟SCL需为低电平,SDA可以切换,SCL为高电平时,SDA不可切换,此时SDA的电平就是总线的传送数值。
在时钟总线处于高电平时,数据总线由高到低电平切换表示起始位,数据总线由低到高电平切换表示结束位。起始和结束位由主机产生,在起始位产生后总线处于忙状态,
12
基于NIOS II的IC总线接口设计
2
结束位产生经过一定的时间后总线进入闲状态,发送器每传送一个字节后,接收器需要产生一个响应位。响应位的时钟脉冲由主机产生,接收器将数据总线拉低产生响应,响应的时钟脉冲时间内,发送器释放数据线。如果主机是接受器,在收到最后一个字节时,不产生响应位,通知从机结束发送。当从机不能响应从机地址时,或者能响应地址但是无法接受更多的数据字节时,此时从机可以通过不产生响应位来通知主机停止当前传输,主机则停止当前传输,或者重复开始位重新传输[14]。
2.3 本章小结
本章主要介绍了I2C的有关知识,从I2C总线的概念开始,介绍了I2C总线的开始和停止条件以及如何传输数据才有效,然后介绍了I2C总线传输过程中应答信号的产生和作用,以及位传输和字节传输需要注意的每个时钟周期代表的意义,最后,介绍了I2C总线工作的各种状态的时序,以便下面用Nios Ⅱ对I2C总线进行设计与实现。
13
基于NIOS II的IC总线接口设计
2
第三章 设计工具介绍
3.1 Quartus II介绍
该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程[15]。
Quartus Ⅱ支持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX Ⅱ系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘积项器件。支持MAX Ⅱ CPLD系列、Cyclone系列、Cyclone Ⅱ、Stratix Ⅱ系列、Stratix GX系列等。支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。此外,Quartus Ⅱ 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。
Altera的Quartus Ⅱ可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
3.2 Nios II软核处理器简介
Nios Ⅱ是基于RSIC架构的32位嵌入式处理器。Nios Ⅱ系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPGA中实现仅需35美分。Altera的Stratix 、Stratix GX、 Stratix Ⅱ和 Cyclone系列FPGA全面支持Nios Ⅱ处理器,以后推出的FPGA器件也将支持Nios Ⅱ[16]。
14
基于NIOS II的IC总线接口设计
2
Altera于2000年推出第一代16位Nios处理器以来,已经交付了13000多套Nios开发套件,Nios成为最流行的软核处理器。于2004年6月推出的Nios Ⅱ系列采用全新的架构,比第一代Nios具有更高水平的效率和性能。和第一代相比,Nios Ⅱ核平均占用不到50%的FPGA资源,而计算性能增长了1倍。
Nios Ⅱ系列包括3种产品,分别是:Nios Ⅱ/f(快速)——最高的系统性能,中等FPGA使用量;Nios Ⅱ/s(标准)——高性能,低FPGA使用量;Nios Ⅱ/e(经济)——低性能,最低的FPGA使用量。这3种产品具有32位处理器的基本结构单元——32位指令大小,32位数据和地址路径,32位通用寄存器和32个外部中断源;使用同样的指令集架构(ISA),100%二进制代码兼容,设计者可以根据系统需求的变化更改CPU,选择满足性能和成本的最佳方案,而不会影响已有的软件投入。
特别是,Nios Ⅱ系列支持使用专用指令。专用指令是用户增加的硬件模块,它增加了算术逻辑单元(ALU)。用户能为系统中使用的每个Nios Ⅱ处理器创建多达256个专用指令,这使得设计者能够细致地调整系统硬件以满足性能目标。专用指令逻辑和本身Nios Ⅱ指令相同,能够从多达两个源寄存器取值,可选择将结果写回目标寄存器。同时,Nios Ⅱ系列支持60多个外设选项,开发者能够选择合适的外设,获得最合适的处理器、外设和接口组合,而不必支付根本不使用的硅片功能。
Nios Ⅱ系列能够满足任何应用32位嵌入式微处理器的需要,客户可以将第一代Nios处理器设计移植到某种Nios Ⅱ处理器上,Altera将长期支持现有FPGA系列上的第一代Nios处理器。另外,Altera提供了一键式移植选项,可以升级至Nios Ⅱ系列。Nios Ⅱ处理器也能够在HardCopy器件中实现,Altera还为基于Nios Ⅱ处理器的系统提供ASIC的移植方式。
Nios Ⅱ处理器具有完善的软件开发套件,包括编译器、集成开发环境(IDE)、JTAG调试器、实时操作系统(RTOS)和TCP/IP协议栈。设计者能够用Altera Quartus Ⅱ开发软件中的SOPC Builder系统开发工具很容易地创建专用的处理器系统,并能够根据系统的需求添加Nios Ⅱ处理器核的数量。
使用Nios Ⅱ软件开发工具能够为Nios Ⅱ系统构建软件,即一键式自动生成适用于系统硬件的专用C/C++运行环境。Nios Ⅱ集成开发环境(IDE)提供了许多软件模板,简化了项目设置。此外,Nios Ⅱ开发套件包括两个第三方实时操作系统(RTOS)——MicroC/OS-Ⅱ(Micrium),Nucleus Plus(ATI/Mentor)以及供网络应用使用的TCP/IP
15