- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGARTL级USB2.0协议层设计与实现
基于FPGARTL级USB2.0协议层设计与实现
摘要:文中重点阐述了用VerilogHDL语言对USB2.0协议层关键模块的RTL级设计和验证工作,并在XILINX ISE软件平台上进行了FPGA综合。通过在ModelSim6.1上仿真和ISE7.1上综合,结果表明本文设计的USB协议层模块是正确的。
关键词:FPGA,通用串行总线,VerilogHDL,协议层,RTL
1引言
USB2.0通用串行总线,为个人电脑与其外围设备之间的连接提供了一种标准,其主要特征是高速、双向、同步、低成本、可动态连接,并且可以与当今乃至将来的计算机平台兼容,是对计算机体系结构的一种工业标准扩展。由于USB2.0的价格低廉、使用简单、协议灵活、接口标准化和易于端口扩展等种种优点,使得它已经成为目前最流行的外设接口标准。嵌入式系统是今后电子产品发展的趋势,带有USB接口的嵌入式系统很有发展前景。在对协议层模块进行设计和优化之后,进行嵌入式电子产品应用时只需要外接MCU等模块就可以将具有USB接口功能的嵌入式系统应用到各个场合中。
2USB控制器组成
USB控制器主要由两个部分组成[1],其一为与外设的接口,另一个是内部协议层逻辑PL(Protocol Layer)。内部存储器仲裁器实现对内部DMA和外部总线对存储器访问之间的仲裁。PL则实现USB的数据I/O和控制,是控制器的核心逻辑位,是设备接口里最复杂的模块。协议层内部主要由以下4个模块组成:(1)PA(2)PD(3)PE(4)DMA和存储器接口,四个模块主要的连接关系如图1所示。
图1 协议层内部的四个模块
限于篇幅,下面分别着重介绍对前三个模块的设计。
2.1 协议层组包模块
协议层组包模块[2]的功能主要是根据协议引擎模块发过来的控制信号,把从缓冲区中读取的原始数据加上PID和CRC校验码。发出的数据是一个完整的包发送到缓冲区,最后由收发器进行并串转换,通过电缆传输出去。由于USB设备不会主动发出传输请求,所以PA只组装握手包和数据包。PA组包模块的状态转移图如图2所示。
图2 PA模块的状态转移图
组包模块在没有数据发送的情况下处于闲置状态,当协议引擎模块发出传送请求时,首先判断请求的类型,状态由空闲转入握手包发送状态或数据包发送状态。如果发送握手包,则给出相应的使能信号给收发器,让收发器在等待一个周期后对输出数据进行采样,在这个周期内要准备好PID值和它的反码校验位,如果收发器己经准备好数据的采样则转入TOKEN状态,收发器开始采样PA的输出数据。不同的标志信号,组包的格式不同,组包模块可以完成同步序列开始SOP包,令牌包、数据包、握手包、特殊包和EOP包结束的组装,根据不同令牌包的发送要求,进行相应的组包。NAK、STALL、NYET、ERR等握手包由设备端发送给主机,主机端组包发送SETUP、IN、OUT、SOF、DATA、ACK、PING和SPLIT等包。组包模块的数据通道选择部分代码如下:
always @(send_token or send_token_r or token_pid or tx_data_data)
if(send_token | send_token_r) tx_data_d = token_pid;//发送token PID
else tx_data_d = tx_data_data;
always @(dsel or tx_data_st or tx_spec_data)
if(dsel) tx_data_data = tx_spec_data; //dsel=1时发送非数据字段包括PID和CRC
else tx_data_data = tx_data_st; //dsel=0时发送数据字段
always @(crc_sel1 or crc_sel2 or data_pid or crc16_rev)
if(!crc_sel1 !crc_sel2) tx_spec_data = data_pid;//PID
else //16位CRC字段分两次传输
if(crc_sel1) tx_spec_data = crc16_rev[15:8];//CRC 1传输CRC字段的高8位
else tx_spec_data = crc16_rev[7:0]; //CRC 2传输CRC字段低8位
assign tx_data = tx_data_d;
2.2 协议层拆包模块
PD拆包模块[3]主要是用来分析
您可能关注的文档
最近下载
- 消防车安全驾驶培训课件.pptx VIP
- (2025)学校少先队知识应知应会题库+参考答案(精选).docx VIP
- 2024宜春职业技术学院招聘笔试真题带答案详解.docx VIP
- 水资源-PPT教学课件.ppt
- 危重孕产妇救治试题复习测试附答案(一).doc VIP
- 焚烧炉系统培训课件.ppt VIP
- 脯氨酸代谢与肠道炎症.docx VIP
- 《口语交际:名字里的故事》说课稿(附教学反思、板书)课件(共33张ppt).ppt.pptx VIP
- D-Z-T 0064.50-2021 地下水质分析方法 第50部分:氯化物的测定 银量滴定法(正式版).docx VIP
- 2025年新人美版美术五年级下册《精细的描写》优质课件.pptx VIP
文档评论(0)