数字电压表设计-硬件课程设计_第1页
数字电压表设计-硬件课程设计_第2页
数字电压表设计-硬件课程设计_第3页
数字电压表设计-硬件课程设计_第4页
数字电压表设计-硬件课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

东北石油大学课 程 设 计课 程 硬件课程设计 题 目 数字电压表设计 院 系 计算机 术学院 专业班级 学生姓名 学生学号 1 指导教师 2 东北石油大学课程设计成绩评价表课程名称硬件课程设计题目名称数字电压表设计学生姓名序号评价项目指 标(优秀)满分评分1选题难度选题难度较高,或者对原题目进行了相当程度的改进。102工作量、工作态度和出勤率工作量饱满,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。103课程设计质量按期圆满的完成了规定的任务,方案设计合理,思考问题全面,系统功能完善。404报告质量问题论述思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。305回答问题在进行课程设计程序系统检查时,能正确回答指导教师所提出的问题。106创新(加分项)工作中有创新意识,对前人工作有改进或有应用价值。在进行系统检查时能对创新性进行说明,并在报告中有相应的论述。+5总分评语:指导教师: 年 月 日 东北石油大学课程设计任务书课程 硬件课程设计题目 数字电压表设计专业 计 主要内容、基本要求等一、主要内容:利用EL教学实验箱、微机和Quartus软件系统,使用VHDL语言输入方法设计数字钟。可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。最后在EL教学实验箱中实现。二、基本要求:1、A/D转换接口电路的设计,负责对ADC0809的控制。2、编码转换电路设计,负责把从ADC0809数据总线中读出的电压转换成BCD码。3、输出七段显示电路的设计,负责将BCD码用7段显示器显示出来。三、扩展要求1. 当测量结束后,蜂鸣器鸣响10声。 按照规范写出论文,要求字数在4000字以上,并进行答辩。论文内容包括概述(学习、调研、分析、设计的内容摘要)、EDA技术的现状和发展趋势、对EL教学实验箱和Quartus软件的掌握程度、数字钟的设计过程(包括原理图或程序设计、编译、仿真分析、硬件测试的全过程),论文中含有原理图、程序、仿真波形图及其分析报告。完成期限 2周 指导教师 专业负责人 年 月 日目录第1章 概述11.1引言11.2EDA简介21.3 VHDL简介31.4 Quartus II简介4第2章 数字电压表的系统分析52.1设计目的52.2功能说明52.3实验原理52.4系统硬件5第3章 数字电压表设计63.1 总体框图63.2 状态机63.2.1 采样状态机结构框图63.2.2 VHDL代码73.3转换BCD码93.3.1模拟输入电压与输出电压的对应关系93.3.2 VHDL代码103.4 七段显示电路123.4.1 VHDL代码123.5 顶程设计143.5.1 VHDL代码15第4章 数字电压表的测试与运行174.1数字电压表的编译与仿真174.1.1数字电压表的编译174.1.2数字电压表的逻辑电路图17184.1.3数字电压表的功能仿真图184.2数字电压表的适配与测试194.2.1 引脚适配194.2.2 试验箱结果20结论21参考文献22第1章 概述1.1 引言数字电压表(Digital Voltmeter)简称DVM,是诸多数字化仪表的核心与基础。以数字电压表为核心扩展成的各种数字化仪表,几乎覆盖了电子电工测量、工业测量、自动化系统等各个领域。它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表,它是诸多数字化仪表的核心与基础。电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法, 避免了读数的视差和视觉疲劳。目前数字电压表的内部核心部件是A/D转换器, 转换器的精度很大程度上影响着数字电压表的准确度。 随着计算机与微电子技术的发展,电子设计自动化EDA 领域已成为电子技术发展的主体,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流发展的引擎,就是日趋进步和完善的FPGA(Field Programmable Gate Array,现场可编程门阵列)设计技术。而电子设计自动化,是将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科,其中EDA设计语言中的 VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。 该数字电压表的电路设计,正是用VHDL 语言完成的。此次设计主要应用美国Altera 公司自行设计的一种CAE(Computer Aided Engineering,计算机辅助工程)软件工具,即Quartus II 软件。 数字电压表出现在50年代初,60年代末发展起来的电压测量仪表,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后再通过显示器件显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生和发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦琐和陈旧方式也催促了它的飞速发展,如今,它又成为向智能化仪表发展的必要桥梁。1.2 EDA简介EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作1。EDA技术的出现,极大地提高了电路设计的效率和可行性,减轻了设计者的劳动强度。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展2。EDA在通信行业(电信)里的另一个解释是企业数据架构,EDA给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。 EDA在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。在教学方面,几乎所有理工科(特别是电子信息)类的高校都开设了EDA课程。主要是让学生了解EDA的基本概念和基本原理、掌握用HDL语言编写规范、掌握逻辑综合的理论和算法、使用EDA工具进行电子电路课程的实验验证并从事简单系统的设计。一般学习电路仿真工具(如multiSIM、PSPICE)和PLD开发工具(如Altera/Xilinx的器件结构及开发系统),为今后工作打下基础3。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。1.3 VHDL简介VHDL全名Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE-1076(简称87版)之后,各EDA公司相继推出自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC5。与其他硬件描述语言相比,VHDL具有以下特点:(1) 功能强大、设计灵活(2) 支持广泛、易于修改(3) 强大的系统硬件描述能力(4) 独立于器件的设计、与工艺无关(5) 很强的移植能力(6) 易于共享和复用优势:(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3) VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。 (4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 (5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。1.4 Quartus II简介Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II设计流程如图11所示:布局布线综合设计输入编程和配置仿真时序分析 AAAAAAAAnalysis时序逼近 功耗分析工程更改管理调试图 11 Quartus II设计流程第2章 数字电压表的系统分析2.1设计目的1.本次实验通过vhdl硬件语言编写 ADC0809 模数转换器的控制程序。2.掌握控制原理,并进一步掌握采用有限状态机产生控制信号的原理。3.掌握十六进制转十进制的运算方法。5.掌握vhdl 的编程思路。2.2功能说明1.具有数字管显示当前电压值的功能。2.具有复位功能。2.3实验原理在同一EPLD芯片EPF10K10上集成了如下电路模块:1数字电压表的实现。2模拟电压量通过电位器进行改变。3把ADC0809A/D转换器进行采集。4. 通过转换器内部的功能实现把电压模拟量转化为数字量的过程。5. 按照单片机所给的地址,ADC0809芯片把已经转化好的数据传入到单片机中。6. 在单片机里通过原件程序设计实现对数字电压表量程的控制。2.4系统硬件1可变直流电平输出电路。2A/D0809。3七段显示器。4EPF10K10LC84-4适配器。第3章 数字电压表设计3.1 总体框图总体框图如图31所示顶层文件状态机转换成BCD码七段输出图31总体框图3.2 状态机3.2.1 采样状态机结构框图在一个完整的采样周期中,状态机中最先被启动的是以CLK为敏感信号的时序进程,接着组合过程COM被启动,因为它们以信号current_state 为敏感信号。最后被启动的是锁存进程,它是在状态机进入状态st4后才被启动的,即此时LOCK产生了一个上升沿信号,从而启动进程LATCH1,将0809在本采样周期输出的8位数据锁存到寄存器中,以便外部电路能从Q端读到稳定正确的数据。状态机结构框图如图32所示:图32状态机结构框3.2.2 VHDL代码LIBRARY IEEE; -A/D0809use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity ad is port(ST,eoc:in std_logic; -控制端口 d:in std_logic_vector(7 downto 0); oe,sta,ale,adda:out std_logic; q:out std_logic_vector(7 downto 0);end ad;architecture a of ad istype states is(st0,st1,st2,st3,st4,st5,st6); -7个状态signal c_state,n_state:states :=st0;signal regl:std_logic_vector(7 downto 0);signal lock:std_logic;begin addaale=0;sta=0;oe=0;lock=0; n_stateale=1;sta=0;oe=0;lock=0; n_stateale=0;sta=1;oe=0;lock=0; n_stateale=0;sta=0;oe=0;lock=0; if(eoc=1) then n_state=st4; else n_stateale=0;sta=0;oe=1;lock=0; n_stateale=0;sta=0;oe=0;lock=1; n_stateale=0;sta=0;oe=0;lock=1; n_staten_state=st0; end case;end process com;reg:process(st) begin if(stevent and st=1) then c_state=n_state; end if;end process reg;lo:process(lock) -锁存begin if(lockevent and lock=1) then regl=d; end if;end process lo; q=regl; end a3.3转换BCD码3.3.1模拟输入电压与输出电压的对应关系当参考电压(Vref)为2.56V时,模拟输入电压与输出电压的对应关系如表33所示:表 33模拟输入电压与输出电压的关系进制参考电压162高4位电压低4位电压000000.000.00100010.320.02200100.640.04300110.960.06401001.280.08501011.600.10601101.920.12701112.240.14810002.560.16910012.880.18A10103.200.20B10113.520.22C11003.840.24D11014.160.26E11104.480.28F11114.800.30 这样由ADC0809收到的信号是01110110(76H),则对照表52-1时,高4位0111的电压为2.24V,而低4位0110是0.12V,所以最后的电压输出结果为2.24+0.12=2.36V。对于数据转换成BCD码,我们必须设计一个12位的BCD码加法器,如上述的2.24V的二进制表示为:001000100100、0.12V是000000010010,所以其相加结果为001000110110,为2.36V。提示:在读取到转换数据后,先用查表的指令算出高、低4位的两个电压值,并分别用12位的BCD码表示。接着设计12位的BCD码加法。相加从最低4位开始,且每4位相加结果超过10时需作进位动作。3.3.2 VHDL代码BCD 8位转12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BCD ISPORT (V:IN STD_LOGIC_VECTOR(7 DOWNTO 0); HB,LB:BUFFER STD_LOGIC_VECTOR(11 DOWNTO 0); BVALUE:BUFFER STD_LOGIC_VECTOR(11 DOWNTO 0); BCD_L,BCD_M,BCD_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END BCD;ARCHITECTURE A OF BCD ISBEGINP1:PROCESS(V(7 DOWNTO 4) BEGIN -A/D输出高4位转换 分辨率0.32V IF V(7 DOWNTO 4)=1111 THEN HB=010010000000; -4.80V ELSIF V(7 DOWNTO 4)= 1110 THEN HB=010001001000;-4.48V ELSIF V(7 DOWNTO 4)= 1101 THEN HB=010000010110;-4.16V ELSIF V(7 DOWNTO 4)= 1100 THEN HB=001110000100;-3.84V ELSIF V(7 DOWNTO 4)= 1011 THEN HB=001101010010;-3.52V ELSIF V(7 DOWNTO 4)= 1010 THEN HB=001100100000;-3.20V ELSIF V(7 DOWNTO 4)= 1001 THEN HB=001010001000;-2.88V ELSIF V(7 DOWNTO 4)= 1000 THEN HB=001001010110;-2.56V ELSIF V(7 DOWNTO 4)= 0111 THEN HB=001000100100;-2.24V ELSIF V(7 DOWNTO 4)= 0110 THEN HB=000110010010;-1.92V ELSIF V(7 DOWNTO 4)= 0101 THEN HB=000101100000;-1.60V ELSIF V(7 DOWNTO 4)= 0100 THEN HB=000100101000;-1.28V ELSIF V(7 DOWNTO 4)= 0011 THEN HB=000010010110;-0.96V ELSIF V(7 DOWNTO 4)= 0010 THEN HB=000001100100;-0.64V ELSIF V(7 DOWNTO 4)= 0001 THEN HB=000000110010;-0.32V ELSIF V(7 DOWNTO 4)= 0000 THEN HB=000000000000;-0.00V ELSE HB=000000000000; -0.00V END IF; END PROCESS P1;P2:PROCESS(V(3 DOWNTO 0) BEGIN -A/D输出低4位转换 分辨率0.02V IF V(3 DOWNTO 0)= 1111 THEN LB=000000110000; -0.30V ELSIF V(3 DOWNTO 0)= 1110 THEN LB=000000101000;-0.28V ELSIF V(3DOWNTO0)=1101 THEN LB=000000100110;-0.26V ELSIF V(3DOWNTO0)=1100 THEN LB=000000100100;-0.24V ELSIF V(3DOWNTO0)=1011 THEN LB=000000100010;-0.22V ELSIF V(3DOWNTO0)=1010 THEN LB=000000100000;-0.20V ELSIF V(3DOWNTO0)=1001 THEN LB=000000011000;-0.18V ELSIF V(3DOWNTO0)=1000 THEN LB=000000010110;-0.16V ELSIF V(3DOWNTO0)=0111 THEN LB=000000010100;-0.14V ELSIF V(3DOWNTO0)=0110 THEN LB=000000010010;-0.12V ELSIF V(3DOWNTO0)=0101 THEN LB=000000010000;-0.10V ELSIF V(3DOWNTO0)=0100 THEN LB=000000001000;-0.08V ELSIF V(3DOWNTO0)=0011 THEN LB=000000000110;-0.06V ELSIF V(3DOWNTO0)=0010 THEN LB=000000000100;-0.04V ELSIF V(3DOWNTO0)=0001 THEN LB=000000000010;-0.02V ELSIF V(3DOWNTO0)=0000 THEN LB=000000000000;-0.00V ELSE LB=000000000000; -0V END IF;END PROCESS P2; BVALUE1001) THEN 如果12位结果中,低4位 JJ:=JJ+000000000110; 大于9 则低4位加6 END IF; IF(JJ(7 DOWNTO 4)1001) THEN 如果中间的4位大于9 JJ:=JJ+000001100000; 则中4位加6 END IF;BCD_L=JJ(3 DOWNTO 0); BCD_M=JJ(7 DOWNTO 4);BCD_H=JJ(11 DOWNTO 8);END PROCESS P3;END A;3.4 七段显示电路3.4.1 VHDL代码3选1 数据选择器LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mux3_1 isport(sel:in std_logic_vector(1 downto 0);A,B,C:in std_logic_vector(3 downto 0);Mselout:out std_logic_vector(3 downto 0);end mux3_1;architecture a of mux3_1 isbegin process(sel)begin if sel=10 then Mselout=A; elsif sel=01 then Mselout=B; elsif sel=00 then Mselout=C; else null; end if;end process;end a;位选信号产生器(3进制计数器)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity c3 is port(clk,clr:in std_logic; qout:buffer std_logic_vector(1 downto 0) );end c3;architecture behave of c3 isbegin process(clk,clr)beginif(clr=0)then qout=00;elsif(clkevent and clk=1)then qout=qout+1; if(qout=2)then qoutoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputNULL; END CASE;end process; END a;小数点产生器 LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity DP isport(SELDP:in std_logic_vector(1 downto 0); DPout:out std_logic);end DP;architecture a of DP isbegin process(selDP)begin if selDP=10 then DPout=0; elsif selDP=01 then DPout=0; elsif selDP=00 then DPoutSBCD_L,BCD_M=SBCD_M,BCD_H=SBCD_H);U3:C3 PORT MAP(CLK3,CLR3,SELOUT); U4:MUX3_1 PORT MAP(SELOUT,SBCD_L,SBCD_M,SBCD_H,DI);U5:DEL7 PORT MAP(DI,Qoutput);U6:DP PORT MAP(SELOUT,DPOUT);QSELOUT=SELOUT;end a;第4章 数字电压表的测试与运行 4.1数字电压表的编译与仿真4.1.1数字电压表的编译数字电压表的编译如图41所示:图41数字电压表的编译4.1.2数字电压表的逻辑电路图数字电压表的逻辑电路如图42所示:图42数字电压表的逻辑电路4.1.3数字电压表的功能仿真图 所示: 图43数字电压表的功能仿真4.2数字电压表的适配与测试4.2.1 引脚适配引脚适配如图44所示:图 44 引脚适配4.2.2 试验箱结果试验箱结果如图45所示:图4-5 试验箱结果 结论仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为05V,最小分辨率为0.02V,满足任务书指标要求。但是,该系统也存在一定程度的不足,例如:1、 输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当的放大后再测量,可显著提高精度;2、 输出量可用平均值算法来改善,使测量准确度更高。3、 若能将测量的电压值实时保存,使用时将更方便。在这个学期的课程设计中,通过努力的学习研究和老师的指导,完成了课程设计的任务和论文的撰写,感触很深。 我认为课程设计是对大学课程的学习和自我学习能力的一个极好的锻炼和检验。它要求我们根据要求的课题独立的广泛查找资料,利用现有的资料或文献并充分结合以前所学的知识,进行仔细的学习和研究,依靠自己的能力完成课题的设计任务。 本毕业设计是基于EDA的数字电压表的设计。该设计通过对FPGA芯片进行VHDL语言编程,实现了数字电压表的功能。通过设计表明,VHDL具有很强的电路描述和建模能力,能从多个层次对数字系统能够进行建

温馨提示

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

评论

0/150

提交评论