资源目录
压缩包内文档预览:
编号:81010325
类型:共享资源
大小:47.77MB
格式:ZIP
上传时间:2020-05-24
上传人:QQ14****9609
认证信息
个人认证
郭**(实名认证)
陕西
IP属地:陕西
20
积分
- 关 键 词:
-
基于
ROM
结构
温度计
解码器
设计
说明书
- 资源描述:
-
基于ROM结构的温度计码解码器设计说明书,基于,ROM,结构,温度计,解码器,设计,说明书
- 内容简介:
-
XX设计任务书课题: 基于ROM结构的温度计码解码器设计专业学生姓名班级学号指导教师专业系主任发放日期XXX1. 毕业设计(论文)任务的内容和要求(包括原始数据、技术要求、工作要求)1、 主要内容以及技术参数基于FPGA的时间数字转换器在确保待测信号s到达延时链输入端的传输延时和系统时钟clk到达寄存器时钟脚的传输延时一致的情况下,经过延时链的s信号上升沿(下降沿)跳变被寄存器锁存后的输出温度计码。温度计码的1-0(0-1)跳变位置反映了s的跳变沿到时钟的上升沿之间的延时,由温度计码编码器计算出跳变沿的位置,然后累加跳变沿之前的每个延时单元的延时,可得到s跳变沿到clk上升沿之间的延时。 时间数字转换器的编码器需要把温度计码转换1-0(0-1)跳变处的二进制位置码。针对FPGA的查找表结构,实现了处理任意2m位温度计码的基于ROM结构的温度计码解码器的设计。并在Quartus II+ModelSim仿真平台中进行验证。2、设计中要求做的工作a) 熟练掌握Quartus II与ModelSim软件。b) 灵活运用VHDL语言进行编程。c) 理解ROM结构解码的工作原理。d) 用VHDL编写解码器。e) 仿真调试f) 完成毕业设计论文的编写。3、 工作要求a) 对待设计工作要具有认真的态度、严谨的作风b) 要求每天按照计划保质保量地完成当天的任务c) 遵守设计场所的纪律制度,做好值日生工作2. 图纸内容及张数:1、顶层设计原理图 1张2、仿真波形图 2张3. 实物内容及要求(包括开题报告、毕业设计说明书(论文)、源程序、成果实物、资料光盘等):(1) 完成毕业实习报告一份。(2) 完成开题报告一份。写明课题研究的意义,设计或研究的思路,采用的主要器件,以及设计最终所获得的成果。详细列出在毕业设计期间各个时间段要完成的工作。(3) 完成8000字的资料摘要一份。(4) 完成与本课题相关的外文资料译文一份(3000汉字以上)。(5) 按照盐城工学院毕业设计(论文)教学工作手册中的要求完成毕业设计说明书一份。符合学校制定的本科毕业设计(论文)的格式要求、字数要求,文笔流畅、条理清晰,无原则性错误。任务书、开题报告、设计说明书等资料刻成光盘。4. 其他:无5. 参考文献: 1 Kaess F, Kanan R, Hochet B, et al. New encoding scheme for high-speed flash ADCsC. Circuits and Systems, 1997. ISCAS 97., Proceedings of 1997 IEEE International Symposium on, 1997: 5-8 vol.1.2 Padoan S, Boni A, Morandi C, et al. A Novel coding schemes for the ROM of parallel ADCs, featuring reduced conversion noise in the case of single bubbles in the thermometer codeJ. Proceedings of the IEEE International Conference on Electronics, Circuits, and Systems, 1998, 2: 271-274.3 Daegyu L, Jincheol Y, Kyusun C, et al. Fat tree encoder design for ultra-high speed flash A/D convertersC. Circuits and Systems, 2002. MWSCAS-2002. The 2002 45th Midwest Symposium on, 2002: II-87-II-90 vol.2.4 Fries M D, Williams J J. High-Precision TDC in an FPGA using a 192-MHz Quadrature ClockC. 2002 IEEE Nuclear Science Symposium Conference Record, November 10, 2002 - November 16, 2002, 2002: 580-584.5 Wu J, Shi Z, Wang I Y. Firmware-only implementation of Time-to-Digital Converter (TDC) in field-programmable gate array (FPGA)C. 2003 IEEE Nuclear Science Symposium Conference Record - Nuclear Science Symposium, Medical Imaging Conference, October 19, 2003 - October 25, 2003, 2003: 177-181.6 Sail E, Vesterbacka M. A multiplexer based decoder for flash analog-to-digital convertersC. TENCON 2004. 2004 IEEE Region 10 Conference, 2004: 250-253 Vol. 4.7 Jian S, Qi A, Shubin L. A high-resolution time-to-digital converter implemented in field-programmable-gate-arraysJ. Nuclear Science, IEEE Transactions on, 2006, 53(1): 236-241.8 张骥, 曾云, 王铮, et al. 基于FPGA的高精度时间测量电路的实现J. 核电子学与探测技术, 2011, (05): 508-512.6. 毕业设计(论文)进度计划起讫日期工 作 内 容备 注2月24日3月15日毕业实习以及毕业设计的前期工作,完成中文文献摘要、英文文献翻译、实习报告和设计的开题报告3月16日3月29日进行开题陈述和答辩,设计正式开题3月30日4月7日Quartus II与ModelSim软件的熟悉4月8日4月14日温度计码的ROM结构解码器工作原理4月15日5月10日用VHDL语言实现5月11日5月24日仿真调试与优化5月25日6月14日撰写毕业设计说明书,准备毕业答辩6月15日完成毕业答辩以及设计资料的归档工作7.教师签字: 制定日期: 年 月 日8. 审批专业系意见:专业系主任(签字) 年 月 日 XX设计开题报告课题:基于ROM结构的温度计码解码器设计专业学生姓名班级学号指导教师专业系主任撰写日期XXXX课题名称:课题类型: ( ) 应用型 ( ) 研究型1. 本课题的意义精密的时间作为科研和工程技术等方面的基本物理参量,其测量的基本手段是精密时间-数字转换电路(Time-to-Time Digital Converter,简称TDC)。TDC是一种时间测量的常用电路,主要计算参考信号到事件发生的时间以及俩个脉冲时间的时间间隔,将时间的间隔直接转化为高精度的数字值,并实现数字输出。当前主流的TDC实现方法(粗时间测量加细时间测量)能达到亚纳秒的时间分辨率,但很难实现一致性很好的精确时间延时,误差较大。基于FPGA具有丰富专用进位连线的资源,对利用现场可编程逻辑器件FPGA中的专用进位连线实现时间内插链,从而实现精密TDC设计,灵活性好,成本低。并对TDC进行了时序仿真,测量的精度可达70 ps,取得了一致性很好的精确时间延时。基于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结构的解码器设计简洁,使用资源较少,能抑制泡沫误差,具有很高转换速度。如果再使用流水线技术,可以进一步缩短解码器的传播延迟时间,提升系统的最大工作频率。 2. 课题的基本内容: 用已掌握的Quartus II与ModelSim软件运用VHDL语言进行编程,理解ROM结构解码的工作原理,实现了处理任意2m位温度计码的基于ROM结构的温度计码解码器的设计。并在Quartus II+ModelSim仿真平台中进行验证。用用VHDL编写解码器。仿真调试。3. 课题的研究方法、技术路线、设计(研究)方案: 研究方法:主要采用了文献法,案例研究法,以及实验法 技术路线: 设计方案:查找和本次设计相关的资料,确定整体设计方案,学习编码解码器的原理以及仿真软件所用的VHDL语言查阅基于ROM的温度计码解码器设计的相关文献,尝试设计并用软件实现,仿真如果不出结果的话,就从头开始,就重新学习资料,确定方案4. 课题的效果预测 预测编码时间小于4ns,单周期内可完成,可消除3阶以内的bubble误差。 需要使用流线型解码器才可以将全部的温度计码转换为二进制编码。5. 毕业设计(论文)进度计划起讫日期工 作 内 容备 注3月6日3月25日毕业实习以及毕业设计的前期工作,完成中文文献摘要、英文文献翻译、实习报告和设计的开题报告3月26日3月29日进行开题陈述和答辩,设计正式开题3月30日4月7日Quartus II与ModelSim软件的熟悉4月8日4月14日温度计码的ROM结构解码器工作原理4月15日5月10日用VHDL语言实现5月11日5月24日仿真调试与优化5月25日6月14日撰写毕业设计说明书,准备毕业答辩6月15日6月27日完成毕业答辩以及设计资料的归档工作6. 开题报告审批意见指导教师意见:指导教师(签字):年 月 日专业系意见:专业系主任(签字):年 月 日5基于 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; reg LEN:0 cen_srin; always (srin)begincen_srin0 = srin3 & srin2 & srin1 & srin0; cen_srin1 = srin3 & srin2 & srin1 & srin0; cen_srin2 = srin3 & srin2 & srin1 & srin0; for(i=3;iLEN+1;i=i+1)begincen_srini = srini & srini-1 & srini-2 & srini-3;end endalways (cen_srin) begincen_tenout = 91b0; for(i=0;i2;i=i+1)for(k=0;k2*(1-i);k=k+1)for(j=(2*i)*(2*k+1)-1;j 1) ; SIGNAL tenout:std_logic_vector (8 downto 0);COMPONENT rom_4 PORT (srin: in std_logic_vector (3 downto 0) ; tenout: out std_logic_vector (8 downto 0) );END COMPONENT ; BEGINDUT: rom_4 PORT MAP (srin= srin,tenout= tenout) ;srin 1)以及 srin = ( srin(2 downto 0) & 0 ) after 100ns;是后来添加修改的,前一个是用来给 srin 赋初值的,后一句是让 srin 队列中每隔 100ns 依次左移进一个 0。单击 Compile-Complie.,选中 testbench 文件 compile&done,单击 Simulate-StratSimulate,设置仿真对象和仿真时序库以后就做好了仿真的准备,然后将需要观测的信号添加到波形图中设定好时间开始仿真了。结果如图 3-4 所示。(a)(b)图 3-4rom_4 的 ModelSim 仿真结果图图 3-4(a)中,第一个游标到第三个游标之间的就是总的延时时间 2ns,中间的201 ns 游标到 201 ns 游标处的 1ns 延时称为“毛刺”,其根本原因在于解码器输入到所有输出的路径延时不一致所致。图 3-4(b)图就是整个仿真过程的结果,可以看到每 100ns 所对应的 0 的位置的变化引起的输出值的变化,正确的解码器输出显而易见。3.2 8 位解码器的仿真Verilog 语言代码如下: module rom_8#(parameter LEN=7)(input LEN:0 srin, output 8:0 tenout);integer i,k,j;reg 8:0 cen_tenout; reg LEN:0 cen_srin; always (srin)begincen_srin0 = srin3 & srin2 & srin1 & srin0; cen_srin1 = srin3 & srin2 & srin1 & srin0; cen_srin2 = srin3 & srin2 & srin1 & srin0; for(i=3;iLEN+1;i=i+1)begincen_srini = srini & srini-1 & srini-2 & srini-3;end endalways (cen_srin) begincen_tenout = 91b0; for(i=0;i3;i=i+1)for(k=0;k2*(2-i);k=k+1)for(j=(2*i)*(2*k+1)-1;j 1) ; SIGNAL tenout:std_logic_vector (8 downto 0);COMPONENT rom_8PORT ( srin: in std_logic_vector (7 downto 0) ;tenout: buffer std_logic_vector (8 downto 0) ); END COMPONENT ;BEGINDUT: rom_8 PORT MAP (srin= srin,tenout= tenout) ;srin = ( srin(6 downto 0) & 0 ) after 100ns;END ;主要是最后一句的 srin = ( srin(6 downto 0) & 0 ) after 100ns 因为是 8 输入的所以 n downto 0 的 n 值为 6。编译无误后便可以仿真得到的仿真图如下所示:(a)(b)(c)图 3-8rom_8 的 ModelSim 仿真图从图 3-8(a)中可以看出延时的时间是 1ns,没有毛刺的出现。002 代表 0 已经进到第 1 位了即 cen_tenout 的输出为 1111 1100 转换为 16 进制就是 FC,所以结果是正确的。图 3-8(b)是完整的仿真过程和前面所列的真值表是相互对应的;图 3-8(c) 是对其消除亚稳态现象的效果的检测到达第 5 位时所对应的 srin 值为 13 是正确的, 如输入是 8hD0 为“1101 0000”,其中有一个“气泡”,解码器的结果是 5 说明了预处理电路消除了该气泡对结果的影响。3.3 16 位解码器的仿真Verilog 代码如下: module rom_v #(parameter LEN=15) (input LEN:0 srin, output 8:0 tenout);integer i,k,j;reg 8:0 cen_tenout; reg LEN:0 cen_srin; always (srin)begincen_srin0 = srin3 & srin2 & srin1 & srin0; cen_srin1 = srin3 & srin2 & srin1 & srin0; cen_srin2 = srin3 & srin2 & srin1 & srin0; for(i=3;iLEN+1;i=i+1)begincen_srini = srini & srini-1 & srini-2 & srini-3;end endalways (cen_srin) begincen_tenout = 91b0; for(i=0;i4;i=i+1)for(k=0;k2*(3-i);k=k+1)for(j=(2*i)*(2*k+1)-1;j 1); SIGNAL tenout:std_logic_vector (8 downto 0);COMPONENT rom_v PORT (srin: in std_logic_vector (15 downto 0) ; tenout: buffer std_logic_vector (8 downto 0) );END COMPONENT ; BEGINDUT: rom_v PORT MAP (srin= srin,tenout= tenout) ;srin = ( srin(14 downto 0) & 0 ) after 100ns;END ;只需要在自动生成的 testbench 文件改动 2 处。首先要给信号 srin 赋初值,由于是全加器所以初值全赋值为 1,然后照常给它加一个每隔 100ns 左移 1 位 0 的循环。编译正确后可以得出其 ModelSim 仿真图如下:(a)(b)图 3-12rom_v 的 ModelSim 仿真图观察图 3-12(a)可得延时为 3ns,1ns 输入延时之后出现了 2ns 的毛刺。16hFC00表示温度计码的跳变沿处在第 11 位,对应的 tenout 为 9h00B。观察图 3-12(b)可知解码器的正确性。3.4 32 位解码器的仿真Verilog 代码如下: module rom_32 #(parameter LEN=31) (input LEN:0 srin, output 8:0 tenout);integer i,k,j;reg 8:0 cen_tenout; reg LEN:0 cen_srin; always (srin)begincen_srin0 = srin3 & srin2 & srin1 & srin0; cen_srin1 = srin3 & srin2 & srin1 & srin0; cen_srin2 = srin3 & srin2 & srin1 & srin0; for(i=3;iLEN+1;i=i+1)begincen_srini = srini & srini-1 & srini-2 & srini-3;end endalways (cen_srin) begincen_tenout = 91b0; for(i=0;i5;i=i+1)for(k=0;k2*(4-i);k=k+1)for(j=(2*i)*(2*k+1)-1;j 1) ; SIGNAL tenout:std_logic_vector (8 downto 0);COMPONENT rom_32 PORT (srin: in std_logic_vector (31 downto 0) ; tenout: buffer std_logic_vector (8 downto 0) );END COMPONENT ; BEGINDUT: rom_32 PORT MAP (srin= srin,tenout= tenout) ;srin = ( srin(30 downto 0) & 0 ) after 100ns;END ;与上面的一样,都是给 srin 全加器赋初值全为 1,再添加一个从最低位每隔 100ns左移 1 位 0 的循环语句。编译无误后仿真得到的 ModelSim 的仿真波形如图 3-16。图 3-16rom_32 的 ModelSim 仿真波形图观察仿真图可以得知延时时间 4ns。Srin 的值为 FFFF C000 即“1111 1111 1111 1111 1100 0000 0000 0000”,第 15 位为“1-0”跳变,解码器输出为 16 进制数 F, 解码器输出结果正确。3.5 64 位 128 位 256 位和 512 位解码器的仿真分别修改解码器的 LEN=63、127、255 和 511 实现 64 位、128 位、256 位和 512 位的解码器。需要注意 EP3C10E144C7 的管脚不够适配器适配,故需设置虚拟管脚。最终的工程编译视图分别如图 3-17(a)(b)(c)(d)所示。(a)(b)(c)(d)图 3-17rom_512 的工程编译视图从工程编译视图(图 3-17)中可知顶层文件名、器件是 EP3C10E144C7,使用的逻辑单元个数,编译无误后的 RTL 视图见附录,technology 视图由于太大而略去。同上,修改 testbench 文件,编译无误后,仿真后可以得到仿真波形图如图 3-18、图 3-19、图 3-20 和图 3-21 所示。仿真波形图中由于纸张大小的限制,均没有完整的展现所有输入情况下的解码器输出。(a)(b)图 3-18rom_64 的 ModelSim 仿真图(a)(b)图 3-19rom_128 的 ModelSim 仿真图(a)(b)图 3-20rom_256 的 ModelSim 仿真图(a)(b)(c)图 3-21rom_512 的 ModelSim 仿真图图 3-18、图 3-19 和图 3-20 的(a)图为正常的 64、128、256 位温度计码输入的解码器仿真波形;(b)图为到 1 个“气泡”的 64、128、256 位温度计码输入的解码器仿真波形,仿真结果均是正确的。观察图 3-21 (a)可以得出解码器总的延时时间为 7ns,“毛刺”时间长达 6ns; 图 3-21 (b)证明了解码器可以矫正 2 个以内的 bubble 错误;图 3-21 (c)验证了另一种输入 Srin 与输出 tenout,表明解码器是正确执行的。由于 512 位解码器的输出位数较多,故仿真波形图没有完整的显示 512 种输入情况下的解码器输出。图 3-22 最大解码延时图 3-23 使用的 LUT 个数由图 3-22 和图 3-23 可以看出,随着温度计码位数的增加,LUT 的使用个数基本呈现线形增加的趋势,原因在于解码器的核心是或运算;而解码器的最大延时时间却不是线形关系,有起伏,这主要取决于综合适配器的综合适配能力。334 结束语作为大学生涯的最后一次作业,毕业设计不仅仅是对四年来所学知识的总结, 更是对综合能力的锻炼,为今后独立工作做了一个铺垫,它提升了个人独立分析能力、综合整理能力、解决问题能力。从拿到课题的那一刻起,由于没有搞懂课题的实质问题,一度很迷茫,后来在老师的指点下,我才走对了方向。在搞清楚基于全加器的超前进位延时链测时原理的前提下,针对 TDC 中由亚稳态现象引起的锁存延时链输出的温度计码中存在“气泡”问题,提出了使用 1-out-of-n 电路;针对 ADC 中使用的 ROM 解码器结构,从 4 位、8 位、16 位解码器的逻辑表达式入手,推演了 ROM 结构的温度计码解码器的通用公式,并使用 Verilog 编写了解码器,验证了 4 位、8 位、16 位、32 位、64 位、128 位、256 位和 512 位解码器的正确性。其中,仿真验证了温度计码存在一个“气泡”情况下解码器依然能正常工作。对于,其他位数的温度计码,可以考虑在高位补齐多个 1 从而归于以上的几种位宽的温度计码中。完成设计的过程是曲折的,但也充满了乐趣。最初的代码采用的是 VHDL 语言中的 for 循环,编译通过后的 RTL 视图总不能优化到心目中的目标电路,后来在周磊老师的指点下,才明白 Quartus II 对 VHDL 的 for 循环语句的综合性较差,所以最终采用 Verilog 语言编写解码器代码。最终完成的温度计码解码器可以实现任意位温度计码的解码工作,在最高 512 位的情况下,解码时间仅仅需要 7ns,达到了任务书里的要求,且解码器能够消除“气泡”,能够解码出准确的跳变位置码。但是还有很多需要去思考的,如怎样去提升测量的速度以及测量精度。参考文献1 Wu J,Shi Z,Wang I Y.Firmware-only implementation of Time-to-Digital Coverter(TDC) field-programmable gate array (FPGA)C.2003 IEEE Nuclear Science Symposium Conference Record-Nuclear Science Symposium,Medical Imaging Conference,October 19,2003-October 25,2003,2003:177-181.2 Buechele M, Fischer H, Gorzellik M, et al. A-128-channel Time-to-Digital Converter (TDC) inside a Virtex-5 FPGA on the GANDALF moduleJ. Journal of Instrumentation,2012,7.3 R.J.van de Plassche,Integrated analog-to-digital and digital-to-analog converters. Kluwer Academics Publishers,1994.4 K.Uyttenhove, A. Marques, and M. Steyaret, A 6-bit 1GHz acquisition speed CMOS flash ADC with digital errror correction, in Proceedings of IEEE Custom Interrated Circuits Conference, 2000, pp. 249-252.5 F. Kaess, R. Kanan, B. Hochet, and M. Declercq, New encoding scheme for high-speed flash ADC with digital error correction, in Proceedings of Custom International Symposium on Circuits and Sytenms, vol. 1, June 1997, pp. 5-8.6 Kaess F, Kanan R, Hochet B, et al. New encoding scheme for high-speed flash ADCsC. Circuits and Systems,1997. ISCAS 97., Proceedings of the IEEE International Conference on Electronics, Circuits, and Systems, 1998, 2:271-274.7 S. Park and M. P. Flynn, “Design techniques for high performance CMOS flash analog-to-digital converters,” in Proceedings of European Conference on Circuit Theory and Design, Aug.2005.8 P. Pereira, J. R. Fernandes, and M. M. Silva, Wallace tree encording in folding and interpolation ADCs, in Proceedings of IEEE Internation
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。