论文crc算法及fpga的实现

上传人:无*** 文档编号:106367840 上传时间:2022-06-13 格式:DOC 页数:31 大小:122.50KB
返回 下载 相关 举报
论文crc算法及fpga的实现_第1页
第1页 / 共31页
论文crc算法及fpga的实现_第2页
第2页 / 共31页
论文crc算法及fpga的实现_第3页
第3页 / 共31页
点击查看更多>>
资源描述
-第一章绪论信息对人类来说是非常重要的,从古代到现代,信息发挥着越来越大的作用,尤其到了现代,信息更是发挥了无可比拟的作用,因此,如何使得信息能够正确快速的传递,成为了一个非常重要的问题。人们对信息的认识利用,可以追溯到古代的通信实践。中国古代的“烽隧相望还有古罗马地中海诸城市的“悬灯为号,可以说是传递信息的较为原始的方式。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%以上的局域网采用以太网技术。目前,以太网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的开展概况及现状FPGAFieldProrammable Gate Array,即现场可编程门阵列,它是在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采用了逻辑单元阵列LCALogic Cell Array这样一个概念,内部包括可配置逻辑模块CLBConfigurable Logic Block、输出输入模块IOBInput Output Block和内部连线Interconnect三个局部。现场可编程门阵列FPGA是可编程器件,与传统逻辑电路和门阵列如PAL,GAL及CPLD器件相比,FPGA具有不同的构造。FPGA利用小型查找表161RAM来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的根本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。第二章以太网控制器MAC构造功能分析2.1 以太网的开展和日常应用从办公室、工厂到家庭,我们正在经历一场网络连接的革命。企业和住宅用户可以发送和接收空前丰富的语音、数据、图像、视频信息、高度可操作的应用和高级带宽效劳。随着更多的建筑、生产设备、智能家庭、智能因特网设备开场相互连接,巨大的商机呈现在先进半导体的面前。网络将医院、大学校园、社区、商业和工业团体相互连接起来,同时还能连接到因特网。随着网络的扩展,用户需要在不同子网之间进展更多的标准化、低本钱的连接。以太网是他们的首选接口。联网烹饪:设想一台微波炉带有条形码扫描仪,它的存储器中包含成千上万种菜肴的烹制信息。微波炉可以通过以太网连接到其它厨房设备,实现智能化家庭管理。联网售货:通过连接到网络的售货机,销售商可以监控货物销售,处理实时信用卡交易,进展存货管理和维护,并对恶意破坏行为作出反响。联网医疗:在病房中使用*监控器,使护理人员能够密切注视每个房间中的病人,并在护士站的监控器界面上发出报警或警告信号。微控制器使这一切得以实现微控制器可简化以太网联网,并为各种应用提供连接。要在这些应用中进展高效通信,微控制器需要一些根本的组件,包括 TCP/IP 协议栈、媒介控制器(MAC)、物理层(PHY),以及足够的程序和数据存储空间资源。TCP/IP 协议将系统连接到因特网,是在网络上传输数据的事实上的标准。这块不应该换行MAC 支持 IEEE 802 标准中定义的 CSMA/CD,而 PHY 是第一层协议,可以是调制解调器或以太网EPHY的形式。一般所说的以太网协议是指根据 IEEE 802.3 规*制定的局域网协议(LAN,Local Network)中的 CSMA/CD 协议。目前,以太网通信常用的介质是双绞线和光纤。其中,CSMA/CD 协议是 Carrier sense multiple Access with Collision Detection 的缩写,是带有检测冲突的载波侦听多路存取协议,IEEE802.3 标准适用于 1-持续 CSMA/CD 局域网。其工作原理是:当站点希望传送时,它就等到线路空闲为止,否则就立即传输。如果两个或多个站点同时在空闲的电缆上开场传输,它们就会冲突。于是所有冲突站点终止传送,等待一个随机的时间后,再重复上述过程。已出版的 802.3 标准与以太网的细微差异是:它描述了运行在各种介质上的从 1Mb/s10Mb/s 的 1-持续 CSMA/CD 系统的整个家族。另外,二者的一个头部字段也有所不同802.3 的长度字段用作以太网的分组类型。许多人错误地把“以太网作为 CSMA/CD 协议的总称,尽管这一名词只表示了实现 802.3 的*个特定产品。2.2 以太网控制器简述以太网连接采用最简单的 TCP/IP 协议集和微控制器,就可以实现最小功能设备之间的连接。要实现经济高效的连接,以太网连接必须是标准化和嵌入式的。强大的用户根底:作为通用的网络接口,以太网在 WAN 和 MAN 节点中的应用得到飞速的增长。目前,全球已有 3 亿多个基于以太网的企业网络,这足以证明以太网的巨大成功,并为以太网成为行业标准奠定了坚实根底。全球超过 85%的现有网络连接是以太网。以太网不仅拥有庞大的用户根底,而且保持着强劲的增长势头,所以很可能一统连接方式的天下。 推出伊始,以太网就成为全球标准,更是当前使用最广泛的局域网LAN。虽然许多网络正在升级为快速以太网100 Mbps,但最常见的以太网数据传输率仍然是 10 Mbps。下一代以太网将是超过 1,000 Mbps 的千兆以太网。内容改一下 最常见的是100M和1000M的以太网,并且已经出现了10G和100G以太网。用独特的单芯片 16 位以太网解决方案,实现了以太网联网和因特网的连接。带有集成的 10/100 Base-T 以太网 MAC/PHY,可以适应各种数据速率,它还具有灵活的寻址功能,支持不同大小的数据包。其拥有比 8 位解决方案更强的处理能力和更多的存储资源共享 8 KB 的 RAM 数据消息存储区,可优化吞吐量和存储空间使用之间的平衡,将存储空间合理分配给协议栈的保存、应用代码和外围设备驱动程序,从而将能绝大多数的 MCU 资源保存给各种应用。响应快速的微控制器使对各种大小的 IP 数据包都有充裕的时间进展组装/拆卸,即使在要求苛刻的工业环境中也应对自如,集高速内部总线与出色的寻址模式比方多字节预/后减量索引寻址于一身,从而可以承担以太网联网的重任,并通过以太网进展远程监测或控制。2.3 以太网根本原理一般所说的以太网协议是指根据 IEEE 802.3 规*制定的局域网协议(LAN,Loal Area Network)中的 CSMA/CD 协议。目前,以太网通信常用的介质是双铰线和光纤。CSMA/CD 协议是 Carrier sense multiple Access Collision Detection的缩写,是带有检测冲突的载波侦听多路存取协议。 以太网协议的参考模型以太网协议的逻辑关系遵循 OSI 参考模型Open System InterconnectReference Model,开放式系统互联参考模型,如图 2-1 所示。物理层是指网络通信连接的媒介物质,用于携带计算机之间的以太网信号。当前应用最多的是双铰线和光纤。使用这两种媒介,以太网目前可以实现 4 种传输速率。 10Mbit/s:10Base-T 以太网。 100Mbit/s:快速以太网。 1000Mbit/s:千兆位以太网 802.3z。 10 千兆位以太网:IEEE 802.3ae。在进展实际的以太网通信中,每一种协议都是运行在其下面层次的协议根底上。例如,当两个计算机系统使用 FTP 协议传输文件时,从用户看来是两个系统基于 FTP 协议的直接交流,实际上文件的数据传输则是经过了层层打包和解包的协议路径。图 2-1 OSI参考模型Fig.2-1 The OSI reference model上层的各个协议栈要分别实现对数据的打包、解包、校验以及对下一层相关协议的调用。例如,在 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.4 MAC 子层MAC 子层有两个根本职能:数据封装,包括传输之前的帧集合和接收中、接收后的帧解析/过失监控;媒体控制,包括帧传输初始化和传输失败恢复。上层协议根据实际应用可以选择多种不同的协议,如 IP 协议、TCP 议、HTTP协议等。MAC 子层在上层协议和以太网网络之间的传输和接收数据,其主要功能是确保以太网每一帧数据的传输都遵循了 IEEE802.3 规*所规定的介质存取规则。2.5 根本帧的格式与数据的收发帧的数据格式IEEE802.3 规*为实现 MAC 定义了一套根本的帧数据格式,如图 2-2 所示。图 2-2 帧数据格式Fig.2-2 Data frame format各个字段的含义及规定如下:PreamblePRE:报头。字段中 1 和 0 交替使用,接收方通过该字段知道导入帧,并且该字段提供了同步接收物理层帧接收和导入数据流的方法。Start-of-frame delimiterSDF:帧起始分隔符。字段中 1 和 0 交替使用,结尾是两个连续的 1,表示下一位是目的地址的第一个自己的第一位。Destination AddressDA:目标地址。表示帧准备发往目的站的地址,共6个字节,可以是单址、多址或全地址,用于识别需要承受帧的目的地。Source AddressSA:源地址。用于识别发送帧的源地址,即发送端的网卡地址。Length/Type :长度/类型。表示包含在帧数据字段中的 LLC PDU 数据长度,也可以表示帧的类型,该字段用于表示数据字段中包含的高层协议,也就是说,该字段告诉接收设备如何解释数据字段。Data:数据。即要传送的LLC数据,MAC的数据域,是一组 n46n 最后一次*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:图 3-4 CRC-32电路构造图这个图出了页边界,缩回去Fig.3-4 Structure diagram of CRC-323.3 CRC的并行实现串行实现方法电路构造简单,但是一个时钟周期只能计算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-5 8位并行计算的CRC-16逻辑关系式Table 3-58 CRC-16 logic relation of parallel puting formula根据表3-5的逻辑关系式容易直接实现8位并行的CRC-16的硬件运算电路,图3-6为其硬件示意图。图 3-6 8位并行的CRC-16硬件实现示意图Fig.3-6 8 bit parallel implementation of CRC-16 hardware schematic diagram上述方法的推导过程虽然是针对8位并行CRC-16运算为例进展的,但这种方法具有通用性,即用这种方法可推导各种CRC生成多项式的各种并行度的并行计算逻辑关系式。3.4 CRC-16并行算法的实现CRC存放器的高位字节基于8位数据的输入和8位存放器的内容,把这些作为地址输入到64 k8位EPROM中,它可以直接输出CRC存放器的下一个内容。用最高速率为40 Mbytess的EPROM,总处理周期仅为25 ns或更小。CRC存放器的低位字节仅包含3个(R8,R7和R1)需要所有类型计算的值。R1等价于R16*OR R9,R1、R7、R8的输入数值可以用一个小型PLD来完成。所有这些也可以用单级*OR门来计算,*1到*8和2个2568位EPROM来共同完成。另一种方法是直接用FPGA或CPLD在逻辑中计算*OR项。可以看出R1是最大的*OR计算,它含有17项,大量*OR构造的执行消耗了CPLD中大量的乘积项,但其中许多*OR项通常作为CRC存放器其它位的输入。当*OR的宽度为17时,它不可能在单级逻辑为512宏以下的CPLD中执行,然而*OR操作可以在2级逻辑中执行。用单级时延 10 ns的CPLD ,并确保输入数据通过其内部流水线,时序由其内部时延决定,这时*OR可以在单片内执行。3.5 CRC-32并行算法的实现CRC-32并行算法是由CRC-16派生而来的,不同的是数据同一时间操作为16位(半字),CRC存放器长度为32位,所用的多项式也不同。CRC-32存放器的LSHW仅依赖于CRC-32存放器低位字位的初始化内容、输入数据和CRC-32的MSHW的初始化内容的*OR组合。除数据量增加外,执行这种算法象执行CRC-16算法一样困难。由于是同时计算16位,查表可知, *i计算的执行要16位输入和16位输出,这表示要用64 k16位的EPROM。设串行通信最大速率为40 Mbytess 这两个字母是什么,删去,CRC可同时计算2个字节,给出2个周期(50 ns)来执行运算,用一个EPROM是不够的。CRC存放器馈给R20和R21的有22项,是最大的*OR组合。在一个CPLD中,单级逻辑不可能实现,然而在50 ns的限制下,用3级逻辑,慢速CPLD (66 MHz)可以实现。图3-5给出了在CRC-32设计中*OR 3局部的逻辑时延。3级逻辑每级时延15ns(66 MCPLD),给出最大时延为45ns,考虑布线时延小于2ns,它对50ns的要求比拟充裕。图3-5 CRC-32逻辑时延的产生Fig.3-5 CRC-32 logic delay第四章FPGA的系统构造和开发流程4.1 FPGA的概念和根本构造FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的根底上进一步开展的产物。它是作为专用集成电路ASIC领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又抑制了原有可编程器件门电路数有限的缺点。图4-1 FPGA的根本构造Fig.4-1 The basic structure of FPGAFPGA采用了逻辑单元阵列LCALogic Cell Array这样一个新概念,内部包括可配置逻辑模块CLBConfigurable Logic Block、输出输入模块IOBInput Output Block和内部连线Interconnect三个局部。FPGA的根本特点主要有:1采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2FPGA可做其它全定制或半定制ASIC电路的中试样片。 3FPGA内部有丰富的触发器和IO引脚。 4FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5FPGA采用高速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-6 FPGA为*ilin*的低本钱、低功耗FPGA。第六代Spartan系列基于低功耗45nm、9金属铜层、双栅极氧化层工艺技术,以及高级功耗管理技术。Spartan-6系列不仅拥有业界领先的系统集成能力,同时还能实现适用于大批量应用的最低总本钱,该系列由13个成员组成,可提供的密度从3,840个逻辑单元到147,443个逻辑单元不等。与上一代Spartan系列相比,该系统功耗仅为其50%,且速度更快、连接功能更丰富全面。Spartan-6系列采用成熟的45nm低功耗铜制程技术制造,实现了性价比与功率的完美平衡,能够提供全新且更高效的双奇存器6输入查找表LUT逻辑和一系列丰富的内置系统级模块,其中包括18Kb29KbBlock RAM、第二代DSP48A1 Slice、SDRAM存储器控制器、增强型混合模式时钟管理模块、SelectlO技术、功率优化的高速串行收发器模块、PCI E*press兼容端点模块、高级系统级电源管理模式、自动检测配置选项,以及通过AES和Device DNA保护功能实现的增强型IP平安性。这些优异特性以前所未有的易用性为定制ASIC产品提供了低本钱的可编程替代方案。Spartan-6 FPGA可为大批量逻辑设计、以消费类为导向的DSP设计以及本钱敏感型嵌入式应用提供最正确解决方案。Spartan-6 FPGA奠定了坚实的可编程芯片根底,非常适用于可提供集成软硬件组件的目标设计平台,以使设计人员在开发工作启动之初即可将精力集中到创新工作上。本毕业设计使用的是*ilin*公司的spartan-6系列FPGA,这一系列的FPGA如表4-2所示. 实验初期我们采用的*C6SL*16.表4-2 FPGA表格Table 4-2 FPGA form4.2 FPGA设计流程FPGA设计分为设计准备、设计输入、设计处理、功能仿真、器件编程、时序仿真和下载配置七个步骤,设计流程如图4-3所示。图4-3 FPGA的设计流程图Fig.4-3 FPGA design flow chart(一)设计准备可编程逻辑设计是利用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】【New Project】:3、 如以下图,填写工程名称、工程路径,然后单击【Ne*t】:4、如以下图,选择目标器件, 然后单击【Ne*t】:5、 单击【Ne*t】:6、 单击【Ne*t】:7、 单击【Finish】:8、单击【 Project 】【New Source】:9、 如以下图,选择源文件类型【VHDL Module】,填写源文件名称、路径 然后单击【Ne*t】:10、如以下图,填写输入输出端口名、端口模式、是否总线、总线的标号*围,然后单击【Ne*t】:11、 进入文本编辑器:12、在文本编辑器中输入源文件:5.2 串、并行算法代码和仿真图串行CRC-32生成器verilog代码:module crc_gen( input rst, /*async reset,active low*/ input clk, /*clock input*/ input data_in, /*serial data input pins */ output feedback, output crc);reg feedback;reg 31:0 crc;/*sequential process*/always (posedge clk )begin if(rst=0) begin crc = 32b0; feedback=0; end if(rst=1) begin feedback = crc31 data_in; crc31 = crc30; crc30 = crc29; crc29 = crc28; crc28 = crc27; crc27 = crc26; crc26 = crc25 feedback; crc25 = crc24; crc24 = crc23; crc23 = crc22 feedback; crc22 = crc21 feedback; crc21 = crc20; crc20 = crc19; crc19 = crc18; crc18 = crc17; crc17 = crc16; crc16 = crc15 feedback; crc15 = crc14; crc14 = crc13; crc13 = crc12; crc12 = crc11 feedback; crc11 = crc10 feedback; crc10 = crc9 feedback; crc9 = crc8; crc8 = crc7 feedback; crc7 = crc6 feedback; crc6 = crc5; crc5 = crc4 feedback; crc4 = crc3 feedback; crc3 = crc2; crc2 = crc1 feedback; crc1 = crc0 feedback; crc0 = feedback; endendendmodule仿真时,假设输入一个32位的串行数据为 0*aaaaaaaa, 功能仿真图如下:展开局部当32位串行数据完全输入后,此时的CRC31:0存放器中的值就是CRC校验码,为0010。并行CRC-32生成器verilog代码:module top( crc_reg, crc, d, calc, init, d_valid, clk, reset );output 31:0 crc_reg;output 7:0 crc;input 7:0 d;input calc;input init;input d_valid;input clk;input reset;reg 31:0 crc_reg;reg 7:0 crc;/ Internal Signals/wire 31:0 ne*t_crc;/
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!