基于软核的USB控制器IP核研究

2020-04-14 03:15

基于软核的USB控制器IP核研究

摘要:USB2.0 控制器通过收发器和设备控制器用于主机和存储器之间的通讯。在本设计中,SOPC(可编程片上系统)系统是通过Virtex-II 专业FPGA(现场可编程门阵列)搭建;FPGA嵌入式系统的软核作为控制单元,C768001 SX2TMUSB2.0 设备作为收发器连接主机。这里设计了一个USB设备控制器IP(知识产权)核,根据OPB(片上外围设备总线)协议实现一个集成的USB传输系统。本设计包括几部分:第一,建立一个基于软核的片上系统;第二,设计一个符合OPB接口的USB控制器IP核,写IP核控制过程;最后,通过编写驱动和PC应用来验证系统性能。

关键字:USB控制器IP核,软核,OPB(片上外设总线),FPGA

I. 介绍

在USB2.0协议之后,USB日益成为通用串行总线接口,应为其具有占用系统资源少的优点,廉价、通用、热拔插灯优点。在2008年11月,英特尔在英特尔开发论坛宣布USB3.0标准。相比USB 2.0最大传输速率480Mbps,它可以实现高达5Gbps的传输速率;由此,USB 3.0作为超高速USB进入人们的视野。

USB 3.0采用新的物理接口电缆,以确保与新设备更高的连接速度,但新的接口与USB 2.0的接口同为四线规格,它的设计是向下相容。同时,USB2.0的传输速率满足低传输所需的硬件,如鼠标、键盘、打印机等;所以,USB2.0当然不会被取代,但与USB3.0共存很长一段时间。

根据USB2.0通信协议,本文设计了基于嵌入式系统软核USB控制器的IP(知识产权)核,它描述了基于嵌入式软核如何控制USB工作,最终通过软件编程达到控制盒信号数据的传输。

为了实现USB2.0传输,本设计选择Xilinx Virtex-II系列FPGA和赛普拉斯公司的CY7C68001芯片,CY7C68001芯片可以实现USB2.0通信协议;第二步,基于FPGA的嵌入式系统软核的设计,设计了富恶化OPB协议的USB控制器IP核;最后实现了FPGA和pc之间通信的片上系统。

II. 基于软核的片上系统

本设计主要包含以下几个方面;首先建立一个基于嵌入式软核的片上系统,,软核的处理器执行用户程序,用以实现了系统的IP核和用户自己控制的IP核协同工作;第二,设计了一个USB控制器IP核,IP核的实现符OPB总线接口,采用全速USB2.0传输方式,实现了FPGA和电脑之间的通信;写IP核控制程序;最后,通过编写PC机上的驱动程序和应用程序来验证系统的性能。

在这个设计中,用于和外围设备通信的总线是OPB,OPB是符合IBM核连接结构。系统图如图1所示。

图1. 基于软核的片上系统

A. 嵌入式软核处理器

鉴于IBM核连接架构是Microblaze?软处理器最显著的特征。软核的基本结构包含32个通用寄存器,算法逻辑单元(AL),移位单元和2级中断。之后,我们可以在这个基本设计结构上配置进一步的功能,如内存管理单元(MMU),移位寄存器,内存管理/内存保护单位等。

B. OPB(片上外设总线)

OPB总线接口包括两个部分:OPB主和OPB从,软核嵌入式处理器作为主设备与OPB总线连接,首先,它申请OPB总线同事讲信息送至仲裁器,在取得允许后,软核可以选择符合OPB_Abushe和OPB_select对数据进行操作的从设备。当操作完成,该从设备讲做出回应;如果在16个周期内没有回应,主设备讲终止对从设备的操作。

C. 外围接口模块

本设计采用自我调节外设软核控制模块,以满足嵌入式软核的OPB总线标准,并以此自我调节的外设软核用以对特定外设进行控制。

外设软核的主要功能和实现:

1) 串行端口控制器,用于实现系统和主机端之间的通信,控制RS232串行

接口,连接pc超级终端和显示数据信息。

2) GPIO,常见的输入和输出端口,它可以显示简单的应用程序的输出,在

本设计中,通过数据管脚连接外部逻辑分析仪,用以测试数据是否正确。 3) Opb_bram_if_cntlr,使用OPB BRAM控制器IP核来控制一块RAM,它负

责存储和读从USB控制器发送数据

4) USB控制器IP核是完全自我调节的,它管理的cy68001芯片来实现和

USB主设备的通信。

III. USB控制器的实现级应用

A. USB控制器的结构级实现

本设计采用有限状态机的结构,使用Verilog HDL实现FPGA 对CY7C68001

的逻辑控制,使用usb2.0全速传输模式。usb控制器主要包含以下功能模块,如图2所示。

图2. USB控制器的功能模块图

状态机控制模块主要是负责产生配置的信息,管理设备状态,控制数据的收发器,产生各类数据包。以下是usb控制器工作流程:

USB控制器等待主机USB中断信号,usb控制器根据中断信号决定是否对通信进行配置,包括设备的地址,设备描述符,配置寄存器,接口配置和终结点配置。USB设备支持的传输控制在默认情况为端点0。在配置过程完成之后,usb设备将通过端点8成功发送信息至USB主设备。

接着,USB控制器进入等待状态,然后主机将会讲数据送至CY7C68001的端点2;在数据传送完成后USB控制器的得到回应;它从端点2获取数据,然后将数据在USB控制器的FIFO中;USB控制器再次进入等待状态,等待嵌入式软核的控制信号;然后根据地址译码模块选择这个USB控制器IP核;USB控制器核OPB RAM开始数据传输,当Sln_xferAck信号回应时结束;在软核接收数据后,它将检查数据的正确性和有效性,如果没有错误将ACK发送至主机;在主机接收到ACK后,PC机软件会显示传输成功的信息,接着进入下一次传输。如果发送处理中不能完成,重试信号将等待16周,然后再次发送数据。上述过程完成数据的发送。

主USB设备在收到接收数据的请求信号后,USB控制器发送请求信号至嵌入式软核,等待回应信号;在后的许可之后,它将通过端点6将数据从OPB总线送至FIFO缓冲器,然后将数据传送至主设备,完成数据接收。

B. 接口模块的设计和实现

接口模块被设计为总线和用户逻辑之间的接口,命名为IPIF(IP接口)服务,它是用来解决总线接口信号,总线协议和其它接口问题。按照USB控制器,用户逻辑和IPIF共同构成用户IP核。

接口模块包括输入和输出信号的时钟设计、地址、数据等,符合OPB总线协议。它要求信号在同一时间满足用户的逻辑实现。

接口模块的主体为地址译码模块,当系统需要某些IP核心工作时,嵌入式软核发出地址信号OPB_Abus并通过地址译码电路来选择相应的IP核心工作。例如,我们设计的高32位地址(High_Addr_usb)和低32位地址(Base_Addr_usb)为 fff000ff和fff0 0000,如果OPB_Abus地址范围是在这个范围内,选择该IP核。

地址译码电路应该先对高低位地址解码,计算出对应IP核地址大小(C_AB)。当OPB地址有效,命名OPB_Avalid高,比较基址的高C_AB信号位和opb_abus的高C_AB信号位,如果上述C_AB信号相等,片选信号为高,然后选择该IP核。

快速进位链的结构和查找表4(lLUT4)用于地址译码电路。首先,通过计算需要解码位(C_AB)和数字LUT4进位链的长度(NUM_LUTS),同时它的值为是LUT4。接着,对有效地址信号(OPB_Avalid)赋进位链中的第一个的值,carry_chain[0];并使用四位查找表法对高4位继续比较。如果OPB_Abus和Base_Addr_usb的高4位相等,接下来carry_chain[1]将被赋值为carry_chain[0],否则carry_chain[1]=0。在正确的顺序执行此操作。carry_chain[NUM_LUTS]的值还是片选信号Chip_select_usb的值,IP核在高电平有效。译码的仿真波形如图3所示。

图3. 译码仿真波形

C. 完全定制的IP核

在逻辑设计中,它需要两个FIFO IP核,使用由第三方提供的IP核(ISE提供),在EDK的端口逻辑和实际时序逻辑之间有很多差异,所以需要写一个不带总线的FIFO IP核,然后转换该IP核的时序,从而实现了真正的EDK嵌入式系统。

FIFO IP核通过网表的形式加入到EDK嵌入式系统中,所以在调用FIFO IP核时需要标记为调用一个黑箱。我们可以通过BBD(黑框定义)定义网表的读取或写入的文件。本设计的BBD文件如下所示:

文件

fifo_opb2usb_fifo_generator_v3_2_xst_1.ngc fifo_usb2opb.edn

fifo_usb2opb_fifo_generator_v3_2_xst_1.ngc fifo_opb2usb.edn 在IP核生成后,文件夹中数据有.PAO(外设分析时序)和.MPD(微处理器外围定义),用以确保IP核已经正确综合和编译。

在这同时,MPD文件将会有以下改变: PORT ioData = \THREE_STATE=FALSE, IOB_STATE = BUF

IV. 系统的软件编程实现

EDK嵌入式系统需要软件和意见协调工作,软件设计要添加的IP核驱动程序的设置,然后编写IP核的控制程序,最后通过RTL编译生成位流文件。以下是一些系统编程中的函数例子:

ram_write将OPB RAM的地址(RAM_ADDR)和数据(RAM_REG)传输至OPB总线;FIFO将会通过OPB总线接收到OPB RAM的相关数据。程序如下:

voidram_write(unsigned addr)

{

RAM_ADDR = addr; putnum(RAM_ADDR); putnum(RAM_REG); }

与此类似,ram_read功能实现发送FIFO数据OPB RAM。

V. 小结

本设计实现了PC机与FPGA之间的通信;设计了符合OPB总线的USB控制器IP核嵌入式软核。因此可以在之后的设计中方便的调用该IP核的,降低了开发成本和时间。


基于软核的USB控制器IP核研究.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:江石如论文:小学语文教学对语言文字运用创新实践的策略

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: