首页 HDB3编码器的FPGA实现毕业设计说明书

HDB3编码器的FPGA实现毕业设计说明书

举报
开通vip

HDB3编码器的FPGA实现毕业设计说明书内蒙古科技大学毕业说明书(毕业论文) 内蒙古科技大学 本科生毕业设计说明书(毕业论文) 题 目:HDB3编码器的FPGA实现 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明...

HDB3编码器的FPGA实现毕业设计说明书
内蒙古科技大学毕业说明书(毕业 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 ) 内蒙古科技大学 本科生毕业设计说明书(毕业论文) 题 目:HDB3编码器的FPGA实现 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用 授权书 网站备案授权书下载肖像授权书文档下载肖像授权书下载歌曲授权书模板下载销售授权书免费下载 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 HDB3编码器的FPGA实现 摘 要 数字基带信号的要求主要有两点,第一是对各代码的要求,期望将原始信息符号编制成适合于传输用的码型;第二是对所选的码型的波形的要求,期望波形适宜于在信道中传输。HDB3(三阶高密度双极性码)因其具有无直流分量、较少低频分量和连零位数目最多不超过三个,以及便于提取定时信息和具有检错能力等特点,所以选择了 HDB3码 。本文介绍了HDB3 码的编解码原理,分析了HDB3 码较其它码型所具有的优势,结合可编程逻辑器件集成度高,速度快,功耗低的特点,选用Xilinx公司的Spartan-3 系列FPGA(Field Programmable Gate Array) 芯片Spartan-3E进行HDB3 编解码电路的实现。 通过仿真,观察到电路各点的仿真输出波形与HDB3 码的理论输出值一致。该方法可满足实际的通信系统传输要求,具有实际应用价值。 关键词:数字基带信号;HDB3 ; FPGA ; HDB3 Encoder FPGA Implementation Abstract Digital baseband signals There are two main requirements, the first is the code's requirements, expectations will be compiled for the original information symbols used in the transmission pattern; the second is the selected waveform pattern requirements, expectations waveform suitable for transmission in the channel. HDB3 (high density bipolar order code) because of its non-DC components, the low frequency components, and even fewer the number of zero up to more than three, and to facilitate extraction of timing information and error detection capability with features, so I chose HDB3 code. This article describes the HDB3 code decoding principle of the HDB3 code pattern than the other advantages of combining highly integrated programmable logic devices, high speed, low power consumption, selected Xilinx's Spartan-3 series FPGA(Field Programmable Gate Array) Spartan-3E chip for HDB3 codec circuit implementation. Through simulation, observation points in the simulation of the circuit output waveform and the theoretical output value HDB3 line code. The method can meet the practical requirements of communication systems transmit and has practical value. Keywords: Digital baseband signal; HDB3; FPGA; 目 录 I摘 要 IIAbstract 1第一章 绪论 11.1 可编程逻辑器件的发展 21.1 .1 早期的可编程逻辑器件 21.1.2 结构上稍为复杂的可编程芯片 21.1.3 功能齐全、编程灵活的可编程逻辑器件 21.2 可编程逻辑器件的应用前景 21.2.1 PLD在ASIC上的应用 31.2.2 在电子技术领域中的应用 41.3 基带传输码 41.3.1 传输码的码型选择原则 41.3.2 几种常用的传输码型 8第二章 HDB3编码原理 92.1 插入V码过程 102.2 插入B码过程 2.3 单双极性变换过程………………………………………………………...11 2.4 实例分析…………………………………………………………………...12 12第三章 基于ISE的设计输入与行为级功能仿真 123.1 Xilinx ISE 10.1 简介 133.2 模块设计输入 133.2.1 使用Project Navigator创建并管理工程 133.2.2 HDL源代码设计输入 163.2.3 测试激励生成器—HDL Bencher的设置过程 203.3 使用ECS设计顶层原理图 203.3.1 新建顶层原理图“top” 203.3.2 选择并放置器件符号 213.3.3 添加连线 223.3.4添加网线名称 233.3.5设置I/O管脚 243.3.6绘制总线 253.4 测试激励与行为级功能仿真 27第四章 基于ISE的综合与实现 274.1 Xilinx 内嵌的综合工具—XST 274.1.1 XST综述 274.1.2 使用XST的综合流程 314.1.3 综合后再进行仿真 324.2 设计用户约束文件与实现结果分析 324.2.1 使用Constraints Editor设计UCF文件 394.3 布线后仿真 41第五章 使用iMPACT配置FPGA/CPLD和下载配置文件 415. 1 Spartan3-E FPGA 实验板说明 415.1.1 Spartan3-E FPGA整体说明 425.1.2 本设计所用配置说明 425.2 使用iMPACT配置FPGA/CPLD 445.3 使用iMPACT下载配置文件 49总结 50参考文献 51附录 第1章 绪论 1.1 可编程逻辑器件的发展【1】【2】 数字集成电路它由早期的电子管、晶体管、小中规模集成电路发展到超大规模集成电路以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导器厂商来独立承担。系统设计师们更愿意自己设计专用的ASIC(专用集成电路Application Specific Integrated Circuit)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际的应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 随着FPGA芯片技术的发展和系统设计手段的不断进步,用硬件描述语言(HDL)进行数字通信功能模块或整个系统的设计,在仿真测试及电路实现等方面具有传统设计方法不可比拟的优越性。用FPGA实现的HDB3码编码器电路具有电路简单,性能可靠,开发成分低的优点。将编码器用于光纤以太网到E1信号相互转接通信设备中,再2048kb/s时钟速率下实际运行,其性能指标完全能够满足CCITT建议G.703 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 。用FPGA实现的HDB3码编码器,可充分利用FPGA片内资源,是数据传输,编码解码及多路复用集中于单一芯片,有利于提高系统的经济性和可靠性,具有一定的应用价值。 现场可编程逻辑门阵列FPGA它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的使用非常灵活,同一片FPGA通过不同的编程数据可以产生不同的电路功能。可以由电路设计者根据设计要求,借助于FPGA开发工具对其编程,以实现各种数字电路逻辑功能,确定逻辑功能的逻辑器件利用FPGA内部的逻辑结构,可以实现任何复杂的组合逻辑电路和时序电路,是实现数字电路的理想器件,在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域得到了广泛应用。随着功耗和成本的进一步降低,FPGA还将进入更多的应用领域[3]。下面将具体介绍可编程逻辑器件的发展及其应用。 可编程逻辑器件PLD是一种数字电路,它可以由用户来编程和进行配置,利用它可解决不同的逻辑设计问题。PLD有基本逻辑门电路、触发器以及内部链接电路构成,利用软件和硬件(编程器)可已对其进行编程,从而实现特定的逻辑功能。 可编程逻辑器件自70年代初期以来经历了从PRO、NPL、APA、LGA、L到CPL和FPGA的发展过程,在结构、工艺、集成度、功能、速度和灵活性方面都有很大的改进和提高,其大致的演变过程主要有以下三个发展阶段: 1.1 .1 早期的可编程逻辑器件: 70年代初期的PLD主要用于解决各种类型的存储问题,如可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM),由于结构的限制,他们只能完成简单的数字逻辑功能。 1.1.2 结构上稍为复杂的可编程芯片: 70年代末到80年代初,AMD公司和Lattjce 公司先后推出了可编程逻辑器件PLD,产品主要为PLA(可编程阵列逻辑,Programmable Array Logic)、GAL(通用阵列逻辑,Generic Array Logic)和PLA(可编程逻辑阵列,Programmable Logic Array)。这一类PLD在设计上具有很强的灵活性,可以实现速度特性较好的逻辑功能,但由于结构简单,它们只能实现规模较小的电路。 1.1.3 功能齐全、编程灵活的可编程逻辑器件: 80年代中期,Altera公司和X ilin公司同期推出了CPLD(复杂可编程逻辑器件 Complex Programmable Logic Dvice)和FPGA(现场可编程门阵列 Field Programmable Gates Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点,可以实现见大规模的电路。 进入90年代后,可编程逻辑集成电路技术进入飞速发展的时期,除继续提高器件的集成度和速度等技术指标外,在系统可编程技术ISM(In-System Programmable)和世界扫描测试技术的出现,使得可编程逻辑器件在器件编程技术和期间测试技术方面也获得了化时代的进步。 1.2 可编程逻辑器件的应用前景【2-4】 随着电子技术的高速发展,今天的CPLD和FPGA器件在集成度、功能和性能(速度及可靠性)方面已经能够满足大多数场合的使用要求。用CPLD、FPGA等大规模可编程逻辑器件取代传统的集成电路、接口电路和专用集成电路已成为技术发展的必然趋势。 1.2.1 PLD在ASIC上的应用 在ASIC设计方法中,通常采用全定制和半定制电路设计方法,设计完成后,如果不能满足要求,就得重新设计在进行验证。这样就使得设计开发周期变长,产品上市时间难以保证,大大增加了产品的开发费用。 FPGA/CPLD芯片是特殊的ASIC芯片,它们除具有ASIC的特点之外,还具有自身的优势。 目前,ASIC的容量越来越大,密度已达到平均每平方英寸1百万个门电路。但随着密度的不断提高,芯片则受到引脚的限制,片上芯片虽然很多,但接入内核的引脚数目却是有限的。而选用FPGA/CPLD则不存在这样的限制,因为现在可达到金属层数目增强了产品的优势,FPGA/CPLD芯片的规模越来越大,其单片逻辑门数已达到上百万门,实现的功能也越来越强,同时可以实现系统集成。 另外,与ASIC相比,可编程逻辑器件研制周期短,先期开发费用较低,也没有最少订购数量的限制,所有这一切简化了库存管理。随着每个门电路成本的降低和每个器件中门电路数量的增加,可编程逻辑器件正在大举打入传统的门阵列领域,并已有少量的打入了标准单元ASIC的领域。 1.2.2 在电子技术领域中的应用 1、在微机系统中的应用 FPGA/CPLD可以取代现有的全部微机接口芯片,实现微机系统中的地址译码、总线控制、中断及DMA控制、DRAM管理和I /O接口电路等功能。利用CPLD和FPGA可以把多个微机系统的功能集成在同一块芯片中,即进行所谓的“功能集成”。 2、在通信领域中的应用 现代通信系统的发展方向是功能更强、体积更小、速度更快、功耗更低。FPGA/CPLD在集成度、功能和速度上的优势正好满足通信系统的这些要求。所以现在无论是民用的移动电话、程控交换机、集群电台、广播发射机和调制解调器,还是军用的雷达设备、图像处理设计、遥控遥测设备、加密通信机都已广泛地使用大规模可编程逻辑器件。 3、在数字信号处理技术(DSP)领域中的应用 DSP在很多领域内具有广泛的用途,如雷达、图像处理、数据压缩、数字电视和数字通信机等。随着DSP系统复杂程度和功能要求的提高,用DSP解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 愈现出其缺陷性:实时性不强、灵活性太差,不适合在实验室或技术开发等场合使用等。现在,FPGA/CPLD为DSP提供了解决问题的方案,FPGA/CPLD和DSP的技术结合,能够在集成度、速度(实时性)和系统功能方面满足DSP的需要。应用FPGA/CPLD设计DSP系统可以减少系统体积,提高系统的工作速度。例如,用FPGA可以将一块PC机长卡大小的图像处理板缩小到一块FPGA芯片和几片外围电路上。 可编程逻辑器件是逻辑器件家族中发展最快的一类器件,可编程逻辑器件的出现使得其产品开发周期缩短、现场灵活性好、开发风险变小,随着工艺、技术及市场的不断发展,PLD产品的价格将越来越便宜、集成度越来越高、速度越来越快,再加上其设计开发采用符合国际标准的、功能强大的通用性EDA工具,可编程逻辑器件的应用前景将愈来愈广阔,FPGA/CPLD以其不可替代的地位,将越来越受到业内人士的关注。 在数字通信系统中,为了满足无线信道中传输码型无直流分量、较少低频分量,以及便于提取定时信息和具有检错能力等要求,选择了三阶高密度双极性码(HDB3)。结合可编程器件集成度高,速度快,功耗低的特点,选用ALTERA公司的Cyclone系列FPGA芯片EP1C3T100进行HDB3编码电路实现。通过仿真,观察到电路各点的仿真输出波形与HDB3码的理论输出一致,该方法可满足实际的通信系统传输要求,具有实际应用价值【5】。 1.3 基带传输码【6】 在实际的基带传输系统中,并不是所有的基带波形都适合在信道中传输。例如,含有丰富直流和低频分量的单极性基带波形就不适宜在低频传输特性差的信道中传输,因为这有可能造成信号严重畸变。又如,当消息代码中包含长串的 “1”或“0”符号时,非归零波形呈现出连续的固定电平,因而无法获得定时信息。单极性归零码在传送连“0”时,也存在同样的问题。因此,对传输用的基带信号主要有以下两个方面的要求。 1、对代码的要求:原始消息代码必须编成适合于传输用的码型; 2、对所选码型的电波形要求:电波形应适合于基带系统的传输。 1.3.1 传输码的码型选择原则 传输码(或称线路码)的结构将取决于实际信道特性和系统工作的条件。在选择传输码时,一般应考虑以下原则: 1、不含直流,且低频分量尽量少; 2、应含有丰富的定时信息,以便于从接受码流中提取定时信号; 3、功率谱主瓣宽度窄,以节省传输频带; 4、不受信息源统计特性的影响,即能适应于信息源的变化; 5、具有内在的检错能力,即码型应具有一定规律性,以便于用这一规律性进行宏观检测。 6、编译码简单,以降低通信延时和成本。 1.3.2 几种常用的传输码型 1、AMI码 AMI码(Alternative Mark Inversion)码的全称是传号交替反转码,其编码规则是将消息码的“1”(传号)交替地变换为“+1”和“-1”,而“0”(空号)保持不变。 AMI码的优点是,没有直流成分,且高、低频分量少,能量集中在频率为1/2码速处;编码电路简单,且可利用传号极性交替这一规律观察误码情况;如果它是AMI-RZ波形,接收后只要全波整流,就可变为单极性RZ波形,从中可以提取定时分量。鉴于上述优点,AMI码成为较常用的传输码型之一。 AMI码的缺点是,当原信码出现长连“0”串时,信号的电平长时间不跳变,造成提取定是信号的困难。解决连“0”码问题的有效方法之一是采用HDB3码。 2、HDB3码 HDB3码的全称是三阶高密度双极性码。它是AMI码的一种改进型,改进目的是为了保持AMI码的优点而克服其缺点,使连“0”个数不超过3个。 HDB3码的编码虽然比较复杂,但译码却比较简单。除了具有AMI码的优点外,同时还将连“0”码限制在三个以内,使得接收时能保证定时信息的提取。因此,HDB3码是目前应用最为广泛的码型。A律PCM四次群以下的接口码型均为HDB3码。 3、双相码 双相码又称曼彻斯特码。它用一个周期的正负对称方波表示“0”,而用其反相波形表示“1”。编码规则之一是:“0”码用“01”两位码表示,“1”码用“10”两位码表示。双相码波形是一种双极性NRZ波形,只有极性相反的两个电平。它在每个码元间隔的中心点都存在电平的跳变,所以含有丰富的位定时信息,且没有直流分量,编码过程也简单。缺点是占有带宽加倍,使频带利用率降低。 双相码适用于数据终端设备近距离上传输,局域网常采用该码作为传输码型。 4、 差分双相码 为了解决双相码因极性反转而引起的译码错误,可以采用差分码的概念。双相码是利用每个码元持续时间中间的电平跳变进行同步和信码表示。而在差分双相码编码中,每个码元中间的电平跳变用于同步,而每个码元的开始处是否存在额外的跳变用来确定信码。有跳变则表示二进制“1”,无跳变则表示二进制“0”。该码在局域网中常被采用。 5、 密勒码 密勒码又称延迟调制码,它是双相码的一种变形。它的编码规则如下:“1”码用码元中心点出现跃变来表示,即用“10”或“01”表示。“0”码有两种情况:单个“0”时,在码元持续时间内不出现电平跃变,且与相邻码元的边界处也不跃变,连“0”时,在两个“0”码的边界处出现电平跃变,“00”与“11”交替。 又因为双相码的下降沿正好对应于密勒码的跃变沿。因此,用双相码的下降沿去触发双稳电路,即可输出密勒码,密勒码最初用于气象卫星和磁记录,现在也用于低速基带数传机中。 6、 CMI码 CMI码是传号反转码的简称,与双相码类似,它也是一种双极性二电平码。其编码规则是:“1”码交替用“11”和“00”两位码表示;“0”码固定地用“01”表示。 CMI码易于实现,含有丰富的定时信息。此外,由于10为禁用码组,不会出现三个以上的连码,这个规律可用来宏观检错。该码已被ITU-T推荐为PCMCIA四次群的接口码型,有时也用在速率低于8.448Mb/s的光缆传输系统中。 7、块编码 为了提高线路编码性能,需要某种冗余来确保码型的同步和检错能力。引入块编码可以在某种程度上达到这两个某的。块编码的形式有nBmB码, nBmT 码等。 nBmB码是一类块编码,它把原信息码流的n位二进制码分为一组,并置换成m位二进制码的新码组,其中m>n。由于m>n,新码组可能有2n种组合,故多出(2n-2m)种组合。在2n种组合中,以某种方式选择有利码组作为可用码组,其余作为禁用码组,以获得好的编码性能。 在光纤通信系统中,常选择m=n+1,取1B2B码、2B3B码、3B4B码及5B6B码等。nBmB码提供了良好的同步和检错功能,但是也会为此付出一定的代价,即所需的带宽随之增加[5]。 而在一般的数字通信系统中首先将消息变换为数字基带信号,称为信源编码[6-8],经过调制后进行传输,在接收端解调后恢复出基带信号,在进行解码转换为原始消息。实际的基带传输系统中,并不是所有波均能在信道中传输。基带信号频谱中含有丰富的低频分量乃至支流分量,当数字信号进行长距离的增大而增大,电缆中线对之间的电磁辐射也随着频率的增高而加剧,从而限制了信号的传输距离和传输质量。同时信道中存在的限直流电容和偶合变压器,阻止了直流分量的传输并对低频分量有较大的衰减。因此,对于一般信道高频和低频部分均是受限制的。这就出现了基带信号码型的选择问题。 对于传输信道,要求线路传输码型的频谱不含支流分量,并且只有很少的低频分量和高频分量。其次,一般的传输系统中,为了节省频带是不传输定时信息的。必须在接受端从相应的基带信息中加以提取,因而传输码型应利于收端定时时钟的提取,满足接受端再生原始信息时的需要。再次,码型应具有一定的规律性,有一定的误码检测能力。因此,我们选择了用三阶高密度双极性码HDB3码。它是AMI码的一种改进型,主要是克服了AMI码中连“0”时所带来的提取定时信息的困难,保持了AMI码的优点,因而获得广泛应用,已成为CCITT推荐使用的码型之一。 此外,常用的NRZ码不适合在高速长距离数据通信的信道中传输,因而选用了HDB3码。HDB3码是串行数据传输的一种重要编码方式。和常用的NRZ码相比,HDB3具有很多优点,例如:消除了NRZ码的直流成分,具有时钟恢复和更好的抗干扰性能,这使得它更适合于长距离信道传输。E1信号选用HDB3编码方式,速率2.048Mbps可以在特性阻抗120奥姆的RJ45平衡双绞线上传输1.5km,能够满足大多数情况下数据的高速长距离传输。在数据速率小于2.048Mbps的高速速率时,可以通过插入额外数据比特提高数据速率【9】。 第二章 HDB3编码原理 要设计一个实用的编码模块,首先要深入研究其编码规则及其特点,然后根据编码规则设计符合电路特性的编码流程。HDB3码的编码规则包括【6】.【10-11】:①将消息代码变换成AMI码,AMI码的编码规则是对码流中的非“0”符号进行正负交替;②检查AMI码中的连零情况,当连零的个数小于4个时,保持AMI的形式不变;当连零的个数达到4个或超过4个时,则将非零码后的第4个“0”替换成V码,其中V码的极性与前一非零码(+1或-1)的极性保持一致,例如,前面的非零码是+1,则将V码记为+V;③完成插V操作后,检查2个相邻V码之间非零码的个数是否为偶数,若为偶数,则再将相邻2个V码中后一个V码的前一个非零码后的第一个“0”变为B码,B码的极性与前一非“0”码的极性相反,同时B码后面的非“0”码极性再次进行交替变换,保证极性交替反转特性。 编码规则中出现的V码、B码只是作为标识符,最终的电路实现还是“0”和“1”这两种逻辑电平,因此需要采用二进制编码对“1”、“0”、V、B进行编码,“00”表示“0”,“01”表示“1”,“10”表示B,“11”表示V。根据编码规则和利用FPGA实现的特点,编码过程为:首先插入V码,然后插入B码,最后是单双极性变换。但是如果按照编码规则的顺序设计.应该首先进行单双极性变换,再完成插V和插B,在此过程中还需根据编码规则变换当前B码之后的非零码的极性,这就需要大量的寄存器来保存当前数据的状态,导致电路非常复杂,占用大量的FPGA内部逻辑单元,实现难度大,且成本高。因此不用这种设计方法。HDB3编码过程示意图如图2.1所示。   图2.1 HDB3编码过程示意图 2.1 插入V码过程     插入V码过程是对消息代码里的连零串进行检测,一旦出现4个连零串的时候,就把第4个“O”替换成破坏符V,其他情况下消息代码原样输出。输入的代码经插V操作后全部转换成双相码,即“0”变换成“00”,“1”变换成“01”,V变换成“ll”。图2.2是插入V码过程的流程,代码输入到插V模块后,如果输入是“l”,则输出为“01”,同时计数器清零;如果输入是“O”.则对输入“O”的个数进行计数,当计数器计数到第4个“O”时,输出“11”作为V码,同时计数器要清零用于下一轮检测;计数器未满4个“0”,则输出“00”。 图2.2 插入“V”码过程流图  2.2 插入B码过程     当相邻两个V码之间有偶数个非“0”码时.则把后一个V码之前的第1个非“0”码后面的“0”码变换成B码。该模块设计的难点在于插入B码的过程中涉及一个由现在事件的状态控制过去事件状态的问题,按照实时信号处理的理论,这是无法实现的,这里使用两组4位移位寄存器。采用4位移位寄存器是根据HDB3编码规则的特点确定,经插V后,连零串中的第4个“0”变成V码,代码中连零个数最多是3个,而插入B码操作是把在后一个V码之前的第1个非零码之后的“O”变换成B码,这个长度不超过3个“0”,因此只需4位寄存器就可通过判断现在的输入状态来决定是否应插入B码。图2.3是判断是否插入B码的流程.2组4位移位寄存器在时钟的作用下逐位将数据移出,在移位的同时还需对寄存器的最低位进行操作,即判断是否需插入B码。这部分功能的实现需设置一个检测当前V码状态的标志位firstv。 图2.3 判决是否插入“B”码流程图 2.3 单双极性变换过程     分析HDB3码的编码规则,发现V码的极性是正负交替的,余下的“1”和B码的极性也是正负交替的,且V码的极性与V码之前的非零码极性一致。因此可以将所有的“1”和B码取出来做正负交替变换,而V码的极性则根据“V码的极性与V码之前的非零码极性一致”这一特点进行正负交替变换。具体操作是设置一个标志位flag,通过检测判断标志位的状态来确定是否进行单双极性变换,标志位要交替变换以实现“l”和“B”正负交替,V码的极性也根据标志位变换。图2.4是单双极性变换过程的流程,“10”表示输出正电平,“Ol”表示输出负电平,“00”表示输出为零电平。 图2.4 单双极性变换示意图 2.4 实例分析 下面通过一串实际的消息代码来说明这个编码过程。在插V变换过程和插B变换过程中用“01”表示“1”码,用“00”表示“0”码,用“11”表示V码,用“10”表示B码。在单双极性变换中用“01”表示“-1”电平,用“10”表示“+1”电平,用“00”表示“0”电平。在插V和插B以及单双极性变换过程中都是通过并行输出表示的,插V输出表示为dataout[0]、dataout[1]。插B输出表示为dataout2[0]、dataout2[1]。单双极性变换输出表示为dataout3[0]、dataout3[1]。 1、消息码:1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 2、插V变换: 01 00 00 00 11 01 00 00 00 11 01 01 00 00 00 11 00 00 00 11 01 3、插B变换: 01 00 00 00 11 01 00 00 00 11 01 01 10 00 00 11 10 00 00 11 01 4、单双极性变换: 10 00 00 00 10 01 00 00 00 01 10 01 10 00 00 10 01 00 00 01 10 第三章 基于ISE的设计输入与行为级功能仿真 3.1 Xilinx ISE 10.1 简介【12】 Xilinx 作为当今世界上最大的FPGA/CPLD生产商之一,长期以来一直推动着FPGA/CPLD技术的发展。其开发的软件也不断升级换代,由早期的Foundation系列逐步发展到目前的ISE 10.x系列。ISE是集成综合环境的简称,它是Xilinx FPGA/CPLD的综合性集成设计平台,该平台集成了从设计输入、仿真、逻辑综合、布局布线与实现、时序分析、芯片下载与配置、功率分析等几乎所有设计流程所需工具。 2008年3月,Xilinx宣布推出了其ISE Design Suite 10.1版,此版本极大加快了设计实现速度,运行速度平均加快两倍!新版本ISE的一个重要特性是首次采用了SmartXplorer技术。这一技术专门为解决设计人员所面临的时序收敛和生产力这两大艰巨挑战而开发。它不同于以前的版本,首先是ISE 10.1把所有的的工具套件给它统一集成一体;第二是进行了工具的统一,它给大家提供包括逻辑、嵌入式和DSP统一的设计环境。 ISE的主要特点如下: 1、ISE是一个集成环境,可以完成整个FPGA/CPLD开发过程。ISE集成了很多著名的FPGA/CPLD设计工具,根据设计流程合理应用这些工具,会使工程师的设计工作如鱼得水。 2、ISE界面风格简洁流畅,易学易用。ISE的界面秉承了可视化编程技术,界面根据设计流程而组织,整个设计过程只需按照界面组织结构依次点击相应的按钮或选择相应的选项即可。 3、ISE丰富的在线帮助信息,结合Xilinx的技术支持网站,一般设计过程中可能遇到的问题都能得到很好的解决。 4、强大的设计辅助功能。ISE秉承了Xillnx设计软件的强大辅助功能。在编写代码时可以使用编写向导生成文件头或模块框架,也可以使用语言模板(Language Templates)帮助编写代码。在图形输入时可以使用ECS的辅助项帮助设计原理图。另外,ISE的Core Generator和LogiBLOX工具可以方便地生成IP Core(IP 核)与高效模块为用户所用,大大减少了设计者的工作量,提高了设计效率与质量。 3.2 模块设计输入【13-15】【18】 3.2.1 使用Project Navigator创建并管理工程 双击桌面上ISE Project Navigator的快捷图标启动ISE。首先创建一个工程目录,目录名称为“Xilinx”。启动ISE工程管理器,每次启动Project Navigator时都会默认回复到最近使用过的工程界面,由于此时没有前面的工程记录,所以出现了空白工程界面,选择【File】/【New Project】选项,弹出新建工程对话框,在工程名中输入“HDB3”作为工程名。在工程路径中单击按钮,将工程指定到目录“Xilinx”。 3.2.2 HDL源代码设计输入【16-17】 本次设计使用的是源代码输入,主要分为:新建HDL源代码资源;设计源代码辅助模板;利用语言模板辅助设计源代码;源代码检错等步骤。 1、新建HDL源代码资源。 单击新建资源快捷,会弹出新建资源对话框。选择新建资源类型为源代码模块“Verilog Module”,新建文件名为“c_vhdb3”,并直接添加到工程中去,如图3.1 图3.1 新建源代码模块资源 2、设计源代码辅助模板 (1) 单击按钮,进入源代码设计模块,按图3.2所示编辑输入、输出信号名称与总线。 图3.2 编辑模块的输入、输出信号属性 (2) 单击按钮,单击按钮确认新建源代码模块。Project Navigator自动调用HDL编辑器,并根据源代码辅助模块信息,生成程序头。在HDL编辑器中编写代码,单击按钮。结果如图3.3所示。 图3.3 源代码的输入 3、源代码检错 在Project Navigator资源管理窗选择源代码资源,展开当前资源操作窗项目,双击“Check Syntax”命令对源代码进行检错。如图3.4所示。 图3.4 源代码检错 4、功能仿真 功能仿真也被称为前仿真,它的主要目的是验证设计的逻辑功能是否正确,功能仿真不包含任何门延迟和路径延迟信息,是独立于器件信息之外的仿真。对此HDL源代码进行前仿真是需要一个测试激励(将在3.2.3节中会详细讲到),输入一个测试激励后,在Project Navigator资源管理窗选择测试激励,双击“Simulator Behavioral Model”,如图3.5、3.6所示。 图3.5 功能仿真 图3.6 功能仿真结果 5、生成符号 仿真后cvhdb3(插入V码模块)没有语法错误,并且行为仿真结果正确。接着展开当前资源操作窗的“Design Utilities”项目,双击“Create Schematic Symbol”生成器符号。如图3.7所示。 图3.7 生成符号 用上述同样的方法进行cbhdb3(插入B码模块)、d_chdb3(单双极性变换模块)、fenpin(分频模块)、test1(激励源模块)四个模块的编写并且生成模块器件符号,方便顶层模块的设计。 3.2.3 测试激励生成器—HDL Bencher的设置过程。 (1) 启动工程后,在资源管理窗单击鼠标右键,在弹出的菜单中选择【New Source】命令,弹出新建资源对话框,选择新建类型为“Test Bench Waveform”,键入测试激励文件名,如图3.8所示。 图3.8 新建测试激励波形资源 (2) 单击按钮,选择需要仿真的模块,新建测试激励波形文件将与该模块关联。如图3.8所示。 图3.8 选择被测模块 (3) 单击按钮,进入新建资源信息对话框,如图3.9所示。单击按钮确认新建资源信息,启动HDL Bencher。 图3.9 新建资源对话框 (4) 首先遇到的是初始时间设置对话框。这个对话框主要完成时钟周期、设计类型、全局信号等的设置。时钟周期需要设置的参数有:触发沿(上升沿触发、下降沿触发、两个沿都触发),时钟高、低电平保持时间,输入建立时间,输出有效时间,时钟偏移等。设计类型分为3类:单时钟同步时序电路、多时钟同步时序电路和组合电路等类型。全局信号设置主要选择是否使用GSR(FPGA),PRLD(CPLD)等全局置位、复位信号。另外还可以设置仿真所用的时间单位(ms,ns,ps)等项目,如图3.10所示为此设计的测试激励波形设置对话框。 图3.10 时间设置窗 (1) 如果整个设计都是同步时序设计,那么单击按钮,完成时间设置,进入HDL Bencher测试波形编辑窗口。如果设计不完全是同步时序设计,就需要设置异步时序关系,本设计中采用的是同步时序。 (2) 测试激励波形编辑窗简单明了,如图3.11所示,由菜单栏、工具栏、信号列表、端口属性和信号波形编辑区等项目组成。菜单栏由一系列通用操作命令下拉菜单组成。工具栏包含了HDL Bencher中常用命令的快捷按钮。信号列表罗列了所有仿真信号,端口属性用图标区分了时钟、输入、输出信号。信号波形编辑区是HDL Bencher的主体,完成激励信号的波形编辑。测试激励信号波形的编辑采用手动方法。 图3.11 测试激励波形编辑窗 (3) 完成激励信号波形输入后单击工具栏中的按钮,保存设计。 (4) 完成测试激励波形的编辑后,关闭HDL Bencher退出测试激励编辑器,会发现在Project Navigator的资源管理窗中新建了一个测试激励波形资源,如图3.12所示,双击测试激励波形资源,可以启动HDL Bencher修改测试激励波形。 图3.12 新建的测试激励波形资源 (5) 选择测试激励波形资源,发现当前资源操作窗中对该资源的操作是仿真。先进行的是前行为仿真,具体选项如图3.13所示。 图3.13 使用测试激励波形启动仿真 (6) 右键“Simulate Behavioral Model”,选择“Rerun All”,对设计进行仿真。 3.3 使用ECS设计顶层原理图 3.3.1 新建顶层原理图“top” 单击新建资源按钮,弹出新建资源对话框,选择新建资源类型为原理图(Schematic)类型,新建文件名为“top”,并且直接添加到工程中去。单击按钮,单击按钮确认新建资源信息,启动ECS。如图3.14所示。 图3.14 新建顶层原理图 3.3.2 选择并放置器件符号 参看图3.15所示的顶层原理图,在顶层原理图中除了需要放置标准的“BUF”等标准器件符号,还需要放置用户生成的“fengping”、“test1”、“cvhdb3”、“cbhdb3”、“d_chdb3”等器件符号,放置用户器件符号的方法和放置标准器件符号完全一致,仅仅是在选择器件符号分类显示目录时选择当前工程路径即可。 图3.15 选择并放置用户自建器件符号 3.3.3 添加连线 1、单击绘图工具栏中的按钮,选择智能连线方式,当鼠标指针移动到原理图可画线区域时,鼠标自动变为“+”形状,如图3.16所示。点击始点管脚两次(第1次选择器件,第2次开始连线),然后点击连线终点管脚,智能连线器自动在起始与终点管脚之间布置一条连线。此外,还有另一种连线方法,不用直接将所需连接的管脚直接相连,在后面的管脚命名时需要连接在一起的管脚命名相同,这样就可以将管脚相连,这种方法在视觉上看起来比较清楚,特别是对较大的工程而言比较适用,在本设计中就采用了这种方法。如图3.17所示。 图3.16 添加连线1 图3.17 添加连线2 (2)按Esc键或者双击鼠标右键结束操作。 3.3.4添加网线名称 添加网线名称有两个途径:一是增强了原理图的可读性,在综合与实现时也易于查看某条网线的延时与布线情况;另外,ECS如大多数原理图编辑工具一样,默认同名网线就是一条线。换句话说,如果两条网线名称相同,即使在原理图上没有明确连线,ECS也认为它们是同一条网线,有了连接关系。 1、单击绘图工具栏中的按钮,选择网线分支命名(Name the Branch),在网线名称栏填写“clk”作为“test1”的时钟信号输入管脚名称,当鼠标指针移动到原理图中时,发现鼠标指针处已有了“clk”网线名称。在“test1”的“clk”引线末端单击鼠标左键,为该网线添加名称。如果单击网线名称栏旁边的按钮,网线名称序号自动加1或者减1. 2、按同样的方法为其他网线添加名称。如图3.18所示。 图3.18网线添加名称 3、按Esc键或者双击鼠标右键结束操作。 3.3.5设置I/O管脚 1、为已经命名的网线设置I/O端口管脚比较简便,单击绘图工具栏中的按钮,选择“添加输入管脚(Add an input marker)”如图3.19所示。然后在原理图需要添加I/O管脚的网线端口,按住鼠标左键拖出一个框,放开鼠标左键,自动产生一个与网线同名的输出端口。 图3.19 设置输入管脚 2、在设置选项卡选择添加输出管脚(Add an output marker),与添加输入管脚的方法相同,添加输出管脚。 3、按Esc键或者双击鼠标右键结束操作,结果如图3.20所示。 图3.20 添加I/O管脚 3.3.6绘制总线 ECS中并没有专用的总线绘制命令,绘制总线时仍然采用绘制连线命令【Add Wire】,仅仅利用网线命名区分总线与普通连线。总线的名称命名格式为BusName(X:Y),其中BusName是总线名称,“()”为总线表示符号,X为MSB,Y为LSB。 运用步骤3.3.1~3.3.6的操作方法,完成其余各部分设计,单击按钮保存设计。 原理图绘制完成后,还必须检查错误。单击绘图工具栏中的按钮,ECS自动检查当前原理图。如果原理图完全正确,则在检错对话框中显示“No errors detected”信息。如果原理图有错,检错对话框内将罗列所有错误。 3.4 测试激励与行为级功能仿真 ISE中集成的仿真工具主要是HDL Bencher测试激励生成器,它将VHDL、Verilog源代码、ECS原理图等设计输入导入其测试环境,根据用户在图形界面下编辑的测试波形,直接生成测试激励文件,然后进行仿真验证。具体方法在上面已经讲过。不再细说。 下面各图是各个功能模块的行为级仿真波形: cvhdb3模块是插入V码过程,对消息代码里的连零串进行检测,一旦出现4个连零串的时候,就把第4个“O”替换成破坏符V,其他情况下消息代码原样输出。插入的代码经插V操作后全部转换成双相码,即“0”变换成“00”,“1”变换成“01”,V变换成“11”,如图3-21所示。cbhdb3模块是在插入V码的基础上,当相邻两个V码之间有偶数个非“0”码时.则把后一个V码之前的第1个非“0”码后面的“0”码变换成B码。B码用“10”代替。如图3-22所示。d_chdb3是单双极性变换模块,由于硬件只能识别正电平和零电平,对负电平没法表示,其中就用“10”表示输出正电平,“01”表示输出负电平,“00”表示输出为零电平。由HDB3码的编码规则发现V码的极性是正负交替的,余下的“1”和B码的极性也是正负交替的,且V码的极性与V码之前的非零码极性一致。而V码的极性与V码之前的非零码极性一致,根据这种规则最终完成HDB3的编码过程。如图3-23所示。 图3.21 cvhdb3模块的功能仿真波形 图3.22 cbhdb3模块的功能仿真波形 图3.23 d_chdb3模块的功能仿真波形 第四章 基于ISE的综合与实现 4.1 Xilinx 内嵌的综合工具—XST 4.1.1 XST综述 XST(Xilinx Synthesis Technology)是Xilinx ISE 内嵌的综合工具。虽然XST与Synplify Pro等业界流行的综合工具相比特点并不突出,功能也不全面,但是Xilinx 对自己的FPGA/CPLD 内部结构最为了解,所以XST对Xilinx器件的支持也最为直接,更重要的是XST内嵌在ISE中,安装后可以直接使用。所以使用XST综合往往会得到比较满意的结果。综合对应了图4.1中的Synthesize-XST项,其包含了3个子项,意义分别为:查看综合报告、查看综合器件的RTL级原理图和检查语法。 图4.1 综合选项 XST的输入文件一般是HDL源文件,在ISE高级版本中,XST已经支持Verilog和VHDL混合语言源代码输入:XST的输出文件是NGC网表,XST的报告文件是Log文件。ISE中XST设计流程的综合阶段约束文件与实现阶段约束文件的概念并不分明,综合阶段的约束条件常常通过实现阶段的约束文件来完成。 4.1.2 使用XST的综合流程 1、创建一个工程,根据源代码类型设置工程属性为XST Verilog或XST VHDL设计流程,本设计为XST Verilog,器件选择为相应的FPGA器件。如图4.2所示。 图4.2 选择XST设计流程 2、在工程资源窗(Sources in Project)选中顶层文件,然后在当前资源操作窗(Processes for Current Source)选中综合步骤(Synthesize),右键选中“Properties”,编辑操作步骤属性。XST综合属性的设置包括综合参数设置,HDL源代码参数设置,Xilinx专用参数设置,本设计的参数设置按照图4.3~图4.5所示分别进行设置。 图4.3 设置XST综合参数 图4.4 设置XST HDL源代码参数 图4.5 设置XST Xilinx专用参数 3、单击按钮保存综合参数设置。在工程资源窗选中顶层文件,然后在当前资源操作窗选中综合步骤,单击运行按钮,运行综合。 4、完成XST综合后,展开当前资源操作窗的综合步骤,双击“View Synthesis Report”图标观察综合报告。双击“View RTL Schematic”图标观察寄存器传输级原理图,分析综合结果,如图4.6所示。 图4.6 综合步骤完成后,分析综合结果 5、双击“View RTL Schematic”图标,ISE自动调用原理图编辑器ECS来打开综合产生的寄存器传输级视图,如图4.7所示。 图4.7 XST综合产生的寄存器传输级视图模块符号 6、双击模块符号,观察模块内部逻辑结构,如图4.8所示。 图4.8 模块内部逻辑结构 4.1.3 综合后再进行仿真 在功能仿真时是对设计输入的功能进行仿真,考虑的是理想化的情况,没有门延迟,没有布线延迟。综合的过程,将设计输入编译成由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接,即网表(Netlist),并输出edf、edn等标准格式的网表文件。综合后仿真把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时对电路带来的影响。图4.9是综合后的仿真波形。 图4.9 综合后仿真波形 4.2 设计用户约束文件与实现结果分析 实现就是将综合输出的逻辑网表适配到具体FPGA/CPLD的过程,在ISE中,实现包括翻译(Translate)、映射(Map)和布局布线(Place&Route)等3个步骤。实现涉及的工具比较多,包括约束编辑器(Constrants Editor)、引脚与区域约束编辑器(PACE)、时序分析器(Timing Analyzer)、FPGA底层编辑器(FPGA Editor)、芯片观察窗(Chip Viewer)和布局规划器(Floorplanner)等。 4.2.1 使用Constraints Editor设计UCF文件 1、新建用户约束文件 使用约束编辑器设计UCF文件前应预先实现设计一遍,因为约束编辑器需要从NGD文件中读取设计的基本信息,如时钟、寄存器、I/O端口等信息。具体操作是在资源管理窗中选中设计的顶层模块“top”,在当前资源操作窗选中实现(Implement Design)步骤,单击运行按钮,完成工程的预实现。 (1) 当工程实现完成后单击新建资源快捷按钮,弹出新建资源对话框,选择新建资源类型为“Implementation Constraints File”,新建文件名为“top”,并直接加入到工程中,如图4.10所示。 图4.10 新建实现约束文件资源 (2) 单击按钮,选择需要约束的模块,新建UCF文件将与该模块关联。这里选择约束目标为顶层文件“top”。单击按钮,单击按钮确认新建资源信息。ISE自动创建一个空的用户约束文件。如图4.11所示。 图4.11 选择约束目标 (3) 在资源管理窗选中设计的顶层模块“top”,展开当前资源操作窗中的“User Constraints”项目,选择【Create Timing Constraints】命令启动约束编辑器,设计新建的空白用户约束文件“top.ucf”。 2、利用约束编辑器设置约束属性 约束编辑器的约束属性分为全局约束(Global)、端口约束(Ports)、高级约束(Advanced)、专用约束(Misc)等4个选项卡。 4.2.2 使用PACE设计UCF 引脚与区域约束编辑器(PACE,Pinout and Area Constraints Editor)是从ISE 5.1以后新增的工具,完成I/O管脚和布局区域的约束。十分方便。在PACE的图形化界面下可以方便地完成I/O管脚位置约束,I/O Bank约束、指定I/O标准、I/O管脚位置禁止使用约束、I/O管脚电气特性约束等与引脚相关的约束属性设置。约束完成后,PACE还会自动使用设计规则检查(DRC,Design Rule Check)进行约束属性的合法校验。 PACE的另外一个重要功能是进行布局区域约束。PACE从NGD文件中提炼出设计的层次结构,显示I/O与外设模块连接情况,帮助用户在图形界面下对设计的布局进行调整与约束。 1、 启动PACE 刚才已经使用Constraints Editor进行了时序约束,生成了UCF文件,这时可以直接启动PACE;如果一个工程里面没有UCF文件,首先必须新建UCF文件,方能启功PACE。 在资源管理窗选中设计的顶层模块“top”,展开当前资源操作窗中的“User Constraints”项目,选择【Floorplan IO-Pre-Synthesis】命令就可以启动PACE进行引脚位置锁定。 PACE主要由设计层次窗(Design Browser Window )、设计对象列表(Design Object List Window)、器件结构窗(Device Architecture Window)、引脚封装窗(Package Pins Window)等部分组成。 2、约束引脚位置。 PACE约束引脚位置的基本方法有两种: 第一种引脚锁定的方法是在【Design Object List Window】窗口双击信号的位置属性(Location)选项,直接指定引脚位置。如图4.12所示,使用直接指定法锁定引脚位置。 图4.12 直接指定法锁定引脚位置 第二种引脚锁定的方法是在【Design Object List Window】窗口选定需要约束I/O管脚位置的信号,用鼠标拖到引脚封装窗(Package Pins Window)的I/O位置。如图4.13所示,使用鼠标拖拽法锁定“datain”的引脚位置。 图4.13 鼠标拖拽法锁定引脚位置 引脚位置锁定后,单击按钮保存用户约束文件,退出PACE。PACE自动将刚才添加的引脚位置约束属性附加在当前工程目录中的UCF文件后面。 4.2.3 实现步骤与实现结果分析 实现(Implement)是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。从上面定义可看出,实现主要分为3个步骤:翻译(Translate)逻辑网表,映射(Map)到器件单元与布局布线(Place&Route)。ISE的实现流程就是分为这3个步骤。 1、翻译的主要作用是将综合输出的逻辑网表翻译为Xilinx特定器件的底层结构和硬件原语。展开综合项目可以看到,该项目包括3个命令:【Translation Report】用以显示翻译步骤的报告;【Floorplan Design】用以启动Xilinx布局规划器(Floorplanner)进行手动布线,提高布局器效率;【Generate Post-Translate Simulation Model】用以产生翻译步骤后仿真模型,由于该仿真模型不含实际布线时延,所以有时省略此仿真步骤。 2、映射的主要作用是将设计映射到具体型号的器件上,展开映射项目可以看到,该项目包括如下命令:【Map Report】用以显示映射步骤的报告;【Generate Post-Map Static Timing】产生映射静态时序分析报告,启动时序分析器(Timing Analyzer)分析映射后静态时序;【Manually Place&Route (FPGA Editor)】用以启动FPGA底层编辑器进行手动布局布线,指导Xilinx自动布局布线器,解决布局布线异常,提高布局布线效率;【Generate Post-Map Simulation Model】用以产生布局布线后仿真模型,由于该仿真模型不包括实际布线时延,所以有时也省略此步骤。 3、布局布线步骤调用Xilinx布局布线器,根据用户约束和物理约束,对设计模块进行实际的布局,并根据设计连接,对布局后的模块进行布线,产生FPGA/CPLD配置文件。 实现过程的3个步骤的属性可以分别设置,也可以统一设置。设置方法是在资源管理窗选择顶层模块文件,在当前资源操作窗中选中相应的步骤,点击鼠标右键选中“Properties”按钮编辑该步骤属性。如图4.14所示。 图4.14 设置布局布线步骤实现属性参数 同样的方法去设置其他的属性参数,设置好后,单击运行按钮进行实现,实现过程的一切信息会在信息显示窗显示。如图4.15所示。 图4.15 实现运行结果显示 实现结果的分析主要从两方面入手:一是分析每个实现步骤的报告;二是利用Xilinx的实现步骤设计工具,如利用时序分析器、FPGA底层编辑器、布局规划器和功耗仿真器等分析实现结果。 1、 使用时序分析器分析布局布线后静态时序。 2、 使用布局规划器分析布局布线后的实际布局结果。 Floorplanner以图形界面显示设计在FPGA的基本硬件结构和底层原语上的布局情况。双击【View/Edit Place Design(Floorplanner)】命令,启动Floorplanner。图4.16为本设计的Floorplanner布局图。 图4.16 “HDB3编码”设计的Floorplanner布局图 3、使用FPGA底层编辑器分析布局布线后的实际布局布线情况。 FPGA Editor是Xilinx最底层的手动布局布线工具,通过这个工具可以编辑或查看可配置的逻辑功能块(CLB)、输入输出功能块(IOB)等一些FPGA内部的基本单元。在复杂和较高要求的设计中,适当的使用FPGA Editor布局布线,能最大提高设计的密度和性能指标。双击【View/Edit Place Design(FPGA Editor)】命令启动FPGA Editor。图4.17所示为本设计的FPGA Editor布局布线图。 图4.17 “HDB3编码”设计的FPGA Editor布局布线图 4、使用功耗仿真器(XPower)分析设计功耗。 4.3 布线后仿真 将布局布线的时延信息反表到设计网表中,所进行的时序仿真叫布局布线后仿真,简称布线后仿真。布局布线之后生成的仿真时延文件包含的时延信息最全,不仅包含门延时,还包含时间布线延时,所以布线后仿真最准确,能较好的反映芯片的实际工作情况。布线后仿真步骤必须进行,以确保设计功能与FPGA实际运行情况相一致。具体做法如下: 在资源管理窗中选择【Post-Route Simulation】和激励文件进行后仿真。如图4.18所示。 图4.18 布线后仿真的设置 本设计布线后仿真的波形图如图4.19所示。 图4.19 布线后仿真的波形 第五章 使用iMPACT配置FPGA/CPLD和下载配置文件 5. 1 Spartan3-E FPGA 实验板介绍 5.1.1 Spartan3-E FPGA整体介绍 Spartan3-E FPGA 入门实验板具有Spartan3-E FPGA系列突出独特的特点和为嵌入式处理发展与应用提供了很大的方便。该板的特点如下: 1、设备支持:Spartan-3E、CoolRunner-II 2、关键特性:Xilinx 器件: Spartan-3E (50万门,XC3S500E-4FG320C), CoolRunner™-II (XC2C64A-5VQ44C)与Platform Flash (XCF04S-VO20C) 3、时钟:50 MHz晶体时钟振荡器 4、存储器::128 Mbit 并行Flash, 16 Mbit SPI Flash, 64 MByte DDR SDRAM 5、连接器与接口: 以太网10/100 Phy, JTAG USB下载,两个9管脚RS-232串行端口, PS/2类型鼠标/键盘端口, 带按钮的旋转编码器, 四个滑动开关,八个单独的LED输出, 四个瞬时接触按钮, 100管脚hirose扩展连接端口与三个6管脚扩展连接器 6、显示器::VGA显示端口,16 字符- 2 线式 LCD 7、电源:Linear Technologies 电源供电,TPS75003三路电源管理IC 8、市场:消费类, 电信/数据通信, 服务器, 存储器 9、应用: 可支持32位的RISC处理器,可以采用Xilinx的MicroBlaze 以及PicoBlaze嵌入式开发系统;支持DDR接口的应用;支持基于Ethernet网络的应用;支持大容量I/O扩展的应用。 10、Spartan3-E特有的特征:并行NOR Flash配置;通过并行NOR Flash PROM 实现FPGA的多种配置方式 11、嵌入式系统:MicroBlaze™ 32-bit 嵌入RISC处理器;PicoBlaze™ 8-bit 嵌入控制器;DDR存储器接口 12、主要特征:1)XC3S500E(Spartan-3e):多达232个用户I/O口;320个FPGA封装管脚;超过10000个逻辑单元。2)4Mbit的Flash 配置PROM;3)64个宏单元的XC2C64A CoolRunner CPLD;4)64 MByte (512 Mbit) of DDR SDRAM, ×16 数据接口, 100+ MHz;5)16 MByte (128 Mbit) of 并行NOR Flash (Intel StrataFlash):FPGA配置存储;MicroBlaze代码存储/映射;6)16 Mbits of SPI serial Flash (STMicro):FPGA配置存储;MicroBlaze代码存储/映射;7)16字符-2线式LCD显示屏;8)PS/2鼠标或键盘接口;9)VGA显示接口;10)10/100以太PHY(要求FPGA内部具有以太MAC);11)2个9-管脚的RS-232端口(DTE和DCE两种类型);12)FPGA/CPLD下载/调试USB接口;13)50Hz时钟晶振;14)1线式的SHA-1位流复制保护串行EEPROM;15)Hirose FX2扩展连接口;16)3个管脚扩展连接器;17)4个SPI-DAC转换器输出管脚;18)2个SPI带可编程增益ADC输入管脚;19)ChipScope™软件调试接口;20)带按钮的旋转编码器;21)8个单独的LED输出;22)4个滑动开关;23)4个按钮开关;24)SMA时钟输入;25)8管脚插槽辅助晶振 5.1.2 本设计所用配置介绍 本设计需要外接示波器观察,所以采用扩展连接器部分。其扩展I/O的连接头如下: 1、一个100管脚hirose扩展连接器与FPGA的43个用户I/O口相连,包括15个差分LVDS I/O对和2个只输入对; 2、三个6管脚扩展连接器; 3、为Agilent or Tektronix无线探针提供的焊盘垫。 图5.1 扩展连接器部分 在本设计中输出用到了J1、J2、J4三个部分中的6个管脚,具体在上一章中已经说到,在此不再重述。 5.2 使用iMPACT配置FPGA/CPLD iMPACT是ISE集成的配置工具,用于生成PROM格式的配置文件、向FPGA/CPLD/PROM下载配置文件、回读和验证配置数据是否正确以及调试配置过程出现的问题。下面是使用iMPACT下载配置文件到xc3s500e-4fg320 PROM的过程。 1、 生成配置文件选项。 (1) 在资源管理窗选择顶层模块文件“top”,选中当前资源操作窗中的“Generate Programming File”的项目,右击选择“Properties”设置配置文件生成属性。在配置文件生成属性中,最重要的属性之一是FPGA初始化时钟(FPGA Start-Up Clock)设置。本设计需要下载BIT配置文件到FPGA,则需选择【JTAG Clock】选项,如图5.2所示。 图5.2 FPGA初始化时钟设置 (2) 设置完配置文件生成属性后,单击运行按钮,生成FPGA/CPLD配置文件。 2、转换配置文件格式。 (1) 配置文件生成后,展开当前资源操作窗,启动iMPACT。选择操作模式为【Prepare Configuration】。 (2) 依次设置相应的参数。 (3) iMPACT根据BIT文件内容,提取器件信息,自动生成器件配置连接图。接着iMPACT会询问是否需要继续添加BIT文件,该选项在多个BIT文件合并配置时使用,本设计使用一片FPGA,所以选择否按钮。 (4) BIT文件添加完成后,单击“完成”按钮。 (5) 配置文件生成后,如果生成的配置图恰好与用户PCB上实际的配置方式一致,单击“保存”按钮,保存FPGA/CPLD、PROM配置图。在使用iMPACT配置FPGA/CPLD、PROM时,直接调用该配置文件下载配置,省去了重新检测连接方式、指定配置文件的麻烦。 5.3 使用iMPACT下载配置文件。 1、 使用iMPACT下载配置文件与生成配置文件的过程相似。 2、 完成后iMPACT将自动连接到下载电缆并检测Bounday-Scan连接链,显示边界扫描的结构,同时提示将为边界扫描链中的器件指定配置文件。 通过iMPACT和USB电缆将编译成功的FPGA设计下载到FPGA上。将USB电缆连到板子并给其上电,然后双击“Project Navigator ”的 【Configure Device (iMPACT)】,如图5.3所示。 图5.3 iMPACT的位置 只要板连接正确,iMPACT就会自动识别PROM编程文件,如果没有连接上,可以点击连接链的第一个芯片,然后右击FPGA,选择【Assign New Configuration File】,如图5.4所示。 图5.4 下载到Spartan-3E FPGA 如果FPGA的源配置文件采用默认的启动时钟——CCLK,iMPACT会给出警告提示,如图5.5所示。该警告可以忽略。采用JTAG下载时,iMPACT 必须的启动时钟必须改为TCK JTAG时钟源。 图5.5 警告信息 开始编程FPGA,右击FGPA,选择Program。IMPACT在编程时会自动报告进程状态。编程时间的长短取决于USB的接口 和IMPACT的设置。 图5.6 下载到Spartan-3E FPGA 当FPGA编程成功时,IMPACT会显示成功,如图5.7所示。此时,可以在板上执行FPGA了,还有DONE管脚点亮。 图5.7 下载成功 下载成功后的板子状态如图5.8所示。 图5.8 下载成功后的Spartan-3E FPGA 下面是通过示波器观察的输出波形,依次是插入V码波形“cvhdb3”、插入B码波形“cbhdb3”、单双极性变换波形“d_chdb3”。如图5.9~图5.11所示。 图5.9 示波器观察的cvhdb3波形 图5.10示波器观察的cbhdb3波形 图5.11 示波器观察的d_chdb3波形 总结 这次毕业论文不仅是我所学知识的总结,更使我对数字通信系统有了较深的理解。 在这次的设计中,我掌握了以下几点: 1、 掌握HDB3码的编码规则; 2、 能够根据编码规则,设计HDB3码的编码模型; 3、 能够用Verilog HDL对HDB3码进行编码设计; 4、 对设计的程序进行仿真验证,达到与编码规则完全一致。 在这次设计中,我也努力解决了几个难题。 1、 设计的难点是解决是否应该插“B”,因为这涉及到由现在的状态决定过去事件状态的问题,按照实时信号处理的理论,是无法实现的;但在实际电路中可考虑用寄存器的办法,首先把信码寄存在寄存器里,同时设置一个计数器,计数两个“V”之间“1”的个数,经过4个码元时间后,由一个判偶电路来给寄存器发送是否插“B”的判决信号,从而实现插“B”的功能。 2、 在编码中为了实现正负极性标注,利用双相码取代原来的二进制代码。 总之,这次毕业设计的过程使我受益匪浅,它不单纯是知识的巩固,更重要的是让我学会了碰到困难是应该怎样独立地思考并解决问题!而这个才是我们日后工作中最重要的。 参考文献 1.陈明霞,陆原.可编程逻辑器件的发展历程与发展方向[J]. 山西电子技术.2005,(4).31-32. 2. 徐伟业,江冰,虞湘宾.FPGA/CPLD的发展与应用之比较[J].现代电子技术.2007,(2).4-5. 3.张文.可编程逻辑器件的发展与应用[J].大众科技.2006,(01).49-50. 4.黄洁.可编程逻辑器件及其应用前景[J]. 中国科技信息. 2005,(13).1. 5.车嵘,刘波,曹剑中.基于FPGA的HDB3编解码电路实现[J].电子器件.2007,30(6).2148-2149. 6.樊昌信,詹道庸,徐炳祥,等.通信原理[M].北京:国防工业出版社,1998. 7.罗伟雄,韩力,原东昌,等.通信原理与电路[M].北京:北京理工大学出版社,2000. 8.曹志伟,钱亚生.现代通信原理[M].北京:清华大学出版社.1992. 9.苗睿锋. NRZ-HDB3码转换器的高速长距离通信[J]. 单片机与嵌入式系统应用.2004,(01). 10.肖闽进.基于FPGA的G.703标准E1信号HDB3码编码器的设计与应用[J].常州工学院学报.2009,22(4).40. 11.乔继红,顾伟娟.基于CPLD的HDB3码编译器的设计[J];北京工商大学学报(自然科学版);2005年01期. 12.王诚,薛小刚,钟信潮著.FPGA/CPLD设计工具—Xilinx ISE使用详解[M].北京:人民邮电出版社,2005. 13.王金明,编著,徐志军主审,Verilog HDL程序设计教程[M],人民邮电出版社. 14.王金明,杨吉斌著.数字系统设计与Verilog HDL[M],电子工业出版社,2002. 15.J.Bhasker著,Verilog HDL综合实用教程[M],清华大学出版社,2004. 16.袁俊泉,孙敏琪,曹瑞编著.Verilog HDL数字系统设计及应用[M],西安电子科技大学出版社,2002. 17.FPGA Compiler ⅡFPGA Express VHDL Reference Manual,Synopsis, version 1999. 18.IEEE Standard Hardware Descrption Language Based on the Verilog Hardware Description language,IEEE Std1364-1995,IEEE,1995. 附录 附录A:分频模块程序 module fengping(clock,reset,clk); input clock; input reset; output clk; reg[0:15] count_1; reg clk; parameter N=32; always@(posedge clock) if(!reset) begin count_1<=1'b0; clk<=1'b0; end else if(count_1 全文 企业安全文化建设方案企业安全文化建设导则安全文明施工及保证措施创建安全文明校园实施方案创建安全文明工地监理工作情况 数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。 论文密级: □公开 □保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议) 作者签名:_______ 导师签名:_______ _______年_____月_____日 _______年_____月_____日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 二〇一〇年九月二十日   毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 二〇一〇年九月二十日 致 谢 时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。 首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。 首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。 其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。 另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。 最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。 四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。 回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。 学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。 在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。 最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。 PAGE III
本文档为【HDB3编码器的FPGA实现毕业设计说明书】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
北溟愚鱼
暂无简介~
格式:doc
大小:4MB
软件:Word
页数:69
分类:工学
上传时间:2018-09-23
浏览量:17