毕业设计(论文)-基于FPGA实现带温度检测的时钟.doc_第1页
毕业设计(论文)-基于FPGA实现带温度检测的时钟.doc_第2页
毕业设计(论文)-基于FPGA实现带温度检测的时钟.doc_第3页
毕业设计(论文)-基于FPGA实现带温度检测的时钟.doc_第4页
毕业设计(论文)-基于FPGA实现带温度检测的时钟.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

设计题目 带温度检测的时钟 学院: 班级: 学号: 姓名: 完成时间: - 35 -摘 要电子设计自动化是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科。将EDA技术应用于芯片设计和系统设计,可极大提高电路设计的效率和可靠性,节约设计成本,减少设计人员的劳动强度。其中EDA设计语言中的VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。本时钟及温度计的电路设计正是用VHDL语言完成的。本次课程设计以EDA技术为主体 ,学习了温度传感器原理,A/D转换器原理。设计LM35温度传感器测温系统,运用LM35收集温度信号,LM35的输出信号为模拟信号,而PLD不适合处理模拟信号,因此必须用A/D转换器将模拟信号转换为数字信号后进行处理,最后利用显示电路把转换后的数字信号显示出来。该设计的另一模块时钟模块,可利用PLD对秒脉冲计数来实现。此次设计主要应用的软件是美国ALTERA公司自行设计的一种EDA软件工具,即MAX+PLUS 。本次所设计的温度计的测量范围是-50+77,精度为0. 5。本文设计的VHDL语言程序已在MAXPLUS II工具软件上进行了编译、仿真,并且下载到FPGA上进行调试。经过实验验证,本设计是正确的。本文给出了设计该数字系统的流程和方法,最后通过FPGA芯片实现预定功能。关键词:数字温度计;电子钟;VHDL语言;ADC0804;FPGA目录第一章引言- 1 -第二章 方案选择- 3 -2.1 任务要求- 3 -2.2 数字逻辑的实现- 4 -2.3 温度传感器- 5 -2.4 温度PLD数据处理部分- 6 -2.5 数码管显示- 6 -第三章 总体设计- 9 -3.1 总框图:- 9 -3.2 温度模块:- 9 -3.3 时钟模块:- 10 -3.4 显示模块:- 10 -第四章 单元电路的设计- 11 -4.1 温度模块- 11 -4.1.1 温度采集硬件部分- 11 -4.1.3 温度数据处理部分- 17 -4.1.4温度模块的顶层文件- 21 -4.2 时钟模块- 23 -4.2.1 秒模块- 23 -4.2.2 分模块- 24 -4.2.3 时模块- 25 -4.2.4时钟模块的顶层文件- 26 -4.3 显示模块- 28 -4.3.1 动态显示控制模块- 28 -4.3.2 译码模块- 31 -4.4 总体顶层文件- 33 -4.5 PLD与外部硬件的连接图- 35 -4.6 直流电源- 36 -总结37附录38参考文献39致 谢40 第二章 方案选择第一章 引言电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。温度是我们日常生产和生活中随时接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。 数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。 第四章 单元电路的设计第二章 方案选择2.1 任务要求任务设计一个电子时钟,能够显示时间,同时能够测量并显示室内温度。基本要求 1. 采用24小时制显示小时和分钟,格式为XX :XX 。2. 室内温度的测量范围为-20 60,测量精度为0.5,显示格式为XX。3. 时钟误差为每天不超过10秒,时间与温度采用交替显示方式,各显示30秒.显示时间时,中间的 :每秒跳动一次。 4. 具有掉电保护的功能,重新来电后时钟应继续走时。5. 设计所需的直流供电系统。 2.2 数字逻辑的实现方案一:单片机方案二:可编程逻辑器件单片机:单片机是指一个集成在一块芯片上的完整计算机系统,将计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制,和计算机相比,单片机只缺少了I/O设备。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。可编程逻辑器件:可编程逻辑器件 英文全称为:programmable logic device 即 PLD。 PLD是做为一种通用集成电路产生的,他的逻辑功能按照用户对器件编程来确定。一般的PLD的集成度很高,足以满足设计一般的数字系统的需要。这样就可以由设计人员自行编程而把一个数字系统“集成”在一片PLD上,而不必去请芯片制造厂商设计和制作专用的集成电路芯片了。 可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 在这两类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。与此相比,CPLD提供的逻辑资源少得多 - 最高约1万门。 但是,CPLD提供了非常好的可预测性,因此对于关键的控制应用非常理想。对于该课题,单片机和可编程逻辑器件都足以胜任。由于兴趣等原因,我们选用可编程逻辑器件来实现该课题。2.3 温度传感器常用的温度传感器有热电偶、热电阻、集成温度传感器传统的模拟温度传感器,如热电偶、热敏电阻和RTDS对温度的监控,在一些温度范围内线性不好,需要进行冷端补偿或引线补偿;热惯性大,响应时间慢。集成温度传感器与之相比,具有灵敏度高、线性度好、响应速度快等优点,而且它还将驱动电路、信号处理电路以及必要的逻辑控制电路集成在单片IC上,有实际尺寸小、使用方便等优点,故选用集成温度传感器。常用的集成温度传感器有:DS18B20:Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器,具有体积小、适用电压宽、经济的特点。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20测量温度范围为 -55C+125C,在-10+85C范围内,精度为0.5C,支持3V5.5V的电压范围,使系统设计更灵活、方便。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。 Ad590:AD590是美国ANALO G DEV ICES 公司的单片集成两端感温电流源。 其主要特性如下: (1) 流过器件的电流(A) 等于器件所处环境的热力学温度(开尔文) 度数: Ir/T=1式中,Ir流过器件(AD590) 的电流,单位为A;T热力学温度,单位为K; (2) AD590的测温范围为- 55+150; (3) AD590的电源电压范围为430 V,可以承受44 V正向电压和20 V反向电压,因而器件即使反接也不会被损坏; (4) 输出电阻为710 m; (5) 精度高,AD590在- 55+150范围内,非线性误差仅为0.3。Lm35:LM35 系列是精密集成电路温度传感器,其输出的电压线性地与摄氏温度成正比。因 此 , LM35 比按绝对温标校准的线性温度传感器优越感得多。 LM35系列传感器生产制作时已 经过校准,输出电压与摄氏温度一一对应,使用极为方便。灵敏度为 10.0 mV/ ,精度在 0.4 至 0.8 (-55 至 +150 温度范围内 ), 重复性好,低输出阻抗,线性输出和内部精密校准 使其与读出或控制电路接口简单和方便,可单电源和正负电源工作。对比以上三个温度传感器,DS18B20适合用单片机驱动以工作,若用pld则较为繁琐,故不予采用。AD590性能较高,但其价格较DS18B20和lm35高很多,也不予采用。综合比较,lm35精度能够达到课题要求,能够配合pld工作,且经济实惠,故采用lm35。2.4 温度PLD数据处理部分该部分主要功能是将ad转换器输入的二进制信号(8位)转为BCD码(12位)。编码转换有两种方法:一是查表,二是编写算法。若8位二进制码转为12位BCD码采用查表方法,则需要256条命令,较为繁琐。若编写算法将8位二进制码转为12位BCD码,则算法将很复杂,且需要涉及乘除,用pld器件实现较麻烦。可采用一种较为简单又能节省硬件资源的方法:将8位二进制码的高4位、低4位分别查表完成,然后编写算法实现12位的BCD码加法器,将两个12位BCD码相加,即得到当前温度的BCD码。2.5 数码管显示数码管的显示方式有两种:静态显示和动态显示。方案一:静态显示方式所谓静态显示就是指无论是多少位数码管,同时处于显示状态。当数码管处于静态显示方式时,所有位选线(数码管的公共端)连接在一起,而各个数码管的段选线(数码管上各笔段的引出线)是相互分离的。静态显示的优点是:数码管显示无闪烁,亮度高,软件控制比较容易;缺点是:需要的硬件电路较多(每一个数码管都需要一个锁存器),如果在全国大学生电子设计竞赛中使用,将造成很大的不便,同时由于所有数码管都处于被点亮状态,所以需要的电流很大,当数码管的数量增多时,对电源的要求也就随之增高。所以,在大部分的硬件电路设计中,很少采用静态显示方式。方案二:动态显示方式所谓动态显示,是指无论在任何时刻只有一个数码管处于显示状态,每个数码管轮流显示。当数码管处于动态显示时,所有位选线分离,而每个数码管的各条段选线相连。当需要显示数字或字符时,需要将所有数码管轮流点亮,这时对每个数码管的点亮周期有了一个较严格的要求:由于发光体从通入电流开始点亮到完全发光需要一定的时间,叫做响应时间,这个时间对于不同的发光材质是不同的,通常情况下为几百微秒,所以数码管的刷新周期(所有数码管被轮流点亮一次的时间)不要过短,这也与数码管的数量有关,一般的数码管的刷新周期应控制在5ms10ms,即刷新率为200Hz100Hz,这样既保证了数码管每一次刷新都被完全点亮,同时又不会产生闪烁现象。动态显示的优点是:硬件电路简单(数码管越多,这个优势越明显),由于每个时刻只有一个数码管被点亮,所以所有数码管消耗的电流较小;缺点是:数码管亮度不如静态显示时的亮度高,例如有8个数码管,以1秒为单位,每个数码管点亮的时间只有1/8秒,所以亮度较低;如果刷新率较低,会出现闪烁现象;如果数码管直接与单片机连接,软件控制上会比较麻烦等。由于本课题需要显示时钟,需要数码管个数较多,综合比较采用动态显示更合适。第三章 总体设计3.1 总框图:温度模块时钟模块显示模块图3-1-13.2 温度模块:该模块负责采集温度,并将其转换成BCD码交给显示模块以显示,其原理图如下:PLD数据处理温度传感器放大电压信号AD转换显示数字信号BCD码图3-2-1如图3-2-1所示温度传感器将温度信号转化成电压信号,经运算放大电路发达成AD转换器能识别的电压信号,AD转化器将该模拟信号数字化,然后送入PLD进行数据处理,转换成BCD码交给显示模块。其中PLD数据处理部分的结构框图如下:该部分主要功能是将ad转换器输入的二进制信号(8位)转为BCD码(12位)。8位二进制码低4位表12位BCD码高4位表12位加法器图3-2-23.3 时钟模块:该模块负责实现时钟功能,其原理图如下:60进制计数器秒模块时模块分模块60进制计数器24进制计数器秒脉冲显示图3-3-1该模块对秒脉冲计数,秒、分、时计数器分别为60、60、24进制,秒进位给分,分进位给时。3.4 显示模块:该模块负责将时钟或温度的BCD码以动态显示的方式在数码管上显示出来,其原理图如下:动态显示控制译码(BCD码led段码)数码管6时钟/温度BCD码图3-4-1第四章 单元电路的设计4.1 温度模块4.1.1 温度采集硬件部分该部分主要功能就是采集温度,将温度信号转化为数字信号,以输入PLD进行处理。原理图如下:PLD数据处理温度传感器放大电压信号AD转换显示数字信号BCD码图4-1-1温度传感器将温度信号转化为电压信号,电压信号经运算放大电路放大成AD转换器可接受的输入电压,然后AD转换器将其转为数字信号。相关硬件说明: LM35LM35是由National Semiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关係,转换公式如下:U=10T (mv) (温度T单位为)0C时输出为0V,每升高 1C,输出电压增加10mV。 基本应用电路如下:1 、 基本摄氏温度传感器( +2 至 +150 ) 2 、 满量程摄氏温度传感器 图4-1-2 图4-1-3 LM324LM324系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。 ADC0804ADC0804是属于连续渐进式(Successive Approximation Method)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百s)、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。图4-1-4管脚说明如下:1. (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low) 时会active。2. ( RD ):Read。当CS 、RD 皆为低位准(low) 时,ADC0804 会将转换后的数字讯号经由DB7 DB0 输出至其它处理单元。3. (WR ):启动转换的控制讯号。当CS 、WR 皆为低位准(low) 时ADC0804 做清除的动作,系统重置。当WR 由01且CS 0 时,ADC0804会开始转换信号,此时INTR 设定为高位准(high)。4. (CLK IN、CLKR):频率输入/输出。频率输入可连接处理单元的讯号频率范围为100 kHz 至800 kHz。而频率输出频率最大值无法大于640KHz,一般可选用外部或内部来提供频率。若在CLK R 及CLK IN 加上电阻及电容,则可产生ADC 工作所需的时序,其频率约为:5. ( INTR ):中断请求。转换期间为高位准(high),等到转换完毕时INTR 会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据。6. (VIN(+)、VIN(-):差动模拟讯号的输入端。输入电压VINVIN(+) VIN(-),通常使用单端输入,而将VIN(-)接地。7. (A GND):模拟电压的接地端。8. Vref/2(引脚9):参考电源输入端。参考电源取输入信号电压(最大值)的二分之一。若Vref/2悬空,则使用芯片内置电压2.5v。9.DB0DB7:8 位的数字输出. 电路设计如下:图4-1-5注:电阻10.6K和39K可用滑动变阻器实现。如图所示温度传感器lm35采用双电源供电,温度测量范围为-40+110。Lm35输出端电压与温度成正比: U=10T (mv)(温度T单位为)为防止运算放大电路对lm35的输出电压信号产生影响,将lm35的输出电压信号经过一个电压跟随器接入防止运算放大电路。运算放大电路采用同向求和运算电路。由于lm35处于温度零度以下环境中,会输出负电压信号,而adc0804只能转换正电压信号,故需要把负电压信号抬升成正电压,可采用同向求和运算电路。 如图所示,运算放大电路中3910.59810010010,有 Uo=39*(Ui/10+5/100) mv , 相当于把输入信号提升了50mv,然后进行3.9倍的放大。Adc0804的Vref/2端悬空,故其参考电压为5v,理论上(不考虑lm35测量范围)测量温度的下限:-50 运算放大电路的输出电压 Uo=39*(-0.5/10+5/100) mv=0v测量温度的上限:78运算放大电路的输出电压 Uo=39*(7.7/10+5/100) mv=5v即测量温度范围为-5078,若以0.5为最小间隔,则有256个间隔;而adc0804为8位模数转换器,有256个间隔,故adc0804的输出二进制数1代表0.5。adc0804的输出量与实际温度有如下关系:T=(adc0804的输出量)10 *0.550 ()即将adc0804的输出二进制数转为十进制数乘以0.5再减50即为实际温度。该部分电路(运算放大电路)仿真如下:图4-1-6模拟lm35输出电压:0.23V; -0.5V; 78V对应的仿真结果如下:图4-1-7可见满足 Uo=39*(Ui/10+5/100) mv4.1.2 adc0804控制部分该部分主要功能是驱动adc0804工作实现模数转换。ADC0804进行模拟/数字转换的时序图如下:图4-1-8其中INTR由高电位转为地电位后,代表ADC0804完成这次的模拟/数字转换,可进行读取。可将图3.2的动作大概分为4个步骤区间:S0、S1、S2、S3,每个步骤区间的动作方式如下。步骤S0:CS=0、WR=0、RD=1(由CPLD发出信号要求ADC0804开始进行模拟/数字信号的转换).步骤S1:CS=1、WR=1、RD=1(ADC0804进行转换动作,转换完成以后INTR将高电位降至低电位,而转换时间=100us).监控INTR,若INTR=0(AD转换完毕),则跳向S2;若INTR=1,则保持状态S1。步骤S2:CS=0、WR=1、RD=0(由CPLD读取DB0DB7上的数字转换资料)步骤S3:CS=1、WR=1、RD=1 复位状态由上述的步骤说明,可一归纳出所要设计的CPLD动作功能有:负责在每个步骤送出所需的CS、WR、RD控制信号.在步骤S1时,监控INTR信号是否由低电位便为高电位,如此以便了解ADC0804的转换动作结束与否.在步骤S3.读取转换的数字资料DB0DB7.S0启动8位转换CS=0、WR=0、RD=1S2转换完毕,进行读取CS=0、WR=1、RD=0S3复位状态CS=1、WR=1、RD=1S1转换中CS=1、WR=1、RD=1INTR=1INTR=0综合得出控制模块状态转换转移图如下所示:图4-1-9因此编写VHDL程序时,可使用状态机产生ADC0804的控制信号。作用就是激活A/D转换器动作、接收A/D转换器传递过来的数字转换值。ADC0804控制模块原代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY adc_driver isPORT(Din:IN STD_LOGIC_VECTOR(7 Downto 0); Dout:OUT STD_LOGIC_VECTOR(7 Downto 0); clk,rst:IN STD_LOGIC; CS,WR:OUT STD_LOGIC; RD:BUFFER STD_LOGIC; INTR:IN STD_LOGIC);END adc_driver;ARCHITECTURE one OF adc_driver IS TYPE STATE_TYPE IS (S0,S1,S2,S3); SIGNAL State:STATE_TYPE;BEGINPROCESS(clk,RST)BEGINIF (RST = 0) Then WR=1; RD=1; State WR=0; RD=1; CS=0; STate WR=1; RD=1; CS=1; If(INTR =0) Then State WR=1; RD=0; CS=0; State WR=1; RD=1; CS=1; State State=S0;END CASE;END if;END PROCESS;PROCESS(RD) -处于状态S2时,将数据读入BEGINIF(RD=0) THENDout=Din;END IF;END PROCESS;end one; ADC0804控制模块仿真波形如下所示:图4-1-10满足状态转移图S0S1S2S3S0元件图如下: 图4-1-114.1.3 温度数据处理部分该部分主要功能是将ad转换器输入的二进制信号(8位)转为BCD码(12位)。该模块原理图如下:8位二进制码低4位表12位BCD码高4位表12位加法器图4-1-12adc0804的输出量与实际温度有如下关系:T=(adc0804的输出量)10 *0.550 即adc0804的输出量的十进制数乘以0.5再减去50,即得到当前温度值。adc0804的输入到PLD的数字量dain7.0,将高4位低4位分别查表如下:4位二进制数低四位高4位000000.000.0000100.508.0001001.016.0001101.524.0010002.032.0010102.540.0011003.048.0011103.556.0100004.064.0100104.572.0101005.080.0101105.588.0110006.096.0110106.5104.0111007.0112.0111107.5120.0查表模块的源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY tempera_tab is port(dain:in std_logic_vector(7 downto 0); bcd_h:out std_logic_vector(11 downto 0); bcd_l:out std_logic_vector(11 downto 0);END tempera_tab;ARCHITECTURE one of tempera_tab issignal da_h:std_logic_vector(3 downto 0);signal da_l:std_logic_vector(3 downto 0);beginda_h=dain(7 downto 4);da_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_l bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h bcd_h=000000000000;end case;end PROCESS;END one;元件图如下:图4-1-13BCD码加法器模块源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY BCD_adder is -12位BCD码加法器 port(bcd_h:in std_logic_vector(11 downto 0); bcd_l:in std_logic_vector(11 downto 0); fuhao:out std_logic; daout:out std_logic_vector(11 downto 0);END BCD_adder;ARCHITECTURE one of BCD_adder issignal bcd_value1,bcd_value2,bcd_value3:std_logic_vector(11 downto 0);beginbcd_value11001)then bcd_value2=bcd_value1+000000000110; else bcd_value21001)then bcd_value3=bcd_value2+000001100000; else bcd_value3= 010100000000) then daout= bcd_value3 - 010100000000; fuhao = 1; else fuhao = 0; if(bcd_value3(7 downto 0)=00000000) then daout= 010100000000 - bcd_value3; else if(bcd_value3(3 downto 0)=0000) then daout= 010010100000 - bcd_value3; else daout= 010010011010 - bcd_value3; end if; end if; end if;end process;END one;元件图如下:图4-1-144.1.4 温度模块的顶层文件图4-1-15元件图如下:图4-1-16仿真波形图如下:图4-1-17由图4-1-17可见满足T=(adc0804的输出量)10 *0.550 4.2 时钟模块原理图:60进制计数器秒模块时模块分模块60进制计数器24进制计数器秒脉冲显示图4-2-14.2.1 秒模块秒模块源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second is -时钟_秒模块 port(clk,clk0,reset,setmin:in std_logic; enmin:out std_logic; -向minute进位 daout:out std_logic_vector(6 downto 0); END second;ARCHITECTURE one of second issignal count:std_logic_vector(6 downto 0); begin daout=count; PROCESS(clk,reset,setmin) begin if(reset=0) then count=0000000; elsif(setmin=0) then enmin=clk0; elsif(clkevent and clk=1) then if(count16#60#) then if(count(3 downto 0)=1001) then if(count=1011001) then enmin=1; count=0000000; else count=count+7; end if; elsif(count(3 downto 0)1001) then count=count+1; enmin=0; else count=0000000; end if; else count=0000000; end if; end if; END PROCESS;END one;元件图如下:图4-2-2仿真波形如下:图4-2-3由图4-2-3可知满足60进制及调分功能。4.2.2 分模块源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute is -时钟_分模块port(clk,clk0,reset,sethour:in std_logic; enhour:out std_logic; -向hour的进位 daout:out std_logic_vector(6 downto 0);END minute;ARCHITECTURE one of minute issignal count:std_logic_vector(6 downto 0); begin daout=count; PROCESS(clk,reset,sethour) begin if(reset=0) then count=0000000; elsif(sethour=0) then enhour=clk0; elsif(clkevent and clk=1) then if(count16#60#) then if(count(3 downto 0)=1001) then if(count=1011001) then enhour=1; count=0000000; else count=count+7; end if; elsif(count(3 downto 0)1001) then count=count+1; enhour=0 after 100 ns; else count=0000000; end if; else count=0000000; end if; end if; END PROCESS;END one;元件图如下:图4-2-4仿真波形如下:图4-2-4由图4-2-4可知满足60进制。4.2.3 时模块源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY hour is -时钟_

温馨提示

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

评论

0/150

提交评论