ImageVerifierCode 换一换
格式:DOC , 页数:48 ,大小:279KB ,
资源ID:10221143      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10221143.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA的数字电压表设计.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

基于FPGA的数字电压表设计.doc

1、1基于 FPGA 数字电压表设计目 录1 系统设计 31.1 控制模块方案的比较 .31.2 A/D 转换方案的比较 .41.3 显示方案的比较 .41.4 总体方案设计51.5 系统的基本原理 .52 单元电路设计.62.1 A/D 转换部分 .62.1.1 ADC0809 工作原理 62.1.2 ADC0809 工作时序 72.1.3 档位控制电路.82.2 FPGA 功能模块的设计 .82.2.1 码制变换模块82.2.2 显示控制及驱动模块 .93 软件设计 .93.1 开发软件及编程语言简介 93.2 程序流程图 94 系统测试 .104.1 测试仪器清单 .104.2 测试及误差计

2、算 .10参考文献 11附录 1 程序清单 .1121 系统设计1.1控制模块方案的比较方案一:采用3位半数字电压表。采用此方案电路结构简单,易于实现且易于维护。它的核心器件是一个双积分式A/D转换,双积分式DVM属于VT变换式,其基本原理是在一个测量周期内,首先将被测电压UX加到积分器的输入端,在确定的时间内进行积分,也称定时积分;然后切断UX,在积分器的输入端加与UX极性相反的电压UR,由于UR一定,所以称为定值积分,但积分方向相反,直到积分输出达到起始电平为止,从而将UX转换成时间间隔进行测量。只要用计数器累计时间间隔内的脉冲数,即为UX之值。其原理方框图如图1.1.1所示。输入信号图

3、1.1.1 3 位半电压表原理图方案二:采用单片机为控制核心。目前单片机技术比较成熟,功能也比较强大,配合一定的外围电路可实现数字电压表,原理图如图 1.1.2 所示。输入信号经 AD 转换器转换后送到单片机进行数据处理,系统根据不同电压信号计算出不同的数值,并将其显示出来。采用这种方案优点是呆以依赖地成熟的单片机技术、运算功能较强、软件编程灵活、自由度大、设计成本也较低,能较准确地测量输入电压。缺点是在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,因此整个系统显得十分复杂,不易于实现。图 1.1.2 单片机控制的数字电压表原理图方案三:采用FPGA作为系统控制的核心。现场可

4、编程门阵列(FPGA)将所有器件集成在一块芯片上,体积大大减小、逻辑单元灵活、集成度高以及适用范围广等特点,可实现大规模和超大规模的集成电路,而且编程灵活、调试方便。综合上述分析,方案三为本设计最佳选择方案。A/D 转换 译码驱动 显示器31.2 AD转换方案的比较方案一:采用双积分型 AD 转换器。双积分型 A/D 转换器的原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率) ,然后由定时器/计数器获得数字值,积分时间常数较大,具有滤波作用,消除了干扰,故双积分 A/D 转换具有较强的抗干扰能力。缺点是由于积分过程是个缓慢的过程,转换速度慢。方案二:采用逐次比较型 AD 转换。这是目

5、前应用十分广泛的集成 ADC,逐次比较型 AD 转换内部电路由一个比较器、DA 转换器、时钟、逐次比较寄存器 SAR、输出寄存器和控制逻辑电路等部分组成。具有速度高、功耗低。输出位数多等特点,其原理图如图 1.2.1 所示。图 1.2.1 逐次比较 ADC 原理图经比较,采用逐次比较的 A/D 转换器1.3 显示器方案的比较方案一:采用 LED 数码管,采用数码管动态显示,数码管具有结构简单、低损耗、寿命长、耐老化、成本低、对外界要求低、易于维护、操作简单,编程简单等优点。但是也有一个明显的缺点,即显示的信息量非常有限,只能显示几个有限的阿拉伯数字与字母,电路图如图 1.3.1 所示。4图 1

6、.3.八段发光二极管显示器原理结构方案二:运用 LCD 液晶显示,液晶显示屏是以若干个 58 或 511 点阵块组成的显示字符群,每个点阵块为一个字符位.字符间距的行距都为一个点的宽度.采用这种液晶显示功耗低、可靠性高、轻薄短小、辐射小、可视面积大,可以同时显示多种信息。综上所述,拟定第二种方案,即采用 LCD 液晶显示电压值及相关信息。1.4 总体方案设计由上节分析、比较、论证,决定了系统的最终方案:(1).控制部分:采用 FPGA 为控制核心(2)AD 转换部分:采用逐次逼近(比较)型 AD 转换器 ADC0809;(3)显示部分:采用液晶 LCD 显示系统基本框图如图 1.4 所示电压输

7、入图 1.4 系统总体框图1.5 系统的基本原理ADC0809档位控制FPGA码制变换 译码驱动控制信号LCD显示按键5测量信号(电压信号)送入 AD 转换器,控制信号模块发出控制信号,启动 A/D 的START 进行转换,A/D 采样得到的数字信号数据在数据处理模块中转换为相应的显示代码,最后经显示译码驱动模块发出控制与驱动信号,推动外部的显示模块(LCD)显示相应的数据。通过外部的键盘可以对系统进行复位控制和显示档位选择,不同的档位选择不同的输入电压范围(05、550) 。2 单元电路设计2.1 A/D 转换部分2.1.1 ADC 0809 工作原理ADC 0809 是一种 8 位 ADC

8、,采用 CMOS 工艺制成的 8 位八通道 A/D 转换器,片内有 8 路模拟采样开关,可控制 8 个模拟量中的一个进入转换器中。其内部结构图和引脚图分别如图 2.1.1.1 和 2.1.1.2 所示。图 2.1.1.1 ADC0809 内部结构片内有 8 路开关、模拟开关的地址锁存与译码电路、比较器、256R 电阻 T 型网络、树状电子开关、逐次逼近寄存器 SAR、三态输出锁存缓冲储存器、定时和控制电路等。ADC0809 通过引脚 IN0,IN1,IN7 可输入 8 路单边模拟输入电压。ALE 将 3位地址线 ADDA,ADDB,ADDC 进行锁存。6图 2.1.1.2 ADC0809 引脚

9、图在 ADC0809 片内的 256R 电阻 T 型网络和电子开关树它相当一个 D/A 转换器。它把预测的 8 位二进制数转换为模拟的电压幅值,送入比较器中与实际电压相比较。ADC0809 主要引脚功能如下:IN0IN7:通道 07 的模拟量输入 D07:数字量输出 ADDC、ADDB、ADDA:通道(07) 选择 ALE:通道地址锁存,正脉冲有效 START:启动信号 ,正脉冲有效 ,上升沿所有寄存器清 0,下降沿开始转换 EOC:转换结束,高电平有效 OE:允许输出,高民平有效2.1.2 ADC0809 的工作时序ADC0809 的工作时序如图 2.1.2.1 所示。主要控制信号说明:,S

10、TART 是转换启动信号,高电平有效;ALE 是 3 位通道选择地址(ADDC、 ADDB、ADDA)信号的锁存信号。当模拟量送至某一输入端,由 3 位地址信号选择,而地址信号由 ALE 锁存;EOC 是转换情况状态信号,当转换结束后,EOC 输出高电平,以示转换结束;在 EOC 的上升沿后,若使能输出信号 OE 为高电平,则控制打开三态缓冲器,把转换好的 8 位数据结果输至数据总线。 至此 ADC0809 的一次转换结束。图 2.1.2.1 ADC0809 的工作时序图72.1.3 档位控制电路为了增加 DVM 的测量范围,设计了档位选择电路,其主要原理是采用电阻分压,原理上ADC0809

11、有八路数据输入端口,也就是说可以分为八档,为了简化设计,只分了两档(1 档,10 档)图 2.1.3.1 档位控制电路原理图图中的电位器 R25 是用来校准的,因为各电阻的值不可能很精确,用电位器来微调校准以保证测量精度。ADC0809 的输入范围为(05)V.由于档位的切换是通过程序来控制ADC0809 各通道的选通来自动实现的,所以只要输入的电压范围超过 5V,则档位自动切换到 10 档,即选通通道 IN1。当输入电压范围为 05V 时,IN0 导通,此时,UI=U26而当输入电压范围为 550V 时,FPGA 判断选择档位 ,IN1 导通, 此时UI=U27即 UI= =2765R610

12、由于 ADC0809 数字量输出为 8 位,数字量化范围为 0255,当输入电压为满量程 5V时,转换电路对输入电压的分辨能力为2.2 FPGA 功能模块的设计2.2.1 码制变换模块在此码制变换模块 DATA_CONVERSION 中主要实现的功能是将 AD0809 采样送来的 8 位二进制数转换为可被 LCD 识别的字符型 LCD 码。为了达到这一目的,首先要将 8 位二进制码变换为 BCD 码,然后再分别进行转换,得到字符型码,并送入译码显示模块。mV.92582.2.2 显示控制及驱动模块电压值的显示可由 LCD 实现。本系统选用了一块 85 字符型液晶显示模块 LMB162ABA 实

13、现了低功耗,而且可带单位双排显示,字体美观大方。整个电路十分简洁。系统工作过程首先由 FPGA 对 ADC0809 及 LCD 进行初始化,然后当有输入信号 V i,由 FPGA 通过接口向ADC0809 控制信号控制字,使其对输入的模拟信号进行转换,变为 8 位的数字信号送到输出端,由 FPGA 经过码制变换等处理后,再通过与 LCD 的接口驱动并发送数据。当 ADC0809采样完成后,由码字变换模块将采样数字信号转换为 LCD 可识别的字符型数据后,送至驱动模块,再由其驱动 LCD,将字符型数据送到 LCD 的 D0D7 端,实现显示。3、软件设计3.1 开发软件及编程语言简介系统采用硬件

14、描述语言 VHDL 按模块化方式进行设计,并将各模块集成于 FPGA 芯片中,然后通过 Xilinx ISE 4.2 软件开发平台和 ModelSim Xilinx Edition 5.3d XE 仿真工具,对设计文件自动地完成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对 FPGA 芯片进行编程,实现系统的设计要求。采用 VHDL(Very High Speed Integrated Circuit Hardware Descriptipon Language)超高速集成电路硬件描述语言设计复杂数字电路的方法具有很多优点,VHDL 语言的设计技术齐全、方法灵活、支持广泛。VH

15、DL 语言的系统硬件描述能力很强,具有多层次描述系统硬件功能的能力,可以从系统级到门级电路,而且高层次的行为描述可以与低层次的 RTL 描述混合使用。VHDL 在描述数字系统时,可以使用前后一致的语义和语法跨越多层次,并且使用跨越多个级别的混合描述模拟该系统。因此,可以对高层次行为描述的子系统及低层次详细实现子系统所组成的系统进行模拟。3.2 程序流程图9图 3.2.1 系统程序流程图4、系统测试4.1 测试仪器清单测试使用的仪器设备如表 4.1.1 所示表 4.1.1 测试使用的仪器设备序号 名称 型号 数量 备注1 3 位半数字万用表 UNI-T 1 深圳胜利公司2 直流稳压电源 DF17

16、31SC2A 1 江苏扬中电子仪器厂4.2 测试及误差计算 系统的测试主要是测试硬件是否能正常工作,软件和硬件是否匹配,是否合乎设计的要求。在频率测试过程中,系统的测量范围系统的精度是两个较重要的指标。系统的测量结果如表 4.2.1 所示表 4.2.1 系统测量数据表序号 标准电压值(U/V) 测量电压值(Ux/V) 误差(%)1210345678910源程序清单顶层:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment

17、the following lines to use the declarations that are- provided for instantiating Xilinx primitive components.-library UNISIM;-use UNISIM.VComponents.all;entity top isPort ( clk,reset:in std_logic;key1,eoc:in std_logic;D:in std_logic_vector(7 downto 0);ale,start,oe,clk500k:out std_logic;cba:out std_l

18、ogic_vector(2 downto 0);-0809通道选择xs:out std_logic_vector(8 downto 0); -发光二极管显示状态lcden:out std_logic; -接LCD使能端 lcdda:out std_logic; -接LCD_da信号输入端lcdrw:out std_logic; -接LCD读写信号输入端lcddata:inout std_logic_vector(7 downto 0);-接LCD数据输入位 end top;architecture Behavioral of top iscomponent key isPort (clk,re

19、set:in std_logic;key1:in std_logic;clkz:out std_logic;dw1:out integer range 0 to 2;cba:out std_logic_vector(2 downto 0);11end component;component ad0809 isPort ( clk,reset:in std_logic;eoc:in std_logic;D:in std_logic_vector(7 downto 0);ale,start,oe,clk500k:out std_logic;xs:out std_logic_vector(8 dow

20、nto 0);-0809工作状态显示Q:out std_logic_vector(7 downto 0);end component;component yima isPort ( clk:in std_logic;clkz:in std_logic;Q:in std_logic_vector(7 downto 0);v1,v2,v3,v4,v5:out integer range 0 to 9);end component;component lcd isgeneric(delay:integer:=100); -类属说明Port ( clk,reset:in std_logic;dw1:i

21、n integer range 0 to 2;v1,v2,v3,v4,v5:in integer range 0 to 9;lcden:out std_logic; -接LCD使能端 lcdda:out std_logic; -接LCD_da信号输入端lcdrw:out std_logic; -接LCD读写信号输入端lcddata:inout std_logic_vector(7 downto 0);-接LCD数据输入位 end component;signal clkz_load:std_logic;signal dw1_load:integer range 0 to 2;signal Q_

22、load:std_logic_vector(7 downto 0);signal v1_load,v2_load,v3_load,v4_load,v5_load:integer range 0 to 9;beginu1:key port map(clk=clk,reset=reset,key1=key1,clkz=clkz_load,dw1=dw1_load,cba=cba);u2:ad0809 port map(clk=clk,reset=reset,eoc=eoc,D=D,ale=ale,start=start,oe=oe,clk500k=clk500k,xs=xs,Q=Q_load);u

23、3:yima port map (clk=clk,clkz=clkz_load,Q=Q_load,v1=v1_load,v2=v2_load,v3=v3_load,v4=v124_load,v5=v5_load);u4:lcd port map(clk=clk,reset=reset,dw1=dw1_load,v1=v1_load,v2=v2_load,v3=v3_load,v4=v4_load,v5=v5_load,lcden=lcden,lcdda=lcdda,lcdrw=lcdrw,lcddata=lcddata);end Behavioral;按键:library IEEE;use I

24、EEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primitive components.-library UNISIM;-use UNISIM.VComponents.all;entity key isPort (clk,reset:in std_logic;key1:in s

25、td_logic;clkz:out std_logic;dw1:out integer range 0 to 2;cba:out std_logic_vector(2 downto 0);end key;architecture Behavioral of key issignal clkk:std_logic;beginprocess(clk,reset)variable clk1:std_logic;variable cnt:integer range 0 to 50000000;beginif reset=1 then if clkevent and clk=1 then if cnt2

26、 then cnt:=0;elsif key1=0 then cnt:=cnt+1;case cnt iswhen 1=cbacbacbax1x1x1xv1xv1xv1xv1xv1xv1xv1xv1xv1xv1xv1xv2xv2xv2xv2xv2xv2xv2xv2xv2xv2xv2xv3xv3xv3xv3xv3xv3xv3xv3xv3xv3xv3xv4xv4xv4xv4xv4xv4xv4xv4xv4xv4xv4xv5xv5xv5xv5xv5xv5xv5xv5xv5xv5xv5lcdendelay and cnttlcdendelay and cnttlcdendelay and cnttlcd

27、endelay and cnttlcdendelay and cnttlcdendelay and cnttalealealealealealealeale X“0302“)port map (ADR0 = choice66,ADR1 = choice60,ADR2 = q_7_ibuf,ADR3 = n1239,O = n1107);Q_n000945 : X_LUT4generic map(INIT = X“1000“)port map (ADR0 = q_6_ibuf,ADR1 = q_7_ibuf,ADR2 = choice81,ADR3 = choice84,O = n1198);v

28、33_madd_n0000_inst_sum_2 : X_XOR2port map (I0 = v33_madd_n0000_inst_cy_1,I1 = v33_2_rt,O = v33_n0000(2);v33_madd_n0000_inst_cy_2_0 : X_MUX2port map (IA = v2_0_obuf,IB = v33_madd_n0000_inst_cy_1,SEL = v33_2_rt,O = v33_madd_n0000_inst_cy_2);xst_gnd : X_ZEROport map (O = v2_0_obuf);Q_n000930 : X_LUT2ge

29、neric map(INIT = X“1“28)port map (ADR0 = q_4_ibuf,ADR1 = q_5_ibuf,O = choice84);v55_2 : X_FFport map (I = v55_n0000(2),RST = v55_2_GSR_OR,CE = n1198,CLK = clk_bufgp,O = v55(2),SET = GND);v44_2 : X_FFport map (I = v44_n0000(2),RST = v44_2_GSR_OR,CE = n1107,CLK = clk_bufgp,O = v44(2),SET = GND);v33_2

30、: X_FFport map (I = v33_n0000(2),RST = v33_2_GSR_OR,CE = n1063,CLK = clk_bufgp,O = v33(2),SET = GND);v33_3 : X_FFport map (I = v33_n0000(3),RST = v33_3_GSR_OR,CE = n1063,CLK = clk_bufgp,O = v33(3),SET = GND);v33_madd_n0000_inst_sum_1 : X_XOR2port map (29I0 = v33_madd_n0000_inst_cy_0,I1 = v33_1_rt,O

31、= v33_n0000(1);v33_aclr_inv1 : X_LUT2generic map(INIT = X“5“)port map (ADR0 = reset_ibuf,O = v33_0_n33,ADR1 = GND);v33_0 : X_FFport map (I = v33_madd_n0000_inst_lut2_0,RST = v33_0_GSR_OR,CE = n1063,CLK = clk_bufgp,O = v33(0),SET = GND);v33_1 : X_FFport map (I = v33_n0000(1),RST = v33_1_GSR_OR,CE = n

32、1063,CLK = clk_bufgp,O = v33(1),SET = GND);v44_3 : X_FFport map (I = v44_n0000(3),RST = v44_3_GSR_OR,CE = n1107,CLK = clk_bufgp,O = v44(3),SET = GND);v33_madd_n0000_inst_cy_1_1 : X_MUX2port map (IA = v2_0_obuf,IB = v33_madd_n0000_inst_cy_0,30SEL = v33_1_rt,O = v33_madd_n0000_inst_cy_1);v5_0_obuf : X

33、_BUFport map (I = v55(0),O = v5_0_obuf_GTS_TRI);v44_0 : X_FFport map (I = v44_madd_n0000_inst_lut2_0,RST = v44_0_GSR_OR,CE = n1107,CLK = clk_bufgp,O = v44(0),SET = GND);v44_1 : X_FFport map (I = v44_n0000(1),RST = v44_1_GSR_OR,CE = n1107,CLK = clk_bufgp,O = v44(1),SET = GND);v55_3 : X_FFport map (I = v55_n0000(3),RST = v55_3_GSR_OR,CE = n1198,CLK = clk_bufgp,O = v55(3),SET = GND);v55_madd_n0000_inst_cy_2_2 : X_MUX2port map (IA = v2_0_obuf,IB = v55_madd_n0000_inst_cy_1,SEL = v55_2_rt,O = v55_madd_n0000_inst_cy_2);v33_madd_n0000_inst_cy_0_3 : X_MUX2port map (

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报