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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、基于FPGA的数字电压表设计基于FPGA数字电压表设计摘要: 系统基于EDA技术的智能数字电压表实现,以现场可编程门阵列(FPGA)为设计核心,集成于一片Xilinx公司的SpartanE系列XC2S100E-6PQ208芯片上,在ISE环境下采用超高速硬件描述语言(VHDL)模块化编程,实现了电压的数据采集、转换、处理、显示等功能。本设计的特点在于能够测量的电压范围宽(050VDC),主要采用了分压原理,该系统具有集成度高、灵活性强、易于开发和维护等特点。关键字: FPGA VHDL 数字电压表 AD转换Abstract:The system according to the EDA tec

2、hnical achieve the digital voltager,It is base on FPGA(Field Programmable Gate Array), adopting VHDL(VHSIC Hardware Description Language) under the under the environment of ISE.most of the designs gather in the Spartan E series XC2S100E- 6PQ208 chip of the Xilinx company .The whole design is compose

3、d of the data processing module, the correspondence choice modulek, the key mold module and the A/D convert module. It can be carry out the function such as conversion, handle and display .It is a characteristic that is the system can be measure the range of the voltage from 0V to 50V ,which mainly

4、adopting the principle in dividing voltage. The system has high accuracy and stability,it is proved to reliable and of high value and feasibility after testing. Key word: FPGA VHDL DVM AD conversion 1系统设计 3 1.1 控制模块方案的比较 3 1.2 A/D转换方案的比较 4 1.3 显示方案的比较 4 1.4 总体方案设计 51.5 系统的基本原理 52 单元电路设计 6 2.1 A/D转换部

5、分 6 2.1.1 ADC0809工作原理 6 2.1.2 ADC0809工作时序 7 2.1.3 档位控制电路 8 2.2 FPGA功能模块的设计 8 2.2.1 码制变换模块 8 2.2.2 显示控制及驱动模块 9 3 软件设计 9 3.1 开发软件及编程语言简介 9 3.2 程序流程图 94 系统测试 104.1 测试仪器清单 104.2 测试及误差计算 10参考文献 11附录1 程序清单 111 系统设计1.1控制模块方案的比较方案一:采用3位半数字电压表。 采用此方案电路结构简单,易于实现且易于维护。它的核心器件是一个双积分式A/D转换,双积分式DVM属于VT变换式,其基本原理是在一

6、个测量周期内,首先将被测电压UX加到积分器的输入端,在确定的时间内进行积分,也称定时积分;然后切断UX,在积分器的输入端加与UX极性相反的电压UR,由于UR一定,所以称为定值积分,但积分方向相反,直到积分输出达到起始电平为止,从而将UX转换成时间间隔进行测量。只要用计数器累计时间间隔内的脉冲数,即为UX之值。其原理方框图如图1.1.1所示。输入信号 图1.1.1 3位半电压表原理图方案二:采用单片机为控制核心。目前单片机技术比较成熟,功能也比较强大,配合一定的外围电路可实现数字电压表,原理图如图1.1.2所示。输入信号经AD转换器转换后送到单片机进行数据处理,系统根据不同电压信号计算出不同的数

7、值,并将其显示出来。采用这种方案优点是呆以依赖地成熟的单片机技术、运算功能较强、软件编程灵活、自由度大、设计成本也较低,能较准确地测量输入电压。缺点是在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,因此整个系统显得十分复杂,不易于实现。图1.1.2 单片机控制的数字电压表原理图方案三:采用FPGA作为系统控制的核心。现场可编程门阵列(FPGA)将所有器件集成在一块芯片上,体积大大减小、逻辑单元灵活、集成度高以及适用范围广等特点,可实现大规模和超大规模的集成电路,而且编程灵活、调试方便。综合上述分析,方案三为本设计最佳选择方案。1.2 AD转换方案的比较方案一:采用双积分型AD

8、转换器。双积分型A/D转换器的原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值,积分时间常数较大,具有滤波作用,消除了干扰,故双积分A/D转换具有较强的抗干扰能力。缺点是由于积分过程是个缓慢的过程,转换速度慢。方案二:采用逐次比较型AD转换。这是目前应用十分广泛的集成ADC,逐次比较型AD转换内部电路由一个比较器、DA转换器、时钟、逐次比较寄存器SAR、输出寄存器和控制逻辑电路等部分组成。具有速度高、功耗低。输出位数多等特点,其原理图如图1.2.1所示。图1.2.1 逐次比较ADC原理图经比较,采用逐次比较的A/D转换器1.3显示器方案的比较方案一:

9、采用LED数码管,采用数码管动态显示,数码管具有结构简单、低损耗、寿命长、耐老化、成本低、对外界要求低、易于维护、操作简单,编程简单等优点。但是也有一个明显的缺点,即显示的信息量非常有限,只能显示几个有限的阿拉伯数字与字母,电路图如图1.3.1所示。图1.3.八段发光二极管显示器原理结构方案二:运用LCD液晶显示,液晶显示屏是以若干个58或511点阵块组成的显示字符群,每个点阵块为一个字符位.字符间距的行距都为一个点的宽度.采用这种液晶显示功耗低、可靠性高、轻薄短小、辐射小、可视面积大,可以同时显示多种信息。综上所述,拟定第二种方案,即采用LCD液晶显示电压值及相关信息。1.4总体方案设计由上

10、节分析、比较、论证,决定了系统的最终方案:(1).控制部分:采用FPGA为控制核心(2)AD转换部分:采用逐次逼近(比较)型AD转换器ADC0809;(3)显示部分:采用液晶LCD显示系统基本框图如图1.4所示电压输入图1.4 系统总体框图1.5系统的基本原理测量信号(电压信号)送入AD 转换器,控制信号模块发出控制信号,启动A/D的START进行转换,A/D采样得到的数字信号数据在数据处理模块中转换为相应的显示代码,最后经显示译码驱动模块发出控制与驱动信号,推动外部的显示模块(LCD)显示相应的数据。通过外部的键盘可以对系统进行复位控制和显示档位选择,不同的档位选择不同的输入电压范围(05、

11、550)。2 单元电路设计2.1 A/D转换部分2.1.1 ADC 0809工作原理 ADC 0809是一种8位ADC,采用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,

12、ADDC进行锁存。图2.1.1.2 ADC0809引脚图在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所示。主要控制信

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

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

15、对输入电压的分辨能力为 2.2FPGA功能模块的设计2.2.1码制变换模块在此码制变换模块DATA_CONVERSION中主要实现的功能是将AD0809采样送来的8位二进制数转换为可被LCD识别的字符型LCD码。为了达到这一目的,首先要将8位二进制码变换为BCD码,然后再分别进行转换,得到字符型码,并送入译码显示模块。2.2.2 显示控制及驱动模块电压值的显示可由LCD实现。本系统选用了一块85字符型液晶显示模块LMB162ABA实现了低功耗,而且可带单位双排显示,字体美观大方。整个电路十分简洁。系统工作过程首先由 FPGA对ADC0809及LCD进行初始化,然后当有输入信号V i,由FPGA

16、通过接口向ADC0809控制信号控制字,使其对输入的模拟信号进行转换,变为8位的数字信号送到输出端,由FPGA经过码制变换等处理后,再通过与LCD的接口驱动并发送数据。当ADC0809采样完成后,由码字变换模块将采样数字信号转换为LCD可识别的字符型数据后,送至驱动模块,再由其驱动LCD,将字符型数据送到LCD的D0D7端,实现显示。3、软件设计3.1 开发软件及编程语言简介系统采用硬件描述语言VHDL按模块化方式进行设计,并将各模块集成于FPGA芯片中,然后通过Xilinx ISE 4.2软件开发平台和ModelSim Xilinx Edition 5.3d XE仿真工具,对设计文件自动地完

17、成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对FPGA芯片进行编程,实现系统的设计要求。采用VHDL(Very High Speed Integrated Circuit Hardware Descriptipon Language)超高速集成电路硬件描述语言设计复杂数字电路的方法具有很多优点,VHDL语言的设计技术齐全、方法灵活、支持广泛。VHDL语言的系统硬件描述能力很强,具有多层次描述系统硬件功能的能力,可以从系统级到门级电路,而且高层次的行为描述可以与低层次的RTL描述混合使用。VHDL在描述数字系统时,可以使用前后一致的语义和语法跨越多层次,并且使用跨越多个级别的混

18、合描述模拟该系统。因此,可以对高层次行为描述的子系统及低层次详细实现子系统所组成的系统进行模拟。3.2程序流程图图3.2.1 系统程序流程图4、系统测试4.1测试仪器清单测试使用的仪器设备如表4.1.1所示表4.1.1测试使用的仪器设备序号名称型号数量备注13位半数字万用表UNI-T 1深圳胜利公司 2直流稳压电源DF1731SC2A 1江苏扬中电子仪器厂4.2测试及误差计算 系统的测试主要是测试硬件是否能正常工作,软件和硬件是否匹配,是否合乎设计的要求。在频率测试过程中,系统的测量范围系统的精度是两个较重要的指标。系统的测量结果如表4.2.1所示表4.2.1 系统测量数据表序号标准电压值(U

19、/V)测量电压值(Ux/V)误差(%)12345678910参考文献1潘松,黄继业.EDA实用教程.北京.科学出版社.2002年10月第一版2黄智伟.全国大学生电子设计竞赛训练教程.北京:电子工业出版式社.2005年1月第1版;3高吉祥,数字电子技术北京:电子工业出版社,2003年8谭浩强月第1版;附录1: 源程序清单顶层:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following lines to

20、use the declarations that are- provided for instantiating Xilinx primitive components.-library UNISIM;-use UNISIM.VComponents.all;entity top is Port ( 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_logic_vector(2 down

21、to 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 is Port (clk,reset:in std_lo

22、gic; key1:in std_logic; clkz:out std_logic; dw1:out integer range 0 to 2; cba:out std_logic_vector(2 downto 0);end component;component ad0809 is Port ( 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 downto 0)

23、;-0809工作状态显示 Q:out std_logic_vector(7 downto 0);end component;component yima is Port ( 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 is generic(delay:integer:=100); -类属说明 Port ( clk,reset:in std_logic; dw1

24、:in 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;sig

25、nal Q_load:std_logic_vector(7 downto 0);signal v1_load,v2_load,v3_load,v4_load,v5_load:integer range 0 to 9;begin u1: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=

26、Q_load);u3:yima port map (clk=clk,clkz=clkz_load,Q=Q_load,v1=v1_load,v2=v2_load,v3=v3_load,v4=v4_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 I

27、EEE;use IEEE.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 is Port (clk,reset:in std_logic

28、; key1:in std_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;begin if reset=1 then if clkevent and clk

29、=1 then if cnt49999999 then clk1:=1;cnt:=cnt+1; elsif cnt=50000000 then clk1:=0;cnt:=0; end if; end if; end if;clkz=clk1;end process;process(clk,reset)variable clk0:std_logic;variable cnt:integer range 0 to 3125000;-0.125sbegin if reset=0 then cnt:=0;clk0:=0; elsif clkevent and clk=1 then if cnt=3125000 then cnt:=0;clk0:=not clk0; else cnt:=cnt+1; end if; end if;clkk2 then cnt:=0; elsif key1=0 then cnt:=cnt+1; case cnt is when 1=cba=000;dw1cba=001;dw1cba=000;dw1=1; end case; end if; end if; end

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1