基于NIOSII的I2C总线接口技术

更新时间:2023-03-08 09:10:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科学生毕业论文

论文题目: 基于NiosII的IC总线接口设计

2

学 院: 年 级: 专 业: 姓 名:

指导教师:

电子工程学院

集成电路设计与集成系统

2012 年 05 月 20 日

摘要

当今电子信息产业中嵌入式无疑是最热名词,小到手机,PDA,机顶盒,DV,游戏机大到数控汽车电子,数控设备,医疗仪器,航天航空设备,嵌入式在各行各业各个领域都在起着重要的作用。当今主流的嵌入式处理器大概分三类MCU/ARM,DSP,可编程逻辑阵列。FPGA构成的SOPC系统具有富的IP Core资源可供选择、有足够的片上可编程逻辑资源、低功耗、微封装等优点,提高了应用上的灵活性。同时,在开发周期个价格上具有极大的优势。本文主要介绍如何使用Altera的Nios Ⅱ嵌入式软核处理器来实现I2C总线接口。

I2C是常用的串口总线通信协议,是由PHILIPS公司开发的两线式串行总线,其简便性和占用较少的引脚资源使得它在电子产品中广泛使用。文章中详细介绍了如何使用Altera公司的Cyclone Ⅱ系列的FPGA芯片,配置Nios Ⅱ软核处理器来实现I2C总线接口,通过读写串行EEPROM来验证I2C接口实现。

关键词

嵌入式;Nios Ⅱ;FPGA;SOPC;I2C

I

Abstract

Embedded in today's electronic information industry is undoubtedly the hottest term, small mobile phones, PDAs, set-top boxes, DV, game consoles, large CNC automotive electronics, CNC equipment, medical equipment, aerospace equipment, embedded in all walks of life in various fieldsplays an important role. Embedded processor in today's mainstream is probably divided into three types of the MCU / ARM, DSP, programmable logic array. FPGA composed of SOPC system has a rich IP Core resources to choose from, there is sufficient on-chip programmable logic resources, the advantages of low power, micro-encapsulation, improved application flexibility. At the same time, has great advantages in the development of cycle price. This paper describes the use of Altera's Nios Ⅱ embedded soft core processor to implement the I2C bus interface.

I2C is a serial bus communication protocol is a two-wire serial bus developed by PHILIPS company, its simplicity and takes less pin resources to make it widely used in electronic products. The article describes in detail how to use Altera's Cyclone Ⅱ series FPGA chip, and configure the Nios Ⅱ soft core processor to implement the I2C bus interface, read and write serial EEPROM to verify the I2C interface.

Key words

Nios Ⅱ;FPGA;SOPC;I2C;Embedded

II

目录

摘要 ............................................................................................................................................ I Abstract..................................................................................................................................... II 第一章 绪论 ............................................................................................................................. 1

1.1 课题背景 .................................................................................................................... 1 1.2 研究的目的与意义 .................................................................................................... 1 1.3 研究的基础、背景、现状 ........................................................................................ 2

1.3.1 SOPC技术 ........................................................................................................ 4 1.3.2 Quartus II ..................................................................................................... 5 1.3.3 Nios II ........................................................................................................... 6 1.4 I2C接口芯片24LC04 ................................................................................................. 7 1.5 本章小结 .................................................................................................................... 8 第二章 IC总线技术研究 ....................................................................................................... 9

2.1 I2C总线特点 .............................................................................................................. 9 2.2 I2C总线工作原理 ...................................................................................................... 10

2.2.1 总线的构成和信号类型 ............................................................................... 10 2.2.2 I2C总线上的数据传输 ................................................................................. 12 2.3 本章小结 .................................................................................................................. 13 第三章 设计工具介绍 ........................................................................................................... 14

3.1 Quartus II介绍 ..................................................................................................... 14 3.2 Nios II软核处理器简介 ....................................................................................... 14 3.3 本章小结 .................................................................................................................. 16 第四章 硬件开发流程 ........................................................................................................... 18

4.1 系统需求和设计思路 .............................................................................................. 18 4.2 基于Nios II的硬件开发设计 .............................................................................. 18 4.3 定义Nios II ........................................................................................................... 21

4.3.1 加入Nios II CPU CORE .............................................................................. 22 4.3.2 加入EPCS和SDRAM ...................................................................................... 24

2

4.3.3 System ID Peripheral ............................................................................... 25 4.3.4 加入JTAG UART组件 ................................................................................... 25 4.3.5 加入I2C总线的SCL和SDA总线 ................................................................ 26 4.3.6 地址自动分配 ............................................................................................... 27 4.4 本章小结 .................................................................................................................. 30 第五章 软件设计 ................................................................................................................... 31

5.1 功能描述 .................................................................................................................. 32 5.2 本章小结 .................................................................................................................. 33 .第六章 硬件调试与仿真 ..................................................................................................... 34

6.1 硬件调试仿真 .......................................................................................................... 34 6.2 本章小结 .................................................................................................................. 35 结论 ......................................................................................................................................... 36 参考文献 ................................................................................................................................. 37 附录一 ..................................................................................................................................... 38 致谢 ......................................................................................................................................... 45

基于NIOS II的IC总线接口设计

2

第一章 绪论

1.1 课题背景

随着科技不断发展,电子产品在人们日常生活中应用越来越广泛,已经成为了我们生活中不可或缺的一部分。在电子产品的设计中,其中I2C串口通信,以其简便性和其较少的接口占用的特性,使其在系统设计中得到广泛应用 [1] 。

I2C是由Philips开发的一个简单的双向两线式总线,可实现有效的IC之间的控制,现在的I2C总线包括超过150种CMOS和双极性兼容I2C总线的IC。所有符合I2C总线的期间组合了一个片上接口,这样器件之间直接通过I2C总线通讯,这样的设计概念解决了很多数字控制电路设计中遇到的接口问题。I2C总线有以下的优点:极低的电流消耗,抗高噪声干扰;I2C占用很少空间,减少了电路板的空间和芯片引脚数量,降低互联成本;在总线上连接的所有IC,都能够成为发送和接收设备,主控芯片为总线提供时钟脉冲,总线上任何时间点只能有一个主控芯片 [2] 。

1.2 研究的目的与意义

基于Nios Ⅱ的嵌入式系统的可应用领域很广,包括网络、无线通信、医疗器械、交通、消费电子、工业控制、军事和航空航天等。在巨大的市场需求面前,兼之Nios Ⅱ本身的众多优势,使Nios Ⅱ的应用具备了巨大的发展空间。

集成电路是中间产品,必须将它装入到整机上才能发挥其作用,具体地说是通过印刷电路版(PCB)来集成到整机上去的。由于PCB板中各种IC芯片之间的连线延迟较大,再加上PCB板体积大、重量大、可靠性差等原因,使得整机系统的性能及可靠性受到严重影响。随着高性能系统对系统复杂度、处理速度、功耗、功能多样化的要求,在现代信息处理与通信系统如网络、多媒体、移动通信和其它电子系统中迫切需要开发高性能的片上系统。而Nios Ⅱ,正是一个优秀的选择。Nios Ⅱ处理器具有完善的软件开发套件,包括编译器、集成开发环境(IDE)、JTAG调试器、实时操作系统(RTOS)和TCP/IP协议栈。设计者能够用Altera Quartus Ⅱ开发软件中的SOPC Builder系统开发工具很容易地创建专用的处理器系统,并能够根据系统的需求添加Nios Ⅱ处理器核的数量。长期以来,Altera一直推行嵌入式处理器战略的原因是,随着应用的ASIC开发日益受到

1

基于NIOS II的IC总线接口设计

2

成本的困扰,OEM日渐转向FPGA来构建自己的系统[3]。这些系统中绝大多数需要一个处理器,而Altera正是为设计者提供了为FPGA优化的灵活的嵌入式处理器方案,可以满足16位和32位嵌入式处理器市场的需求

基于Nios Ⅱ的系统实现了设计的可复用性,即使是同样一块开发板,根据载入的代码不同,可以实现不同的应用。这也是缩短开发周期、加快产品上市时间的一条捷径。

1.3 研究的基础、背景、现状

本题研究背景: 在集成电路发展初期,电路设计都从器件的物理版图设计入手,后来出现了集成电路单元库,使得集成电路设计从器件级进入逻辑级,这样的设计思路使大批电路和逻辑设计师可以直接参与集成电路设计,极大地推动了IC产业的发展。但集成电路不是最终产品,它只有装入整机系统才能发挥它的作用 [4] 。片是通过印刷电路板(PCB)等技术实现整机系统的。尽管IC的速度可以很高、功耗可以很小,但由于PCB板中IC芯片之间的连线延时、PCB板可靠性以及重量等因素的限制,整机系统的性能受到了很大的限制。

随着系统向高速度、低功耗、低电压和多媒体、网络化、移动化的发展,系统对电路的要求越来越高,传统集成电路设计技术已无法满足性能日益提高的整机系统的要求。同时,由于IC设计与工艺技术水平提高,集成电路规模越来越大,复杂程度越来越高,己经可以将整个系统集成为一个芯片。

正是在需求牵引和技术推动的双重作用下,出现了将整个系统集成在一个集成电路芯片上的系统芯片(System On Chip,简称SOC)概念。系统芯片与集成电路的设计思想是不同的,它是微电子设计领域的一场革命。SOC是从整个系统的角度出发,把处理机制、模型算法、软件(特别是芯片上的操作系统——嵌入式的操作系统)、芯片结构、各层次电路直至器件的设计紧密结合起来,在单个芯片上完成整个系统的功能。它的设计必须从系统行为级开始自顶向下。

本题研究的基础:I2C总线是电子产品中广泛应用的串行总线通讯协议,嵌入式系统的核心是CPU,以往采用的嵌入式CPU都是硬核器件,比如摩托罗拉公司的Coldfire, PowerPC等。最近几年出现了在FPGA片内实现的软核CPU。硬核CPU以硅片的形式提交给用户,而软核CPU则以设计文件的形式交付给用户,用户再根据自己的需求将其固化在FPGA 芯片内这种新出现的技术有着非常广阔的应用前景。

2

基于NIOS II的IC总线接口设计

2

本题研究的现状:随着微电子技术和计算机技术的发展,可编程逻辑器件、EDA技术、嵌入式系统、SOC、SOPC、IP、核等新概念和新技术层出不穷,新技术的应用迅速渗透到电子、通信、信息、机械制造、仪器仪表、航空航天、家用电器等领域,有力地推动了社会生产力的发展和社会信息化程度的提高[5]。

软核CPU的本质是一段实现特定功能的代码,需要一款合适的FPGA作为载体。Nios Ⅱ若配置在Cyclone Ⅱ中,只占用35美分的逻辑资源,若配置在Stratix Ⅱ中,可以实现超过20ODMIPS的高性能表现。在Cyclone Ⅱ中也可以达到超过lOODMIPS的表现,足以与中低密度的ASIC形成竞争。Nios Ⅱ不同于16位指令集的Nios,它是真正的32位软核CPU,具有32位的指令集、32位的数据路径和32位的寻址空间。Nios Ⅱ脱胎于Nios,并分化出7三个版本。一种是Nios Ⅱ/f,快速型;第二种是Nios Ⅱ/s,标准型;第三种是Nios Ⅱ/e,经济型。这三种产品都针对特定的价格和性能范围进行了优化,并都使用同样的指令集架构(ISA),具有100%二进制代码兼容性。快速版本的Nios Ⅱ具有最强的性能,其运算能力在175MHz时钟频率下可达大约200 Dhrystone MIPS(DMIPS)。它需要占用中等数量的FPGA资源,大约1180个逻辑单元。标准版本的性能略低于快速版本,其175MHz时钟频率下的运算能力为大约90DMIPS,但只需要占用800个逻辑单元。经济版本是三种版本中性能最弱的,其运算能力在190MHz时钟频率下仅能达到28DMIPS,但它所占用的FPGA资源最少,只需大约400个逻辑单元。可以根据自己设计的特定需求选择合适的软核。如果逻辑资源充裕,那么快速版本显然是首选。Nios Ⅱ处理器能通过Quartus Ⅱ开发软件中的SOPC Builder系统开发工具添加到设计者的系统中[6]。

关于Nios Ⅱ的开发现状。在baidu或google上用关键词Nios Ⅱ搜索,只有一些概要性的介绍,并无具体的开发实例报道。也曾经试图通过中国期刊网,以及国内较有影响力的水木清华等高校BBS的嵌入式开发版寻找相关资讯,但是少有收获。这也是正常的。Nios Ⅱ是Altera近几年新近推出的一款通用32位软核RISC CPU,目前作为开发板做教学、测试、实验的居多,比较著名的开发实例还没有,所以,可以说Nios Ⅱ还处于开始阶段。作为Altera免费提供的IP(intellectual property),根据Altera自己提供的资料,NiosⅡ软核在配合Stratix Ⅱ系列FPGA的情况下,可以实现超过20ODMIPS的性能表现。有这样美味的免费大餐可以吃,相信今后会有越来越多的人会加入Nios Ⅱ开发者的行列。

简要介绍一下国内外的几款Nios开发实例:

3

基于NIOS II的IC总线接口设计

2

1 无线阅读器 把Nios嵌入低成本FPGA Cyclone中,有小型化和低功耗两大特点,

执行数据处理和无线接收的功能。

2 光多业务节点 这是一款阿尔卡特开发的用于同步数字序列传输的产品。利用

Nios的定制指令功能和同步多Master总线结构(Avalon),实现了吉比特(Gigabite)速率码流的可靠传输。

3 ISDN协议处理器 飞利浦公司把Nios处理器运用于综合业务数字网的协议处理

器的在线更新。这一应用极大的提高了视频会议和IP网关服务的可靠性。 4 数码相机中的通用控制处理器 柯达公司在某型号的数码相机中成功的应用了

Nios处理器,作为DC的控制中枢。

5 国内对Nios的最高应用可能是某保密项目,该款应用同时使用了八个Nios软核,

把Avalon总线的多master功能发挥的淋漓尽致。

可以说,Nios是相当成功的。对比Nios,它的第二代Nios Ⅱ处理器更是青出于蓝而胜于蓝。Nios Ⅱ具备更强大的灵活性、更高的性能、更低的成本、占用更少的资源,能够满足各种嵌入式应用的性能要求。并且,Altera提供了更易用的Nios Ⅱ开发套件提供给客户。Altera曾将其两代软核做了对比,结果显示Nios Ⅱ只用了50%的逻辑单元就实现了2倍于Nios的性能[7]。

1.3.1 SOPC技术

SOPC(System-on-a-Programmable-Chip)即可编程片上系统,用可编程逻辑技术把整个系统放到一块硅片上,称作SOPC。可编程片上系统(SOPC)是一种特殊的嵌入式系统:首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。因此,著名的可编程逻辑器件生产厂家美国Altera公司提出了基于PLD的SOC设计方案——SOPC。

近年来SOPC技术已成为备受众多中小企业、研究所和大学院校青睐的设计技术。SOPC(System on a Programmable Chip)成为可编程片上系统,是Altera公司提出的一种灵活、高校的SOC解决方案,是一种新的软硬件协同设计的系统设计技术。SOPC集成了硬核或软核CPU、DSP、锁相环(PLL)、存储器、I/O接口及可编程逻辑,可以灵活高效地解决SOC方案,而且设计周期短,设计成本低 [8] 。Nios Ⅱ是一种软核

4

基于NIOS II的IC总线接口设计

2

(Soft-Core)处理器,软核处理器最大的特点就是可由用户需要进行设置。与专用CPU不同的是,Nios Ⅱ是一个用户可以自行定制的CPU,用户可以增加新的外设、新的指令,分配外设的地址等。Nios Ⅱ的硬件开发就是由用户制定适合的CPU外设,Altera公司的SOPC Builder提供了大量的IP Core来加快Nios Ⅱ外设的开发速度。综合来看,SOPC是PLD和ASIC技术融合的结果,可以认为SOPC代表了半导体产业未来的发展方向,对SOPC进行深入的研究不仅有利于半导体产业的发展,同时对微电子技术和计算机技术的发展也具有重要的意义。

SOPC技术主要应用以下三个方向:

1 基于FPGA嵌入IP硬核的应用。这种SOPC系统是指在FPGA中预先植

入处理器。这使得FPGA灵活的硬件设计与处理器的强大软件功能有机地结合在一起,高效地实现SOPC系统。

2 基于FPGA嵌入IP软核的应用。这种SOPC系统是指在FPGA中植入软

核处理器,如:NIOS Ⅱ核等。用户可以根据设计的要求,利用相应的EDA工具,对NIOS Ⅱ及其外围设备进行构建,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足用户系统设计的要求。

3 基于HardCopy技术的应用。这种SOPC系统是指将成功实现于FPGA器

件上的SOPC系统通过特定的技术直接向ASIC转化。把大容量FPGA的灵活性和ASIC的市场优势结合起来,实现对于有较大批量要求并对成本敏感的电子产品,避开了直接设计ASIC的困难。

本设计是基于FPGA嵌入IP软核的应用用,在硬件设计中植入NIOS Ⅱ软核处理器,根据I2C总线的设计要求,对对NIOS Ⅱ及其外围设备进行构建。

1.3.2 Quartus II

Quartus Ⅱ 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus Ⅱ是继承Altera Max+plus Ⅱ后的新一代开发工具,适合大规模FPGA的开发。Quartus Ⅱ提供了更优化的综合和适配的功能,改善了对第三方仿真和时序分析工具的支持[9]。Quartus Ⅱ还包含DSP Builder和SOPC Builder等

5

基于NIOS II的IC总线接口设计

2

开发工具,支持系统级的开发,支持NIOS Ⅱ嵌入式核IP核和用户自定义逻辑。Quartus Ⅱ支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

SOPC Builder是Quartus Ⅱ开发套件之一,支持Nios Ⅱ嵌入式核的开发与调试,可设置 、评估SOPC体系结构。SOPC Builder避免了手动系统集成任务,使设计者能够将精力集中在定制用户逻辑设计上,在更高级抽象层上进行设计。SOPC Builder能够定制常用的SOPC Builder组件、IP核,高效地连接外部处理器和SOPC Builder可用IP库,自动生成系统HDL,形成优化的系统架构。SOPC Builder评估自动系统开发工具提供了强大的开发平台,可构成包括处理器、外设和存储器接口等常用系统组成的总线系统。通过Altera Quartus Ⅱ开发软件中的SOPC Builder系统开发工具很容易地创建专用的处理器系统,并能够根据系统的需求添加Nios Ⅱ处理器核的数量。本设计采用的是Quartus Ⅱ 8.0版本进行的系统开发。

1.3.3 Nios II

Nios Ⅱ嵌入式处理器是Altera公司推出的采用哈佛结构、具有32位指令集的第二代片上可编程的软核处理器, 其最大优势和特点是模块化的硬件结构, 以及由此带来的灵活性和可裁减性。相对于传统的处理器, Nios Ⅱ系统可以在设计阶段根据实际的需求来增减外设的数量和种类[10]。设计者可以使用Altera 提供的开发工具SOPC Builder, 在PLD器件上创建软硬件开发的基础平台, 也即用SOPC Builder创建软核CPU和参数化的接口总线Avalon。在此基础上, 可以很快地将硬件系统(包括处理器、存储器、外设接口和用户逻辑电路)与常规软件集成在单一可编程芯片中。而且, SOPC Builder还提供了标准的接口方式,以便用户将自己的外围电路做成Nios Ⅱ软核可以添加的外设模块。这种设计方式, 更加方便了各类系统的调试。

Nios Ⅱ处理器具有完善的软件开发套件,包括编译器、集成开发环境(IDE)、JTAG调试器、实时操作系统(RTOS)和TCP/IP协议栈。Nios Ⅱ集成开发环境(integrated development environment, IDE)是Nios Ⅱ系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以在Nios Ⅱ IDE下完成,包括编辑、编译和调试程序。

6

基于NIOS II的IC总线接口设计

2

1.4 IC接口芯片24LC04

24LC04系列芯片是采用I2C总线标准的常用的串行EEROM芯片。本文以24LC04为例介绍。24LC04具有2×256×8(4 k)bit的存储容量,即总共32页,每页有8字节的容量。每次写入数据是从主器件发送来的片内选择地址开始写人,如果写到页末尾,主器件还在继续发送的话,不会自动转到下一页,而是从该页的头地址开始继续写入,覆盖该页的原有数据,而造成数据丢失。24LC04工作于从器件方式,它的地址由外围的3个引脚A2、A1、A0决定,如图1-1所示。在I2C总线上总共可以连接8个24LC04接口芯片,每个器件硬件地址与控制寄存器的地址内容保持一致,就能够自由地与主控器件进行数据传输。

2

图1-1 24LC04电路图

在字节写模式下,发送器件写控制字,控制字包括4位固定器件码,3位片选码,以及一位低电平的写控制位。主器件在收到从器件产生应答信号后,主器件发送一个8位字节地址写入AT24C02。主器件在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。AT24C02再次应答,并在主器件产生停止信号后开始内部数据的擦写,在内部擦写过程中,AT24C02不再应答主器件的任何请求。

对AT24C02读操作的初始化方式和写操作时一样,仅把R/W位置为1。随机读操作允许主器件对寄存器的任意字节进行读操作,主器件首先通过发送起始信号、从器件地址和它想读取的字节数据的地址执行一个伪写操作。在AT24C02应答之后,主器

7

基于NIOS II的IC总线接口设计

2

件重新发送起始信号和从器件地址,此时R/W位置1,AT24C02响应并发送应答信号,然后输出所要求的一个8位字节数据,主器件不发送应答信号但产生一个停止信号。在设计中使用具有I2C总线通信的24LC04来验证接口的实现。

1.5 本章小结

本章主要介绍论文设计的背景,简介了基于Nios II嵌入式设计的现状,阐述了对SOPC未来前景的展望,并对开发FPGA所用到的Altera公司软件进行了简单的介绍。为后续的工作做了铺垫。

8

基于NIOS II的IC总线接口设计

2

2

第二章 IC总线技术研究

I2C 是作为英特尔IC 的互补,这种总线类型是由菲利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ICS) ,I2C是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。这种方式简化了信号传输总线。随着大规模集成电路技术的发展,把CPU和一个单独工作系统所必需的ROM、RAM、I/O端口、A/D、D/A等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的CPU,各种容量的ROM、RAM以及功能各异的I/O接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行总线,另一种是串行总线。由于串行总线的连线少,结构简单,往往不用专门的母板和插座而直接用导线连接各个设备。因此,采用串行线可大大简化系统的硬件设计。PHILIPS公司早在十几年前就推出了I2C串行总线,利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能。因此,这是一种高性能的串行总线。

飞利浦电子公司日前推出新型二选一I2C主选择器,可以使两个I2C主设备中的任何一个与共享资源连接,广泛适用于从MP3播放器到服务器等计算、通信和网络应用领域,从而使制造商和终端用户从中获益。PCA9541可以使两个I2C主设备在互不连接的情况下与同一个从设备相连接,从而简化了设计的复杂性[11]。此外,新产品以单器件替代了I2C多个主设备应用中的多个芯片,有效节省了系统成本。

2.1 IC总线特点

I2C总线是由PHILIPS公司提出的总线协议。I2C总线作为广泛使用的串行总线,他的主要的优点是简单性和有效性。其占用引脚少,仅需要两条总线线路:一条串行数据线SDA和一条串行时钟线SCL。因此,I2C总线的占用空间非常小,减少了占用的引脚数量。

总线可以达到25英尺的连接长度,串行8位双向数据传输速率在标准模式下达到100达到kbit/s,快速模式下400kbit/s,高速模式下达到3.4Mbit/s。

连接到总线的每一个器件都可以通过唯一的地址和一直存在的简单的主从机关系软件设定地址,主机可以作为主机发送器或主机接收器。I2C是一个多主机总线,其中任何能接受和发送数据的设备都可以成为总线。如果多个主机同时初始化,数据的传输

9

2

基于NIOS II的IC总线接口设计

2

可以通过冲突检测和仲裁防止数据被破坏。

在连接到同一总线上的IC数量仅受最大电容400pf限制。

下面介绍I2C总线的通用术语。如表2-1所示[12]。I2C总线是由PHILIPS公司提出的总线协议。I2C总线作为广泛使用的串行总线,他的主要的优点是简单性和有效性。其占用引脚少,仅需要两条总线线路:一条串行数据线SDA和一条串行时钟线SCL。因此,I2C总线的占用空间非常小,减少了占用的引脚数量。

总线可以达到25英尺的连接长度,串行8位双向数据传输速率在标准模式下达到100达到kbit/s,快速模式下400kbit/s,高速模式下达到3.4Mbit/s。

连接到总线的每一个器件都可以通过唯一的地址和一直存在的简单的主从机关系软件设定地址,主机可以作为主机发送器或主机接收器。I2C是一个多主机总线,其中任何能接受和发送数据的设备都可以成为总线。如果多个主机同时初始化,数据的传输可以通过冲突检测和仲裁防止数据被破坏。

在连接到同一总线上的IC数量仅受最大电容400pf限制。 下面介绍I2C总线的通用术语。如表2-1所示[12]。

表 2-1 I2C总线的通用术语

术语 发送器

接收器 主机 从机 多主机 仲裁 同步

描述

发送数据到总线的器件 从总线接收数据的期间

初始化发送、产生时钟信号和终止发送的器件

被主机寻址的器件

同时有多于一个主机尝试控制总线,但不破坏报文

是一个在有多个主机同时尝试控制总线,但只允许其中一个控制总线并

使报文不被破坏的过程

两个或多个器件同步时钟信号的过程

2.2 IC总线工作原理

2.2.1 总线的构成和信号类型

I2C总线由数据总线SDA和时钟总线SCL构成的串行总线,实现发送和接受数据。在微控制器于被控制IC之间,IC于IC之间进行双向的数据传送,最高传送速率100Kbps。连接在总线上的被控制电路,就像电话一样,只有拨通各自号码才能工作,

10

2

基于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

基于NIOS II的IC总线接口设计

2

协议栈。

在FPGA中使用软核处理器比硬核的优势在于,硬核实现没有灵活性,通常无法使用最新的技术。随着系统日益先进,基于标准处理器的方案会被淘汰,而基于Nios Ⅱ处理器的方案是基于HDL源码构建的,能够修改以满足新的系统需求,避免了被淘汰的命运。将处理器实现为HDL的IP核,开发者能够完全定制CPU和外设,获得恰好满足需求的处理器。

表2-2-2 Nios Ⅱ 软核处理器特性

种类

CPU结构

特性 32位指令集 32位数据宽度

种类 片内调试

特性

基于边界扫描测试(JTAG)的调试逻辑,支持硬件断点、数据触发以及片内外调试跟踪 最多可达256个用户定义的CPU指令

Nios Ⅱ的集成开发环境(IDE) 硬件辅助的调试模块

32个通用寄存器 定制指令 32个外部中断源 2GB寻址空间

软件开发工基于GNU 的编译器

Nios Ⅱ处理器核 Nios Ⅱ处理器系列由三个不同的内核组成,可以灵活地控制成本和性能,从而拥有广泛的应用空间。

1 JTAG调试模块: JTAG调试模块提供了通过远端PC主机实现Nios Ⅱ处理器

的在芯片控制、调试和通讯功能,这是Nios Ⅱ处理器的一个极具竞争力的特性。 2 用户指令: 开发人员可以在Nios Ⅱ CPU 核内增加硬件,用以执行复杂运算

任务,为时序要求紧张的软件提供加速算法。

3 外围设备及接口: Nios Ⅱ开发套件包括一套标准外围设备库,在Altera的

FPGA中可以免费使用。

Avalon交换式总线 Avalon交换式总线在处理器、外围设备和接口电路之间实现网络连接,并提供高带宽数据路径、多路和实时处理能力。Avalon交换式总线可以通过调用SOPC Builder设计软件自动生成[17]。

3.3 本章小结

本章主要介绍了开发过程中使用的Quartus Ⅱ软件和Nios IDE软件,介绍了Nios Ⅱ

16

基于NIOS II的IC总线接口设计

2

处理器的开发过程和使用方式,为后续的设计做准备。

17

基于NIOS II的IC总线接口设计

2

第四章 硬件开发流程

4.1 系统需求和设计思路

在NIOS Ⅱ开发过程中,硬件抽象层提供多种一般模式类设备,使得开发者可以高效的在系统中添加或使用这些设备,在SOPC Builder中提供了多种一般模式类的设备,例如:CPU、SDRAM、Flash、JTAG UART等。然而对不属于一般模式类的新设备的使用将不能按照原有的设计方法进行系统开发,根据Nios Ⅱ内部总线规范提供一个设备驱动,并按照SOPC Builder要求集成到硬件抽象层中。I2C总线实现需要FPGA的最小系统,并且需要两个PIO接口作为I2C的总线,一条SCL时钟总线,一条SDA数据总线[18]。

4.2 基于Nios II的硬件开发设计

首先打开Quartus Ⅱ,新建一个工程,需先建立设计模块的工程(Project)单击菜单“File->New Project Wizard...”,工程建立的芯片设置如下图所示,在工程目录中不要有中文和空格存在,否则会导致软件出错。在这里我将工程名定义为I2C,保存在E盘的根目录下。根据实际开发板情况配置芯片,我在这里选择的是Cyclone Ⅱ系列的EP2C8Q208C8芯片。

图4-1 Quartus II新建工程

18

基于NIOS II的IC总线接口设计

2

图4-2 I2C起始和停止条件

芯片配置好以后点击下一步Next,直到显示如图,到此工程配置就完成了。上面显示工程目录E:/i2c/,工程名称为i2c,芯片为Cyclone Ⅱ系列的EP2C8Q208C8。工作电压1.2V。

19

基于NIOS II的IC总线接口设计

2

图4-3工程信息

工程配置好后,我们就进入了工程的界面,在这里我们需要添加空白的电路文件,在软件工具栏中选择File,选择New,如图我们可以看到许多的文件类型,在这里我们选择Block Diagram/Schematic File这个选项点击OK。这样就建立了一个空白的底层电路图文件。

20

基于NIOS II的IC总线接口设计

2

图4-4

4.3 定义Nios II

工程配置好后,接下来用Quartus Ⅱ的SOPC Builder定义Nios Ⅱ。 在QuartusⅡ 9.0中,点击工具栏中右侧的SOPC Builder组件的图标

,或者单击

菜单“Tools->SOPC Builder…”,打开SOPC Builder工具箱。下图是添加完整组件的SOPC Builder配置:

21

基于NIOS II的IC总线接口设计

2

图4-5 SOPC配置

下面详细介绍各个组件添加步骤:

进入SOPC构建界面,首先定义系统的名字,将其定义为kernel,选定为Verilog语言。在工具的左侧可以选择为系统定义的内核,在此我们需要构建一个最小系统,包括内核CPU,EPCS,SDRAM,JATG UART以及两个PIO口用来实现I2C总线通信。

4.3.1 加入Nios II CPU CORE

双击左侧选择组件栏中的NiosⅡ Processor,弹出配置对话框。NIOS Ⅱ有三 种内核,经济型,快速型和标准型内核。在此添加快速型内核才能满足工程的正常运行。

22

基于NIOS II的IC总线接口设计

2

图4-6 Nios II内核选择

Nios Ⅱ处理器系列包括三种内核快速(Nios Ⅱ/f)、标准(Nios Ⅱ/s)和经济型(Nios Ⅱ/e),每一个型号都针对价格和性能范围进行了优化。所有这些内核共享32位指令集系统,与二进制代码100%兼容。

这里使用快速型,复位向量Reset Vector选择EPCS,EPCS是串行FLASH,内部存储掉电不丢失,用于存储源代码。上电后从EPCS中读取代码放入SDRAM中运行。异步向量Exception Vector选择SDRAM,当程序异常时,从SDRAM中读取代码。

在第四标签页JTAG Debug Module中,有四种JTAG调试的模式,选择第一种调试模式,如下图所示,之后点击Finish完成CPU的定制。

23

基于NIOS II的IC总线接口设计

2

图4-7 调试模式

4.3.2 加入EPCS和SDRAM

在Memories and Memory Controllers下选择添加EPCS和SDRAM。如图所示。

图4-8 EPCS设置

在选择SDRAM Controller,在这里使用的是16位总线的SDRAM如图配置。

24

基于NIOS II的IC总线接口设计

2

图4-9 SDRAM设置

4.3.3 System ID Peripheral

添加System ID Peripheral,System ID是唯一的,可以通过上面的数值验证Quartus Ⅱ和Nios Ⅱ是一一对应的。

图4-10 System ID设置

4.3.4 加入JTAG UART组件

双击左侧选择组件栏中interface Protocols->Serial->JTAG UART。选用所有的默认设置,点击“Finish”完成添加,如下图所示:

25

基于NIOS II的IC总线接口设计

2

图4-11 JTAG UART设置

4.3.5 加入I2C总线的SCL和SDA总线

加入两个PIO接口,然后定义为I2C总线的两条总线SCL,SDA。其中SCL为单向总线,只为输出;SDA为双向数据传输总线。

图4-12 I2C时钟总线SCL

26

基于NIOS II的IC总线接口设计

2

图4-13 I2C数据总线SDA

4.3.6 地址自动分配

添加完元件成后,要为每个外设分配及地址和中断请求优先级(IRQ)。SOPC Builder 提供Auto-Assign Base Addresses和Auto-Assign IRQs命令,这两个命令可分别简单分配外设基地址和中断优先级。所有组件添加完毕后进行编译[19]。

图4-14 SOPC编译图

编译成功后,就可以退出SOPC Builder。

重新进入Quartus Ⅱ界面,在电路上双击左键,弹出器件添加的工具栏,选择刚刚编译好的Nios Ⅱ内核,放置在空白处。

27

基于NIOS II的IC总线接口设计

2

图4-15 定义的kernel

为了使系统运行起来,还需要配置一个锁相环PLL。在空白处双击左键点击MegaWizard Plug选项。选择Create a new custom megafunction variation选项进入插件选择,选择I/O下面的ALTPLL,在右侧命名为PLL选择Verilog HDL选项点击下一步完成[20]。

图4-16 添加PLL

设置PLL如图,开发板上的晶振为20M,这里选择5倍倍频100M.

28

基于NIOS II的IC总线接口设计

2

图4-17 锁相环倍频设置

将配置好的PLL模块放置在电路中。将Nios Ⅱ内核与PLL连接并引出引脚,全部完成后如图。

图4-18 整体电路

接下来为画好的硬件电路分配引脚。这里使用TCL脚本文件进行配置。完成后编译。

图3-19 配置引脚

到此硬件配置完毕。

29

基于NIOS II的IC总线接口设计

2

4.4 本章小结

本章详细介绍了使用Quartues II来配置SOPC,使用Nios II内核来构建I2C总线接口的方法,着重介绍了SOPC的设置,是对I2C嵌入式硬件设置的一个详细介绍,为后续的Nios II软件编程奠定了基础。

30

基于NIOS II的IC总线接口设计

2

第五章 软件设计

Quartus Ⅱ配置完成后,进行Nios IDE软件的开发。

打开Nios IDE软件,点击File选择Nios Ⅱ C/C++ Application。在SOPC Builder System PTF File选择Quartus Ⅱ工程文件目录下的.ptf格式文件。新建一个空的工程。

图5-1 添加NIOS II工程

这样建立工程后,在工程内添加的程序。程序添加后进行编译。

31

基于NIOS II的IC总线接口设计

2

图5-2 NIOS II IDE

5.1 功能描述

实验中是使用I2C总线与EEPROM 24LC04进行通信,对该芯片进行读写512字节数据的操作,过程如图。

初始化I2C总线初始化I2C总线初始化写入24LC04地址找到24LC04器件N写入24LC04地址找到24LC04器件N是否找到器件是否找到器件Y读出24LC04中数据Y向24LC04中写入数据读取是否成功Y书写是否成功将读取的数据打印出来Y将写入的数据打印出来读取数据与写入数据对比释放总线打印对比结果

32

基于NIOS II的IC总线接口设计

2

图5-1 程序流程图

5.2 本章小结

本章详细介绍了程序流程,描述了如何使用C语言代码对I2C总线进行实现,如何使用FPGA进行代码实现。

33

基于NIOS II的IC总线接口设计

2

.第六章 硬件调试与仿真

前几章的工作已经将FPGA的I2C接口配置完成,下面将使用配置好的I2C总线接口与具有I2C总线协议的芯片进行通信,我使用的是24LC04,4K的EEPROM,通过对其内部写入512个数值,然后读出24LC04内部数据并和先前写入数据进行比较并打印,这样来验证基于Nios Ⅱ的I2C总线接口是否实现[21]。

6.1 硬件调试仿真

首先将FPGA开发板通过USB-Blaster与电脑在掉电情况下连接,连接后上电。打开Nios IDE打开先前建立的I2C工程,在工具栏点击Tools选择Quartus Ⅱ Programmer点击打开。进入程序烧写界面,在Hardware Setup处选择USB-Blaster,点击Start这样程序就烧写到了FPGA开发板中。

图6-1

退到Nios IDE界面,在左侧工程栏中右键点击工程选择Run as再选择Nios Ⅱ hardware,开始进行硬件仿真。在Console界面中可以看到仿真结果,结果如图。

34

基于NIOS II的IC总线接口设计

2

图6-2

图6-3

通过仿真结果可以看到,对24LC04芯片的写入数据和读取数据都成功,说明通过Nios Ⅱ配置的I2C接口总线得到实现。设计成功。

6.2 本章小结

本章使用Quartues II来配置SOPC,使用Nios II内核来构建I2C总线接口的,连接硬件开发板进行线上调试,使用JTAG UART串口仿真,得到仿真结果,验证了I2C接口的实现。

35

本文来源:https://www.bwwdw.com/article/2513.html

Top