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

下载本文档

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

文档简介

1、东 北 石 油 大 学课 程 设 计课 程 硬件课程设计 题 目 数字电压表设计 院 系 计算机与信息技术学院 专业班级 计 学生姓名 学生学号 指导教师 2 东北石油大学课程设计任务书课程 硬件课程设计题目 数字电压表设计专业 主要内容、基本要求等一、主要内容:利用EL教学实验箱、微机和Quartus软件系统,使用VHDL语言输入方法设计数字钟。可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。最后在EL教学实验箱中实现。二、基本要求:1、A/D转换接口电路的设计,负责对ADC0809的控制。2、编码转换电路设计,负责把从ADC0809数据总线中读出的电压转换成BCD码。3、输出七

2、段显示电路的设计,负责将BCD码用7段显示器显示出来。三、参考文献1 潘松.EDA技术实用教程M.北京:科学出版社, 2003.11-13.2 包明.EDA技术与数字系统设计.北京航天航空大学出版社. 2002.3 EDA先锋工作室.Altera FPGA/CPLD设计M.北京:人民邮电出版社2005.32-33.4 潘松.SOPC技术实用教程M .清华大学出版社.2005.1-15.完成期限 第18-19周 指导教师 专业负责人 摘要 本文介绍了基于EDA技术的8位数字电压表。系统采用CPLD为控制核心,采用VHDL语言实现,论述了基于VHDL语言和CPLD芯片的数字系统设计思想和实现过程。

3、在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一,。VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,它采用自顶向下的设计方法,即从系统总体要求出发,自上至下地将设计任务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。 电子设计自动化技术EDA的发展给电子系统的设计带来了革命性的变化,EDA软件设计工具,硬件描述语言,可编程逻辑器件(PLD)使得EDA技术的应用走向普及。CPLD是新型的可编程逻辑器件

4、,采用CPLD进行产品开发可以灵活地进行模块配置,大大缩短了产品开发周期,也有利于产品向小型化,集成化的方向发展。而 VHDL语言是EDA的关键技术之一,它采用自顶向下的设计方法,完成系统的整体设计。本文用CPLD芯片和VHDL语言设计了一个八位的数字电压表。它的计时周期为24小时,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。 关键词:数字电压表;Quartus软件;EDA(电子设计自动化)目 录第1章 概

5、 述11.1 EDA的概念11.2 EDA技术及应用21.3 EDA硬件工作平台21.4 EDA的软件工作平台2第2章 数字电压表的设计实现32.1状态机32.2状态机的设计32.3 BCD码的转换52.4七段电路显示7第3章 数字电压表的测试与运行103.1数字电压表的编译与仿真103.2数字电压表的仿真与烧写12结论15参考文献16东北石油大学本科生硬件课程设计第1章 概 述1.1 EDA的概念EDA是电子设计自动化(Electronic Design Automation)的缩写。由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义1。但从EDA技术

6、的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真2。EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。大致可以分为三个发展阶段。20世纪70年代的CAD(计算机辅助设计)阶段:这一阶段的主要特征是利用计算机辅助进行电路原理图编辑,PCB不同布线,使得设计师从传统高度

7、重复繁杂的绘图劳动中解脱出来。320世纪80年代的QAE(计算机辅助工程设计)阶段:这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心,重点解决电路设计的功能检测等问题,使设计能在产品制作之前预知产品的功能与性能4。20世纪90年代是EDA(电子设计自动化)阶段:这一阶段的主要特征是以高级描述语言,系统级仿真和综合技术为特点,采用“自顶向下”的设计理念,将设计前期的许多高层次设计由EDA工具来完成。EDA是电子技术设计自动化,也就是能够帮助人们设计电子电路或系统的软件工具。该工具可以在电子产品的各个设计阶段发挥作用,使设计更复杂的电路和系统成为可能。在原理图设计阶段,可以使

8、用EDA中的仿真工具论证设计的正确性;在芯片设计阶段,可以使用EDA中的芯片设计工具设计制作芯片的版图;在电路板设计阶段,可以使用EDA中电路板设计工具设计多层电路板。特别是支持硬件描述语言的EDA工具的出现,使复杂数字系统设计自动化成为可能,只要用硬件描述语言将数字系统的行为描述正确,就可以进行该数字系统的芯片设计与制造5。21世纪将是EDA技术的高速发展期,EDA技术将是对21世纪产生重大影响的十大技术之一。硬件描述语言:硬件描述语言(HDL)是一种用于进行电子系统硬件设计的计算机高级语言,它采用软件的设计方法来描述电子系统的逻辑功能、电路结构和连接形式。常用硬件描述语言有HDL、Veri

9、log和VHDL语言。1.2 EDA技术及应用电子EDA技术发展迅猛,逐渐在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。在教学方面:几乎所有理工科(特别是电子信息)类的高校都开设了EDA课程。主要是让学生了解EDA的基本原理和基本概念、硬件描述系统逻辑的方法、使用EDA工具进行电子电路课程的模拟仿真实验并在作毕业设计时从事简单电子系统的设计,为今后工作打下基础。6具有代表性的是全国每两年举办一次的大学生电子设计竞赛活动。在科研方面:主要利用电路仿真工具进行电路设计与仿真;利用虚拟仪器进行产品调试;将FPGA器件的开发应用到仪器设备中7。在产品设计与制造方面:从高性能的微处理器、数字信

10、号处理器一直到彩电、音响和电子玩具电路等,EDA技术不单是应用于前期的计算机模拟仿真、产品调试,而且也在后期的制作、电子设备的研制与生产、电路板的焊接、器件的制作过程等有重要作用8。可以说电子EDA技术已经成为电子工业领域不可缺少的技术支持。1.3 EDA硬件工作平台1.计算机2.EDA实验开发系统:EL教学实验箱。1.4 EDA的软件工作平台PLD(Programmable Logic Device)是一种由用户根据需要而自行构造逻辑功能的数字集成电路。目前主要有两大类型:CPLD(Complex PLD)和FPGA(Field Programmable Gate Array)9。它们的基本

11、设计方法是借助于EDA软件,用原理图、状态机、布尔表达式、硬件描述语言等方法,生成相应的目标文件,最后用编程器或下载电缆,由目标器件实现10。生产PLD的厂家很多,但最有代表性的PLD厂家为Altera、Xilinx和Lattice 公司。第2章 数字电压表的设计实现2.1状态机用状态机对ADC0809进行采样控制首先必须了解其工作时序, 然后据此作出状态图, 最后写出相应的VHDL 代码。ADC0809 是CMOS 的8 位A /D转换器, 片内有8路模拟开关, 可控制8个模拟量中的一个进入转换器中。ADC0809 的分辨率为8位, 转换时间约100s, 输出由三态缓冲器控制, 单5 V 电

12、源供电。如图2-1所示:图2-1 ADC0809接口电路原理图2.2状态机的设计状态机就是控制ADC0809转换过程的控制器。根据ADC0809的工作时序,就可以设计出状态机。该组状态机由以下几个部分组成,其VHDL语言描述如下。P1: process(present_state,next_state,INT) begin case present_state is when idle = CS=1; WR=1; RD=1; next_state CS=1; WR=0; RD=1; next_state CS=1; WR=1; RD=1; if ( INT=0) then next_state

13、=read; else next_state CS=1; WR=1; RD=0; next_state CS=1; WR=1; RD=1; DATOUT=dout1; next_state CS=1; WR=1; RD=1; DATOUT=dout2; next_state CS=1; WR=1; RD=1; DATOUT=dout3; next_state CS=1; WR=1; RD=1; DATOUT=dout4; next_state=write; end case;end process P1;当CS=1; WR=0; RD=0时,ADC0809被设为空位,由控制器发出信号要求ADC

14、0809开始进行模/数信号的转换。当CS=1; WR=1; RD=0时,往ADC0809里写数据ADC0809进行转换动作,转换完毕后INT将低电位。当CS=0; WR=0; RD=0时,如果此时INT=1,说明转换结束,由控制器发出信号以读取ADC0809的转换资料,如果此时INT=0,说明转换没结束,继续转换。当CS=1; WR=0; RD=1时,由控制器读取数据总线上的数字转换资料。当接下来的几个状态(disp1,disp2,disp3,disp4)是控制输出的。begin if(RESET=0) then present_state=idle; datain=00000000; els

15、if(CLKevent and CLK=1) then present_state=next_state; if(present_state=read) then datain=D; end if; end if;end process P2;进程2是时序进程,当RESET=0时, datain=00000000(数据信号转化为模拟信号)当时钟上升沿一来时,如果此时present_state=read,说明转换结束,datain=D(数据信号转化为模拟信号)。2.3 BCD码的转换其中表2-1为把数据转化为BCD码,模拟输入电压与输出电压的对应关系。表2-1 数据转化为BCD码 进制参考电压1

16、62高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),则对照表时,高4位0111的电压为2.24V,而低4位0110是0.12V,所以最后的电压输出结果

17、为2.24+0.12=2.36V。LIBRARY 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

18、(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=00111

19、0000100;-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 DOWNT

20、O 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=00000011001

21、0;-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

22、 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)=011

23、1 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(3DOWNTO

24、0)=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)

25、; BCD_M=JJ(7 DOWNTO 4);BCD_H=JJ(11 DOWNTO 8);END PROCESS P3;END A;2.4七段电路显示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

26、(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

27、(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;

28、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=

29、0; elsif selDP=00 then DPout=1; 在高4位整数输出时,输出 else null; 小数点DP end if;end process;end a;第3章 数字电压表的测试与运行3.1数字电压表的编译与仿真3.1.1数字电压表的编译在 【Processing 】菜单下,点击【Start Compilation】命令,或直接点击常用工具栏上的 按钮 ,开始编译我们的项目。编译成功后,点击 确定 按钮。数字电压表的编译如图3-1所示:图3-1数字电压表的编译3.1.2数字电压表的逻辑电路图数字电压表的逻辑电路如图3-2所示:图3-2数字电压表的逻辑电路3.1.3数字电压表

30、的功能仿真图 在【File】菜单下,点击【New】命令。在随后弹出的对话框中,切换到【Other Files】页。选中【Vector Waveform File】选项,点击 OK 按钮。随后把clk的周期设置为300.0ns,D的周期设置为20.0,再把INT的周期设置为30.0,最后再把RESET的置为高电平数字电压表的功能仿真如图3-3所示: 图3-3数字电压表的功能仿真3.2数字电压表的仿真与烧写3.2.1 引脚适配图 3-4引脚配置配置好引脚后,在编译一次,然后开始下载。 图3-5数字电压表下载图3.2.2实验连接 实验连接如图3-6所示:图3-6实验连线图实验结果,可以改变电阻的值来

31、改变电压。 图3-7数字电压表实验结果图在此实验中10K10上时钟CLK0(1)接305.2Hz,RESET(83)接K1,CS(5)、RD(6)、WR(7)分别接0809的控制输入端,INT(8)接0809的INTD7-0(16-23)接0809的D0-D7(注意0809数据线标识反),DATDOUT(73-60)接a-dp,SLE3-SLE0; 0809的A0、A1、A2接d0-d2(置低),VREF+接VCC,VREF-接GND,CLK接MCU的ALE,IN0接模拟输出OUT。时钟CLK接时钟模块输出,使频率为45MHZ左右;INT接ADC0809中断输出INT;D7.0接ADC0809数据输出D7.0;CS、RD、WR分别接ADC0809的控制输入CS、RD、WR;

温馨提示

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

评论

0/150

提交评论