logo资料库

基于FPGA的SPI接口设计.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
Ù 军 事 通 信 技 术 Ù V o l. 25 N o. 2  Jun. 2004  Ξ 2 2 2 2 第 25 卷 第 2 期 2004 年 6 月 Jou rnal of M ilitary Comm un ication s T echno logy SP I 总线接口的 F PGA 设计与实现 杨承富1, 徐志军2 (1. 解放军理工大学通信工程学院研究生 2 队, 江苏 南京 210007; 2. 解放军理工大学通信工程学院电子信息工程系) 摘 要: 文中介绍了采用 A lterea 公司 FL EX10K 型的 FPGA 器件实现串行外设接口 (SP I) 的原理与过程, 给出了逻辑框图以及部分 V erilog 代码。 用此种方法实现的接口与专用接口芯片相比, 具有使用灵活, 系统配置方 便的优点。 关键词: 串行外设接口; 现场可编程门阵列; V erilog 硬件描述语言 中图分类号: T P336 文献标识码: A 文章编号: 0032 1289 (2004) 02 0072 05 D e s ign a nd Im p lem e n t S P I B us In te rfa ce w ith FPGA YA N G Cheng f u 1, X U Z h i jun 2 (1. Po stgraduate T eam 2 ICE, PLAU ST , N an jing 210007, Ch ina; 2. D epartm en t of Eelctron ic Info rm ation Engneering ICE, PLAU ST ) A bs tra c t: T he theo ry and the w ay of in terface w ith FPGA are in troduced, and the b lock diagram and som e V erilog code are p resen ted. T he ch ip im p lem en ted in th is w ay has m o re agility and is m o re conven ien t to configu re than o thers. im p lem en ting a SP I Ke y w o rds: SP I in terface; FPGA ; V erilog HDL 串行外设接口 SP I(Serial Perip heral In terface) 是M o to ro la 公司推出的一种同步串行接口。M o to ro la 公 司生产的绝大多数单片机都配有 SP I 硬件接口, 如 68 系列单片机。但也有许多单片机没有 SP I 接口, 在需要 应用 SP I 进行通信的场合, 就需要对其进行 SP I 接口扩展。SP I 接口的扩展有硬件和软件两种方法, 软件模 拟 SP I 接口方法虽然简单方便, 但是速度受到限制, 若用来进行通信, 则速度不会很高。 因此我们可以用 FPGA 来实现 SP I 接口, FPGA 的速度很高, 可以实现高速串行通信。 根据 SP I 总线的电气特性, 我们采用 AL T ERA 公司的 FL EX 10K 系列 FPGA 器件设计并实现了 SP I 总线的通信接口, 该总线接口具有高速、易 调试、配置灵活等等优点, 大大地减少了系统的开发周期。 1 SP I 简介 SP I 接口是工业标准的同步串行接口, 是一种全双工、三线通信的系统。 它允许处理器与各种外围设备 以串行方式 (8 位数据同时、同步地被发送和接收) 进行通信。 在 SP I 接口中, 数据的传输需要 1 个时钟信号 和两条数据线。 SP I 总线由四根线组成: 串行时钟线 (SCK ) , 主机输出 从机输入线 (M O S I) , 主机输入 从机输出线 (M ISO ) , 还有一根是从机选择线 (SS) , 它们在与总线相连的各个设备之间传送信息。 06 收稿日期: 2003 作者简介: 杨承富 (1980- © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 05; 修回日期: 2003 ) , 男, 硕士生. 06 20
 第 2 期               杨承富等: SP I 总线接口的 FPGA 设计与实现 37 SP I 总线中所有的数据传输由串行时钟 SCK 来进行同步, 每个时钟脉冲传送 1 比特数据。SCK 由 主机产生, 是从机的一个输入。 时钟的相位 (CPHA ) 与极性 (CPOL ) 可以用来控制数据的传 输。CPOL =“0”表示 SCK 的静止状态为低电平, CPOL =“1”则表示 SCK 静止状态为高电平。时钟 相位 (CPHA ) 可以用来选择两种不同的数据传输 模式。如果 CPHA =“0”, 数据在信号 SS 声明后的 第一个 SCK 边沿有效; 而当 CPHA =“1”时, 数据 在信号 SS 声明后的第二个 SCK 边沿才有效。 因此, 主机与从机中 SP I 设备的时钟相位和极 性必须要一致才能进行通信。图 1 和图 2 分别 为不同相位与极性的时钟控制下的数据传输模 式。 图 1 CPHA = 0 时的传输模式 SP I 可工作在主模式或从模式下。 在主模 式, 每一位数据的发送 接收需要 1 次时钟作 用; 而在从模式下, 每一位数据都是在接收到时 钟信号之后才发送 接收。一个典型的 SP I 系统包括 1 个主M CU 和 1 个或几个从外围器件, 如图 3 所示。单 片机通过 SP I 接口模块与好几个从机设备以及另一个主机设备相连。 当该单片机以主机模式运行时, 就可 以与系统中的从机进行通信, 而当它以从机模式工作时, 就能与另外一个主机进行数据的通信。 但同一时间 内系统中只能有一个主机, 否则系统就不能正常工作。 图 2 CPHA = 1 时的传输模式 2 SP I 总线接口模块设计 我们最终设计的目标是用硬件描述语言建立一个 SP I 总线接口模块, 也就是建立一个可以复用的 IP 核, 并用 FPGA 来实现。 并且可以将设计好的模块保存, 应用于其它需 要此模块的系统中, 减少大型设计的工作量。 2. 1 SP I 接口模块的建立 我们设计的最终目标就是生成如图 4 所示的一个模块。 各管脚的 定义为: clk 为外部时钟信号, 一般由单片机来提供; rst 为复位信号, 当 其处于有效时, 系统恢复起始状态; datai 与 datao 分别为 SP I 接口的输 入输出并行数据线, 用来和单片机交换数据; addr 为输入地址线, 单片 机用来对内部寄存器进行读写编址; rd 和w e 分别为单片机读写信号输 入管脚; sck i 为从模式下的串行时钟输入, scko 为主模式下的时钟输出; m o si 和 m iso 分别为主机输出从机接收、从机输出主机接收的串行数据线; 当该模块作 为从机时, ss 是别的主机的选择信号; sso (7∶0) 是其作为主机时从机选择信号 输出, 可以与 8 个从机相连。 图 3 典型 SP I 系统组成 2. 2 SP I 接口电路结构的设计 按照设计目标, 根据需要实现的功能, 我们将 SP I 接口划分成几个模块, 这 些模块独自完成一定的任务, 结合起来实现通信接口功能。划分模块以后, 可以 更方便地用硬件描述语言对其进行描述。 图 4 SP I 接口模块封装外观图 © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
2 47                军 事 通 信 技 术                2004 年  如图 5 所示, 我们将要设计的 SP I 接口电路分 成两个主要功能块—— 微处理器接口部分、SP I 总 线接口部分。 因为 SP I 有主从两种工作模式, 我们 设计的目的就是使一块 FPGA 芯片能够实现主从 模式 SP I 接口电路的全部功能。图 2 中, 单片机接口 部分电路在主模式与从模式下大致差不多, 而 SP I 总线接口部分却有很大的不同。 主模式下, 串行时 钟产生控制模块对外部时钟进行分频得到串行通 信时钟——SCK, 因此它就相当于一个分频器。 而 在从模式下, SCK 由外部输入, 该模块就不起作用, 完全可以省略。 主要组成部分的功能阐述如下: 8 比特读缓冲器与移位寄存器——SP I 的核心 单元。其中发送端是单缓冲, 而接收是双缓冲。实际 上就是新发送的数据直到前一个数据发送结束才 能写进移存器; 接收到的数据是被送到一个并行的 读数据缓冲器中以使得移存器能够自由的接收第 二个串行数据, 只要第一个数据在第二个数据准备 发送前被读出缓冲器, 就不会产生数据的溢出。 图 5 SP I 接口结构图 控制寄存器——随时可以被单片机读写, 是用来对本接口电路进行配置的, 一般由微处理器对其进行配 置。 可以控制传输模式 (主或是从) , 控制 SP I 时钟的极性和相位以及传输速率。 状态寄存器——包含了发送完成或者系统出错的标志位。 当相应的事件方式时, 这些标志自动设置, 清 除则由软件来完成。 从选择寄存器——当主机传送数据时用来确定哪个从选择输出有效。当 SP I 主机传送开始时, SSCR 寄 存器的内容自动赋给管脚 SSO (7) SSO (0)。 SCK 产生控制模块——主模式下产生串行时钟 SCK, 软件利用控制寄存器 (SPCR ) 里面的两个比特可 以选择四种串行时钟极性与相位的组合。 时钟的极性由 CPOL 控制比特确定, 选择高电平有效或是低电平 有效对传送模式没多大影响。时钟相位控制比特 (CPHA ) 选择两种基本传输模式中的一种。从模式下只用来 接收主机产生的 SCK, 用来控制数据的传输。 SP I 控制器—— 决定主 从操作模式并对传输进行控制。SP I 控制器决定传输速度和模式 (相位和极 性) , 还负责产生中断需求与检测错误。 3 SP I 的 Ver ilog 描述 V erilog HDL 是硬件描述语言的一种, 用于数字电子系统的设计。它允许设计者用它来进行各种级别的 逻辑设计, 可以用它来进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件 描述语言。 在这里, 我们主要用它对设计目标进行 R TL (寄存器传输) 级的描述, 编写出可综合的V erilog 模 块。 3. 1 SP I 接口电路的 Ver ilog 实现 在这里, 我们采用的是自顶向下 (TO P DOW N ) 的设计方法, 从系统级开始, 把系统划分为几个基本的 单元, 依据需要还可以将这几个基本单元再进行细划分。 本设计的系统划分如图 6 所示。 整个设计的 SP I 接口电路由两大部分组成——单片机接口模块和 SP I 总线接口模块, 总线接口模块又 分为数据发送模块、数据接收模块以及收发控制模块。下面就可以按照划分的功能块逐个编写其V erilog 代 © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
 第 2 期               杨承富等: SP I 总线接口的 FPGA 设计与实现 57 码。 本设计采用有限状态机来实现时序电路。有限状态机是时序 电路设计中经常采用的方式, 尤其适应于设计数字系统的控制模 块, 是许多数字电路的核心。与其它设计方案相比, 状态机有无可 比拟的优越性, 具有结构模式简单、程序层次分明、运行速度快以 及可靠性高的优点[ 1 ]。 下面我们就用有限状态机来实现主模式下 SP I 控制器部分 的时序。主模式下 SP I 控制器状态机的任务有: 产生从选择信号; 控制 SP I 移位寄存器的移位与装载数据的操作; 监测 SP I 总线的状态以确定什么时候数据发送完成; 产生时钟任 务信号以控制输出时钟到 SP I 总线的时机; 如果一个字 节数据传输结束后 STA R T 信号依然有效的话, 状态机 就接着传输下一个字节数据且 SCK 信号继续有效。主模 式下 SP I 控制器状态机的状态转化如图 7 所示。 图 6 SP I 接口 verilog 描述的模块划分 状态机开始时处于初始状态 ( IDL E) , 一直到 SP I 控 制寄存器中的 STA R T 比特位置 1, 同时 SP I 状态寄存器 中 XM IT - EM 比特位为 0 (表示发送寄存器非空) 才进入 下一个状态A SSER T - SS1, 此状态下系统产生用于输出 的从机选择信号。 再经过一个内部 SCK 时钟的上升沿 (SCK - IN T - R E = 1) 后进入 A SSER T - SS2 状态, 此状态 与上一个状态没有两样, 目的是使从机选择信号持续时 间更长一点, 一直持续到下一个时钟下降沿, 以适应不同 从机的需要。在不同信号的作用下, 控制状态机在以上各状态之间转化, 在不同状态下完成各种各样的功能, 全部状态就包含了控制器要完成的全部控制功能。 图 7 SP I 控制状态机 状态图建立好了后, 需要对状态进行编码, 我们采用的是独热 (O ne Ho t) 编码。 这种编码方式用 n 个触 发器实现有 n 个状态的状态机, 虽然使用了较多的触发器, 但可以省下许多组合电路, 使得电路复杂度和可 靠性有了显著的提高。 这对于含有较多的时序逻辑资源, 较少的组合逻辑资源的 FPGA 器件是一种很好的 编码方式[ 2, 3 ]。 V erilog 有多种方法来描述状态机, 我们用最常用的 alw ays 语句和 case 语句。 param eter   ID EL      = 11′b00000000001, …… N EGA T E - SS = 11′b10000000000; alw ays@ (po sedge sck)  if (reset)   begin    state< = IDL E;     ……    end   else    case (state)     IDL E:  begin …… end    ……    endcase © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
Ù 67                军 事 通 信 技 术                2004 年  3. 2 仿真与验证 将要设计的 SP I 接口电路用V erilog 语言描述好了以后, 用 synp lify 对其进行综合, 再用A ltera 公司的 软件对生成的网表文件进行编译仿真, 部分管脚的仿真结果见图 8。 可以看出, 功能仿真的结果 m axp lu s- 完全正确。 综合、仿真完成后, 我们用 具体的器件对设计进行了验 证。我们选用的是A ltera 公司 的 FPGA 器件。A ltera 公司的 FPGA 器件内部连线采用连续 式互连结构, 即采用同样长度 的一些金属线实现逻辑单元之 间的连接, 这种结构的优点是 其延时可预测。从互连结构看, 这 样 的 器 件 属 于 CPLD , 但 A ltera 公 司 的 FL EX、A PEX 系列器件同时具有 FPGA 的 典型特点, 如精细分割的结构 和大量的寄存器等, 因此把它 们归结为 FPGA。可以说 A ltera 公司的 FPGA 器件集 FPGA 和 CPLD 两种结构之优点, 可以满足各个方面 的应用需求[ 3 ]。 本设计采用 FL EX10K 系列中的 PF 10K20TC144 3 来实现了 SP I 的总线通信接口, 该芯片 共有 1152 个逻辑单元, 本设计使用了 860 个, 占全部资源的 74%。 布局布线后, 经测试, FPGA 的速度最高 可以达到 144 M H z, 符合设计要求, 达到了预期的目的。 图 8 仿真波形 4 结束语 随着技术的不断进步, CPLD FPGA 的速度越来越快, 包含的门数成倍增加, 价格也越来越合理。因此, 我们可以利用其应用方便、开发装置简单的优点, 用它们来实现符合不同需要的多种电路, 缩短科研开发的 周期。 参考文献: [ 1 ] 徐志军, 徐光辉. CPLD [ 2 ] 夏宇闻. 复杂数字逻辑系统的 V erilog HDL 设计技术和方法[M ]. 北京: 高等教育出版社, 2001. [ 3 ] 王金明, 杨吉斌. 数字系统设计与 V erilog HDL [M ]. 北京: 电子工业出版社, 2002. FPGA 的开发与应用[M ]. 北京: 电子工业出版社, 2002. 陈太一顾问逝世 著名通信信息工程技术专家、教育家、中国工程院院士, 我刊顾问陈太一同志因病医治无效, 于 2004 年 5 月 6 日在北京逝世, 享年 83 岁。 陈太一顾问生前为我国、我军的通信事业做出了杰出贡献, 对我刊自创刊以来就不间断地关注、关心、指 (本刊讯) 导, 并亲自撰稿, 担任我刊顾问以来做了大量的重要工作。 我刊将永远的怀念他、纪念他。 © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
分享到:
收藏