论文-crc算法及fpga的实现_第1页
论文-crc算法及fpga的实现_第2页
论文-crc算法及fpga的实现_第3页
论文-crc算法及fpga的实现_第4页
论文-crc算法及fpga的实现_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z第一章绪论信息对人类来说是非常重要的,从古代到现代,信息发挥着越来越大的作用,尤其到了现代,信息更是发挥了无可比拟的作用,因此,如何使得信息能够正确快速的传递,成为了一个非常重要的问题。人们对信息的认识利用,可以追溯到古代的通信实践。中国古代的“烽隧相望〞还有古罗马地中海诸城市的“悬灯为号〞,可以说是传递信息的较为原始的方式。1.1循环冗余校验的背景及应用随着社会生产的开展,科技的进步,人们对传递信息的要求急剧增加。到了20世纪20年代,怎样提高传递信息的能力和可靠性已成为普遍重视的课题。在传输过程中发生错误后,能在接收端自行发现或纠正的码叫做纠错码,仅用来发现错误的码一般称之为检错码。为了使一种码具有检错或纠错能力,需要对原码字增加多余的码元,以便扩大码字之间的差异,即把原码字按照一定的规则变成具有一定冗余度的码字,并使每个码字的码之间有一定的关系,这种关系的建立称为编码。码字到达接收端后,可以根据编码规则能否满足来判定是否有错误。当条件不能满足时,按一定规则确定错误所在位置并予以纠正。我们把纠错并恢复原码字的过程称为译码"检错码与其他手段结合使用,也可以纠错。在通信系统中可靠与快速常常是一对矛盾。如果要求快速,则必然使每个数据码元所占的时间缩短、波形变窄、能量减少,从而在受到干扰后产生错误地可能性增加,传送信息的可靠性随之下降。如果要求可靠,则就会使得传送消息的速率变慢。因此,如何合理地解决可靠性也和速度这一对矛盾,是正确设计一个通信系统的关键问题之一。为保证传输过程中的正确性,需要对通信过程进展过失控制。过失控制最为常用的方法包括自动请求重发方式(ARQ)。前向纠错方式(FEC)和混合纠错(HEC)。在传输过程误码率较低的时候,采用FEC方式比拟理想。在传输过程误码率较高的时候,采用FEC易出现“乱纠〞现象。而HEC方式则是ARQ和FEC的结合。在许多数字通信中,广泛采用ARQ方式,此时的过失控制只需要检错功能。实现检错功能的过失控制方法有很多,传统方法有:奇偶校验、校验和检测等,这些方法都是增加数据的冗余位,将校验码和数据一起发送给接收端,然后接收端对接收到的数据进展一样校验,再将得到的校验码和接收到的校验码进展比拟,如果二者一致就认为传输正确。但这些方法都各自有缺点,误判的概率也比拟高。循环冗余校验CRC(cyclicRedundancyCheck)码是由分组线性码的分支而来,简称为循环冗余码,主要应用是二元码字。编码简单并且误判概率很低,所以在通信系统中得到了广泛的应用。循环冗余校验码是属于分组码中的一类很重要的线性码,它不仅在理论上有着很好的代数构造,而且它的编码和译码可以通过线性移位存放器很容易地实现。循环冗余校验码的检错能力非常强,码重为偶数的循环冗余校验码的检错能力如下:能100%检测出奇数个过失;能100%检测出长度小于等于2的两个突发过失;能100%检测出小于等于生成多项式码重dmin-1的随机过失;能100%检测出长度小于等于校验位长w的单个突发过失;能以1-2-〔w+1〕的概率检出长度为w+l的单个突发过失;能以1-2-w的概率检出长度大于w+1的单个突发过失。随着信息社会的高度开展,通信网络对社会和个人带来了带来越来越大的影响,社会保障、防灾抗灾、社会公共效劳、部门联动和个人工作生活等方面起到不可替代的作用。现有的技术已无法满足现有的需求,此外,从国家对信息领域的开展战略上也要求我们在未来通信网络的技术储藏和设备上要有新理论和新技术的突破。因此,研究通信网络的新型传输理论和技术以制造出在国际上富有竞争力的设备和提供先进的解决方案是提高我国综合国力,使我国在国际竞争上立于不败之地的重要举措,也是我们国家在未来信息战争中取得制胜点的关键。数据在通信网络中如何实现可靠高效实时传输,保证高Qos是效劳提供商和用户的共同要求,庞大的市场需求给相关研究者的工作提出了更加苛刻的要求。目前一些富有前景的技术方向和可用于通信网络的新型理论方向尚未有研究的报道,同时目前解决方案还存在一些问题,相关的理论空白急需填补。比方对于传统网络中各层数据的CRC编码是彼此独立的,已有的研究说明,如果对各层中的CRC码进展综合考虑,将可以使检错的效率得到优化。显然旧的分立CRC体制不适合实际网络的设计和优化,因此采用一种新型的CRC编码体制用于网络,对于提高通信系统总体性能。填补相关技术空白和推动行业学科的整体开展具有重大的意义,这就是我们将在本篇文章中将要介绍的组合CRC码。1.2以太网的简述及根本原理以太网最初是由DEC、INTEL和*ERO*三家公司共同研制出来的计算机局域网,又简称DI*网,后来开展成以太网。其开展经历了三个阶段,即以太网、快速以太网和千兆以太网。迄今,人们研究和应用最多的是10M/100M自适应以太网,标准为IEEE802.3和IEEE8o2.3u。内容修改:如今,人们研究最多的是最新的100G甚至400G以太网。以太网的标准为IEEE802.3。它具有传输速率高、网络软件丰富、系统功能强、安装连接简单和使用维护方便等许多优点,是目前全球使用最广泛的局域网技术,全球至少有80%以上的局域网采用以太网技术。内容修改:如今,人们研究最多的是最新的100G甚至400G以太网。以太网的标准为IEEE802.3。目前,以太网MAC控制器的产品较多。市场上常见的应用于10/100M自适应网卡的MAC芯片有RealTek公司的RTL8129C/8139C芯片,Winbond公司的W89C840AF芯片,NS公司的DP83815/83816芯片等。这些芯片大多将以太网MAC层、物理层以及与主机的接口集成在一个芯片上,即三合一芯片。支持10/100M自动协商功能,与主机的接口多采用PCI总线,遵循PCI2.1/2.2,并将PCI接口集成在芯片上,支持半/全双工两种工作模式。在全双工模式下,基于帧的流量控制符合IEEE802.3*标准。以太网的MAC控制器主要完成以太网MAC层的功能,每个以太网设备都要用到,其重要性不言而喻。引目前,很多国外厂商如CADANCE,LATICE,*ILIN*等都拥有自主知识产权的以太网MAC。近年来,国内的一些研究机构也开展了对以太网MAC层的研究,但大多是将MAC控制器作为模块应用,还未见可与其它通用接口实现互连的lP核。1.3FPGA的开展概况及现状FPGA〔Field-ProrammableGateArray〕,即现场可编程门阵列,它是在PAL、GAL、CPLD等编程器件的根底上进一步开展的产物。它是作为专用集成电路〔ASIC〕领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又抑制了原有可编程器件门电路数有限的缺点。以硬件描述语言〔Verilog或VHDL〕所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进展测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些根本的逻辑门电路〔比方AND、OR、*OR、NOT〕或者更复杂一些的组合功能比方解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器〔Flip-flop〕或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好似一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般来说比ASIC〔专用集成芯片〕的速度要慢,无法完成复杂的设计,但是功耗较低。但是他们也有很多的优点比方可以快速成品,可以被修改来改正程序中的错误和更廉价的造价。厂商也可能会提供廉价的但是编辑能力差的FPGA。因为这些芯片有比拟差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD〔复杂可编程逻辑器设备〕。FPGA采用了逻辑单元阵列LCA〔LogicCellArray〕这样一个概念,内部包括可配置逻辑模块CLB〔ConfigurableLogicBlock〕、输出输入模块IOB〔InputOutputBlock〕和内部连线〔Interconnect〕三个局部。现场可编程门阵列〔FPGA〕是可编程器件,与传统逻辑电路和门阵列〔如PAL,GAL及CPLD器件〕相比,FPGA具有不同的构造。FPGA利用小型查找表〔16×1RAM〕来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的根本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。第二章以太网控制器〔MAC〕构造功能分析2.1以太网的开展和日常应用从办公室、工厂到家庭,我们正在经历一场网络连接的革命。企业和住宅用户可以发送和接收空前丰富的语音、数据、图像、视频信息、高度可操作的应用和高级带宽效劳。随着更多的建筑、生产设备、智能家庭、智能因特网设备开场相互连接,巨大的商机呈现在先进半导体的面前。网络将医院、大学校园、社区、商业和工业团体相互连接起来,同时还能连接到因特网。随着网络的扩展,用户需要在不同子网之间进展更多的标准化、低本钱的连接。以太网是他们的首选接口。联网烹饪:设想一台微波炉带有条形码扫描仪,它的存储器中包含成千上万种菜肴的烹制信息。微波炉可以通过以太网连接到其它厨房设备,实现智能化家庭管理。联网售货:通过连接到网络的售货机,销售商可以监控货物销售,处理实时信用卡交易,进展存货管理和维护,并对恶意破坏行为作出反响。联网医疗:在病房中使用**监控器,使护理人员能够密切注视每个房间中的病人,并在护士站的监控器界面上发出报警或警告信号。微控制器使这一切得以实现微控制器可简化以太网联网,并为各种应用提供连接。要在这些应用中进展高效通信,微控制器需要一些根本的组件,包括TCP/IP协议栈、媒介控制器(MAC)、物理层(PHY),以及足够的程序和数据存储空间资源。TCP/IP协议将系统连接到因特网,是在网络上传输数据的事实上的标准。这块不应该换行MAC支持IEEE802标准中定义的CSMA/CD,而PHY是第一层协议,可以是调制解调器或以太网〔EPHY〕的形式。这块不应该换行一般所说的以太网协议是指根据IEEE802.3规*制定的局域网协议(LAN,LocalNetwork)中的CSMA/CD协议。目前,以太网通信常用的介质是双绞线和光纤。其中,CSMA/CD协议是CarriersensemultipleAccesswithCollisionDetection的缩写,是带有检测冲突的载波侦听多路存取协议,IEEE802.3标准适用于1-持续CSMA/CD局域网。其工作原理是:当站点希望传送时,它就等到线路空闲为止,否则就立即传输。如果两个或多个站点同时在空闲的电缆上开场传输,它们就会冲突。于是所有冲突站点终止传送,等待一个随机的时间后,再重复上述过程。已出版的802.3标准与以太网的细微差异是:它描述了运行在各种介质上的从1Mb/s~10Mb/s的1-持续CSMA/CD系统的整个家族。另外,二者的一个头部字段也有所不同〔802.3的长度字段用作以太网的分组类型〕。许多人错误地把“以太网〞作为CSMA/CD协议的总称,尽管这一名词只表示了实现802.3的*个特定产品。2.2以太网控制器简述以太网连接采用最简单的TCP/IP协议集和微控制器,就可以实现最小功能设备之间的连接。要实现经济高效的连接,以太网连接必须是标准化和嵌入式的。强大的用户根底:作为通用的网络接口,以太网在WAN和MAN节点中的应用得到飞速的增长。目前,全球已有3亿多个基于以太网的企业网络,这足以证明以太网的巨大成功,并为以太网成为行业标准奠定了坚实根底。全球超过85%的现有网络连接是以太网。以太网不仅拥有庞大的用户根底,而且保持着强劲的增长势头,所以很可能一统连接方式的天下。推出伊始,以太网就成为全球标准,更是当前使用最广泛的局域网〔LAN〕。虽然许多网络正在升级为快速以太网〔100Mbps〕,但最常见的以太网数据传输率仍然是10Mbps。下一代以太网将是超过1,000Mbps的千兆以太网。内容改一下最常见的是100M和1000M的以太网,并且已经出现了10G和100G以太网。用独特的单芯片16位以太网解决方案,实现了以太网联网和因特网的连接。带有集成的10/100Base-T以太网MAC/PHY,可以适应各种数据速率,它还具有灵活的寻址功能,支持不同大小的数据包。其拥有比8位解决方案更强的处理能力和更多的存储资源〔共享8KB的RAM数据/消息存储区〕,可优化吞吐量和存储空间使用之间的平衡,将存储空间合理分配给协议栈的保存、应用代码和外围设备驱动程序,从而将能绝大多数的MCU资源保存给各种应用。响应快速的微控制器使对各种大小的IP数据包都有充裕的时间进展组装/拆卸,即使在要求苛刻的工业环境中也应对自如,集高速内部总线与出色的寻址模式〔比方多字节预/后减量索引寻址〕于一身,从而可以承担以太网联网的重任,并通过以太网进展远程监测或控制。内容改一下最常见的是100M和1000M的以太网,并且已经出现了10G和100G以太网。2.3以太网根本原理一般所说的以太网协议是指根据IEEE802.3规*制定的局域网协议(LAN,LoalAreaNetwork)中的CSMA/CD协议。目前,以太网通信常用的介质是双铰线和光纤。〔CSMA/CD协议是CarriersensemultipleAccessCollisionDetection的缩写,是带有检测冲突的载波侦听多路存取协议。〕以太网协议的参考模型以太网协议的逻辑关系遵循OSI参考模型〔OpenSystemInterconnectReferenceModel,开放式系统互联参考模型〕,如图2-1所示。物理层是指网络通信连接的媒介物质,用于携带计算机之间的以太网信号。当前应用最多的是双铰线和光纤。使用这两种媒介,以太网目前可以实现4种传输速率。10Mbit/s:10Base-T以太网。100Mbit/s:快速以太网。1000Mbit/s:千兆位以太网802.3z。10千兆位以太网:IEEE802.3ae。在进展实际的以太网通信中,每一种协议都是运行在其下面层次的协议根底上。例如,当两个计算机系统使用FTP协议传输文件时,从用户看来是两个系统基于FTP协议的直接交流,实际上文件的数据传输则是经过了层层打包和解包的协议路径。图2-1OSI参考模型Fig.2-1TheOSIreferencemodel上层的各个协议栈要分别实现对数据的打包、解包、校验以及对下一层相关协议的调用。例如,在IP协议栈从以太网驱动收到一个数据包后,经过解包、校验,确认是否为有效的IP包,如无效则舍弃该包:如有效则进一步判断包内的数据,转而调用TCP、UDP、ICMP等协议或使用户自定义的处理效劳,而以太网控制芯片的功能是完成TCP/IP协议簇分层模型中链路层的相关工作。它处理与双铰线RJ-45接口之间的所有物理细节。以太网根本工作原理作为一种基于竞争机制的网络环境,以太网允许任何一台网络设备在网络空闲时发送信息。因为没有任何集中式的管理措施,所以非常有可能出现多台工作站同时检测到网络处于空闲状态,进而同时向网络发送数据的情况。这时,发出的信息会相互碰撞而导致损坏。工作站必须等待一段时间之后,重新发送数据。补偿算法用来决定发生碰撞后,工作站应当在何时重新发送数据帧。以太网和TCP/IP可以说是相互相成的,可以说两者的关系几乎是密不可分,以太网在一二层提供物理上的连线,而TCP/IP工作在上层,使用32位的IP地址,以太网则使用48位的MAC地址,两者间使用ARP和RARP协议进展相互转换。从我们上面TCP/IP的模型图中可以清楚的看到两者的关系。生成树协议执行一个称为STA的算法进展计算,通过STA计算,网桥就可以知道网络上是否存在回路。STA在网络中选择一个网桥作为参考点,然后确定到该点的可用路径。如果存在冗余路径,STA就会选择最正确路径用来转发数据,冗余路径会被“切断〞。切断的过程称为阻塞。当网络发生故障时,有一条备份路径可以替补上来,这是就需要重新计算生成树。2.4MAC子层MAC子层有两个根本职能:数据封装,包括传输之前的帧集合和接收中、接收后的帧解析/过失监控;媒体控制,包括帧传输初始化和传输失败恢复。上层协议根据实际应用可以选择多种不同的协议,如IP协议、TCP议、HTTP协议等。MAC子层在上层协议和以太网网络之间的传输和接收数据,其主要功能是确保以太网每一帧数据的传输都遵循了IEEE802.3规*所规定的介质存取规则。2.5根本帧的格式与数据的收发帧的数据格式IEEE802.3规*为实现MAC定义了一套根本的帧数据格式,如图2-2所示。图2-2帧数据格式Fig.2-2Dataframeformat各个字段的含义及规定如下:Preamble〔PRE〕:报头。字段中1和0交替使用,接收方通过该字段知道导入帧,并且该字段提供了同步接收物理层帧接收和导入数据流的方法。Start-of-framedelimiter〔SDF〕:帧起始分隔符。字段中1和0交替使用,结尾是两个连续的1,表示下一位是目的地址的第一个自己的第一位。DestinationAddress〔DA〕:目标地址。表示帧准备发往目的站的地址,共6个字节,可以是单址、多址或全地址,用于识别需要承受帧的目的地。SourceAddress〔SA〕:源地址。用于识别发送帧的源地址,即发送端的网卡地址。Length/Type:长度/类型。表示包含在帧数据字段中的LLCPDU数据长度,也可以表示帧的类型,该字段用于表示数据字段中包含的高层协议,也就是说,该字段告诉接收设备如何解释数据字段。Data:数据。即要传送的LLC数据,MAC的数据域,是一组n〔46<n<1500〕46≤n≤46≤n≤1500Framechecksequence〔FCS〕:是32位冗余检验码〔CRC〕。检验除前导、SFD和FCS以外的内容。当发送站发出帧时,一边发送,一边逐位进展CRC检验。最后形成一个32位CRC检验和填在帧尾FCS位置中一起在媒体上传输。接收站接收后,从DS开场同样边接收边逐位进展CRC检验。最后接收站形成的检验和假设与帧的检验和一样,则表示媒体上传输帧未被破坏。反之,接收站认为帧被破坏,则会通过一定的机制要求发送站重发该帧。从帧的构造可以看出,MAC层协议在LLC层数据的前面,加上帧头和帧尾,组装成完整的数据帧,经物理层发送出去,即:上层信息经过LLC层时被封装成LLC帧,LLC帧经过MAC层时又被封装成MAC帧。帧传输MAC层从上层协议接收到发送帧数据的请求,首先按照下面的次序将数据和地址信息保存到MAC层的帧数据缓冲区中。•插入报头和帧起始分隔符。•插入目标地址和源地址。•统计来自上层协议数据的数量,插入数量值。•插入来自上层协议的数据,如果数据量小于46字节,则补齐46字节。•根据目标地址、源地址、长度/类型和数据产生CRC,校验序列,并插入校验序列。一帧完整数据组成后,MAC层可以开场发送帧数据。有两种发送方式可供选择:半双工〔halfduple*〕和全双工〔fullduple*〕。IEEE802.3规*规定所有的以太网MAC都要支持半双工方式,即一个时刻只能进展发送或者接收,而不能同时进展发送和接收。全双工方式下发送和接收可以同时进展。帧接收帧接收的过程和发送的过程是相反的。首先检查证数据中的目标地址和当前地址是否相符,然后检查接收到的帧数据中的数据长度、CRC校验序列和实际的数据长度、CRC校验序列是否相符。如果都相符,则将数据交给上层协议进展解析,MAC层的传输任务完成。2.6媒体无关接口〔MediaIndependentInterface〕IEEE802.3规*提出媒体无关接口〔MediaIndependentInterface,MII〕就是为了能够实现MAC层和不同的物理层〔PHY〕之间的逻辑连接,如图2-3所示。图2-3MAC层和不同物理层间的逻辑连接这个图没有居中这个图没有居中Fig.2-3TheMAClayerandthephysicallayerofthelogicalconnectionbetweendifferentMAC层可以通过媒体无关接口连接不同的物理层。根据对以太网通信速率的要求选择适宜物理接口。针对不同的物理层,媒体无关接口可以以不同的方式实现到MAC的逻辑连接。例如在10Mbit/s以太网通信中,媒体无关接口使用1位4位来串行发送/接收数据流;在100Mbit/s以太网通信中,媒体无关接口使用4位来串行发送/接收数据流;在1000Mbit/s以太网通信中,媒体无关接口使用8位来串行发送/接收数据流。4位2.7以太网控制器〔MAC〕的根本框架以太网控制器〔MAC〕实际上实现了以太网标准的第二层协议------MAC〔媒体控制〕协议,完全符合IEEE802.3规*所规定的10Mbit/s和100Mbit/s以太网标准。如图2-4所示,使用这个以太网控制器外部连接一块PHY芯片〔实现了物理层功能的芯片〕就可以进展数据链路层的通信,即帧通信。在此根底上可以方便、快捷地开发出更高层次的协议,实现FTP、HTTP等协议。图2-4以太网控制器的连接Fig.2-4ConnectanEthernetcontroller这个以太网控制器具体实现了以下内容。•符合IEEE802.3规定的全双工帧控制。•半双工传输模式下的CSMA/CD协议。•32位CRC校验序列的自动产生和检查。•报头的产生和去除。•发送和接收数据包的完全状态控制。•满足IEEE802.3规定的MII〔媒体无关接口〕。针对以太网控制器需要完成的任务,接下来设计以太网控制器的程序框架,几个主要局部如下:•主机接口〔HostInterface〕主机接口用来连接主机局部,将接收到的数据帧保存到存储器中,同时从存储器中再如需要通过以太网借口传输的数据。主机上可以实现更高层次的以太网协议。•数据发送模块〔TransmitModule〕:完成所有与发送数据相关的操作,包括产生报头、添加CRC校验序列等。•数据接收模块〔ReceiveModule〕:完成所有与接收数据相关的操作,包括取出报头、CRC校验。•控制模块〔ControlModule〕:完成以太网控制器所有功能需要执行的操作。•媒体无关接口模块〔MediaIndependentInterface〕:提供一个与媒体无关的接口,用来连接外部的以太网PHY控制芯片。•状态显示模块〔StatusModule〕:记录以太网控制器芯片进展数据传时各个状态的变化。•存放器模块〔RegisterModule〕:为以太网控制器芯片提供需要的所有存放器。第三章CRC与其串、并行算法数字通信要求传输过程中所造成的数码过失足够低。引起传输过失的根本原因是信道内存在噪声及信道传输特性不理想造成的码间串扰,为了尽可能的提高通信的可靠性,需要采用信道编码技术,对可能或已经出现的过失进展控制,CRC(循环冗余校验)码就是其中一种有效的编码技术,它以其检出概率高且易于用硬件实现的优点在移动通信、计算机通信、USB接口、测控等领域有着广泛的应用。3.1CRC校验方法的根本原理CRC码由一个生成多项式(最高次幂为k)产生,k次幂的生成多项式可产生k-1位的冗余码。设TCC数字系统中待校验的信息码有n位,M(*)=(mn-1,mn-2,...,m1,m0),将信息码用多项式M(*)表示:M(*)=mn-1*n-1+mn-2*n-2+…+m1*+m0(1)假设生成多项式g(*)的最高次幂为k,则先在式(1)的两端乘以*k,变成:*kM(*)=mn-1*kk+n-1+mn-2*k+n-2+…+m1*k+1+m0*k(2)*kM(*)模2除以g(*),得余数多项式为R(*),即:eq\f(*kM(*),g(*))=q(*)+eq\f(R(*),g(*))(3)余数多项式R(*)可表示为:R(*)=rk-1*k-1+rk-2*k-2+…+r1*1+r0(4)将式(2)和式(4)代入式(3),得:q(*)g(*)=*kM(*)+R(*)=mn-1*k+n-1+…+m0*k+rr-1*k-1+…+r1*+r0(5)式(5)对应的码组为n+k位,即:M′=(mn-1,mn-2,…,m1,m0,rk-1,rk-2,…,r1,r0)(6)所得到rk-1,rk-2,…,r1,r0即为校验位.在接收端,将接收到的n+k位码(即M′)除以一样的生成多项式g(*),假设产生余数为零或者为一恒定值,就认为接收到的信息正确无误;否则就认为在传输过程中发生了误码。图3-1即为CRC校验原理图:图3-1CRC校验原理图Gig.3-1CRCverificationprinciplediagram循环冗余校验码〔CRC〕是一种系统的缩短循环码,它只能检测出错误,而不能纠正错误。广泛应用于帧校验。CRC码的构造如图3-2所示:图3-2CRC码的构造图Fig.3-2StructurediagramofCRCcodes3.2CRC的串行移位存放器的实现CRC的串行数据输入计算可以用一个线性反响移位存放器(LFSR)来实现。以CRC-16为例子阐述,其生成多项式为:g(*)=*16+*12+*5+1,电路构造如图3-3所示。当每一个时钟降临时输入1bit数据,经过相应的异或和移位运算,此位数据输入完毕,再延迟16个时钟周期,即可得到CRC校验码。CRC串行电路优点是电路简单,但是每一个时钟脉冲只完成一个比特的计算,这样就大大的影响了数据的传输速率。图3-3CRC-16的电路构造图Fig.3-3CircuitdiagramofCRC-16下面我们以CRC-16为例来说明任意长度数据流的CRC校验码生成过程。我们采用将数据流分成假设干个8bit字符,并由低字节到高字节传送的并行方法来求CRC校验码。具体计算过程为:用一个16bit的存放器来存放CRC校验值,且设定其初值为0*0000;将数据流的第一个8bit与16bit的CRC存放器的高字节相异或,并将结果存入CRC存放器高字节;CRC存放器左移一位,最低1bit补零,同时检查移出的最高1bit,假设移出的最高1bit为0,则继续按上述过程左移,假设最高1bit为1,则将CRC存放器中的值与生成多项式码相异或,结果存入CRC存放器值;继续左移并重复上述处理方法,直到将8bit数据处理完为止,则此时CRC存放器中的值就是第一个8bit数据对应的CRC校验码;然后将此时CRC存放器的值作为初值,用同样的处理方法重复上述步骤来处理下一个8bit数据流,直到将所有的8bit字符都处理完后,此刻CRC存放器中的值即为整个数据流对应的CRC校验码。1110商为1110,即14,商有4位,表示进展了4次*OR________1001/1111000被除数120是1111000,除数9是10011001^----1100第一次*OR后得到011,参加下一位0。最高位的0可以消掉了,这样最高位是1,所以下个商是11001^----1010第二次*OR后得到0101,参加下一位0。最高位的0可以消掉了,这样最高位是1,所以下个商是11001^----0110第三次*OR后得到0011,参加下一位0。最高位的0可以消掉了,这样最高位是0,所以下个商是00000^----110->最后一次*OR后得到0110,最高位的0可以消掉了,得到余数为110,即6。余数110是1111〔即十进制15〕的CRC。为什么.因为CRC是和数据一起传送的,所以数据后面要加上CRC。数据1111加上CRC110后,变成1111110,再传送。接收机收到1111110后,除以除数1001,余数为000,正确;如果余数不为0,则说明传送的数据有误。这样完成CRC校验。即发送端要发送1111,先在1111后加000,变成1111000,再除以1001得到余数110,这个110就是CRC,将110加到数据后面,变成1111110,发送出去。接收端收到1111110,用它除以1001,计算得余数为000,就说明收到的数据正确。所以原始数据后面要先扩展出3位0,以容纳CRC值。所以,实际上,数据是1111,CRC是110。对于除数1001,我们叫它生成多项式,即生成项,或POLY,即g(*)。数据1111根据POLY1001,计算得到CRC110。如果POLY不是1001,而是1011,那得到的CRC也是不同的。所以生成项不同,得到的CRC也不同。要预先定义好POLY,发送端和接收端要用一样的POLY。这块全不要了,因为这块写的与你上文介绍的不符同理,本论文研究CRC-32也是同样计算,如生成多项式为G(*)写的不对重新查阅我给你的那个国外的文档:G〔*〕=*32+*26+*2+*+1其电路构造图如图3-4:这块全不要了,因为这块写的与你上文介绍的不符G(*)写的不对重新查阅我给你的那个国外的文档图3-4CRC-32电路构造图这个图出了页边界,缩回去这个图出了页边界,缩回去Fig.3-4StructurediagramofCRC-323.3CRC的并行实现串行实现方法电路构造简单,但是一个时钟周期只能计算1位数据,效率低下,因此需要引入并行的计算方法,以提高CRC的计算速度。当进展串行运算时,当前的CRC余数值只与信息码的当前一位的输入值和前一状态的余数值有关.假设进展并行运算,如8位并行运算,即8位信息码同时输入并行运算电路所产生的CRC余数与串行运算时连续8位信息码相继输入串行运算电路所产生的CRC余数一样,则称这两种电路是等效的。由此产生出CRC并行计算方法。其运算过程如下:设rij为图1中移位存放器状态值,mi为输入信息码序列,i=1,2,,,为输入信息码序号,j=0,1,,,k-1,为移位存放器编码,则:下面以8位并行输入为例,推导8位并行计算的CRC-16(其中生成多项式为g(*)=*16+*15+*2+1,即K=16)的逻辑关系式。利用式(1),可递推出r80,…,r815:如式(2)所示,类似地可推导出r81,…,r815.并定义:则可得表3-5:表3-58位并行计算的CRC-16逻辑关系式Table3-58CRC-16logicrelationofparallelputingformula根据表3-5的逻辑关系式容易直接实现8位并行的CRC-16的硬件运算电路,图3-6为其硬件示意图。图3-68位并行的CRC-16硬件实现示意图Fig.3-68bitparallelimplementationofCRC-16hardwareschematicdiagram上述方法的推导过程虽然是针对8位并行CRC-16运算为例进展的,但这种方法具有通用性,即用这种方法可推导各种CRC生成多项式的各种并行度的并行计算逻辑关系式。3.4CRC-16并行算法的实现CRC存放器的高位字节基于8位数据的输入和8位存放器的内容,把这些作为地址输入到64k×8位EPROM中,它可以直接输出CRC存放器的下一个内容。用最高速率为40MbytesΠs的EPROM,总处理周期仅为25ns或更小。CRC存放器的低位字节仅包含3个(R8,R7和R1)需要所有类型计算的值。R1等价于R16*ORR9,R1、R7、R8的输入数值可以用一个小型PLD来完成。所有这些也可以用单级*OR门来计算,*1到*8和2个256×8位EPROM来共同完成。另一种方法是直接用FPGA或CPLD在逻辑中计算*OR项。可以看出R1是最大的*OR计算,它含有17项,大量*OR构造的执行消耗了CPLD中大量的乘积项,但其中许多*OR项通常作为CRC存放器其它位的输入。当*OR的宽度为17时,它不可能在单级逻辑为512宏以下的CPLD中执行,然而*OR操作可以在2级逻辑中执行。用单级时延≤10ns的CPLD,并确保输入数据通过其内部流水线,时序由其内部时延决定,这时*OR可以在单片内执行。3.5CRC-32并行算法的实现CRC-32并行算法是由CRC-16派生而来的,不同的是数据同一时间操作为16位(半字),CRC存放器长度为32位,所用的多项式也不同。CRC-32存放器的LSHW仅依赖于CRC-32存放器低位字位的初始化内容、输入数据和CRC-32的MSHW的初始化内容的*OR组合。除数据量增加外,执行这种算法象执行CRC-16算法一样困难。由于是同时计算16位,查表可知,*i计算的执行要16位输入和16位输出,这表示要用64k×16位的EPROM。设串行通信最大速率为40MbytesΠs这两个字母是什么,删去,CRC可同时计算2个字节,给出2个周期(50ns)来执行运算,用一个EPROM是不够的。CRC存放器馈给R20和R21的有22项,是最大的*OR组合。在一个CPLD中,单级逻辑不可能实现,然而在50ns的限制下,用3级逻辑,慢速CPLD(66MHz)可以实现。图3-5给出了在CRC-32设计中*OR3局部的逻辑时延。3级逻辑每级时延15ns(66MCPLD),给出最大时延为45ns,考虑布线时延小于2ns,它对50ns的要求比拟充裕。这两个字母是什么,删去图3-5CRC-32逻辑时延的产生Fig.3-5CRC-32logicdelay第四章FPGA的系统构造和开发流程4.1FPGA的概念和根本构造FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的根底上进一步开展的产物。它是作为专用集成电路〔ASIC〕领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又抑制了原有可编程器件门电路数有限的缺点。图4-1FPGA的根本构造Fig.4-1ThebasicstructureofFPGAFPGA采用了逻辑单元阵列LCA〔LogicCellArray〕这样一个新概念,内部包括可配置逻辑模块CLB〔ConfigurableLogicBlock〕、输出输入模块IOB〔InputOutputBlock〕和内部连线〔Interconnect〕三个局部。FPGA的根本特点主要有:1〕采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2〕FPGA可做其它全定制或半定制ASIC电路的中试样片。3〕FPGA内部有丰富的触发器和I/O引脚。4〕FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5〕FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最正确选择之一。目前FPGA的品种很多,有*ILIN*的*C系列、TI公司的TPC系列、ALTERA公司的FIE*系列等。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进展编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。以各种类型的FPGA芯片加上实验开发需要的外围通用电路,结合实验程序,就形成FPGA开发板,可以高效快速学习FPGA开发。Spartan-6FPGA为*ilin*的低本钱、低功耗FPGA。第六代Spartan系列基于低功耗45nm、9金属铜层、双栅极氧化层工艺技术,以及高级功耗管理技术。Spartan-6系列不仅拥有业界领先的系统集成能力,同时还能实现适用于大批量应用的最低总本钱,该系列由13个成员组成,可提供的密度从3,840个逻辑单元到147,443个逻辑单元不等。与上一代Spartan系列相比,该系统功耗仅为其50%,且速度更快、连接功能更丰富全面。Spartan-6系列采用成熟的45nm低功耗铜制程技术制造,实现了性价比与功率的完美平衡,能够提供全新且更高效的双奇存器6输入查找表〔LUT〕逻辑和一系列丰富的内置系统级模块,其中包括18Kb〔2×9Kb〕BlockRAM、第二代DSP48A1Slice、SDRAM存储器控制器、增强型混合模式时钟管理模块、SelectlO技术、功率优化的高速串行收发器模块、PCIE*press兼容端点模块、高级系统级电源管理模式、自动检测配置选项,以及通过AES和DeviceDNA保护功能实现的增强型IP平安性。这些优异特性以前所未有的易用性为定制ASIC产品提供了低本钱的可编程替代方案。Spartan-6FPGA可为大批量逻辑设计、以消费类为导向的DSP设计以及本钱敏感型嵌入式应用提供最正确解决方案。Spartan-6FPGA奠定了坚实的可编程芯片根底,非常适用于可提供集成软硬件组件的目标设计平台,以使设计人员在开发工作启动之初即可将精力集中到创新工作上。本毕业设计使用的是*ilin*公司的spartan-6系列FPGA,这一系列的FPGA如表4-2所示.实验初期我们采用的*C6SL*16.表4-2FPGA表格Table4-2FPGAform4.2FPGA设计流程FPGA设计分为设计准备、设计输入、设计处理、功能仿真、器件编程、时序仿真和下载配置七个步骤,设计流程如图4-3所示。图4-3FPGA的设计流程图Fig.4-3FPGAdesignflowchart(一)设计准备可编程逻辑设计是利用EDA开发软件和编程工具对器件进展开发的过程。高密度复杂可编程逻辑器件的设计流程,如图4-3所示。(二)设计输入l)原理图原理图输入方式是最直接的设计描述方式,要设计什么,就从软件系统提供的元件库中调出来,画出原理图。其优点是容易实现仿真,便于观察信号和调整电路;缺点是效率低。2)硬件描述语言硬件描述语言是用文本方式描述设计。其突出优点有:1、语言与工艺的无关性,使设计人员在系统设计、逻辑验证阶段便于确立方案的可行性。2、语言的公开可利用性,便于实现大规模系统设计。3、很强的逻辑描述和仿真功能,且输入效率高。4、在不同的设计输入库之间转换非常方便,无需熟悉底层电路和PLD构造。3)波形输入波形输入方式主要用于建立和编辑波形设计文件、输入仿真向量和功能测试向量。波形设计输入适用于时序逻辑和有重复性的逻辑函数。(三)功能仿真功能仿真是使用仿真工具对完成的设计进展测试,模拟实际物理环境下的工作情况。功能仿真也称为前仿真,仅对逻辑功能进展测试模拟,了解其实现的功能是否满足原设计的要求,仿真过程未参加时序信息,不涉及具体器件的硬件特性。(四)设计处理设计处理是器件设计的核心环节。设计处理过程中,编译软件对设计输入文件进展逻辑化简、综合优化和适配,产生编程用的编程文件、主要包括:语法检查和设计规则检查、逻辑优化和综合、映射、适配和分割、布局和布线、时序提取和配置等相关工作。(五)时序仿真时序仿真也称为后仿真,是在布局布线后,提取有关的器件延迟、连线延时等时序参数,在此根底上进展仿真。这种仿真接近真实器件的运行情况。(六)下载配置下载配置是将设计实现生成的位流下载到FPGA芯片中,也叫芯片一配置。因FPGA大多支持IEEE的JTAG(JointTestActionGrouP)标准,所以使用芯片生成的J认G口是常用的下载方式。将位流文件下载到FPGA中进展物理测试即为电路验证。第五章CRC-32的串、并行仿真与比拟这个章怎么没有使用分页符这个章怎么没有使用分页符5.1如何使用ISE仿真器1、翻开ISE桌面图标并进入工程管理器:2、单击【File】→【NewProject】:如以下图,填写工程名称、工程路径,然后单击【Ne*t】:4、如以下图,选择目标器件,然后单击【Ne*t】:单击【Ne*t】:单击【Ne*t】:单击【Finish】:8、单击【Project】→【NewSource】:如以下图,选择源文件类型【VHDLModule】,填写源文件名称、路径然后单击【Ne*t】:10、如以下图,填写输入输出端口名、端口模式、是否总线、总线的标号*围,然后单击【Ne*t】:进入文本编辑器:12、在文本编辑器中输入源文件:5.2串、并行算法代码和仿真图串行CRC-32生成器verilog代码:modulecrc_gen(inputrst,/*asyncreset,activelow*/inputclk,/*clockinput*/inputdata_in,/*serialdatainputpins*/outputfeedback,outputcrc);regfeedback;reg[31:0]crc;/**sequentialprocess*/always(posedgeclk)beginif(rst==0) begin crc<=32'b0; feedback=0; endif(rst==1) begin feedback=crc[31]^data_in; crc[31]<=crc[30]; crc[30]<=crc[29]; crc[29]<=crc[28]; crc[28]<=crc[27]; crc[27]<=crc[26]; crc[26]<=crc[25]^feedback; crc[25]<=crc[24]; crc[24]<=crc[23]; crc[23]<=crc[22]^feedback; crc[22]<=crc[21]^feedback; crc[21]<=crc[20]; crc[20]<=crc[19]; crc[19]<=crc[18]; crc[18]<=crc[17]; crc[17]<=crc[16]; crc[16]<=crc[15]^feedback;crc[15]<=crc[14];crc[14]<=crc[13];crc[13]<=crc[12];crc[12]<=crc[11]^feedback;crc[11]<=crc[10]^feedback;crc[10]<=crc[9]^feedback;crc[9]<=crc[8];crc[8]<=crc[7]^feedback;crc[7]<=crc[6]^feedback;crc[6]<=crc[5];crc[5]<=crc[4]^feedback;crc[4]<=crc[3]^feedback;crc[3]<=crc[2];crc[2]<=crc[1]^feedback;crc[1]<=crc[0]^feedback;crc[0]<=feedback; endendendmodule仿真时,假设输入一个32位的串行数据为0*aaaaaaaa,功能仿真图如下:展开局部当32位串行数据完全输入后,此时的CRC[31:0]存放器中的值就是CRC校验码,为0010。并行CRC-32生成器verilog代码:moduletop(crc_reg,crc,d,calc,init,d_valid,clk,reset);output[31:0]crc_reg;output[7:0]crc;input[7:0]d;inputcalc;inputinit;inputd_valid;inputclk;inputreset;reg[31:0]crc_reg;reg[7:0]crc;////////////////////////////////////////////////////////////////////////////////InternalSignals//////////////////////////////////////////////////////////////////////////////wire[31:0]ne*t_crc;////////////////////////////////////////////////////////////////////////////////InferCRC-32registers////Thecrc_regregisterstorestheCRC-32value.//Thecrcregisteristhemostsignificant8bitsofthe//CRC-32value.////TruthTable://-----+---------+----------+----------------------------------------------//calc|d_valid|crc_reg|crc//-----+---------+----------+----------------------------------------------//0|0|crc_reg|crc//0|1|shift|bit-swapped,plimentedmsbyteofcrc_reg//1|0|crc_reg|crc//1|1|ne*t_crc|bit-swapped,plimentedmsbyteofne*t_crc//-----+---------+----------+----------------------------------------------////////////////////////////////////////////////////////////////////////////////always(posedgeclkorposedgereset)beginif(reset)begincrc_reg<=32'hFFFFFFFF;crc<=8'hFF;endelseif(init)begincrc_reg<=32'hFFFFFFFF;crc<=8'hFF;endelseif(calc&d_valid)begincrc_reg<=ne*t_crc;crc<=~{ne*t_crc[24],ne*t_crc[25],ne*t_crc[26],ne*t_crc[27],ne*t_crc[28],ne*t_crc[29],ne*t_crc[30],ne*t_crc[31]};endelseif(~calc&d_valid)begincrc_reg<={crc_reg[23:0],8'hFF};crc<=~{crc_reg[16],crc_reg[17],crc_reg[18],crc_reg[19],crc_reg[20],crc_reg[21],crc_reg[22],crc_reg[23]};endend////////////////////////////////////////////////////////////////////////////////CRC*ORequations//////////////////////////////////////////////////////////////////////////////assignne*t_crc[0]=crc_reg[30]^d[7]^crc_reg[24]^d[1];assignne*t_crc[1]=crc_reg[30]^crc_reg[31]^d[6]^d[7]^crc_reg[24]^d[0]^crc_reg[25]^d[1];assignne*t_crc[2]=crc_reg[30]^crc_reg[31]^d[5]^d[6]^d[7]^crc_reg[24]^crc_reg[25]^crc_reg[26]^d[0]^d[1];assignne*t_crc[3]=d[4]^crc_reg[31]^d[5]^d[6]^crc_reg[25]^crc_reg[26]^crc_reg[27]^d[0];assignne*t_crc[4]=crc_reg[30]^d[4]^d[5]^d[7]^crc_reg[24]^crc_reg[26]^crc_reg[27]^crc_reg[28]^d[1]^d[3];assignne*t_crc[5]=crc_reg[30]^d[4]^crc_reg[31]^d[6]^d[7]^crc_reg[24]^crc_reg[25]^crc_reg[27]^crc_reg[28]^crc_reg[29]^d[0]^d[1]^d[2]^d[3];assignne*t_crc[6]=crc_reg[30]^crc_reg[31]^d[5]^d[6]^crc_reg[25]^crc_reg[26]^crc_reg[28]^crc_reg[29]^d[0]^d[1]^d[2]^d[3];assignne*t_crc[7]=d[4]^d[5]^crc_reg[31]^d[7]^crc_reg[24]^crc_reg[26]^crc_reg[27]^crc_reg[29]^d[0]^d[2];assignne*t_crc[8]=d[4]^d[6]^d[7]^crc_reg[24]^crc_reg[25]^crc_reg[27]^crc_reg[28]^crc_reg[0]^d[3];assignne*t_crc[9]=d[5]^d[6]^crc_reg[25]^crc_reg[26]^crc_reg[28]^crc_reg[29]^d[2]^crc_reg[1]^d[3];assignne*t_crc[10]=d[4]^d[5]^d[7]^crc_reg[24]^crc_reg[26]^crc_reg[27]^crc_reg[29]^d[2]^crc_reg[2];assignne*t_crc[11]=d[4]^crc_reg[3]^d[6]^d[7]^crc_reg[24]^crc_reg[25]^crc_reg[27]^crc_reg[28]^d[3];assignne*t_crc[12]=crc_reg[30]^d[5]^crc_reg[4]^d[6]^d[7]^crc_reg[24]^crc_reg[25]^crc_reg[26]^crc_reg[28]^crc_reg[29]^d[1]^d[2]^d[3];assignne*t_crc[13]=d[4]^crc_reg[30]^crc_reg[31]^d[5]^d[6]^crc_reg[5]^crc_reg[25]^crc_reg[26]^crc_reg[27]^crc_reg[29]^d[0]^d[1]^d[2];assignne*t_crc[14]=d[4]^crc_reg[30]^d[5]^crc_reg[31]^crc_reg[6]^crc_reg[26]^crc_reg[27]^crc_reg[28]^d[0]^d[1]^d[3];assignne*t_crc[15]=d[4]^crc_reg[31]^crc_reg[7]^crc_reg[27]^crc_reg[28]^crc_reg[29]^d[0]^d[2]^d[3];assignne*t_crc[16]=d[7]^crc_reg[24]^crc_reg[8]^crc_reg[28]^crc_reg[29]^d[2]^d[3];assignne*t_crc[17]=crc_reg[30]^d[6]^crc_reg[25]^crc_reg[9]^crc_reg[29]^d[1]^d[2];assignne*t_crc[18]=crc_reg[30]^d[5]^crc_reg[31]^crc_reg[26]^d[0]^d[1]^crc_reg[10];assignne*t_crc[19]=d[4]^crc_reg[31]^crc_reg[27]^d[0]^crc_reg[11];assignne*t_crc[20]=crc_reg[12]^crc_reg[28]^d[3];assignne*t_crc[21]=crc_reg[13]^crc_reg[29]^d[2];assignne*t_crc[22]=crc_reg[14]^d[7]^crc_reg[24];assignne*t_crc[23]=crc_reg[30]^d[6]^d[7]^crc_reg[24]^crc_reg[15]^crc_reg[25]^

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论