基于的数字电压表设计_第1页
基于的数字电压表设计_第2页
基于的数字电压表设计_第3页
基于的数字电压表设计_第4页
基于的数字电压表设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、(优选)基于的数字电压表设计第一页,共二十三页。实验设计思路数字电压表设计核心:FPGA设计,FPGA负责ADC0809的启动以及转换数据的读取,再将读取的8位二进制数据进行变换,形成便于输出的3位LED段码送给LED数码管,显示被测电压值。FPGA的设计主要包括几个部分: ADC0809转换控制模块实现ADC0809的启动以及转换数据的读取;数据处理模块实现ADC0809 4位数字量对应BCD码的变换和处理;显示控制模块实现LED段码译码输出。第二页,共二十三页。ADC0809与FPGA接口电路 ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换

2、器中。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位地址选通信号(ADD-AC);IO_B18为ADC0809提供地址锁存控制信号ALE:高电平时把三个地址信号送入地址锁存器,并经译码器得到地址输出,以

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

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

5、0809采样控制程序电路符号 第十二页,共二十三页。程序的端口信号与中间信号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 downt

6、o 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_vect

7、or(7 downto 0);begin第十三页,共二十三页。状态转换模块(com )case current_state is when st0=next_state=st1;ale=0;start=0;ennext_state=st2;ale=1;start=0;ennext_state=st3;ale=0;start=1;en ale=0;start=0;en=0; if eoc=1 then next_state=st3; -检测EOC的下降沿 else next_state ale=0;start=0;en=0; if eoc=0 then next_state=st4; -检测EO

8、C的上升沿 else next_statenext_state=st6;ale=0;start=0;ennext_state=st0;ale=0;start=0;en=1;regl 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=01111111 THEN clk1=1; current_st

9、ate =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 isport( q:in std_logic_vector(7 downto 0)

10、; -ada: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; -分别对应将二进制数据转化为十进制beginprocess(q) -数据读出时转化成十进制并显示beginvar1=50*CONV_INTEGER(q)/2550; -计算个位var2=50*CONV_INTEGER(q)/255 rem 10; -计算小数点后第一位var3

温馨提示

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

评论

0/150

提交评论