1、1课程设计任务书课 题 名 称 数字电压表设计系 别 电子信息工程系专 业班 级学 号姓 名指 导 老 师 2015年 6月 20日2前 言EDA 是电子设计自动化(Electronic Design Automation)的缩写,在 20 世纪 60 年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言 VHDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映
2、射和编程下载等工作。本电压表的电路设计正是用 VHDL 语言完成的 。此次设计采用的是Altera 公司 的 Quartus II 7.0 软件。本次设计的参考电压为 2.5V,精度为 0.01V。此电压表的设计特点为 通过软件编程下载到硬件实现,设计周期短,开发效率高。3目 录一、绪 论 .3二、设计要求 .3三、设计过程 .41、系统总体框图 .42、数字电压表的基本原理 .43、显示方案 .4四、单元电路设计 .51、A/D 转换控制模块 .5ADC0809工作原理 .5ADC0809工作时序 .6CPLD控制 ADC采样状态机 .6 2、模拟电压的计算 .6码制变换模块 .63、显示控
3、制及驱动模块 .74、ADC0809 引脚连接 .8五、软件设计 .91、 开发软件及编程语言简介 .92、 程序流程图 .93、结论 .9六、总结设计的收获与体会 .94附录 1 程序清单一、绪 论 数字电压表(Digital Voltmeter)简称 DVM,是大学物理教学和实验中的重要仪表,其数字化是指将连续的模拟电压量转换成不连续、离散的数字量并加以显示。传统的实验用模拟电压表功能单一、精度低、体积大,且存在读数时的视差,长时间连续使用易引起视觉疲劳,使用中存在诸多不便。而目前数字万用表的内部核心多是模数转换器,其精度很大程度上限制了整个表的准确度,可靠性较差。 传统的数字电压表设汁通
4、常以大规模 ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成。ASIC 完成从模拟量的输入到数字量的输出,是数字电压表的心脏。这种电压表的设计简单、精确度高,但是这种设计方法由于采用了 ASIC器件使得它欠缺灵活性,其系统功能固定,难以更新扩展。后来发展起来的用微处理器(单片机)控制通用 A/D转换器件的数字电压表的设计的灵活性明显提高,系统功能的扩展变得简单,但是由于微处理器的引脚数量有限,其控制转换速度和灵活性还是不能满足日益发展的电子工业的需求。而应用 EDA技术及 FPGA,其集成度高、速度快、性能十分可靠、用户可自由编程且编程语言通俗易懂、系统功能扩展非常方
5、便。采用 FPGA芯片控制通用 A/D转换器可使速度、灵活性大大优于由微处理器和通用 A/D转换器构成的数字电压表。 本设计的 A/D转换器件选用 ADC0809对模拟电压采样,以一片高性能 FPGA芯片为控制核心,以软件实现了诸多硬件功能,对电压信号的转换结果进行准确实时的运算处理并送出显示。系统的主要功能都集成在一块芯片上,大大减少了系统的分立元件数量,降低了功耗,增加了可靠性,较好地实现了电压的精准测量。 二、设计要求 设计一个数字电压表,利用 8位 A/D转换器,将连续的模拟电信号转换成离散的数字电信号,并加以显示,要求其量程为 0-5V,分辨率约为 0.02V,三位数码管显示,其中一
6、位为整数,两位为小数,能正确显示小数点。 5三、设计过程 1、系统总体框图A D C 0 8 0 9码制转换译码驱动数码管显示控制信号电压输入图 1.4 系统总体框图2、数字电压表的基本原理 A D C 0 8 0 9 数据采集及转换可编程芯片数据处理数码管显示6数字电压表系统由 A/D转换控制模块、数据转换模块、动态扫描与译码模块三部分构成。A/D 转换控制模块控外部 A/D转换器,动态扫描与译码模块向外部数码管显示电路输出数据。A/D转换器负责采集模拟电压,转换成 8位数字信号送入 CPLD的 A/D转换控制模块,A/D 转换控制模块负责 A/D转换的启动、地址锁存、输入通道选择、数据读取
7、等工作,数据转换模块将 8位二进制数据转换成 16位十进制 BCD码送入动态扫描与译码模块,最后通过数码管显示当前电压值。四、单元电路设计1、A/D 转换控制模块 作为 A/D转换器的 ADC0809,片内有 8路模拟开关,分辨率为 8位,转换时间约 100us,含锁存控制的 8路多路开关,输出由三态缓冲器控制,单 5V电源供电。 分辨率是指 A/D转换器能分辨的最小模拟输入量,通常用能转换成的数字量的位数来表示,如 8位、10 位、12 位、16 位等。位数越高,分辨率越高。例如,对于 8位 A/D转换器,当输入电压满刻度为 5V时,其输出数字量的变化范围为 028-1,转换电路对输入模拟电
8、压的分辨能力为 5V/(28-1)19.6mV。 量程是指 A/D转换器所能转换的输入电压范围。 如图所示为 ADC0809芯片的封装引脚图,由图可知芯片有 28只引脚,采用双列直插式的封装。 各引脚功能如下: IN7IN08 路模拟信号输入通道。ADC0809 对输入的模拟量要求主要为:信号单极性,电压范围 05V。 ADDA、ADDB、ADDC3 位地址线。ADDA 为低位地址,ADDC 为高位地址,组成 3位二进制码 000111,分别选中 IN0IN7。 2ALE地址锁存允许信号,高电平时允许 ADDA、ADDB、ADDC 所示当前通道被选中,上升沿时将通道地址锁存至地址锁存器中。7S
9、TART启动转换信号。START 上升沿时,所有内部寄存器清 0;START 下降沿时,开始进行 A/D转换。在 A/D转换期间,START 保持低电平。 EOCA/D转换结束信号。EOC=0,正在进行转换;EOC=1,A/D 转换完毕,常用作中断申请信号。 OE输出允许信号,高电平有效,用来打开三态输出锁存器。OE=0,输出数据线呈高阻态;OE=1,输出转换得到的数据。 CLOCK外部时钟脉冲输入端。ADC0809 内部没有时钟电路,所需时钟信号由外界提供,要求频率范围 10KHz1.5MHz。 D7D0数据输出线。为三态缓冲输出形式。 Vcc单5V 电源。 GND接地。 如图所示,为 AD
10、C0809工作时序图。IN0IN7 是模拟信号的输入端,通过 ADDC、ADDB、ADDA 地址选择信号来选择模拟信号具体从哪个端口输入,当 ALE产生上升沿,地址信号就存入地址寄存器,下降沿时则开始 A/D转换;EOC 为低电平时表示 A/D转换进行中,高电平时表示 A/D转换结束;OE 位低电平时,输出数据线高阻态,当 3OE 出现高电平,则打开三态输出锁存器,输出八位数据 D7D0。s t 0 对 A D C 0 8 0 9 初始化S t 1 启动 A / D 转换S t 2 采样周期中等待 E O C = 0 正在转换E O C = 1 转换结束S t 3 发出数据允许输出命令 O E
11、 = 1 数据输出有效S t 4发出锁存信号L O C K 0 - 1CPLD控制 ADC采样状态图COM: PROCESS(cs,EOC) BEGIN - 主控进程,规定各状态转换方式CASE cs IS WHEN st0=ALEALE ALE ALE ALE ALE BT_T BT_T BT_T NULL;END CASE ;BT = BT_T;CLOCK START EOC OE 功能有效 0 0 0 A/D开始转换有效 0 1 0 转换结束有效 0 1 1 允许数据输出93、显示控制及驱动模块采用 LED数码管,采用数码管动态显示,数码管具有结构简单、低损耗、寿命长、耐老化、成本低、对
12、外界要求低、易于维护、操作简单,编程简单等优点。但是也有一个明显的缺点,即显示的信息量非常有限,只能显示几个有限的阿拉伯数字与字母,电路图如图 1.3.1所示。图 1.3.八段发光二极管显示器原理结电压值的显示:最常用到的二进制转换成 BCD码的方法是用除法。先用得到的 16位二进制数除以 10000,得到的商就是模拟电压值的整数部分(模拟电压的输入为 0-5V,所以整数部分只有 1位),得到的余数是模拟电压值的小数部分;接下来用余数除以 1000,商是十分位,余数作为被除数再除以 100,商为百分位,余数再除以 10,商为千分位。这样就将 16位的二进制数转换成了4位 BCD码。电压值的显示
13、可由数码管实现。本系统选用了三个数码管显示。整个电路十分简洁。系统工作过程首先由 FPGA对 ADC0809及数码管进行初始化,然后当有输入信号 V i,由 FPGA通过接口向 ADC0809控制信号控制字,使其对输入的模拟信号进行转换,变为 8位的数字信号送到输出端,由 FPGA经过码制变换等处理后,再通过与数码管的接口驱动并发送数据。当 ADC0809采样完成后,由码字变换模块将采样数字信号转换为数码管段码,实现显示。10ADC0809引脚连接五、软件设计1、开发软件及编程语言简介系统采用硬件描述语言 VHDL按模块化方式进行设计,并将各模块集成于 FPGA芯片中,然后通过 Quartus
14、 II软件开发平台对设计文件自动地完成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对 FPGA芯片进行编程,实现系统的设计要求。采用 VHDL超高速集成电路硬件描述语言设计复杂数字电路的方法具有很多优点,VHDL 语言的设计技术齐全、方法灵活、支持广泛。VHDL语言的系统硬件描述能力很强,具有多层次描述系统硬件功能的能力,可以从系统级到门级电路,而且高层次的行为描述可以与低层次的 RTL描述混合使用。VHDL 在描述数字系统时,可以使用前后一致的语义和语法跨越多层次,并且使用跨越多个级别的混合描述模拟该系统。因此,可以对高层次行为描述的子系统及低层次详细实现子系统所组成的系统进行模拟。