当前位置:首页 > 读后感 > USB,2.0设备接口IP核的OPB接口技术研究和实现 什么是接口,接口技术和过程通道
 

USB,2.0设备接口IP核的OPB接口技术研究和实现 什么是接口,接口技术和过程通道

发布时间:2019-02-16 04:46:03 影响了:

  摘要:USB接口已经成为嵌入式系统与PC连接的首要选择。为了将USB 2.0设备接口IP核和PowerPC微控制器集成,需要解决USB IP核和OPB总线分处不同时钟域,以及IP核内部内存映射的问题。为此我们根据OPB总线协议,研究和比较了OPB总线与IP核连接的两种方式,并利用集成了PPC405核的FPGA对这两种桥接方式进行验证,证明该接口设计是可行的。
  关键词:USB设备接口IP核;PowerPC;OPB接口;Wishbone总线
  
  Research and realization of OPB interface in USB2.0 device IP core
  
  YANG Juan1, LI Xiao-chao2, GUO Dong-hui2
  (1.Department of Physics, Xiamen University, Xiamen Fujian 361005, China;
  2.Department of Electronic Engineering, Xiamen University, Xiamen Fujian 361005, China)
  
  Abstract: USB interface has become the first choice to realize the connection between embedded system and PC. In order to integrate USB 2.0 Device Interface IP core into the PowerPC micro-controller, we need to solve the problem that USB IP core and the OPB bus are in different clock domain, as well as the internal memory-mapped problem in IP core. We research and compare the two bridges between OPB bus and IP core based on the OPB bus protocol, and verify them on the FPGA with integrated PPC405. The result shows that this interface design is feasible.
  Keywords:USB Device IP core;PowerPC;OPB interface;Wishbone bus
  
  1引言
  
   USB接口由于其即插即用,接口体积小巧,传输可靠,良好的兼容性,低成本等优点,已经成为嵌入式系统与PC连接的首要选择。一般,USB设备接口IP核仅处理设备端USB标准协议包的通信,它需要内置或外接微控制器来构成完整的USB设备。在内置微控制器的方案中,USB设备接口IP核与嵌入式处理器总线的桥接是整个USB设备设计的关键技术。目前的研究主要集中在USB设备接口IP核与ARM、PowerPC微处理器的接口技术上,文献[1]介绍了一种USB 2.0设备控制器IP核的AHB桥接技术,这种方式采用DPRAM(双口SRAM)作为USB和AHB间的数据缓冲;文献[2]提出了处理器OPB总线[3]与USB IP核桥接方案,该方案放弃了OPB总线针对Slave提供的IPIF接口服务,增加了控制的复杂性。
   我们设计的USB 2.0设备接口IP核采用Wishbone总线来进行内部连接,主要是连接SSRAM(同步静态SRAM)、寄存器管理模块。为了实现该IP核与FPGA内部的微处理器PowerPC[4]的连接,本文根据Wishbone总线和OPB总线的协议,利用Xilinx Virtex-II Pro开发平台和EDK[5]开发工具,设计了两种基于IPIF服务[6]的桥接方式:寄存器模式和存储器模式。这两种桥接方式有各自的特点,可以应用于不同的场合:前者以内部寄存器为缓冲,控制逻辑完全由自己编写,不需要改变USB设备接口IP核内部的时序,但是读写速率比较低;后者以RAM为缓冲,读写速率比较快,但是需要改变USB设备接口IP核内时序。最后,本文对所设计的两种桥接方式在Virtex-II XC2VP30芯片内进行验证,实验数据表明PowerPC处理器可以通过这两种桥接方式与USB 2.0设备接口IP核通信,证明了本文设计方案的正确性。
  
  2 USB设备结构和OPB总线介绍
  
   2.1 USB 2.0设备内部硬件结构
   USB 2.0设备内部结构包括以下几个部分,如图1所示。
   (1)物理收发器,符合UTMI(USB Transceiver Macrocell Interface)标准,连接主机与USB设备,主要功能是串行至并行和并行至串行转换、同步、位填充、反转不归零解码等。
   (2)UTMI接口模块:这部分的主要功能是检测总线状态,完成挂起和恢复,全速和高速模式的转换。有一组发送 FIFO和接受 FIFO,主要完成在物理收发器模块和协议层处理模块之间的数据传递,从协议处理模块读过来的数据先送入Tx FIFO,经过处理再通过USB物理收发器送到USB主机,从主机接受到的数据会先存入Rx FIFO,再送给协议处理模块。
   (3)协议处理模块是设备的核心模块:负责管理所有USB数据I/O和控制通信,完成打包和解包的功能,并处理所有的USB握手信号。任何一次数据的传输都是由主机发起的,应主机“IN”或者“SETUP”的要求,打包模块首先把要发送的token PID或者data PID准备好,将其组成包头,然后增加相应的数据域,最后将它们放到输出缓冲区中,在发送Data时,需要把有效数据的CRC16校验位放在包末尾一起发送;发送token包时,把CRC5校验位放在末尾一起发送。解包模块是打包模块的逆过程,解包模块对从UTMI接口模块接收到的数据进行解码,把解出的PID根据USB 2.0的协议判断PID类型;如果是token PID则继续接收ADDR和ENDP;如果是data PID则接收有效数据;同时相应做CRC5或者CRC16校验。
   (4)存储器接口和仲裁模块:允许控制器接外部存储器,仲裁模块实现对内部DMA和外部总线对SSRAM(同步静态随机存取存储器)访问之间的仲裁,DMA传输的优先级大于外部总线。
   (5) 寄存器管理模块:这部分主要由寄存器和它们的响应处理器读写控制逻辑组成。这些寄存器都分配有一个独立地址,可由处理器直接进行访问,主要有控制寄存器、命令状态寄存器、中断寄存器等。
   (6) Wishbone总线:WishBone是由Silicore公司提出的,该总线由控制线、地址总线和数据总线等部分组成;使用32位的单向数据总线和18位的地址总线,它可实现对32 kbit的静态RAM和内部寄存器的访问,其中第18位是用来识别访问的是SSRAM还是内部寄存器。寄存器管理模块,以及存储器接口和仲裁模块是以共享总线(Shared Bus)的连接方式连接到Wishbone上的从设备,Wishbone仲裁机制决定什么时候哪个从设备能够访问总线,
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文    (6)OPB Slave接口模块:主要完成OPB总线与Wishbone总线的桥接,包括数据,地址和控制信号的处理,使PowerPC处理器能通过该模块对USB IP核进行参数配置和读写操作。
   (7)PowerPC处理器:嵌入到Virtex-II Pro芯片中的IBM PowerPC405硬核处理器核是一种32位哈佛结构的RISC核,支持IBM CoreConnect总线架构[4],CoreConneect总线架构分为本地总线PLB(Peripheral Local Bus)和片上外设总线OPB(on-chip PeripheralBus),这两条总线通过PLB2OPB和OPB2PLB桥完成指令和数据的传输。
  
   2.2 OPB总线
   PowerPC是通过OPB总线对外设进行访问的, OPB总线允许在系统添加周边设备而不影响OPB仲裁器或其他周边设备上的I/O,OPB总线上外设分为主设备和从设备。主设备若要获得总线需先向仲裁器提出请求, 仲裁器会根据优先判决法则授权给某个主设备。该主设备获得允许后就可以通过总线与某个从设备进行数据操作。连接到OPB总线上的每一个从设备都被分配了一段独一无二的地址空间,这样可以和别的从设备区分开来。从设备在操作完成后会以ACK回复信号作为响应。主设备收到ACK信号后会自动放弃总线,由另一个提出请求的主设备占用总线。若长期没有收到ACK信号,如超过16个时钟周期, 仲裁其会发出TIMEOUT信号以终止主设备的操作。每一个主设备和从设备都会有地址总线、输入和输出数据总线,以及控制总线。
  
   2.3 Wishbone总线
   Wishbone总线规范是一种片上系统IP核互联体系结构。它定义了一种IP核之间公共的逻辑接口,减轻了系统组件集成的难度,提高了系统组件的可重用性、可靠性和可移植性,加快了市场化的速度。Wishbone总线规范可用于软核、固核和硬核,对开发工具和目标硬件没有特殊要求,并且兼容绝大多数已有的综合工具,可以用多种硬件描述语言来实现。Wishbone总线规范的目的是作为一种IP核之间的通用接口,因此它定义了一套标准的信号和总线周期,以连接不同的模块,而不是试图去规范IP核的功能和接口。
   Wishbone总线结构十分简单,它仅仅定义了一条高速总线。由于IP核种类多样,其间并没有一种统一的连接方式。为满足不同系统的需求,Wishbone总线提供了4种不同的IP核互联方式:
   (1)点到点(Point to Point):用于两个IP核直接互联;
   (2)数据流(Data Flow):用于多个串行IP核之间的数据并发传输;
   (3)共享总线(Shared Bus):多个IP核共享一条总线;
   (4)交叉开关(Crossbar Switch):同时连接多个主从部件,提高系统吞吐量。
  
  3 OPB接口设计
  
   为了配置USB设备接口,PowerPC需要能够对USB IP核内64个端点寄存器和一个外部15位地址译码的SSRAM进行读写,总线地址译码范围至少要达到128 kb,才能访问到这些寄存器和外部SSRAM。
   Xilinx为了用户自己编写的逻辑能够方便地连接到OPB总线上,提供了一种总线与用户逻辑之间的接口,即IPIF(IP interface)服务[6],利用它解决总线接口信号,总线协议和其他接口问题。在用户逻辑看来,IPIF表现为一系列接口信号IPIC(IP InterConnect),这样与系统总线的连接只考虑和IPIC的关系,使得用户逻辑设计简单易行。用户逻辑与IPIF共同构成了用户IP核[7]。其结构如图2所示。
   IPIF服务中提供了两种对用户逻辑读写的方式,分别是寄存器模式和存储器模式[6]。
  
   3.1 寄存器模式桥
   寄存器模式桥如图3所示,EDK中提供了32个32位软件可访问寄存器,这些寄存器用来缓存从总线来的数据,并可以例化为USB IP核的输入信号,以CE(Chip Enable)为激活信号,每个寄存器都有独立的读写地址,总线通过地址译码对这些寄存器进行读写。其接口信号IPIC如表1所示。
   Bus2IP_Addr是软件可访问寄存器的译码地址,这些地址在定制IPIF层时自动分配,不可更改,并且与USB IP核内的寄存器偏移地址不匹配,总线无法通过这些译码访问USB IP核内部寄存器,且其寻址范围只达到128字节,不满足128 k字节的地址译码要求。
   为了解决这个问题,本文在IPIC和USB IP 核中间加入地址解码模块,以及控制逻辑模块和数据处理模块。地址解码模块,完成对数据总线的复用,就是将32位Bus2IP_Data数据线,既作为总线到寄存器的数据总线,也作为地址总线,例化为Wishbone地址输入wb_addr_i,并对内部寄存器和外部SSRAM进行译码;数据处理模块完成总线数据与Wishbone数据输入wb_data_i和数据输出wb_data_o的例化;控制逻辑处理从IP核回复过来的wb_ack_o信号,而不用回复到总线上,当wb_ack_o信号到来时,就拉低建立写周期信号(wb_we_i), 有效周期传送的开始信号(wb_stb_i)和有效传送周期信号(wb_cyc_i);中断模块完成从USB IP核来的中断信号Inta和Intb送到OPB总线去处理的连接。
   如图4所示为寄存器模式桥的仿真波形图,0x78000000为寄存器地址译码,当数据信号wb_data_i和地址信号wb_addr_i同时有效时,wb_we_i、wb_stb_i、wb_cyc_i同时被置为有效,表示总线写入USB IP核寄存器,0x0002000c是送到IP核的地址,0x000ba3ff是地址对应的数据。当从设备回复wb_ack_o时,这三个信号被置为无效。当总线读USB IP核寄存器时,wb_we_i为0,wb_stb_i,wb_cyc_i有效,从USB IP核送来的数据0x000ba3ff被放到总线寄存器IP2Bus_Data中。由图可以看出,这个寄存器模式桥满足Wishbone总线的读写时序。
   寄存器模式桥的优点在于,数据信号到来后,控制信号线完全是自己可控制的,可以满足数据、地址、控制信号可以在同一个时钟被采样到,不用改变USB IP核内部的时序,就能正确配置核内寄存器和访问外部SSRAM。缺点在于,为了使数据保持到地址信号和控制信号的到来,需要延时一段时间,降低了读写的速率。
  
   3.2 存储器模式桥
   存储器模式如图5所示,为IP核提供读写、数据和地址信号,以CS为激活信号,寻址方式是基地址加偏移地址,可以满足USB 2.0内部64个端点寄存器和全速传输SSRAM缓存的寻址范围。其IPIC接口信号如表2所示。
   将这些IPIC信号例化成USB IP核的接口信号,Bus2IP_RNW取反后例化为建立写周期信号(wb_we_i),Bus2IP_ArCS信号例化为有效周期传送的开始信号(wb_stb_i)和有效传送周期信号(wb_cyc_i),Bus2IP_Addr和Bus2IP_ArData分别例化为地址和数据输入。本文对USB IP核内部的寄存器和外部SSRAM进行译码后,总线通过这些译码对IP核内部的寄存器和外部SSRAM进行读写。从IP核回复的wb_ack_o信号送回OPB总线,OPB总线接收到wb_ack_o信号后,会拉低Bus2IP_ArCS,表示一个写周期或读周期的结束。这种方式相对于Register方式比较简单,但是控制信号Bus2IP_ArCS是在数据和地址快结束的最后一个总线时钟到来,OPB总现时钟是100 MHz,而USB工作在最大60 MHz的时钟,由快时钟域到慢时钟域可能寄存器采样不到控制信号,所以需要对延长源控制信号的高电平,采用两级寄存器同步方式,达到同步的效果。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   在配置内部寄存器时,由于核内部模块之间数据是直连的,而控制信号是通过时钟采样的,这样导致数据和地址来到时,控制信号还没到来,为了解决这个问题,本文对USB IP核内部时序进行修改,将数据和地址分别采样多次,以达到与控制信号线同步,才能正确写入端点寄存器;写外部SSRAM时,回复信号wb_ack_o来得过早,Bus2IP_ArCS信号没能保持足够长的时间,使时钟未能采样到数据和地址,所以在IP核内部,对回复信号进行延时,再送到OPB总线,以满足Bus2IP_ArCS保持足够长的时间,才能采样到数据和地址。处理器通过存储器模式桥写入IP核内部寄存器时序图见第三节实验数据与分析中的图8所示。
  这种桥接方式相比于寄存器模式具有读写速率快,且控制逻辑简单的优点,但是由于时延的问题,需要修改USB设备接口IP核内部时序,增加了设计的复杂性。
  
  4实验数据与分析
  
  将上面所设计的两种桥接通过EDK下载到Xilinx Virtex-II Pro XC2VP30后,PowerPC通过这两种桥分别对IP核内部端点寄存器和外部SSRAM进行读写。然后观察分析读写时序图,验证这两种接口桥是否能正常工作。为了方便数据的采集,我们将IP核的一些控制信号、数据总线、以及地址总线约束定位到开发板的扩展口,并通过Agilent MSO6032A逻辑分析仪采集。
  图6为PowerPC处理器通过寄存器模式桥对外部SSRAM(地址译码0x00020004)进行写入32位数据0x00000001操作的时序图。图中,OPB总线通过Wishbone接口模块和存储器接口和仲裁模块将数据、地址和控制信号信号送出到外部SSRAM。B1为数据信号sram_data_o,B2为外部SSRAM地址信号sram_adr_o,由于本文所采用的逻辑分析仪数据线有限,B1和B2只采样了数据和地址的低四位,分别为0x0001和0x0100; D11为外部SSRAM写控制信号sram_we_o,读控制信号一直保持为高;D7、D10分别为从Wishbone接口送到存储器和仲裁模块的写信号ma_we 和请求信号ma_req,当ma_req为高时,仲裁器模块选择从总线来得数据,地址和写信号送到SSRAM;D3为从存储器接口和仲裁模块送给Wishbone接口的回复信号,表示一个存储器模块传输周期的结束,这个回复置信号D10和请求信号D7无效,并拉高D2,D2表示wb_ack_o,是由Wishbone 接口送到OPB总线上的回复信号,表示完整的一个传送周期的结束。从图中可以看出,要写入SSRAM的数据和相应的地址以及写控制信号可以在同一个时钟被采样,满足SSRAM写信号的时序逻辑。
   图7为OPB总线时序图,其中B1是OPB总线数据,值为0xFFFFFFFF,B2是CSR寄存器的地址译码0x00000004。片选信号D2是在数据和地址信号快要结束的最后一个时钟到来的,并且只保持了1个时钟周期。D3是读信号,当读信号低时,表示为写信号,D5是IP核到总线的回复信号,当回复信号到来时,总线会拉低片选信号和写信号,表示一个写周期的结束。实验数据表明,由于片选信号来得晚且保持的时间短,要想把数据写入内部寄存器,必须对USB设备接口核内部的时序进行修改。
   图8 为PowerPC处理器通过存储器模式桥向内部端点控制状态寄存器CSR进行写操作的时序图,控制状态寄存器在端点中起着非常重要的作用,它定义了该端点的端点号,端点类型以及传输方式等。图中,B1是总线写入端点寄存器的数据0xFFFFFFFF,B2是端点CSR的地址,它相对存储器译码初始地址的偏移量是0x00000040,图中是将数据和地址信号经过同步采样两次后的结果。D2是读信号,当读信号低时,表示为写信号,D3是片选信号,当片选信号和写信号为高时,Wishbone接口模块会送给寄存器管理模块一个写信号有效信号D9,D9为高,且满足CSR地址译码正确时,写寄存器信号D0就会被置高。
  从图中的波形数据可以看出,写入 CSR寄存器的写控制信号、地址信号和数据信号在同一时钟能被采样到,时序正确,PowerPC可以成功地将数据写入端点寄存器。
  
  5总结
  
  本文利用Xilinx EDK工具设计了PowerPC OPB总线与USB设备接口 IP核的两种桥接方式,并比较了这两种桥接方式的优缺点。最后在VirtexII Pro开发板上分别对这两种桥接进行了验证, PowerPC微处理器可以通过着两种桥访问内USB设备内部寄存器和外部SSRAM,证明了该接口设计是可行的。
  
  参考文献
  [1] 田园园,董金明,崔玉亮.FPGA开发中一种新的OPB总线与IP核连接设计[J],电子测量技术,2009,1.
  [2] 左宏权.USB2.0设备控制器IP核的AHB接口技术[J],单片机与嵌入式系统应用,2007,1.
  [3] 董代洁,郭怀里,曹春雨.基于FPGA的可编程SoC设计[M].北京航空航天大学出版社,2006,6.
  [4] 叶咏辰,赵光恒.用PowerPC硬核的FPGA片上系统及在存储系统中的应用[J],电子技术,2005,5:48-52.
  [5] Xilinx. EDK_82_PPC_Tutorial.
  [6]OPB IPIF(v3.01c) DataSheet[EB/OL]. https://www.省略/.
  [7] 叶咏辰,赵光恒.用PowerPC硬核的FPGA片上系统及在存储系统中的应用[J],电子技术,2005,5:48-52.
  
  作者简介
  杨娟,厦门大学凝聚态学专业硕士研究生;主研方向:嵌入式硬件系统设计;
  李晓潮,副教授(博士),厦门大学电子工程系硕士研究生导师。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3