FPGA毕业设计论文.doc_第1页
FPGA毕业设计论文.doc_第2页
FPGA毕业设计论文.doc_第3页
FPGA毕业设计论文.doc_第4页
FPGA毕业设计论文.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

硬盘编译码的FPGA实现 中文摘要 在硬盘的数据传输和存取过程中,信道调制编码是一个不可缺少且关系到存储系统性能的环节,它解决的问题主要是使输入的序列得以在介质中存储,并使从介质中读取得信号还原为原本的信息。在使用峰值检测技术的磁盘驱动中的一种标准编码是码率为1/2的(d,k)=(2,7)码,也称Franaszek码。本文阐述了硬盘编译码的FPGA实现的设计,在简要介绍了FPGA技术背景、VHDL语言和MAX+plusII开发平台的基础上,阐述了硬盘编译码的FPGA实现的各模块的设计,并设计了硬盘编译码的FPGA实现的整体架构。Franaszek编码码元长度可变是本设计的一大难点,Franaszek编码是一种同步变长编码,其码率不变但码元长度可变,是一种特殊的变长编码。本设计采用状态机解决了变长编码码元识别的问题,状态机思想的优越性在本设计中得到了很好的体现,在较低的时钟频率下很好地解决的变长编码码元识别的问题。让编码序列连续输出时本设计的另一个难点,由于在编码器中最高时钟频率仅能与输出序列的时钟同步,要在同一个时钟沿解决存入与输出的问题,文中设计了一个缓存控制器用于控制输出的连续性,使输出序列保持连续。采用了VHDL硬件描述语言对各基本模块进行了设计实现,并给出各模块和整个系统的仿真结果。本课题的硬盘编译码器实现,为实用游程长度受限码编译码在的FPGA上的实现做了探索性尝试,为其他信道调制编译码的IP核设计和FPGA实现有一定的借鉴意义。 关键词:游程长度受限码,FPGA, VHDL, MAX+plusII FPGA implementation of hard disk encoding and decoding Abstract During the process of data transmission in the hard disk, channel modulation coding is a necessary and also related to the performance of the storage system. It solve the problem which the inputted sequence can be recorded at read from the storage media. One of the coding mode is used in the disk drive which adopt the peak detection technology as a standard code, its code rate is 1/2 and (d, k) = (2, 7), so-called Franaszek code. This paper introduced the design of the FPGA implementation of hard disk encoding and decoding, on the basis of briefly introducing the technical background of FPGA VHDL and MAX+plusII development software. All the major modules of the encoder and decoder was been expounded and design the overall structure of them. The most difficult problem is the length of code elements of Franaszek code is variable, Franaszek is a kind of synchronous variable length code whose code rate is invariable and the length of code element is variable, so it is a special kind of variable length code. This design uses state machine, solve the problem recognition of code elements of the variable length code, the advantage of state machine principle was been well shown, to solve the problem of the recognition of code elements in a very low clock frequency. To let the output sequence continuous is another difficulty in this thesis, because the highest clock frequency only can be synchronous with the clock of output sequence of encoder, so it must finish the operation of storage and output in the same clock edge, this thesis design a buffer controller to ensure the continuity of output, maintain the continuous output sequence. Using VHDL designed and implemented hard disk encoder and decoder of basic mode and gives the simulation result of main modules of the encoder and decoder. The design and implementation of hard disk encoder and decoder provided an exploring attempt on the hardware implementation of practical RLL encoder and decoder and a reference on other channel modulation encoder and decoder system IP core and their FPGA implementation. Keywords: run-length-limited, FPGA, VHDL, MAX+plusII 目录 第一章:绪论 1 1.1 课题概述 1 1.2FPGA器件的应用状况与发展趋势 1 第二章:FPGA介绍 3 2.1FPGA的结构 3 2.2FPGA的优点 5 2.3FPGA的性能 7 2.4Altera的FLEX10K系列FPGA 8 第三章:VHDL介绍 10 3.1 硬件描述语言概述 10 3.2VHDL的特点 11 3.3VHDL的功能与应用 12 3.4VHDL的语法 12 第四章:MAX+plusII软件介绍 14 4.1 MAX+plusII概述 14 4.2 MAX+plusII的界面 15 4.3MAX+plusII的设计流程 16 第五章:基于FPGA的硬盘编译码器的设计 21 5.1系统的总体设计 21 5.2状态机的设计 24 5.3缓存控制器的设计 28 结论 37 谢辞 38 参考文献 39 第一章:绪论 1.1 课题概述 随着微电子技术与自动控制技术的发展,越来越多的FPGA器件正广泛应用于各种数字信号处理过程。其特点是硬件体积小、实时性好、工作效率高,提高了系统集成度。在一般信号处理系统中,当前比较通用的系统结构通常会分立元件,采用电子管、晶体管、中小规模集成电路来实现信号处理算法、具体控制和通信任务。但由于半导体工艺及可编程逻辑器件的飞速发展,可编程逻辑器件的集成度越来越高,运算能力越来越强,对于完成传统的数字信号处理任务而言实在大有富余。而电子产品市场的激烈竞争,迫切要求电子产品设计工程师缩短开发周期,加快产品的更新换代。而又有高可靠性,小体积,造价低的要求。在这些场合中,使用分立元件固然不可行,即便开发周期来得及,成本也无法接受。而使用基于FPGA的平台,结合采用EDA技术的开发平台,就成为一种具有优势的方案。 本设计针对硬盘数据存储中的信道调制编码的技术问题。采用Altera公司的FLEX10K系列FPGA,使用VHDL语言在MAX+plusII开发平台下,编写了集编码器译码器于一体的数字信号处理系统。 1.2FPGA器件的应用状况与发展趋势 随着半导体工艺及EDA技术的飞速发展,FPGA的应用在通信、消费电子、汽车、存储、服务器、工业、航空和国防等领域日益渗透和拓宽。几乎可以说已涉及到社会的各个方面,而数字信号处理是FPGA应用的重要领域。实现以FPGA为核心的数字信号处理自动化和机电设备及科学仪器仪表的现代化,是我国信息产业技术进步的重要内容,是降低能源及原材料消耗、提高产品质量及性能、增强国际竞争能力缩短产品上市时间的重要技术进步手段。 EDA技术是Electronic Design Automation(电子设计自动化)的缩写EDA 技术就是以计算机为工具, 在EDA 软件平台上, 根据硬件描述语言HDL 完成的设计文件, 自动地完成逻辑编译、化简、分割、综合及优化、布局线、仿真, 直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。1 EDA主要包括FPGA器件、硬件描述语言HDL和EDA工具软件三大部分。电子设计自动化技术是21世纪电子设计领域中最重要的技术之一。 EDA技术是20世纪90年代初从CAD (计算机辅助设计)、CAM (计算机辅助制造)、CAT(计算机辅助测试) 和CAE(计算机辅助工程)的概念发展而来的。可编程逻辑器件自上世纪70年代出现以来,已有了很普遍的应用,为数字系统的设计带来极大的灵活性。20世纪末世界上最大的变化就是全球市场的形成。全球市场导致竞争空前激烈,促使企业必须加快新产品投放市场时间(Time to Market)、改善质量(Quality)、降低成本(Cost)以及完善服务体系(Service),这就是企业的T.Q.C.S.。由于可编程逻辑器件可以通过软件编程对其硬件的结构和工作方式进行重构, 使得硬件的设计可以如同软件设计那样方便快捷。这一切给数字系统的设计带来了革命性的变化。纵观可编程逻辑器件的发展史, 它在结构原理、集成规模、下载方式、逻辑设计手段等方面的每一次进步都为现代电子设计技术的革命与发展提供了不可或缺的强大动力。 可编程逻辑器件的门类较多。先后发展出PLA、PAL、GAL、EPLD、FPGA和CPLD等类型。事实上其中的FPGA和CPLD日益成为基本主导形式,这已成为半导体器件行业的共识。与其他 可编程逻辑器件相比,FPGA和CPLD在结构工艺集成度、功能速度和灵活性方面都有很大的改进和提高。CPLD是指基于乘积项技术FLASH工艺的PLD,FPGA是指基于查找表技术、SRAM工艺的PLD。CPLD与FPGA由于各自的特点与优势,使得二者在可编程逻辑器件技术的竞争中并驾齐驱,成为两支领导可编程器件技术发展的主要力量。 对用户而言,CPLD 与FPGA的内部结构确有不同,但随着技术的发展,一些厂家陆续推出了一些新的CPLD 和FPGA,这些产品逐渐模糊了CPLD 和FPGA的区别。因此也很难准确定义每个型号到底属于这两种类型中的哪一种。因此在实际应用中,用户无需深究两者的区别,习惯上都把他们叫做FPGA。 FPGA主要用于工业、农业、教学和科学研究中的实时信号处理和过程控制。现在一些重要的消费电子产品(如移动通信设备和数字电视)和科学仪器仪表(如示波器和生物医学仪器)将FPGA作为解决方案的越来越多。 综上所述,FPGA技术是一类跨世纪的高新技术,应用广泛,发展前景良好,因此,相信以FPGA为基础的高性能数字系统将成为主流。 第二章:FPGA介绍 2.1FPGA的结构 FPGA是Field Programmable Gate Array(现场可编程门阵列)的缩写,FPGA是从PAL 、GAL、EPLD等传统可编程逻辑器件发展而来,它是ASIC领域中的一种半定制器件,具有可编程的特点,同时又克服了传统可编程逻辑器件逻辑门电路不足的缺点。 可编程逻辑器件(PLD)自上世纪70年代发明以来,先后有PROM、PLA、PAL、GAL和EPLD等多种实现方式或产品类型,而当前最具代表性及应用最广泛的是FPGA和CPLD器件。2 FPGA器件由美国的XILINX公司于1985年首先推出。一般把FPGA定义为基于查找表(Look-Up Table, LUT)技术和SRAM工艺的PLD,目前的FPGA已经远远超出先前产品的基本功能,并且整合了许多常用功能(如RAM、时钟管理和DSP),在新型的系统级可编程逻辑器件中还可以IP核的形式来进行功能设计。使得FPGA中可以实现DSP、MCU等嵌入式处理器。在未来的数字系统中,或许只需要一块FPGA芯片就可以实现所有功能,成为片上系统(SOC, System On a Chip)。 图2-1 FPGA的芯片结构 查找表的本质是一个RAM,用户用原理图或HDL语言描述好逻辑电路的设计后,由设计软件计算出所有可能的结果后存入相应的地址,这样,输入信号就等于RAM的地址,输入地址后就会输出相应的数据作为计算结果。一般FPGA的查找表是一个4输入的SRAM也可以看成一个16x1的RAM。 因此FPGA是一种细粒度器件,触发器资源十分丰富适合用于时序电路的设计,但由于乘积项资源不够丰富,在用于组合逻辑的场合时就需要当量的逻辑块间的连线,而FPGA的逻辑块间的连线是分布式的,因此FPGA的延迟是不可预测的。 CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)器件是一种基于乘积项(product term)的可编程逻辑器件,CPLD利用宏单元(marcocell)实现逻辑功能,宏单元由乘积项阵列和控制清0与时钟的可编程开关与触发器组成。其中乘积项阵列是一个“与或”阵列在与或阵列的没个交叉点上都有一个可编程熔丝如果导通就可以实现“与”逻辑,阵列后面还有乘积项选择矩阵,作为“或”阵列。 图2-2 CPLD的总体结构 通常一个宏单元包含16个乘积项,因此设计人员可部署大量的组合逻辑而不用增加额外的路径。这就是为何CPLD被认为是“逻辑丰富”型的。但单个CPLD中通常仅包含数百个宏单元,因此CPLD的集成度不如FPGA,寄存器资源也远不如FPGA丰富,但FPGA在逻辑块之间的连线是集总式的,相对于FPGA的分布式布线,CPLD的延迟是均匀和可预测的,且CPLD的速度比FPGA快,可以工作在较高频率,总体而言CPLD器件提供的资源比FPGA少,但CPLD具有很好的可预测性。3 由于半导体技术的飞速发展,每年都有许多新器件出现,且器件的工艺和内部结构日趋复杂,很难根据传统的定义判断每个PLD产品属于FPGA或CPLD,而各PLD供应商也不断推出各种兼具两种器件特点的新型器件,再加上不同厂家对器件的定义方法各不相同,因此在许多场合都把新型的可编程逻辑器件统称FPGA,毕竟用户关心的是器件的功能而不是器件的运行原理与内部结构,而两者在功能甚至开发上并无不同。下文也不特别区分FPGA与CPLD。 2.2FPGA的优点 最近10年国内FPGA应用有了很快的发展,按照传统观点,FPGA仅使用于产品原型设计和ASIC的验证,用于大规模的数字系统开发就过于昂贵而且功耗过大。但随着近年来FPGA的研发陆续突破了低功耗、低成本和先进工艺的瓶颈后,FPGA解决方案的应用领域正在日益扩张,FPGA数字系统在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域得到了广泛应用。随着功能和性能的进一步提高,FPGA的应用已从可编程逻辑领域扩展到了其他技术领域,如高性能DSP、高性能嵌入式处理和高速串行连接。FPGA解决方案之所以有如此广泛的应用,正是因为随着EDA技术和微电子技术的迅速发展,FPGA相对于其他类似功能的器件的许多优势日益凸显。 2.2.1FPGA相对于DSP的优势 DSP(Digital Signal Processor)是一种特殊的微处理器,在一块芯片内包含了控制、运算、寄存器和一定数量的存储单元。DSP采用流水线结构,基于冯诺依曼结构的某种变形,采用软件编程,因此它的运算基本上是串行的。DSP在数据通信、音视频处理和数字控制等领域有广泛的应用,FPGA相对于DSP的优势是: . 片内实现细粒度,高度并行的结构,目前串行结构的处理器发展已经遇到了瓶颈,性能难以进一步提高,近几年,并行计算正逐步成为计算机科学的热点研究方向,而DSP从根本上讲其结构只适合串行的算法结构,多处理器系统是很昂贵而且只适合粗粒度的并行运算。这与FPGA的片内实现并行算法在开发的难度和成本上是无法相提并论的。 . 明显的性能提升,FPGA 的计算能力比DSP 的性能更加强大。例如,30 美元的Spartan23A FPGA 性能可高达每秒200 亿条乘法累加操作( GMACs) ,同样花30 美元买一个600MHz 的C64xDSP ,每秒的累加操作仅仅是25 亿条,后者在性能上差距了一个数量级。FPGA允许用户构件高度并行的器件结构,使采样速率和时钟速率达到相等,再加上FPGA内部集成锁相环,可以使外部时钟倍频,在数据量大,速度要求高的场合中,FPGA是无法被替代的。 . 功能和应用更加灵活,DSP实现的是软逻辑,DSP根据烧写在存储器中的代码动作,DSP首先需要从存储器中读取代码,然后解释代码、执行代码。FPGA实现的是硬逻辑,设计者用硬件描述语言(HDL,Hardware Description Language)描述要实现的逻辑,然后综合下载到FPGA后,生成相应的电路,这些电路由基本的门电路和触发器构成,配置十分灵活,而且可以完全根据算法定制理想的器件结构。另外DSP的外围扩展接口种类和数量都是固定的,不够用时无法增加,多余的时候也无法腾出来用作其他用途,因此FPGA更具灵活性,虽然FPGA本身不能实现复杂的功能但随着各厂商提供各种功能的IP核,目前FPGA中已经可以嵌入8051、ARM和高性能DSP等通用处理器,这将使FPGA实现真正的SOC。可以毫不夸张的讲,FPGA能完成任何数字器件的功能,上至高 性能CPU,下至简单的74电路,都可以用FPGA来实现。 . 降低成本,减少PCB面积,降低功耗,FPGA允许允许集成其他系统所需的元器件。同一片FPGA,不同的编程数据就可以产生完全不同的电路功能。因此FPGA也是提高系统集成度的最佳选择,它可以将DSP解决方案中所需的接口电路集成到FPGA中,从而降低成本和功耗,而一些新型号甚至还包含了模拟电路,一些系统中包含数十路AD、DADSP必须仔细进行资源分配、总线隔离,而FPGA中只要利用自身IO就能解决问题。因此FPGA在提高系统集成度,降低硬件复杂性,缩短开发周期和降低成本方面具有独特的优势。4 2.2.2FPGA相对定制ASIC的优势 ASIC(Application Specific Intergrated Circuits)即专用集成电路,是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户需求。FPGA是ASIC的近亲,两者的应用基本相似。FPGA相对全定制ASIC的优势在于: . 更快的上市时间:无需布线、掩模和其它制造步骤。FPGA无需任何制造过程,可以直接实现现场编程,用户也不需要考虑掩膜设计,布线和电路参数等具体问题,而ASIC无论在设计还是制造上都要比FPGA花费更多时间。 . 缩短了设计周期。目前主流EDA软件已经能够很好地实现综合、布线和配置的自动化,设计者只需要关注器件的功能就可以了,利用VHDL等硬件描述语言在EDA软件中描述好器件的行为之后就可以进行实际电路的仿真,然后就可以在具体的器件上设计方案。而ASIC的设计者需要完成所有电路的设计,这需要大量的人力物力也需要不少时间,但却只能带来很小的性能提升。 . 现场可重编程能力。今年来在自动控制技术和数字电子技术飞速发展,设计出一个数字系统通常不需要多久就被淘汰,而ASIC一旦制造出来就无法再改变其内部电路结构和功能,再加上设计耗时太久,经常在产品上市不久就被淘汰,而FPGA内部的电路结构可以在现场通过多种方式重新编程,使产品更能适应新技术和市场需求的变化。 由于技术的发展,市场需求的不断变化,导致产品的生命周期越来越短,可编程技术势在必行。目前,ASIC开发公司和FPGA开发公司的比例约为30:1,但由于技术的不断进步和FPGA成本优势的不断凸显,FPGA在未来将不断蚕食ASIC的市场,并逐步成为专用集成电路市场的主流。5 2.3FPGA的性能 FPGA自上世纪80年代诞生以来,其性能就一直保持很快的上升速度,如Altera公司推出的基于40nm工艺的Stratix IV GT系列FPGA包含24个工作速率高达11.3Gbps的收发器,逻辑单元增加至最多530K。速度提高的同时功耗也有所下降,Xilinx公司推出的Virtex-6功耗较之Virtex-5降幅多达50%,成本也有20%的下降。另外FPGA还支持多种不同的IO标准,FPGA的IO可以按组分类,每组可以支持完全不同的IO标准,灵活的IO使FPGA的接口电路设计大幅简化。另外FPGA还提供嵌入式的存储器,这些片上存储器的延时通常很低,跟普通的门电路差不多。而且配置相当灵活,大多数支持双端口模式。 运算速度则是FPGA最大的优点,根据测试,同样价格的FPGA在通信应用中吞吐量为同样价格DSP的510倍。因此在DSP的传统应用数字信号处理领域,FPGA的性能也具有明显的优势,由于FPGA中包含大量的低功耗、高密度乘法器、存储器和逻辑资源,在低成本领域,目前,已经有不少低成本FPGA能够满足1080pHDTV的性能要求。因此在复杂的信号处理方面,FPGA也有其它处理器无法比拟的优势,随着并行处理在各个领域的逐渐普及,FPGA将完成许多以前由DSP或DSP阵列来完成的工作。 除了FPGA本身的发展之外,近几年FPGA开发工具的发展也十分迅速,业界也普遍认为当前FPGA的普及度不如DSP和单片机最主要的原因是各行业的开发人员还难以适应FPGA的全新的设计方法和技巧,各大FPGA厂商无疑也意识到了这一点,近两年来,FPGA各种开发工具版本不断更新,说明各厂商都一直为设计工具的开发投入精力,当前主流FPGA厂商都提供了丰富的IP核,其中还有许多是包含处理器和DSP功能的软核,这些模块库和工具的完善将为FPGA的普及消除最后一道障碍,大幅提高FPGA解决方案的新引力和易用性。 当然在遇到复杂的串行算法时,DSP的流水线处理器结构则比FPGA更适合,而对于侧重控制的场合,仍然是单片机更合适,总之FPGA是属于并行计算时代的器件。 2.4Altera的FLEX10K系列FPGA FLEX10K是业界第一款嵌入式PLD,采用了重复可构造的CMOSSRAM工艺,把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时FLEX(Flexible Logic Element MatriX)架构可结合众多可编程器件来完成普通门阵列的宏功能,具有强大的系统集成功能。由于其具有高密度、低成本、低功率等特点,所以脱颖而出,成为当今Altera PLD中应用最好的器件系列。 型号 典型门数 逻辑单元LE数 逻辑阵列块LAB数 EAB数 最大IO引脚 EPF10K10 10000 576 72 3 150 EPF10K20 20000 1152 144 6 189 EPF10K30 30000 1728 216 6 246 EPF10K40 40000 2304 288 8 189 EPF10K50 50000 2880 360 10 310 EPF10K70 70000 3744 468 9 358 EPF10K100 10000 4992 624 12 406 EPF10K130V 130000 6656 832 16 470 EPF10K250A 250000 12160 1520 20 470 表1 FLEX10K器件特性 Flex10K集成了1万25万个逻辑门,最多40960位RAM,其中每个嵌入式阵列块(Embedded Array Block,EAB)包含2048位。FLEX10K集成的EAB可以配置成ROM或者RAM,两种情况下都可以构成2048x1、1024x2、512x4、256x8等四中类型中的任意一种。EAB中的RAM输入与输出端口是分开的,这样就不需要三态门进行总线隔离,减少编程上的麻烦。 FLEX10K作为Altera的主流器件具有多种特性包括: . 为各种功能配备嵌入式阵列,如高效存储器和专用内存; . 大量通用逻辑阵列; . 高达10000到250000个典型门 . 内置RAM可达40960位,每个EAB包含2048位,使用这些RAM不需要减少任何逻辑容量; . 支持MultiVolt I/O界面; . 低功耗(多数型号在待机模式下的典型功耗少于0.5mA); . FLEX10K设备支持PCI2.2标准; . 内置JTAG(Joint Test Action Group)边界扫描测试电路,兼容IEEE 1149.1-1990标准,使用这项功能不需要花费任何器件逻辑。 由于集成度可以高达25万门,FLEX10K器件提供了高密度、快速并且可以集成整个系统(包含多个32位总线)等特性都集成到单一器件中。FLEX10K器件是可再配置的,它可以在投入开发前进行100%的测试,因此,设计者不需要制定测试向量来覆盖所有错误。设计者也不需要辨别不同的ASIC设计方案,FLEX10K器件可以在板上配置成所需要的专门的功能。 所有的FLEX10K器件都包含嵌入式阵列(embedded array)和逻辑阵列(logic array)。嵌入式阵列用于实现存储功能或复杂的逻辑功能,如数字信号处理(Digital Signal Processing,DSP)、微控制器(microcontroller)和数据转换等功能,逻辑阵列实现ASIC中门海的功能,它用于实现一般的逻辑功能,如计数器、加法器、状态机和数据选择器。将门阵列与嵌入式阵列结合起来,就可以实现高性能、高密度的嵌入式门阵列,使设计者得以将整个系统集成在单一器件内。6 第三章:VHDL介绍 3.1 硬件描述语言概述 FPGA的设计方法主要有4种1、画原理图输入;2、用VHDL或Verilog HDL等硬件描述语言(Hardware Description Language,HDL)来描述设计然后进行逻辑综合;3、用图形化的描述语言来描述设计;4、混合使用各种方法。每种方法都有自己的特点和应用场合,当中HDL是最重要的现代硬件描述手段。 HDL是用于设计硬件电子系统的计算机语言。硬件描述语言是相对于一般计算机软件语言如C、BASIC来说的,HDL是设计者和EDA工具的界面,HDL主要用于描述电子系统的逻辑功能、电路结构和连接方式,设计者通过HDL来描述所设计的电子系统的结构特征和行为方式。由于采用计算机语言的形式,HDL比电路原理图更容易编译并且可读性更强。在越高级别的描述中,HDL的重要性越大。尽管原理图能更清楚地传达部分信息,但通常它们没有语言描述那么容易理解。并且HDL的文字描述比原理图中关于元件和导线位置的图形描述更容易被程序处理。目前最具代表性且使用最频繁的美国国防部开发的VHDL(Very-High-Speed Integrated Circuit HDL)和Verilog公司开发的Verilog HDL。现在VHDL和Verilog HDL作为IEEE的工业标准硬件描述语言,得到了大多数EDA工具的支持。17 HDL源于各公司开发的EDA工具,各家公司在开发EDA工具时也必须同时设计一种HDL,但这些HDL大多数只成为企业标准,而无法成为国际标准。上世纪80年代初,美国国防部为了降低开发费用,避免重复设计,要求各承包商按照同样的设计语言进行甚高速集成电路的开发,于是VHDL工作组于1981年6月成立,于1983年由Intermatrics、IBM、TI三家公司组成开发小组。1986年3月IEEE开始制定VHDL标准,经过1年的审查,1987年12月IEEE发布了第一个VHDL标准版本IEEE std 1076(简称VHDL-1987)。VHDL1987发布之后获得了广泛的支持,主流EDA软件相继宣布支持VHDL,1993年IEEE又发布了新版本的VHDL标准IEEE std 1076-1993(简称VHDL-1993),VHDL-1993只增加了少量功能,并修改了少部分语法规则。绝大部分基本语法语义的定义与VHDL-1987是一样的,1997年IEEE制定了包含模拟电路设计功能的VHDL扩充版本IEEE std 1076.1,成为VHDL-AMS,AMS的含义是模拟和混合信号(Analog and Mixed Signal),1998年IEEE制定了用于寄存器传输级(RTL,Register Transmit Level)综合的VHDL子集标准IEEE std 1076.6。在2000年与2002年又有新版本的VHDL标准,但这些后续版本仅对一些不常用的功能进行修改,基本的内容一直没有变化。8本设计基于VHDL-1993。 3.2VHDL的特点 与其他HDL和软件编程语言相比VHDL具有以下特点或优势: . 与具体器件无关,设计系统时只需要考虑其行为的实现,而不必与具体的器件关联,或者输入具体的硬件参数,这种与硬件关联度较小的特点使FPGA能较好的适应各种设计,并且有更普遍的应用。 . 强大的行为描述能力,随着半导体工艺的进步和百万门级的FPGA出现普及,FPGA及ASIC的设计复杂性必然增加,VHDL强大的行为描述能力使得它比其它HDL更适合VLSI、SOC等规模较大的集成电路设计。 . VHDL本身具有广泛的多领域的应用,VHDL基本具备了所有硬件描述语言应有的特性,这就意味着设计者从原始的系统行为描述,同过逐步地分解综合等过程,直到最后生成FPGA厂商提供的适配器所能接受的编程文件的整个过程,都可以在VHDL的范畴之内完成,VHDL所支持的电子系统设计级别包括系统级、行为算法级、寄存器传输级(RTL)、逻辑级和开关级。 . VHDL把大部分设计工作推给计算机,这使得VHDL对计算机和VHDL综合器有较高的要求,随着EDA工具和VHDL综合器的日益完善和计算机性能的大幅提高,VHDL的这一特点使其与其他HDL相比具有更高的设计自动化程度,同时设计者可以根据综合的结构进行适当的修改,或者对综合器的参数进行必要的设定以达到理想的性能指标,这无疑使VHDL成为一种优秀的EDA解决方案。 . 科学的语言结构,可读性好,作为一种计算机语言,VHDL既可以被计算机编译,也可以被人理解,VHDL的源代码,既是程序,又是文档。既成为学术交流中的载体,又可以作为合同签约者之间的文件。 . 支持大规模项目的层次化设计和已有设计的再利用,随着半导体工艺的不断发展和集成电路规模的扩张,一个大规模的设计项目已经很难由一个人完成,而必须由一个项目组甚至多个项目组协同完成,VHDL中实体、类属、程序包和设计库的概念让层次化设计和以往设计的再利用变得十分方便,从而实现了多人多任务并行工作的方式,保证大规模的系统设计能被迅速完成。 . 标准化,可移植,作为IEEE的一种工业标准硬件描述语言,VHDL获得了众多EDA工具的支持,任何设计,只要它采用VHDL,都可以在不同的设计平台间转移,这又进一步提高的VHDL的通用性。 . VHDL在提供与工艺无关的设计途径的同时,又具备在设计中加入工艺参数的特性,在工艺改变时,只需要修改相应的类属即可使同样的设计适应不同的工艺。 . 设计的各个阶段都能进行仿真和验证,VHDL在制定之初就考虑到了电路的仿真和验证问题,在EDA工具中设计者可以在设计的每个阶段对设计的每个部分进行验证,检查逻辑和电路的正确性,从而减少错误发生的可能性和设计的反复修改。降低了开发成本 3.3VHDL的功能与应用 经过几十年的发展VHDL在众多HDL中逐步脱颖而出成为电子系统设计的通用语言,同时它还不断拓展应用领域。在EDA软件的编辑器中VHDL是电子系统设计语言,描述系统的结构和功能。经过编译后又成为用于系统行为仿真的VHDL行为仿真文件,而经过VHDL综合器后的结果会生成VHDL网表文件,此文件可以直接交给厂商提供的适配器用于配置可编程逻辑器件或产生下载所需的配置文件。 VHDL还可以用于层次化设计,将预先定义的VHDL描述的元件和程序包存入EDA软件的数据库中。 除了行为描述外,VHDL也可以描述电路结构,包括门级描述、功能块描述和寄存器传输级描述,当然随着抽象级别的提高,VHDL更能体现它的优势,SOC的发展成熟也对HDL描述的范围提出了更广泛的要求,而在VHDL中允许对相同的描述建立不同抽象级别的元件模型。 随着电路规模的扩大电路的模拟验证正成为FPGA和ASIC设计的一大挑战,在模拟验证中VHDL可以提供数字系统元件的特性以及它们之间的相互连接和相互作用,甚至包括外部的输入信号和内部的信号观察点。 总之随着EDA工具的进一步成熟,除了主流的硬件描述语言之外,VHDL已经成为电子设计领域学术交流、设计存档、程序模块的移植、ASIC源程序的交付、IP核的应用等领域有了广泛的应用,显然,VHDL已成为软硬件工程师们的共同语言。 3.4VHDL的语法 一个完整的VHDL程序包含以下部分: . 库(Library):存放已经编译的包集合、实体、结构体和配置等。库的好处在于使设计者可共享已经编译过的设计结果。 . 包(Package):声明在实体中将用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等。 . 实体(Entity):定义电路的输入/输出接口。 . 结构体(Architecture):描述电路内部的功能。一个实体可以对应多个结构体,但在同一时间,只有一个结构体被使用。 . 配置(Configuration):决定哪一个结构体被使用。 并非所有VHDL程序都具有以上5种语法结构。理论上只有实体和结构体式必备的,而在实际应用中常要在实体之前调用程序包。以下一个2分频电路是VHDL程序的常用结构: library IEEE; -库、程序包调用 use IEEE.std_logic_1164.all; entity FreDevider is -实体声明 port (clock:in std_logic; clkout:out std_logic ); end; architecture behavior of FreDevider is-结构体定义 signal clk:std_logic; begin process(clock) begin if rising_edge(clock)then clk=not clk; end if; end process; clkout=clk; end; 程序中-标识后的字符为注释。 第四章:MAX+plusII软件介绍 4.1 MAX+plusII概述 MAX+plusII是美国Altera公司的第三代FPGA开发软件,其全称为Multiple Array Matrix and Programmable Logic User Systems。MAX+plusII可以在安装Windows、Sun SPAC stations、HP9000 Series 700/800或IBM RISC System/6000的计算机上运行,MAX+plusII的功能强大而且使用方便。使用MAX+plusII,用户不需要了解可编程逻辑器件的内部结构,用户可以用自己熟悉的方法(原理图或HDL)进行设计,MAX+plusII会将用户的输入自动转换为最终形式,利用MAX+plusII可以高效灵活的设计各类数字电路。 MAX+plusII包含编辑、编译、仿真、综合和下载等功能。用户可以在软件中完成从源代码输入到最终配置器件的整个过程,MAX+plusII具有开放的界面,它支持的HDL有VHDL、Verilog HDL和Altera自家的设计语言AHDL,并且提供了与其他主流EDA软件工具的接口,除了软件自身集成的大量功能块和元件库外,设计人员可以自行添加自己的宏定义和程序包,从而达到缩短开发周期,减少工作量的目的,MAX+plusII仅支持部分VHDL语句的综合,但由于其功能的高度集成化以及方便的操作使得其在国内高校和VHDL初学者中具有很高的普及率。相关资料也比较丰富,特别适合初学者使用。 本设计采用MAX+plusII的最后一个版本MAX+plusII 10.2 baseline版 图4-1 MAX+plusII的组成 4.2 MAX+plusII的界面 在Windows XP系统中(其它平台与此类似),选择“开始”“所有程序”“MAX+plusII 10.2 BASELINE”“ MAX+plusII 10.2 BASELINE”就可以进入MAX+plusII 开发平台,MAX+plusII各组件界面如图,下文中各界面元素的名称以图中所示为准。 文本编辑界面 图4-2 文本编辑界面 编译器 图4-3 编译器 波形编辑器界面 图4-4 波形编辑界面 仿真器对话框 图4-5 仿真器 4.3MAX+plusII的设计流程 使用MAX+plusII设计FPGA的基本流程如图所示,下面就简要介绍Franaszek编译码器的设计的操作。 图4-6 用MAX+plusII进行FPGA设计的基本流程 4.3.1设计输入 (1)打开Text Editor在主菜单最左边的MAX+plusII菜单中选择Text Editor进入文本编辑界面,然后就可以输入编码器状态机的代码了。 (2)存储文件 在File菜单中选择Save,打开如图所示的对话框,选择欲存放的路径并输入文件名statemachine.vhd。 MAX+plusII中的文本编辑器太过简陋以至影响使用,习惯UltraEdit的程序员可以使用UltraEdit来完成设计输入,再在MAX+plusII打开编译即可。在UltraEdit的wordfile.txt中加入VHDL的关键字即可实现VHDL关键字的高亮显示。 4.3.2将当前文件设为工作文件 在File菜单下的Project子菜单中选择Set Project to Current File,或用快捷键Ctrl + Shift+ J将statemachine.vhd设为当前工作文件。 4.3.3编译 在主菜单的MAX+plusII中选择Compiler,出现编译器窗口。此时可以在主菜单的Processing中选择Functional SNF Extractor进行功能仿真,若选择Timing SNF Extractor则进行时序仿真。 VHDL仿真器允许定义输入并应用到设计中,不必生成实际电路就可以观察输出,功能仿真主要用于检查系统功能设计的正确性,不涉及具体器件的硬件特性。根据适配到具体器件后的模型,可以进行时序仿真。因为此时已经得到目标器件的实际硬件参数,所以仿真能够比较精确地代表实际性能。如果仿真结果达不到设计要求就要选择其它目标器件或修改VHDL源代码,甚至重构整个系统。 这里先选择功能仿真的编译,验证状态机功能的正确性。 4.3.4仿真 (1)打开波形编辑器的输入节点对话框 在主菜单中的MAX+plusII子菜单中选择Waveform Editor,打开波形编辑器。然后再Node菜单中选择Enter Nodes form SNF (2)选择要观察的节点 单击右上角的List按钮,在左边的Available Nodes Groups中就会出现于左下角的Type对应的节点,这里只要观察输入输出,就只选择Inputs、Outp

温馨提示

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

评论

0/150

提交评论