基于eda的数字电压表设计课件

上传人:F****n 文档编号:88148081 上传时间:2019-04-20 格式:PPT 页数:25 大小:291KB
返回 下载 相关 举报
基于eda的数字电压表设计课件_第1页
第1页 / 共25页
基于eda的数字电压表设计课件_第2页
第2页 / 共25页
基于eda的数字电压表设计课件_第3页
第3页 / 共25页
基于eda的数字电压表设计课件_第4页
第4页 / 共25页
基于eda的数字电压表设计课件_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《基于eda的数字电压表设计课件》由会员分享,可在线阅读,更多相关《基于eda的数字电压表设计课件(25页珍藏版)》请在金锄头文库上搜索。

1、基于EDA的数字电压表设计,实验要求,FPGA连接A/D转换硬件电路,将ADC单元中提供的0V5V信号源作为ADC0809的模拟输入量,通过IN0进行A/D转换,转换结果在数码上进行显示。通过调节电位器使数码管显示实时采集电压值。,实验设计思路,数字电压表设计核心:FPGA设计,FPGA负责ADC0809的启动以及转换数据的读取,再将读取的8位二进制数据进行变换,形成便于输出的3位LED段码送给LED数码管,显示被测电压值。 FPGA的设计主要包括几个部分: ADC0809转换控制模块实现ADC0809的启动以及转换数据的读取;数据处理模块实现ADC0809 4位数字量对应BCD码的变换和处理

2、;显示控制模块实现LED段码译码输出。,ADC0809与FPGA接口电路,ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。 ADC0809的精度是8位,转换时间约为100s,含锁存控制的8路开关,输出有三态缓冲控制,单5V电源供电。,FPGA与ADC0809接口电路原理图,ADC0809与FPGA接口电路设计,IO_B13、B4、B12、B7、B14、B15、B16、B17接收ADC0809 8位数数据; IO_B10接收ADC0809 转换结束信号EOC; IO_B21、B20、B19为ADC0809提供8路模拟信号开关的3位地址选通信号

3、(ADD-AC); IO_B18为ADC0809提供地址锁存控制信号ALE:高电平时把三个地址信号送入地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道;,接下页,IO_B6为ADC0809提供输出允许控制信号ENABLE:电平由低变高时,打开输出锁存器,将转换结果的数字量送到数据总线上; IO_B11为ADC0809提供启动控制信号START:一个正脉冲过后A/D开始转换; IO_B5为ADC0809提供时钟信号信号CLOCK; IN0IN7:8路模拟信号输入端口; Vref+和Vref-:参考电压输入端口;,ADC0809 VHDL采样控制程序设计,ADC0809的工作时序图,S

4、TART是转换启动信号,一个正脉冲过后A/D开始转换;ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号锁存信号。 当模拟量送至某一输入端(如IN-0或IN-1)等,由3位地址信号选择,而地址信号由ALE锁存。 EOC是转换情况状态信号,当启动转换约100s后,EOC产生一个负脉冲,以示转换结束。 在EOC的上升沿后,且输出使能信号ENABLE为高电平,则控制打开三态缓冲器,把转换好的8位数据送至数据总线。 至此ADC0809的一次转换结束,ADC0809采样控制状态图,FPGA器件可以根据其采样时序用状态机来描述采样控制过程,其状态转换关系 如左图所示。,ADC0809 VHDL采

5、样控制程序,ADC0809采样控制程序电路符号,程序的端口信号与中间信号,entity ADC0809 is port ( d : in std_logic_vector(7 downto 0); -ADC0809输出的采样数据 clk,eoc : in std_logic; -clk为系统时钟,eoc为ADC0809转换结束信号 clk1,start, ale,en: out std_logic; -ADC0809控制信号 abc_in :in std_logic_vector(2 downto 0); -模拟选通信号 abc_out :out std_logic_vector(2 down

6、to 0); -ADC0809模拟信号选通信号 q : out std_logic_vector(7 downto 0); -送至8个并排数码管信号 end ADC0809; architecture behav of ADC0809 is type states is ( st0,st1, st2, st3, st4,st5,st6); -定义各状态的子类型 signal current_state, next_state:states:=st0; signal regl :std_logic_vector(7 downto 0); -中间数据寄存信号 signal qq:std_logic

7、_vector(7 downto 0); begin,状态转换模块(com ),case current_state is when st0=next_statenext_statenext_state ale alenext_statenext_state next_state=st0;ale=0;start=0;en=0; end case;,分频模块(clock),clock:process(clk) -对系统时钟进行分频,得到ADC0809转换工作时钟 begin if clkevent and clk=1 then qq=qq+1; -在clk1的上升沿,转换至下一状态 if QQ=

8、“01111111“ THEN clk1=1; current_state =next_state; elsif qq=“01111111“ then clk1=0; end if; end if; end process; q=regl; abc_out=abc_in; end behav;,显示模块,显示模块,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity valconv is port( q:in std_log

9、ic_vector(7 downto 0); -ad a:out std_logic_vector(6 downto 0); -小数点后第2位 b:out std_logic_vector(6 downto 0); -小数点后第1位 c:out std_logic_vector(6 downto 0); -个位 end valconv;,显示模块,architecture bhv of valconv is signal var1,var2,var3:integer; -分别对应将二进制数据转化为十进制 begin process(q) -数据读出时转化成十进制并显示 begin var1=5

10、0*CONV_INTEGER(q)/2550; -计算个位 var2=50*CONV_INTEGER(q)/255 rem 10; -计算小数点后第一位 var3=500*CONV_INTEGER(q)/255 rem 10; -计算小数点后第二位,显示模块,case var1 is -对个位译码 when 0 = c c c c c c c c c c c = “1111111“; end case;,显示模块,case var2 is -对小数点后第一位译码 when 0 = b b b b b b b b b b b = “1111111“; end case;,显示模块,case var3 is -对小数点后第二位译码 when 0 = a a a a a a a a a a a = “1111111“; end case; end process; end bhv;,管脚约束(AD模块),管脚约束(数码管),实验结果及程序扩展,运行测试 将程序下载到目标芯片中,观察数码管的输出,其输出随着输入电压的变化而变化,当输入电压变为0时,数码管的输出为0,输入为5 V时数码管输出也为5.00 V,运行结果正确。 程序扩展 该设计还可以进行相应的扩展,例如增加两个功能按键用于设定电压上下限值,当测量电压超出上下限值时,进行声音报警等,感兴趣的可以试着做数字电压表的各种扩展功能。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号