基于ROM结构的温度计码解码器设计说明书_第1页
基于ROM结构的温度计码解码器设计说明书_第2页
基于ROM结构的温度计码解码器设计说明书_第3页
基于ROM结构的温度计码解码器设计说明书_第4页
基于ROM结构的温度计码解码器设计说明书_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

基于 ROM 结构的温度计码解码器的设计摘 要:可以实现皮秒级别测量精度的时间数字转换器广泛用于激光测距、高能物理和航空通信等场合。时间数字转换器主要由延时链、锁存延时链输出的寄存器组和解码器组成。利用 FPGA 实现时间数字转换器与开发时间数字转换器集成芯片相比具有开发周期短、实现容易、外围电路简单、系统集成度高和升级简单等优点。温度计码解码器是时间数字转换器的关键电路,它决定了转换器连续工作的最大频率,决定了转换器系统电路的资源使用,决定了单片 FPGA 内容纳时间数字转换器通道的个数,决定了转换器对亚稳态造成的温度计码中的“气泡”的抑制能力。设计采用模/数转换器设计中的 ROM 结构的温度计码解码器。针对 EP3C10E144C7 的4 输入查找表结构,从 4、8、16 输入的温度计码解码器的逻辑表达式入手,推演处应用于任意位温度计码解码器的通用公式,并成功实现了 32、64、128、256、512 位温度计码的解码。基于 FPGA 的 ROM 结构的解码器电路由把温度计码转换为1-out-of-n 码的预处理电路和以或运算为核心的非常适于 FPGA 查找表结构的解码电路构成。其中预处理电路可以消去温度计码中 2 个以内的“气泡”误差。解码器最大工作频率随着温度计码位数的增加而降低,512 位温度计码解码时间小于 7 ns。关键词:FPGA;温度计码;解码器;ROM 结构The design of the thermometer code decoder based on the ROM structureAbstract:The time to digital converter (TDC) with the picosecond-level measurement can be widely used in laser ranging, high energy physics and aviation communication. It is composed of the register group which latches the outputs of the delay chain and thedecoder. Comparing with development time to digital converter chip, Using FPGA to realize the time to digital converter has the advantages of short development cycle, easy realization, simple peripheral circuits, the high degree of system integration and simple upgrading.Thermometer decoder is the key circuit of TDC, which limits the maximum frequency of TDC in continuous working, decides the using resource of converter circuit, determines the number of TDC channel in a single FPGA, decides the inhibition ability of the bubble of the thermometer code which caused by the metastable state. The design uses ROM structure decoder of the analog/digital converter. For four input lookup table structure of EP3C10E144C7, beginning from the logic expressions of 4, 8, 16 input thermometer decoder, the design derives the general formula of the arbitrary bit thermometer decoder, and the successful achieves the 32, 64, 128, 256, 512 bit thermometer code decoding. Based on FPGA the decoder circuit of the ROM structure is composed of the preprocessing circuit which converts the thermometer code into the 1-out-of-N code and the decoding circuit which is suitable for the structure of the FPGA with the OR as the operation core. The preprocessing circuit can eliminate the 2-level “bubble” in the thermometer code. The maximum operating frequency of the decoder decreases with the increase of the number of the thermometer code, and the decoding time of the 512 bit thermometer is less than 7 ns.Key words: FPGA;Thermometer code;Decoder;ROM目录1 概述11.1 研究背景11.2 EDA 设计方法11.3 设计软件21.4 论文结构42 解码器算法推演52.1 延时链的测量原理52.3ADC 中温度计码解码器及编码语言选择62.2 亚稳态82.4 通用解码器公式推演103.解码器实现与仿真133.1 4 位解码器的仿真133.2 8 位解码器的仿真163.3 16 位解码器的仿真193.4 32 位解码器的仿真223.564 位 128 位 256 位和 512 位解码器的仿真274 结束语31参考文献32致谢34附录 164 位解码器的 RTL 视图35附录 2128 位解码器的 RTL 视图36附录 3256 位解码器的 RTL 视图38基于 ROM 结构温度计码解码器的设计1 概述1.1 研究背景温度计码解码器是时间数字转换器 TDC(Time-Digital-Convertor)随着时间的发展,对于测距精度的要求也越来越高,所以时间间隔测量技术应运而生。时间间隔测量技术,特别是对高精度的时间间隔的测量技术的研究意义重大,无论是在电信通讯,设计芯片以及数字示波器等工程领域方面,还是在天文、物理等方面的理论研究,甚至在激光测距以及航天技术领域的发展都有赖于高精度的时间间隔测量。时间间隔的测量精度即测量的分辨率同其使用环境有很大的关系。日常生活中, 精确到秒的测时精度已经足够满足人们的日常生活中的需求了,但是这种精度对于军事、导航、通讯、航空等领域来说是远远不够的。1s 的时间误差可以致使航海中的舰船严重偏离既定航线,1 ms 的误差便可导致航天飞机不能及时变轨返航。随着科技越来越发达,高精度的时间间隔测量技术发展迅速尤其是在 IC 技术引入后更是发展迅速。与此同时,各行各业对时间间隔的测量精度的要求也是越来越高了。相对于其他的设计方法,运用 FPGA 技术不仅可以使其具有较高的测量准确度和更强的设备稳定性,还具有较高的系统集成度,较小的系统体积,便于升级以及成本较低等优点。基于 FPGA(FieldProgrammable Gate Array,现场可编程门阵列)的时间数字转换器在确保待测信号s 到达延时链输入端的传输延时和系统时钟clk 到达寄存器时钟脚的传输延时一致的情况下,经过延时链的 s 信号上升沿(下降沿)跳变被寄存器锁存后的输出温度计码。温度计码的 1-0(0-1)跳变位置反映了 s 的跳变沿到时钟的上升沿之间的延时,由温度计码编码器计算出跳变沿的位置,然后累加跳变沿之前的每个延时单元的延时,可得到 s 跳变沿到 clk 上升沿之间的延时。时间数字转换器的编码器需要把温度计码转换 1-0(0-1)跳变处的二进制位置码。针对 FPGA 的查找表结构,实现了处理任意2m 位温度计码的基于 ROM 结构的温度计码解码器的设计。并利用 Quartus II 和 ModelSim 仿真平台进行验证。基于 ROM 结构的解码器设计简洁,使用资源较少,能抑制泡沫误差,具有很高转换速度。如果引入流水线技术,可以进一步缩短解码器的连续解码延时,提升系统的最大工作频率。1.2 EDA 设计方法EDA( Electronic Design Automation,电子设计自动化)是从 20 世纪 60 年代时期提出的 CAD(Computer Aided Design,计算机辅助设计)、CAM(Computer AidedManufacturing,计算机辅助制造)、CAT(Computer Aided Engineering,计算机辅助工程)等概念发展而来的。利用 EDA 工具,设计师们可以从概念、协议或者算法进行电子系统的设计,而9其余大量工作可以通过计算机完成,不但如此,EDA 还可以借助电脑自动处理并完成电子产品的电路设计、性能分析并完成 IC(Integrated Circuit,集成电路)、PCB(Printed Circuit Board,印刷电路板)版图的设计。因此,EDA 的设计一般被分为物理实现、电路以及系统三种级别。EDA 应用的范畴很宽,在机械、通信、航天航空、化工、电子、医学等多个领域中都有广泛应用。相比之下国内定义 EDA 范围相对较窄,主要是指 IC、PCB 以及电子电路的设计。本次设计所涉及的 EDA 技术主要是对 IC 中数字电路的前端设计电路验证仿真部分,先利用 Quartus 对设计程序进行编译,无误后再利用Modelsim 仿真验证,确保设计可以准确无误的运行。1.3 设计软件本次设计主要使用 Quartus+Modelsim 进行设计仿真。Quartus是由著名的 FPGA 生产厂商 Altera 提供的一款实现 FPGA/CPLD 开发集成环境。用户们可以在 Quartus中完成整个数字系统的设计流程。Quartus是MAX+plus基础上创新的产物,相较于 MAX+plus来说,Quartus的界面更加友好,操作更加简单便捷。Quartus提供了一种新型的与结构无关的设计环境,这样设计者可以更加方便的进行设计。Quartus为我们提供了多平台的设计环境,可以满足多种特定设定的需求,也包含了 SOPC(System On a Programmable Chip,可编程片上系统)设计所需的综合性环境以及基本的设计工具。Quartus的设计工具中既提供了 Verilog、VHDL 逻辑综合器还提供了第三方的综合器工具,例如 FPGA Compliler 、Spectrum、Leonardo 等工具,并且能够很便捷的直接使用这些工具。不仅如此,Quartus兼容第三方仿真工具,如 ModelSim 等。Quartus为设计者们提供了完善的多平台的设计环境:a)编译器:Quartus中包含了模块化的编译器工具,具有 Analysis & Syntyesis(分析&综合器)、Fitter(适配器)、Assembler(装配器)、Timing Analyzer(时序分析器) 、Design Assistant( 设计辅助模块) 以及编辑数据接口等功能模块。在Quartus中既可以单独运行各个模块,也可以通过“Start Compilation”快捷按钮运行全部的功能模块。b)综合器:软件内嵌了 Verilog、VHDL 逻辑综合器,并且能够直接调用第三方的综合工具,例如 Synplify Pro、Leonardo Spectrum、FPGA Compiler 等。c)仿真器工具:Quartus支持第三方的仿真工具。d)LPM:Quartus包含了很多 LPM(Library of Parameterized Modules)模块, 如此既适用于复杂的数字系统也适用于 SOPC 设计。e)混合输入工具:Quartus不仅兼容第三方 EDIF 文件输入,还提供了很多 EDA软件接口,并且支持层次化的设计,进而实现了 HDL 与原理图混合输入。Quartus从 10.0 版本起不再提供对波形仿真的支持,使用仿真更快、功能更加全面而且在 EDA 仿真中应用也最广泛的 Modelsim。仿真是通过产生一定的激励信号送给被测逻辑,通过观察被测逻辑的输出信号和内部信号,判断被测逻辑电路是否满足功能需求和时序需求。ModelSim 是一款优秀的语言仿真器软件,它提供了相对友好的调试环境,是FPGA 和 ASIC 设计的门级和 RTL 级仿真的首选仿真软件。这款软件支持 UNIX、PC以及 LINUX 平台,单一内核可以支持 Verilog 及 VHDL 混合仿真的仿真器。ModelSim 采用的是直接优化的 TCL/TK、编译技术、以及单一内核仿真,编译仿真的速度是遥遥领先于其他同类的仿真软件,编译的代码与平台毫不相关,有利于保护 IP 内核,而且具有个性化的界面以及用户接口,为用户加速调试提供了强有力的保证。ModelSim 兼容 Verilog、VHDL 语言的 IEEE 标准、IEEE VITAL 1076.4-95 标准以及 C 语言功能的调用,其中 C 语言的模型是基于 SWIFT 的 SmartModel 的硬件以及逻辑模型。ModelSim 支持门级仿真、RTL 仿真、时序仿真,其主要特点:a)具有最快的编译仿真速度,并且采用直接编译结构;b)利于数据移植和库维护;c)单一内核可以无缝进行 Verilog 与 VHDL 的混合仿真;d)便于保护以及利用 IP;e)兼容 Verilog/VHDL 的国际标准,支持 Verilog 2001;f)操作简单的图形用户界面,测试全面快速;g)执行模式灵活,Debug 模式下的调试较高效,效率模式下仿真速度得到大幅度的提升;h)代码覆盖率功能较强;i)具有 toggle、expression 以及 fsm 等多种情况的覆盖率,可以进一步提高测试的完整性;j)具有 Signal Spy 功能,能更加便捷的访问 verilog、VHDL 以及两者混合的设计中的下层模块的信号,利于设计调试。Code Coverage(代码覆盖率)是 ModelSim 的一项高级功能。检验代码质量的重要手段之一就是测试代码覆盖率的验证激励是否完备。如果被测试的激励代码的覆盖率可以达到 95%以上,在逻辑上该代码才能被认为是可以通过质量考核的,之后才能进行综合步骤。保证高质量代码的必要条件就是高的代码覆盖率,但这个并不是它的充分条件, 即使代码的行、分支覆盖能够达到 100%,也不能保证代码 100%的通过验证。除非能够组合遍历全部的分支。当设计较为复杂的时候,仅仅只靠一个激励是无法验证完整个设计模块的,因为不仅逻辑功能上无法实现,而且如果一个激励中包含了多种情况,会造成仿真过程中仿真速度随着计算机内存被占用而线性下降的情况,降低工作效率。Modelsim 的 Code coverage 不仅能记录每个激励对设计代码的“行覆盖”以及“分支覆盖”,而且可以将每个激励的覆盖记录进行综合,这样就可以实现对覆盖率的全面监控。MdelSim 里仿真辅助调试工具 Debussy 借助仿真波形帮助代码排错。而ModelSim 的波形仿真是有缺陷的尤其是在大的仿真中,它的波形仿真只能显示出设置添加的信号波形,如果已经进入仿真出波形阶段,这时还想观察其他的参数波形, 唯一的一种解决办法就是将需要观察的信号添加进去,从新开始仿真;ModelSim 只能简单的显示波形,无法借助波形直观的调试代码,因为波形与代码之间没有相对应的关联关系;在 ModelSim 中的仿真时如果观察的信号过多,而仿真时又是全实时信号显示,仿真时间如果过长,则会导致仿真速度明显减慢。这些缺陷是仿真软件所共有的,也是由来已久的,所以设计者们提出“先存储, 后观察调试”的方法,Verilog 中$dumpxxx 开头的系统函数就是应用了这种原理来专门存储波形在代码文件中,等仿真结束再调用显示用来观察以及调试。1.4 论文结构第 1 章概述,说明了研究背景和内容;第 2 章解码器的算法推演,从简单的解码器逻辑表达式入手,推演出适用于任意位温度计码的解码器通用公式,并阐述了延时链锁存输出的亚稳态问题;第 3 章解码器实现与仿真,事项并仿真了 4、8、16、32、64、128、256、512 位温度计码输入的解码器工作情况,并随机展示了有“气泡”的温度计码的解码情况;最后是结束语和附录。2 解码器算法推演2.1 延时链的测量原理图 2-1 时间间隔原理图图 2-2 延时链测试间间隔原理图如图(2-1),即被测的时间间隔 S 对应着一个正脉冲,图中给出了测量延时t f(正脉冲的下降沿与相邻的时钟的上升沿之间的时间间隔)的原理,需要注意的是t f 的测量起点应该是正脉冲的下降沿恰好到达延时链的输入端的时间点。仔细观察延时链测时间间隔的原理图,不难发现每个三角形就代表了一个延时单元,只要确保这个单元的电路可以带来延时效果。在正脉冲即代表时间间隔的那个来到之前,整个延时链的输出全部都为 0。当正脉冲进入延时链之后,紧邻的正脉冲时钟上升沿就会锁存延时链的输出,正脉冲的下降沿与延时链的下降沿跳变是相互对应的,如果延时链的输出有 n 个 1 代表正脉冲的下降沿经过的相同数目的延时单元,所以:t f = n*t p(2-1)式(2-1)中: t p 是延时单元的延时时间,设定每个延时单元的延时时间都是相等的。如果用一个延时链来测量时间间隔时正脉冲需要考虑两种情况,从以上的原理图中可以得到待测的时间间隔公式为:t = n* tc + t f - tr(2-2)式(2-2)中:tr 是正脉冲上升沿到与之相邻的时钟上升沿的时间间隔;t f 则是正脉冲的下降沿到与之相邻的时钟的上升沿之间的时间间隔; tc 就是 clk 的时钟周期;n 代表时间间隔所包含的时钟周期的数量。除此之外还有其他两种时间间隔的测量情况,具体的计算推导情况可以由此类推,在此就不多做介绍了。图(2-3)就是实际测量时的时间间隔测量原理框图,是基于 FPGA(现场可编程门阵列)的 TDC 的基本结构。能够保证被测信号 s 在到达延时链的输入端时的传输延时与 clk 系统的时钟 clk 到寄存器时的传输延时用相同的情况下,通过延时链的 s 信号的上升/下降沿的跳变被寄存器输出后的输出就被称为 Thermometer Code(温度计码)。图中 s 是被测量的时间间隔的正脉冲,ENC 是mr 与m f 的编码器,clk 是系统时钟,counter 就是用来统计 n 的计数器,当 s 为 1 时就开始计数。s 的正脉冲开始进入延时链时,counter 便开始计数,当与之相邻的时钟的第一个上升沿触发 D 触发器组便会对延时链的输出开始锁存,并且由 ENC 计算得出mr 与m f ,然后将 n、mr 与m f 存储在 FIFO 里。图 2-3 时间测量原理图2.3ADC 中温度计码解码器及编码语言选择本设计课题是基于 ROM 结构的温度计码解码器的设计,主要由预处理电路和解码器电路组成,预处理电路将待测信号的输入温度计码数据通过译码器(或门电路) 处理成 1-out-of-n 的数据列,然后再通过解码器将其转化为 2 进制的位置码。通常时间数字转换器的编码器的设计目的是将温度计码转变成上升沿(下降沿) 跳变处二进制的位置码。基于 FPGA 的查找表的内部结构,我们可以实现处理2m 位的温度计码的 ROM 结构行为级解码器的算法描述,并在 EP3C10E144C7 中实现, 通过算法推演,利用 Quartus II+ModelSim 验证 m=2、3、4、5、6、7、8、9 情况下解码器的工作情况。图 2-4 ROM 结构的工作原理图温度计码解码的一个最常见和简单的方法是使用格雷码或二进制解码的 ROM解码器(图 2-4)。解码器先由输入比较电路获得温度计码,然后进入带抑制“气泡” 的行译码器电路,最后进入 ROM,由 ROM 的列输出最终的对应位置码的二进制码或格雷码。如果存在“气泡”错误会引起解码器行译码器选择多行,再输出引入很大误差。这种类型的行译码器选择多行。如只考虑单个“气泡”错误时,这些错误可以通过使用 3 输入与非门来校正,如图 2-4。 3 输入与非门可以消去间隔在 3 位以内的温度计码中的所有“气泡”。该 ROM 解码方法优点是结构设计简单。缺点是不能消除更多的泡沫误差。解码速度的提高依赖于更有效的气泡纠错方案,因为“气泡”的纠错电路的复杂性增加, 传播延迟时间也会增加。如果没有采用流水线型解码器那传播延迟时间变长会降低整体的最大工作频率。另外增加电路的复杂性会浪费更多的芯片资源、消耗更多的能量。另一个泡沫误差抑制技术是蝶形排序技术。应用这种技术,“气泡”会在温度计码中向上传播,直到温度计码里完全没有气泡。然后 ROM 解码器将无气泡的温度计码解码成二进制码。在蝶形分拣机中只能有八个级别,气泡如果距离它的转换高度太远就无法被去除。为了保证没有气泡存在于输出的温度计码中,深度蝶形排序分拣机数目必须等于比较器的数目,即2 N - 1。为了在 FPGA 中实现任意2m 位温度计码的解码,需要选定一种硬件描述语言。Verilog HDL 与 VHDL 这 2 种语言一般都是用于集成电路设计的硬件描述语言,而且这两种语言都是 IEEE 认证的标准。其中 Verilog 是 1995 认证成功的,而 VHDL 早在 1987 年就已经成为 IEEE 认证的标准。主要原因是 VHDL 是由美国军方组织开发的,Verilog 则是由民间公司提出。VHDL ( VHSIC ( Very High Speed Integrated Circuit ) Hardware Descrirtion Language)即甚高速集成电路的硬件描述语言。Verilog 和 VHDL 的 共 同 点 有 : a)可以抽象的表示电路的结构以及行为; b)能够支持逻辑设计中的领域以及层次的描述; c)能够兼容高级语言的优化结构,简化对电路的描述; d)可以实现电路描述的综合转换(从高层到低层);e)方便文档的管理,并且容易理解、注重设计。Verilog 在系统级别的抽象方面比 VHDL 稍显逊色,但是在门极开关电路的描述方面就技高一筹了。它不仅可以描述行为,还可以描述结构。总而言之,Verilog 不仅可以用来对电路的功能进行描述,也可以使用原理图输入的方式建立电路的Verilog 的仿真模型。这种模型还可以是不同级别的抽象电路,而级别不同对应的仿真模型类型也不同,可以分为以下 5 种。a)system(系统级):能够用高级语言的结构来实现设计模块的外在性能的模型;b)algorithm(算法级):使用高级的语言结构来实现设计算法的模型; c)Register Transfer Level(RTL 级):描述了在寄存器之间的流动数据以及如何处理此类数据的模型;d)gate-level(门级):用来描述逻辑门与逻辑门之间的连接模型;e)switch-level(开关级):描述了被仿真器件中的三极管、储存节点和它们之间连接的模型。每一个复杂的电路系统的 Verilog HDL 模型都是由若干个小 Verilog HDL 模块构成的,而每一个模块又可以由很多小的个子模块构成。而其中有些模块需要被综合成具体的电路,而某些模块只是用来与设计的模块进行交互的现存电路、激励信号源。Verilog HDL 结构提供的这种功能可以用来构造一个模块化的层次清晰的模型对异常复杂的电路设计进行仿真,并且可以对设计的逻辑电路进行严格的仿真验证。Verilog 语言是一种结构化以及过程性的行为描述语言,语法的结构对于算法级、RTL 级的模型设计来说非常适合。Verilog 语言的功能如下:a)可以并行执行、顺序执行的结构; b)通过延迟或事件的表达式可以准确地控制启动时间; c)已经命名的事件可用来触发其他的过程中的激活、停止行为; d) 兼 容 if-else 、 条 件 、 case 、 等 循 环 结 构 ; e)程序结构中包含了可带参数并且有延续时间的 task; f) 可 以 定 义 带 有 新 操 作 符 的 function 。Verilog 语言是一种结构化、模块化的语言非常适用于门级、开关级的模型设计仿真。结构化的特点使它具有以下功能: a)具有一套完整的组合型 primitive(原语); b)包含双向通路以及电阻器件的 primitive; c)可以用来建立 MOS 管器件的电荷分享、电荷衰减的动态模型。Verilog 的构造性语句可以更加准确地建立信号的仿真模型。因为 Verilog 提供了延迟、输出强度的 primitive 来建立精准的信号模型。其信号值的强度是不尽相同的,并且可以通过限制范围的模糊值来降低不确定的因素对仿真的影响。Verilog HDL 是一种高级的用来描述硬件编程的语言,其风格与 C 语言相似。Verilog 语言中的 if、for、case 语句与 C 语言中的 if、for、case 语句功能也十分类似。如果已经掌握了 C 语言的基础编程,那么 Verilog HDL 语言的学习就并不困难,可以用它的强大功能来设计复杂的数字逻辑电路。本设计的最终目的是实现并验证2m 位输入的 ROM 结构的温度计码解码器的设计,所以接下来将从 4 输入、8 输入、16 输入、32 输入推导出每种情况下的 bgi的表达式,然后再推导出 n 位输入的最终表达式,最后使用 Verilog 语言实现解码器并仿真。2.2 亚稳态数字电路中的亚稳态一般指触发器在某个限定时间内未能达到一个确认的状态点。而当一个触发器进入了亚稳态,我们不仅无法预估该单元的输出电平,也预测不了该单元的输出何时才能稳定在某个电平值上。而这段期间内,该触发器的输出可能会输出一些中间级别的电平值,也有可能输出值会处在振荡的状态,与此同时, 无用的输出电平还会沿着信号通道上的触发器传播。FPGA 的系统中,当数据传输过程中满足不了触发器的Th 以及Tsu ,又或者在复位的过程中复位的信号释放无法满足有效时钟跳变沿的 recovery tim(e恢复时间)时,就会出现亚稳态现象。当有效的时钟跳变沿过后亚稳态状态下的触发器输出端 Q 会在很长的一段时间内处于不稳定的状态,与此同时 Q 的输出值会在 0 与 1 之间振荡, 并不是等于数据输入端的数值。这个时间段就被称作 resolution time(决断时间)。决断时间过后 Q 端的输出就会稳定了。亚稳态主要会出现在跨时钟信号传输、异步信号测量以及复位电路等常用的数字电路设计中,含有异步元件的系统中就会不可避免的出现亚稳态。而亚稳态会引起寄存器的输出出现“振荡”、“毛刺”以及某一固定电压值。也会导致与它相连的其他数字部件的判断有误,便会直接导致数字器件的逻辑混乱。如果复位电路中出现了亚稳态现象,那很有可能会致使复位无效,因此,降低亚稳态的出现概率是我们必须仔细考虑的一个重点。同步系统内,输入的信号总是和系统的时钟信号保持同步的,因为只有这样才能够满足寄存器的时序要求。并且避免亚稳态的发生,亚稳态一般会出现在异步时钟电路的信号采集过程中或者跨时钟域的信号传输电路中。跨时钟域的信号传输过程中,因为不知道源寄存器与目的寄存器的时钟相位移,而且由源寄存器发出的数据到达异步时钟域的确切时间段我们无从得知,因此,我们不能确保满足目的寄存器对于th 以及tsu 的要求。同样的,异步信号采集电路中,因为异步信号数据可能在任意的一个时间点抵达目的寄存器,我们也不能保证满足目的寄存器对于th 以及tsu 的要求。实际的 FPGA 设计中,大家一般都会考虑如何减少亚稳态的影响,却忽略了降低其发生的几率以及其带来的串扰的概率方面的问题。综上所述,我们不难总结得出系统时钟 clk 的th 以及tsu 的需求无法满足是致使亚稳态现象出现的根本原因。当然也有可能是复位信号的复位时间以及移除时间不能得到满足。假定常用的 FPGA 器件的th 以及tsu 的值约为 1ns,即复位信号的移除时间之需大于 2ns。如果异步信号不是一组单独的数据,又或者信号量较少的时候,这时对异步信号实行同步处理就是必要的了,假设我们需要采集异步脉冲信号,当脉冲信号变化出现在th 以及tsu 的窗口内,那么亚稳态的出现概率约为:式中:tsu :建立时间; th :保持时间;Tclk :采集时钟的周期;P = ( tsu + th ) / Tclk(2-3)由公式(2-3)我们不难得出结论:亚稳态的出现几率是伴随着系统时钟的频率的增加而提高的。因此,在采集异步信号的过程中,可以通过以下措施降低其出现的概率:a)降低系统时钟的工作频率,进而增大系统的周期,降低亚稳态的发生概率; b)使用工艺更优良的 FPGA 器件,即th 以及tsu 之和相对较小的 FPGA 的器件,有助于减少亚稳态的出现的概率。综上所述,消除亚稳态的常用方式有以下三种:a)使用 FIFO 对跨时钟域的数据通讯增加一个缓冲设计电路;b)对异步信号做同步处理;c)对复位电路采取同步释放以及异步复位的方式进行处理。2.4 通用解码器公式推演假设输入的解码器位数是 k,输出二进制码 d 的个数为 m,可以得出:2m = k(2-4)4 输入的 d 的推导,假设 4 位的输入从高到低为r3 r0 ,输出的 d 就应该有俩个表达式即 d0与 d1。表 2-1 4 输入的真值表r0r1r2r3d1d0000000100010010001001011根据真值表(表 2-1),可以得出 d 如下: d0 = r1 + r2d1 = r0 + r2当 k 的值为 8 时,即输入的位数为 8,由公式(2-4)可知 m=3。即可得出真值表(表 2-2):表 2-2 8 输入的真值表r0r1r2r3r4r5r6r7d2d1d0000000000001000000010001000000010001000000010001000000000001000000000001000000000001000019根据输入输出的真值表可以得出 8 输入的 d 的逻辑表达式: d0 = r0 + r2 + r4 + r6d1 = r1 + r2 + r5 + r6 d2 = r3 + r4 + r5 + r6当 k 的值为 16 时即输入的位数为 16,由公式(2-4)可知 m=4。即可得出真值表如表 2-3 和表 2-4。根据输入输出的真值表可以得出 16 输入的 d 的逻辑表达式: d0 = r0 + r2 + r4 + r6 + r8 + r10 + r12 + r14d1 = r1 + r2 + r5 + r6 + r9 + r10 + r13 + r14 d2 = r3 + r4 + r5 + r6 + r11 + r12 + r13 + r14 d3 = r7 + r8 + r9 + r10 + r11 + r12 + r13 + r14同理,当 k 的值为 32 时即输入的位数为 32,由公式 2-4 可知 m=5。32 输入的 d的逻辑表达式:d0 = r0 + r2 + r4 + r6 + r8 + r10 + r12 + r14 + r16 + r18 + r20 + r22 + r24 + r26 + r28 + r30d1 = r1 + r2 + r5 + r6 + r9 + r10 + r13 + r14 + r17 + r18 + r21 + r22 + r25 + r26 + r29 + r30 d2 = r3 + r4 + r5 + r6 + r11 + r12 + r13 + r14 + r19 + r20 + r21 + r22 + r27 + r28 + r29 + r30 d3 = r7 + r8 + r9 + r10 + r11 + r12 + r13 + r14 + r23 + r24 + r25 + r26 + r27 + r28 + r29 + r30 d4 = r15 + r16 + r17 + r18 + r19 + r20 + r21 + r22 + r23 + r24 + r25 + r26 + r27 + r28 + r29 + r30表 2-3 16 输入的真值表r15r14r13r12r11r10r9r8r7r6r5r4r3r2r1r000000000000000001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000001表 2-4 16 位的输出真值表d3d2d1d00000000100100011010001010110011110001001101010111100110111101111通过观察不难发现 d0的表达式全是偶数项 0、2、4、6.,每两项之间相隔一个;d1的表达式则是从 1 开始每 2 个连续的相加然后间隔连续的 2 个再加上 2 个连续的;d2就是从第 4 项开始每四项相加间隔 4 项再加上 4 项连续的一直重复。所以可以总结得出通用公式 2-5。ROM 结构的温度计码解码器实现的算法公式:2m-i-1 -1 2i+1 +q 2i+1 -2di =OR (k =0ORj=2i +q 2i+1 -1r j)0 i m -1(2-5)式中,OR 表示多个元素相或。ROM 结构的温度计码解码器的最大的优点就是,rj直接决定了 di的逻辑输入,而且每个的路径长度固定的,这就决定了 ROM 结构的温度计码解码器的亚稳态的毛刺以及路径延时都为最小值。3.解码器实现与仿真3.1 4 位解码器的仿真4 输入 ROM 结构的温度计码解码器 Verilog 代码如下: module rom_4#(parameter LEN=3)(input LEN:0 srin, output 8:0 tenout);integer i,k,j;reg 8:0 cen_tenout

温馨提示

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

最新文档

评论

0/150

提交评论