一种可复用的高速SPI总线的设计

发布者:qinghong最新更新时间:2024-07-18 来源: eepw关键字:可复用  CPU 手机看文章 扫描二维码
随时随地手机看文章

长期以来,外围设备与主机CPU速度之间的不匹配始终困扰着人们,影响了计算机系统更迅速的发展,成为系统基本I/O的瓶颈问题。随着计算机处理能力及存储规模的迅速增长,这个问题表现得更加突出。为此人们采取了各种软、硬件的方法,不断地改善着CPU与I/O设备之间的接口性能。

目前,嵌入式系统已经广泛应用于通信、消费类电子产品等许多领域。然而,在许多应用中,处理器的接口问题依然是制约系统性能的瓶颈。对于给定的设计,设计者面对这些纷繁芜杂的接口标准选择的余地并不大。他们一般根据系统所需的成本及功能选择合适的标准产品,这可能导致接口标准冲突和引起互用性问题;或许设计者可能重新选择与接口兼容的标准器件,但可能会造成不能满足功能需要或系统的成本要求等。

在过去几年里,用于消除IC、电路板和系统之间数据传输瓶颈的接口标准层出不穷,为通信系统器件所提供的接口技术种类繁多。在数字系统设计中解决接口和互用性问题显得尤为重要, FPGA技术的迅速发展使得接口问题有了好的解决方案。例如,现有的高性能接口IP及高速物理I/O的FPGA,可满足10Gb/s以上数据通道的通信系统的要求;可以用FPGA实现接口不兼容器件间的通信问题。因此本文将提出一种新的基于FPGA 的SPI 接口设计方法。

SPI(Serial Peripheral Interface)串行外设接口总线[1]是一种同步全双工串行通信接口总线,由于其连线简单,使用起来非常方便,故得到广泛应用。在很多新型器件如LCD模块、FLASH、EEPROM存储器、数据输入、输出设备上都采用了SPI接口。但在实际开发应用中,若主控制器无SPI接口或需要与多个具有SPI接口的外设通信,就要使用主控制器的I/O

口通过软件来模拟,这就在很大程度上限制了其应用给数据传输带来不便。在FPGA技术迅速发展的时代,解决这个问题最方便的办法就是集成一个SPI核到芯片上。

这里根据业界通用的SPI总线的标准,设计一种可复用的高速SPI总线。设计过程中很多变量都采用参数形式,具体应用于工程实践时根据实际需要更改参数即可,充分体现了可复用性。

2 SPI 总线原理

SPI 总线由四根线组成:串行时钟线(SCK),主机输出从机输入线(MOSI),主机输入从机输出线(MISO),还有一根是从机选择线(SS),它们在与总线相连的各个设备之间传送信息,其连接方式如图1。



SPI 总线中所有的数据传输由串行时钟SCK来进行同步,每个时钟脉冲传送1 比特数据。SCK 由主机产生,是从机的一个输入。时钟的相位(CPHA)与极性(CPOL)可以用来控制数据的传输。CPOL=“0”表示SCK 的静止状态为低电平,CPOL =“1”则表示SCK 静止状态为高电平。时钟相位(CPHA)可以用来选择两种不同的数据传输模式。如果CPHA =“0”,数据在信号SS 声明后的第一个SCK 边沿有效。而当CPHA=“1”时, 数据在信号SS声明后的第二个SCK 边沿才有效。因此,主机与从机中SPI 设备的时钟相位和极性必须要一致才能进行通信。

SPI 可工作在主模式或从模式下。在主模式下,每一位数据的发送/接收需要1 次时钟作用;而在从模式下, 每一位数据都是在接收到时钟信号之后才发送/接收。1个典型的SPI系统包括一个主MCU和1个或几个从外围器件。

3 设计原理

本系统用硬件描述语言verilog描述,是可IP复用的通用结构。

3.1 典型应用

SPI 接口的典型应用如图2所示,微处理器与从设备通过发送指令的方式实现双向数据传输。



3.2 模块设计

根据SPI 总线的原理,本设计的SPI Master同SPI协议兼容,在主机侧的设计相当于wishbone总线[2]规范兼容的slave设备,总体架构可分为以下3个功能模块[3]:Clock generator、Serial interface、Wishbone interface如图3所示。



3.2.1 时钟产生模块SPI-clgen设计

SPI时钟分频模块中的时钟信号的来源是外部系统提供的时钟clk_in,此时钟的频率高于SPI总线使用的时钟频率,模块会根据各个不同接口的时钟分频因子寄存器,产生相应的时钟输出信号clk_out作为串行时钟。由于SPI没有应答机制,所以传输时对时序的要求就相当严格,为了能够保证时序的可靠性,特别设计了一个无论对于奇分频还是偶分频都异常可靠的时钟生成模块产生传输所需要的串行时钟。

此模块重点考虑了奇分频的情况,为了节省资源,对奇分频的实现方式做了改动同时也能实现偶分频的情况,经过这样设计的时钟分频模块能保证分频出可靠的时钟信号。对输入主时钟的同步奇整数分频,可以简单地用一个Moore机来实现。比如,5分频的状态图如图4所示,编码采用Moore机而非Mealy机,虽然增加了状态数,但增加了可靠性。



Master核系统输入时钟clk-in通过divider分频产生clk-out,通过改变divider的值,可以实现任意分频的时钟输出[4]。其频率表达式如下:



verilog语言描述时钟产生模块,用ISE综合后,其生成电路如图5所示。



3.2.2 串行接口模块SPI-shift设计[5]

数据传输模块是SPI的核心模块。此模块负责把并行进来的数据串行传出,串行进来的数据并行传出。对于并行进来的数据位宽比较长,比如128位的数据时,为了提高传输的速度,本文设计工作中牺牲了资源改进了以前的保守的SPI模块。SPI Master核在主机侧作为slave设备接收数据,同时作为master设备发送数据。此模块verilog代码经ISE综合后如图6所示。



3.2.3 顶层TOP模块

本文在分析协议的基础上建立了高速可复用SPI总线的基本结构,包括时钟生成模块,数据传输模块,并用上层TOP模块调用底层的两个模块。顶层模块的重要作用就是让分模块能够顺利的运作起来。所以此SPI核的顶层模块要写入控制字,通过状态机控制调用时钟生成模块和数据传输模块正常运行。其经ISE综合后如图7所示。



4 仿真与验证

将用verilog 描述好的SPI 接口电路用ISE进行综合,然后用modelsim 软件进行仿真[6]。在建立测试平台时,首先要建立模拟Wishbone协议的master模块,同时建立模拟SPI协议的slave模块,再将接收/发送数据和地址进行比较、校验。SPI-topTestbench总体架构如图8所示。



为了简单仿真8bit数据传输[7],首先进行复位,然后设置寄存器,再进行寄存器校验,无误之后进行8bit数据传输,在tx上升沿发送数据,rx下降沿接收数据,仿真波形如图9所示。同理可以仿真64bit、128bit等数据传输仿真波形。



用ISE软件进行编译,将生成的网表文件通过JTAG下载到xilinx 公司的spartan3 系列FPGA运行,在ISE 的辅助分析下得到了正确的结果。

5 结束语

随着半导体技术的进步,FPGA 的价格越来越便宜, 工作频率越来越高,使用FPGA 实现SPI 通信接口是切实可行的。

由于SPI对传输时序要求非常严格,所以本文工作中设计了一种比较可靠,稳定的时钟生成模块,它对于奇偶分频的情况分别考虑,从而避免了以往SPI总线中对系统时钟奇分频时会出现分频出的时钟不稳定的问题。数据传输模块采用较简洁的并串互转结构,一次最多可传输128位,速度是遵守SPI协议的同类器件里较快的。并且从128位到8位可选具体一次要传输多少位,有别于以往一次传输的位数为定值的情况。


关键字:可复用  CPU 引用地址:一种可复用的高速SPI总线的设计

上一篇:无线领域的射频调谐技术方案
下一篇:一种FFT插值正弦波快速频率估计算法

推荐阅读最新更新时间:2026-03-25 02:12

云端组装商业智能和数据科学以实现复用的高级数据分析
云端组装商业智能和数据科学以实现可复用的高级数据分析能力 如今,分析和商业智能(ABI)以及数据科学和机器学习(DSML)市场都在大力投资于云。新老厂商纷纷发布他们的最新云优先或纯云功能。云生态系统现已成为主要的支出。七家超大规模云基础设施和平台服务厂商中,首次有六家直接或通过收购的子公司同时在ABI和DSML平台市场上提供产品。在2020年Gartner数据和分析云调查中,74%的企业机构使用或计划使用云实施分析、商业智能和数据科学(见图一)。 图一、近75%的企业机构目前使用或计划使用云实施分析、商业智能和数据科学 云所提供的丰富选择有时并不能使ABI和DSML的价值累加,反而会造成技术栈的重复或不同厂商之间的
[网络通信]
云端组装商业智能和数据科学以实现<font color='red'>可</font><font color='red'>复用</font>的高级数据分析
复用SPI模块IP核的设计与验证
引 言 随着集成电路设计技术和深亚微米制造技术的飞速发展,集成电路的规模越来越大,出现了片上系统SoC(System on Chip,又称之为系统级芯片)。由于其在速度、功耗和成本方面的优势,发展势头迅猛。SoC芯片是一个复杂的系统,为了在规定时间完成设计,并提高设计的可靠性,只有依赖基于IP复用的SoC设计方法。如何为SoC设计提供可复用的IP核,成为SoC设计的基础和难点。 东南大学ASIC系统工程技术研究中心针对AMBA(Advanced Microcontroller Bus Architecutre,先进微控制器)总线规范开发了一款代号为Garfield的嵌入式微处理器。此微处理器除采用ARM公司ARM7TDMI
[单片机]
<font color='red'>可</font><font color='red'>复用</font>SPI模块IP核的设计与验证
基于缩放自动侦测双向多路复用器的设计
  在一个系统中添加多个安全数字 (SD) 器件的需求日益增长。然而,大多数主机器件(如 Intel PXA270、TI OMAP和Qualcomm MSM处理器)都只提供一个SD接口。幸运的是,使用复杂可编程逻辑器件(CPLD)即可使主机器件支持任意数量的SD器件。本文详细讲述一种基于可缩放自动侦测双向多路复用器的设计。   图1所示为通用的CPLD使用模型,可以为仅自带一个SD接口的给定主机器件集成任意数量的SD端口。CPLD处于主机控制器和SD器件之间。这样,CPLD便起到双向多路复用器的作用,使主机器件能够与选定的任意SD器件通信。更重要的是,这种设计没有方向控制引脚,也就是说CPLD自动检测数据流方向。   
[工业控制]
基于<font color='red'>可</font>缩放自动侦测双向多路<font color='red'>复用</font>器的设计
0基础学单片机要知道51单片机CPU的一些相关构成以及作用
单片机是什么,是在一个集成硅片中集成了一些部件,构成了一个微型的计算机系统的东西,这些只是对单片机的基础概念是简单了解,会用单片机C语言的编程来实现一些简单的ALU的操作,但是这些还是远远不够的,我们还需要了解单片机的运行机制,工作原理。 这一期来了解一些关于单片机的其他重要知识,51单片机的CPU是多少位,CPU的主要作用是什么,51单片机它的基本构成是由哪些部件或者哪些东西来构成的。 51单片机它的CPU位数是多少位? 51单片机是8位的CPU,表示数据处理一次能够处理的数据的位宽是8个比特位,也就是一个字节,这个叫做它的位数,51单片机除了具备八位的CPU之外,实际上它有两个,它还有一个位处理器,一个字节处理器,所以呢,5
[单片机]
英伟达黄仁勋确认 GB10 芯片即 "N1",与英特尔合作不影响其 Arm CPU 推进
9 月 19 日消息,英伟达 CEO 黄仁勋在北京时间今日凌晨英伟达-英特尔合作关系电话会议上提到,其搭载 Arm 指令集 CPU 的 N1 芯片将被用于 DGX Spark 和更多设备。 英伟达官方此前对 DGX Spark 桌面 AI 超算处理器芯片的表述是 GB10 Grace Blackwell 超级芯片,黄仁勋的此番表态实际上让 GB10 和 N1 划上了等号。 GB10 / N1 芯片由英伟达提供的 GPU Die 和联发科构建的 CPU Die 组成,包含 6144 个 CUDA 核心和两簇共 20 个 Arm 核心(10 个 Cortex-X925 + 10 个 Cortex-A725),支持 256-bit
[嵌入式]
S7-200的扩展配置2由CPU224组成的扩展
S7-200的扩展配置是由S7-200的基本单元和扩展模块组成。其扩展模块的数量受两个条件约束:一个是基本单元能带扩展模块的数量;另一个是基本单元的电源承受扩展模块消耗DC5V总线电流的能力。 编址举例 CPU224组成的扩展 由CPU224组成的扩展配置可以由CPU224基本单元和最多7个扩展模块组成,CPU224可以向扩展单元提供的DC5V电流为660mA。 例:若扩展单元为4个16DI/16DO继电器输出EM223模块和2个8DI的EM221模块组成。查得:EM223继电器输出模块耗DC5V总线电流为150 mA,EM221模块耗DC5V总线电流为30 mA,总消耗电流为660 mA,等于CPU222可以提供DC5V
[嵌入式]
英特尔路线图曝光:2028 年 Titan Lake CPU 放弃 P 核,最高 100 个 E 核
7 月 17 日消息,科技媒体 Notebook Check 昨日(7 月 16 日)发布博文,报道称基于网络上流出的路线图,英特尔计划在 2028 年推出 Titan Lake 系列处理器,完全放弃 P 核,配备最高 100 个 E 核。 根据路线图,2027 年的 Razer Lake 将是最后一个采用异构 P 核和 E 核设计的 CPU。Razer Lake 将采用 Griffin Cove P 核和 Golden Eagle E 核,在明年发布的 Nova Lake 的基础上小幅提升。 而 2028 年发布的 Titan Lake 设计,将摒弃英特尔的当前异构 P 核和 E 核设计,转而采用统一设计,完全由 E 核构成,预
[嵌入式]
动力电池行业:电动汽车的“CPU
在新能源汽车领域,动力电池无疑扮演着核心角色,其地位犹如传统燃油车的发动机,更可以被视作电动汽车的“CPU”。这一比喻不仅强调了动力电池在电动汽车中的关键作用,还体现了其对于整个新能源汽车产业链的重要价值。 一、动力电池:电动汽车的心脏与大脑 动力电池作为电动汽车的核心部件,其功能不仅仅是储存能量,更在于为电动汽车提供持续、稳定的动力输出。这一过程中,动力电池需要高效、安全地将储存的化学能转化为电能,并通过复杂的控制系统精确调节电机的运行,从而实现车辆的加速、减速、制动等动作。从这个角度看,动力电池不仅是电动汽车的“心脏”,提供动力支持,更是电动汽车的“大脑”,通过复杂的算法和控制系统,实现对车辆运行的精准控制。 二、动力电池
[嵌入式]
动力电池行业:电动汽车的“<font color='red'>CPU</font>”
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved