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

下载本文档

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

文档简介

XXX设计说明书基于MUX结构的温度计码解码器设计专业学生姓名班级学号指导教师完成日期基于MUX结构的温度计码解码器的设计摘 要:在21世纪,高新技术产业得到了巨大的发展,高精度的时间间隔测量技术成为多个学科研究的重要依据,为航空航天领域,原子物理领域的研究发展做出了巨大贡献。通过了解延时链的工作原理和温度计码的由来,设计基于MUX结构的时间数字转换器,可快速找出温度计码转换1-0(0-1)跳变处的位置,并将它转换成二进制码,计算出延迟时间。运用HDL语言、Modelsim和Quartus II设计实现了基于MUX结构的温度计码解码器,对于出现一个bubble和两个bubble时的亚稳态误差,可以设计一个编译器对输入的温度计码进行预处理,使得出现bubble时也能得到正确的输出结果。使用该设计方案,只需要较少的逻辑资源就可以实现MUX结构的时间数字转换器高精度的测量要求,并且程序开发时间短,易于维护升级,成本低,运行效率高,系统稳定,实用性强等优点。这就满足了课题设计要求,解码高效,并可以克服bubble出现时的亚稳态误差。关键词:FPGA; MUX结构; 温度计码解码器;The design of Thermometer code decoder based on MUX structureAbstract:In the 21st century, high-tech industry has been tremendous growth, high-precision time measurement technology has become an important basis for multi-disciplinary research space for research and development in aerospace, atomic physics has made tremendous contributions. Work for the delay through the chain and the origin of the thermometer code, based on time-digital converter MUX structure, can quickly find the thermometer code converter 1-0 (0-1) transition at the position, and convert it to binary code calculates the delay time. Using HDL language, Modelsim and Quartus II design and implementation of the thermometer code decoder based MUX structure, for the emergence of a bubble and the bubble when the two metastable error, you can design a compiler to preprocess the input thermometer code, so can get the correct output results appear bubble.I also took into account the emergence of a bubble and simulation distortion when the two bubble, and design a compiler to preprocess the input thermometer code, so that can get the correct output results appear bubble. Use this design requires less logic resources can implement time digital converter MUX structure high precision measurement requirements and program development time is short, easy to maintain and upgrade, low cost, high efficiency, system stability, practicality and other advantages. This satisfies the requirements of the subject design, decoding and efficient, and can overcome the bubble error.Key Words: FPGA; MUX structure; thermometer code decoder;目 录1. 概 述11.1 背景意义11.2 研究现状11.3 HDL语言与EDA软件11.4论文结构22.系统总体设计22.1延时链测量原理及温度计码的由来22.2亚稳态32.3 MUX解码器算法33.设计实现63.1 8位温度计码解码器的实现63.2 16位温度计码解码器的实现113.3 32位温度计码解码器的实现163.4 64位温度计码解码器的实现223.5 引脚资源表243.6 阻止亚稳态传播244.系统仿真254.1 8位温度计码解码器的仿真254.2 16位MUX结构的温度计码解码器的仿真254.3 32位MUX结构的温度计码解码器的仿真264.4 64位MUX结构的温度计码解码器的仿真274.5 有一个bubble的仿真284.5.1 8位有一个bubble的仿真284.5.2 16位有一个bubble的仿真284.5.3 32位有一个bubble的仿真294.5.4 64位有一个bubble的仿真294.6有两个bubble的仿真304.6.1 8位有两个bubble的仿真304.6.2 16位有两个bubble的仿真304.6.3 32位有两个bubble的仿真304.6.4 64位有两个bubble的仿真314.7 MUX结构温度计码对bubble的解决方案315.结束语33参考文献34致 谢36附 录37附 录137附 录256基于MUX结构的温度计码解码器设计1. 概 述1.1 背景意义由于这种高精度的时间间隔测量技术在激光测距,原子物理研究领域,军事领域,航天航空领域,都具有广阔的应用前景和重要的现实意义,因此被美国视为评估国防力量的重要标志之一。美国,日本,欧洲等国家均对时间间隔测量技术做出了大量的研究,他们在利用集成电路即VLSI(Very Large Scale Integrated)领域的优势,发展了大量成熟的精确测量技术,用IC方式实现了TDC(Time-to-Digital Converter),美国的PTTI(Precision Time and Time Interval)年会每年对该专题进行讨论,美国国家科学院把它作为评估国家国防力量的重要标准之一,并把它列为国家须大力发展的科学技术之一。法国的Dassault公司的时间计时器的精度已经达到1ps。1.2 研究现状现代意义上的时间间隔测量始于真空管时代,几十年来其测量方法经过不断发展,从最早的时间间隔扩展发,到现在的插值法、延迟线法,可以说是种类繁多。我国在高精度测量上起步较晚,对时间间隔测量技术的研究也比较少,与欧美国家有较大差距。但随着我国经济的高速发展,对于高精度测量的技术需求也日渐高涨,近些年来已经有大量学者参与到高精度测量的相关研究,并取得了一些成果1.3 HDL语言与EDA软件本设计中,我们使用VHDL语言进行设计。VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。一个基本的VHDL语言程序由四个部分组成:库声明(library),包声明(use),实体(entity)和结构体(architecture)。库声明高速编译器使用的是哪个库,包声明告诉编译器使用库中的哪个包。比如“library ieee;”说明使用的库是IEEE库,“use ieee.std_logic_1164.all;”表明使用的是IEEE库中的std_logic_1164包。实体以“entity”开始到“end entity;”结束,此处通过“port”说明设计的端口的数据类型以及输入输出情况。如“A :in std_logic;”表示端口A是输入端口,std_logic类型。对于半加器而言,有两个1位的输入端口A和B,两个1位的输出端口S和CO。结构体以“architecture”开始到“end rtl;”结束。结构体主要使用各种并行语句描述设计的内部实现。VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。本次设计中,我们使用Modelsim和Quartus II 进行语言的编译和仿真。Modelsim是一个语言仿真平台,提供完备的语言仿真环境,也是设计RTL和门级电路的首选,并能支持相对应的仿真。我们在Quartus II中,可以使用Verilog和HDL等硬件语言写出源代码,并进行仿真和编译,实现自己需要的各种逻辑功能。1.4论文结构 本文第一部分主要介绍课题的背景意义,研究现状,完成这个设计所用的设计语言及其使用的编程仿真软件。第二部分讲解了延时链测量的原理及其温度计码的由来,异步电路面临的亚稳态问题和MUX结构的温度计码解码器的逻辑实现推理。第三部分主要描述温度计码的设计实现,通过它的RTL视图,Technology Map和资源表来进一步了解MUX结构的温度计码解码器。第四部分是系统仿真,通过仿真软件来检验程序的正确与否,能不能完成设计指标。2.系统总体设计2.1延时链测量原理及温度计码的由来图2-1延时链原理图如图2-1所示,有n个延时单元,每个延时单元的外边都有一个寄存器,而每一个寄存器的时钟是接在一起的,时钟的上升沿会对延时链进行锁存,把每一个延时单元的输出锁存到寄存器里,如果外部进来一个信号,这个信号进来之后,它肯定要在时间链里进行传输,进来信号的上升沿和时钟之间有段时间,外部信号上升沿到来之前,延时链输出都是0,当时钟上升沿来了之后,会对状态进行锁存,锁存出来的数据就是温度计码。 输入信号上升沿和时钟上升沿之间的时间间隔,到了延时链里面就是0的长度。0的长度越长,代表延时越大。2.2亚稳态 在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recoverytime)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolutiontime)。经过resolutiontime之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关系。在异步电路中,亚稳态是避免不了的,亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。由于产生亚稳态后,寄存器Q端输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值。在信号传输中产生亚稳态就会导致与其相连其他数字部件将其作出不同的判断,有的判断到“1”有的判断到“0”,有的也进入了亚稳态,数字部件就会逻辑混乱。在复位电路中产生亚稳态可能会导致复位失败。怎么降低亚稳态发生的概率成了FPGA设计需要重视的一个注意事项。在一个三级缓存模型中,大部分资料都说的是第一级寄存器产生亚稳态后,第二级寄存器稳定输出概率为90%,第三极寄存器稳定输出的概率为99%。 因此我选用3个D触发器来寄存输入端的信号,进行3级缓存避免亚稳态的发生。2.3 MUX解码器算法 首先我们先看看8位的温度计码解码器的工作原理,如下图所示: 图2-2 8位MUX结构温度计码结构图 当我们使用7位输入端,输入“0000001”时,因为第4位为0所以选择低三位输入,第一级的输出为“0001”,第二级的输入就变为“001”,第二位是“0”,选择低一位输出,则输出为“1”,所得的三位二进制代码为“001”,即温度计码中只有一个“1”。 下图我们使用最简单的二选一的数据选择器构建的16位输入的MUX结构温度计码解码器图2-3 16位MUX结构温度计码结构图当我们输入16位温度计码时,第八位控制端决定第一级的7个二选一数据选择器,是选用高7位还是低7位,如果输入“000000000000001”时,第八位为0,第一级的二选一数字选择器选用低7位的输入数据,则第二级的二选一数据选择器的输入端口数据为“0000001”,因为第4位的输入位0,输出低3位的数据为“001”,同样的将数据输出给第3级的二选一数据选择器,输出为“1”。那我们可以得到输出端b3,b2,b1,b0分别为“0”“0”“0”“1”。转换为二进制则为1。这就是基于MUX结构的温度计码解码器基本原理。因此我们可以推断出MUX结构的温度计码编码器的公式如下(1)(2)所示。MUX结构的缺点是高位的bg扇出数较多,这个问题在fpga中实现温度计码编码器显得尤为突出。 (1)其中, (2)下面我们以8位的温度计码解码器为例,在第一个公式里的bg为直接送出来的那位二进制码,例如8位温度计码的第4位,对应着bg2,之所以是2,是因为8位温度计码对应着3位的二进制码(bg2,bg1,bg0)。“”是取反符号,当n是8位时,对第一级的第4位进行取反并赋值给bg2。公式(2)中1b1是Verlog语言,当bg1等于1,取高三位,否则取低三位。这样一级一级的带入公式,推导出来。3.设计实现下面我使用VHDL语言来实现基于MUX结构的温度计码解码器设计,对于二选一数据选择器我们可以使用并行语句实现如:-条件信号赋值语句mux21c1: y = A when C = 1 elseB ;-选择信号赋值语句mux21c2: with C selectY = A when 1,B when others;当然我们也可以使用顺序语句实现,例如if语句,case语句:1.If语句-if语句if c=1 thenY = A;elseY Y Y = B;end case;3.1 8位温度计码解码器的实现如图3-1,在8位MUX结构温度计码解码器的RTL视图中,我先定义了3个D触发器,当reset置0,将3个D触发器data_8_reg,data_8_reg1,data_8_reg2归0,如果当时钟上升沿来时,将7位输入写入D触发器data_8_reg中,将D触发器data_8_reg里的数据写入D触发器data_8_reg1中,再将D触发器data_8_reg1中的数据写入D触发器data_8_reg2中。这样经过3级缓存利用时钟信号,先对3个D触发器清零再对输入的数据进行三级缓存,阻止亚稳态传播。如果D触发器data_8_reg2的第4位为1 ,那么将D触发器data_8_reg2的高3位赋值给data_4,否则就将D触发器data_8_reg2的低3位赋值给data_4。这样7位输入的信号在经过选择之后,赋值给data_4。同样的,如果data_4的第二位为1,则将data_4的高一位赋值给data_2,否则将低一位赋值给data_2。最后将data_8_reg2(3),data_4(1),data_2输出给b,得到3位二进制码,即完成了8位温度计码的解码。图3-1 8位MUX结构温度计码解码器 RTL视图下表3-1为8位MUX结构温度计码解码器所用资源表:表3-1 8位MUX结构温度计码解码器的资源表 如图3-2为8位温度计码解码器所占用的引脚资源大小:图3-2 8位MUX结构温度计码解码器引脚资源 下图3-3为8位MUX结构温度计码解码器的Technology Map图3-3 8位MUX结构温度计码解码器Technology Map 3.2 16位温度计码解码器的实现图3-4 16位MUX结构温度计码解码器 RTL视图如图3-4,在这里首先定义3个D触发器data_16_reg,data_16_reg1, data_16_reg2也就是3个寄存器,如图2-3,16位MUX温度计码解码器的结构,共有1,2,3级的二选一数据选择器,因此我们需要分别定义3个信号分别为data_2 ,data_4和data_8。在第一级中,第8位是数据选择位,当第8位为“0”时,数据选择器选择低7位,否则选高7位,这样就把16位输入信号赋给了data_8。同样的,在第二级数据选择器中,第4位是数据选择位,当第四位为“0”时,选低3位,否则输出高3位。这样就把data_8赋值给data_4。在第三级数据选择器中,第二位是数据选择位,当它为“0”时,输出低一位,否则输出高一位。经过解码,16位的温度计码转化为4位的二进制码。下表3-2为16位MUX结构温度计码解码器的资源表:表3-2 16位MUX结构温度计码解码器的资源表 下图3-5为16位温度计码解码器所用的引脚资源大小:图3-5 16位MUX结构温度计码解码器引脚资源下图3-6和3-7为16位温度计码解码器的Technology Map图3-6 16位MUX结构温度计码解码器Technology Map图3-7 16位MUX结构温度计码解码器Technology Map3.3 32位温度计码解码器的实现图3-8 32位MUX结构温度计码解码器 RTL视图如图3-8,在这里首先定义3个D触发器data_32_reg,data_32_reg1, data_32_reg2,32位MUX温度计码解码器的结构,共有1,2,3,4级的二选一数据选择器,因此我们需要分别定义4个信号分别为data_2 ,data_4,data_8和data_16。在第一级中,第16位是数据选择位,当第16位为“0”时,数据选择器选择低15位,否则选高15位,这样就把32位输入信号赋给了data_16。在第二级中,第8位是数据选择位,当第8位为“0”时,数据选择器选择低7位,否则选高7位,这样就把16位输入信号赋给了data_8。同样的,在第二级数据选择器中,第4位是数据选择位,当第四位为“0”时,选低3位,否则输出高3位。这样就把data_8赋值给data_4。在第三级数据选择器中,第二位是数据选择位,当它为“0”时,输出低一位,否则输出高一位。经过解码,32位的温度计码转化为5位的二进制码。下表3-3为32位MUX结构温度计码解码器的资源表:表3-3 32位MUX结构温度计码解码器的资源表 下图3-9为32位温度计码解码器所用的引脚资源大小:图3-9 32位MUX结构温度计码解码器引脚资源下图3-10,3-11,3-12为32位温度计码解码器的Technology Map图3-10 32位MUX结构温度计码解码器Technology Map图3-11 32位MUX结构温度计码解码器Technology Map图3-12 32位MUX结构温度计码解码器Technology Map3.4 64位温度计码解码器的实现图3-1364位MUX结构温度计码解码器 RTL视图如图3-13,在这里首先定义3个D触发器data_64_reg,data_64_reg1, data_64_reg2,32位MUX温度计码解码器的结构,共有1,2,3,4,5级的二选一数据选择器,因此我们需要分别定义5个信号分别为data_2 ,data_4,data_8,data_16和data_32。在第一级中,第32位是数据选择位,当第32位为“0”时,数据选择器选择低31位,否则选高31位,这样就把64位输入信号赋给了data_32。在第二级中,第16位是数据选择位,当第16位为“0”时,数据选择器选择低15位,否则选高15位,这样就把32位输入信号赋给了data_16。同样的,在第三级数据选择器中,第8位是数据选择位,当第8位为“0”时,选低7位,否则输出高7位。这样就把data_16赋值给data_8。在第4级数据选择器中,第4位是数据选择位,当它为“0”时,输出低3位,否则输出高3位。最后一级,第二位如果为“0”,选低一位否则选高一位。经过解码,64位的温度计码转化为6位的二进制码。下表3-4为64位MUX结构温度计码解码器的资源表:表3-4 64位MUX结构温度计码解码器的资源表下图3-14为64位温度计码解码器所用的引脚资源大小:图3-14 64位MUX结构温度计码解码器引脚资源64位温度计码解码器的Technology Map见附录2。3.5 引脚资源表图3-15 MUX结构温度计码解码器引脚资源折线图3.6 阻止亚稳态传播在8位的温度计码解码器设计中,我们有一个对D触发器赋值的语句,如下所示:ARCHITECTURE SYN OF MUX ISSIGNAL data_4:STD_LOGIC_VECTOR (2 DOWNTO 0);SIGNAL data_2:STD_LOGIC;SIGNAL data_8_reg :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL data_8_reg1 :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL data_8_reg2 :STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINPROCESS(clk,reset)BEGIN IF (reset=0) THEN data_8_reg=0000000; data_8_reg1=0000000; data_8_reg2=0000000; ELSIF (clkevent and clk=1) THEN data_8_reg=data_8; data_8_reg1=data_8_reg; data_8_reg2=data_8_reg1; END IF;END PROCESS;在这里,当敏感信号clk,reset作用时,进程启动,对3个D触发器清零,并当第一个时钟上升沿来临瞬间,将输入寄存到寄存器data_8_reg中,第二个时钟上升沿来临,将D触发器data_8_reg中的值赋给D触发器data_8_reg1中,第三个时钟上升沿到来,将D触发器data_8_reg1寄存到D触发器data_8_reg2中,因为后面是组合电路,所以瞬间结果出来了,正因为这样,我们才克服亚稳态的传播问题。4.系统仿真4.1 8位温度计码解码器的仿真 如图3-16到3-18所示为8位MUX结构温度计码解码器的仿真图:图3-16 8位MUX结构的温度计码解码器的仿真图3-17 8位MUX结构的温度计码解码器的仿真图3-18 8位MUX结构的温度计码解码器的仿真 在图3-16中处,我们可以看到,在100ns的时候,reset复位,根据仿真程序,我们可以看出,分别等待100ns,200ns,200ns才会输入温度计码,所以reset的上升沿和温度计码之间相差500ns。在图3-16处,每个温度计码输入,在3个上升沿之后,才会输出对应的二进制码,这是因为输入的温度计码需要在D触发器中寄存3次,这就需要3个时钟周期。 4.2 16位MUX结构的温度计码解码器的仿真 如图3-19到3-21所示为16位MUX结构温度计码解码器的仿真图:图3-19 16位MUX结构的温度计码解码器的仿真图3-20 16位MUX结构的温度计码解码器的仿真图3-21 16位MUX结构的温度计码解码器的仿真 同样的在上面几张仿真图中,如图我们可以看到,在100ns的时候,reset复位,根据仿真程序,我们可以看出,分别等待100ns,200ns,200ns才会输入温度计码,所以reset的上升沿和温度计码之间相差500ns。因为我们使用3个D触发器,通过3个周期,缓存3次所以会出现如图3-19中的情况。4.3 32位MUX结构的温度计码解码器的仿真 如图3-22到3-24所示为32位MUX结构温度计码解码器的仿真图:图3-22 32位MUX结构的温度计码解码器的仿真图3-23 32位MUX结构的温度计码解码器的仿真图3-24 32位MUX结构的温度计码解码器的仿真 在图3-22中处,在100ns的时候,reset复位,根据仿真程序,我们可以看出,分别等待100ns,200ns,200ns才会输入温度计码,所以reset的上升沿和温度计码之间相差500ns。而之所以出现处的情况是由于每个温度计码输入,在3个上升沿之后,才会输出对应的二进制码,这是因为输入的温度计码需要在D触发器中寄存3次。4.4 64位MUX结构的温度计码解码器的仿真 如图3-25到3-27所示为64位MUX结构温度计码解码器的仿真图:图3-25 64位MUX结构的温度计码解码器的仿真图3-26 64位MUX结构的温度计码解码器的仿真图3-27 64位MUX结构的温度计码解码器的仿真 在图3-25中处,在100ns的时候,reset复位,根据仿真程序,我们可以看出,分别等待100ns,200ns,200ns才会输入温度计码,所以reset的上升沿和温度计码之间相差500ns。根据以上8位,16位,32位,64位的仿真,我们可以准确算出0,1跳表的位置。证明我的程序编写没有错误。每个温度计码输入,在3个上升沿之后,才会输出对应的二进制码,所以有处的现象。这是因为输入的温度计码需要在D触发器中寄存3次,也阻止异步电路中的亚稳态传播。4.5有一个bubble的仿真4.5.1 8位有一个bubble的仿真图3-28 8位MUX温度计码解码器一个bubble的仿真 如图3-28,在图中处,我们可以发现当出现一个bubble时,没有仿真结果输出。4.5.2 16位有一个bubble的仿真图3-29 16位MUX温度计码解码器一个bubble的仿真 如图3-29中处,当输入“000000001011111”时,输出的是“0101”,结果错误,所以当有一个bubble出现时,仿真出错。 4.5.3 32位有一个bubble的仿真图3-30 32位MUX温度计码解码器一个bubble的仿真如图3-30中处,当输入“0000017F”时,输出的是“00111”,结果错误,所以当有一个bubble出现时,仿真出错。 4.5.4 64位有一个bubble的仿真图3-31 64位MUX温度计码解码器一个bubble的仿真 如图3-31,在图中处,我们可以发现当出现一个bubble即输入“00000000000000FE”,没有仿真结果输出。4.6有两个bubble的仿真4.6.1 8位有两个bubble的仿真图3-32 8位MUX温度计码解码器两个bubble的仿真如图3-32,在图中和处,我们可以发现当出现两个bubble时,要么没有仿真结果输出,要么输出错误的仿真结果。4.6.2 16位有两个bubble的仿真图3-33 16位MUX温度计码解码器两个bubble的仿真 如图中和处所示,输入的温度计码分别为“000000001011111”,“000000001011111”时,输出的二进制都是“0101”,结果都不准确。4.6.3 32位有两个bubble的仿真图3-34 32位MUX温度计码解码器两个bubble的仿真如图3-34中和处所示,输入的温度计码分别为“0000017F”,“000005FF”时,输出的二进制分别为“00111”和“01001”,结果都不准确。4.6.4 64位有两个bubble的仿真图3-35 64位MUX温度计码解码器两个bubble的仿真如图3-35中和处所示,输入的温度计码分别为“00000000000000FE”,“0000000000000E7F”时,输出的二进制分别为空和“000111”,结果都不准确。由此我们可以推断出MUX 结构的温度计码解码器对于bubble很敏感,不能消除。所以我们需要另外设计一个编译器对输入的温度计码进行预编译,来避免错误。4.7 MUX结构温度计码对bubble的解决方案我们可以设计一个编译器,将错误的温度计码编译成正确的温度计码,再输入进行仿真,输出结果。这就要求我们的编译器具有纠错的能力。例如一个错误的8位温度计码“0001011”,我们需要编译成正确的温度计码“0001111”。经过多次推理我们发现:当i3时Tc0=tc0Tc1=tc1 or tc0Tc2=tc2 or tc1 or tc0当i3时Tc3=tc3 or tc2 or tc1 or tc0Tci=tci or tci-1 or tci-2 or tci-3因此我们在程序中添加了for循环语句对输入的数据进行预处理:PROCESS(data_8_reg2)variable data_8_var:STD_LOGIC_VECTOR(6 downto 0);BEGINdata_8_var(0):=data_8_reg2(0);data_8_var(1):=data_8_reg2(1) or data_8_reg2(0);data_8_var(2):=data_8_reg2(2) or data_8_reg2(1) or data_8_reg2(0);bf:for i in 3 to 6 loopdata_8_var(i):=data_8_reg2(i) or data_8_reg2(i-1) or data_8_reg2(i-2) or data_8_reg2(i-3);end loop;IF (data_8_var(3)=1) THEN data_4=data_8_var(6 downto 4); ELSE data_4=data_8_var(2 downto 0);END IF;END PROCESS;下面我们对程序进行仿真,如图图3-28 对bubble有纠错能力的正确仿真 在图中处,我们可以发现输入的温度计码有错误,但我们的结果输出准确无误,由此可见,我们对温度计码进行预处理是有效的。解决了bubble对输出结果的影响。5.结束语通过对本课题的研究,了解了温度计码解码器及其延时链的工作原理,并学会使用VHDL语言对其进行程序编写,以达到设计要求。高精度的时间测量技术在航天航空,高精度测量,军事领域都有广阔的运用前景,能在根本上协助科技的进步发展。当然在设计中自己也碰到了很多问题,对于温度计码的由来和解码一知半解,特别是在MUX结构的原理部分,理解不到位,导致前期做的时候,没有方向进度很低。 自己能力十分有限,这篇文章也是自己的个人学习见解,尽管查阅了很多资料,研习程序的编写,但难免有许多错误,还有待发现和修改。 参考文献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.9 黄志林. 基于FPGA的并行DDS技术研究J. 现代电子技术. 2013(07) 10 栗明. 基于单片机的多功能DDS信号源的设计J. 数字技术与应用. 2012(10) 11 吴银标,谢华,付在明. 基于AD9854的DDS+PLL的时钟源设计J. 电子测量技术. 2011(08) 12 徐丽燕. 正弦信号测试仪的设计J. 计算机测量与控制. 2009(12) 13 王成华,叶佳. 基于AD9854的多功能信号源设计J. 解放军理工大学学报(自然科学版). 2006(02)14 万家佑. 一种实用的频率特性测试仪设计与实现J. 中国新通信. 2013(01) 15 赵柏树,操长茂. 数字式频率特性测试仪的设计J. 电子技术应用. 2001(01) 16 黄恩,李玉华,蔡磊,张昌盛. 程控频率特性测试仪硬件设计J. 电子测量技术. 2002(03) 17 周美珍. 频率特性测试仪及其应用J. 家庭电子. 2003(06) 18 操长茂,殷海兵. 数字式频率特性测试仪J. 电子测量技术. 2003(04) 19 玄兆燕,常秀辉. 基于虚拟技术的频率特性测试仪的研制J. 国内外机电一体化技术. 2003(04) 20 窦鹏. 虚拟频率特性测试仪系统设计J. 微计算机信息. 2007(22) 21 许艳. 基于单片机控制的频率特征测试仪设计J. 现代电子技术. 2007(15) 22 施智强,何欣,唐铭杰,沈骋曦. 频率特性测试仪J. 国外电子元器件. 2008(12) 致 谢为期2个多月的毕业设计,让我对本专业大学四年的相关专业知识又有了一个很好的回顾和新的认识,收获了非常之多。本文主要阐述了EDA设计的相关理论,四个月来通过相关知识的接触与研究,让我切实了解到了自己在某些专业知识上的欠缺,同时也让我明白了在以后的学习工作中必需虚心学习,唯有不断的自我纠正和努力扩充自己的专业知识和能力,才不会使自己落后。对于这次毕业设计的撰写过程,首先要感谢我的指导老师周磊,当我在阅读文献遇到一些晦涩难懂的知识点时,他总是充满耐心并且细心的向我讲解,让我学到了非常多的东西。他的鼓励与学习方法的指导,使我受益终身。然后要感谢我同组的所有同学,在与他

温馨提示

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

评论

0/150

提交评论