最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数字电压表设计论文

来源:动视网 责编:小OO 时间:2025-09-26 11:00:09
文档

数字电压表设计论文

引言   随着计算机与微电子技术的发展,电子设计自动化EDA领域已成为电子技术发展的主体,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流发展的引擎,就是日趋进步和完善的FPGA设计技术。而电子设计自动化,是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科,其中EDA设计语言中的VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。该数字电压表的电路设计,正是用VHDL语言完成的。此次设计主要应用美国
推荐度:
导读引言   随着计算机与微电子技术的发展,电子设计自动化EDA领域已成为电子技术发展的主体,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流发展的引擎,就是日趋进步和完善的FPGA设计技术。而电子设计自动化,是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科,其中EDA设计语言中的VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。该数字电压表的电路设计,正是用VHDL语言完成的。此次设计主要应用美国
引 言

    随着计算机与微电子技术的发展,电子设计自动化EDA领域已成为电子技术发展的主体,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流发展的引擎,就是日趋进步和完善的FPGA设计技术。而电子设计自动化,是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科,其中EDA设计语言中的VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。该数字电压表的电路设计,正是用VHDL语言完成的。此次设计主要应用美国Altera公司自行设计的一种CAE软件工具,即qquatures II软件。

一.数字电压表的构成及工作原理

     数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心扩展成的各种数字化仪表,几乎覆盖了电子电工测量、工业测量、自动化系统等各个领域。

1.1 数字电压表

    数字电子系统通常由ASIC芯片和外围硬件设备组成,具有灵活性不强等缺陷。如图1所示的数字电压表,A/D转换器在控制ASIC所提供的时序信号作用下,对输入模拟信号进行转换,控制核心再对转换结果进行运算和处理,最后驱动输出装置显示数字电压信号。由于系统功能由ASID硬件结构决定,其功能难以更新和扩展。如果用EDA方法设计,即以可编程逻辑器件FPGA代替ASIC芯片,用硬件描述语言决定系统功能,就可在硬件不变的情况下修改程序以更新和扩展功能,使其灵活性显著提高。基于此考虑,用EDA方法设计了一个简易数字电压表控制电路,旨在研究提高数字电子系统灵活性的设计方法。

 

1.2 数字电压表的工作原理

    数字电压表的改进结构如图2所示,它的硬件包括三个部分,其中转换器ADC0804的作用是将模拟电压信号转换成数字电压值,并送到FPGA以待运算和处理;七段数码显示器的作用是接收FPGA转换后的BCD数据并显示;FPGA兼有处理和协调作用,包括控制A/D转换动作、接收A/D转换结果及编码、驱动显示等作用。因此,FPGA可分为三个功能模块,即控制模块、计算模块和显示驱动模块。

 

二. FPGA设计

    由以上分析,数字电压表的FPGA设计,适合于顶层电路与三个底层模块相结合的设计方法,其中显示驱动模块有标准的七段显示VHDL子程序可供调用。下面仅论述其余两模块的设计。

2.1 控制模块的设计

      该模块的任务是,控制ADC0804的工作时序,可分为ST0~ST3四个连续的步骤或状态。任务分别是:使ADC0804准备转换(状态ST0)、转换(状态ST1)、FPGA准备读取转换结果(状态ST2)、读取转换结果(状态ST3)。各状态由FPGA输出脚CS、WR、RD、INTR的不同电平组合确定,主要的VHDL语句为: 

library ieee;

use ieee.std_logic_11.all;

use ieee.std_logic_unsigned.all;

entity ad0804 is

    port(

        cs,wr,rd:out std_logic;

        clk,intr:in std_logic;

        din:in std_logic_vector(7 downto 0);

        dout:out std_logic_vector(7 downto 0)

        );

end entity;

architecture bhv of ad0804 is

    type states is (st0,st1,st2,st3);

    signal c_s,n_s:states;

    signal latch:std_logic;

begin

    reg:process(clk)

    begin

        if (clk='1' and clk'event) then

     c_s<=n_s;

        end if;

    end process;

    com:process(c_s,intr)

    begin

        case c_s is

         when st0=>cs<='0';wr<='0';rd<='1';

         latch<='0';n_s<=st1;

         when st1=>cs<='1';wr<='1';rd<='1';

             latch<='0';

             if intr='1' then n_s<=st1;

                 else n_s<=st2;

                end if;

         when st2=>cs<='0';wr<='1';rd<='0';                 latch<='0';n_s<=st3;

            when st3=>cs<='0';wr<='1';rd<='0';                 latch<='1';n_s<=st0;

         when others =>n_s<=st0;

        end case;

    end process;

    la:process(latch)

        begin

         if latch='1'then dout<=din;

         --dout<="11111111";

            end if;

        end process;

end architecture bhv;    

2.2 计算模块

    该模块将A/D转换结果分为高低4位,查表依次得到其BCD码后再进行计算,计算结果与A/D转换器的位宽和参考电压Vref均有关。本文选用8位转换器ADC0804,参考电压为5.00 V,故能输出从0~5.00 V按照0.02 V步进变化的256(28)个离散值。要得到的模拟值DATA=(D*5*10)/255;D是AD0804输出的数字信号值。再将DATA分成个位和十位用两个数码管显示。程序如下:

library ieee;

use ieee.std_logic_11.all;

use ieee.std_logic_unsigned.all;

entity change is

    port(D:in integer range 0 to 255;

         sw,gw:out integer range 0 to 9;

         Dpy:out integer range 0 to 255);

end change;

architecture behv of chagne is

signal data:integer range 0 to 255;

begin

process(D)

begin

data<=(D*5*10)/255;

Dpy<=data;

end process;

process(data)

begin

    gw<= data REM 10; --取出余数,作个位

    sw<= data/10; --取出商,作十位

end process;

end behv;

 电压离散值可用8位二进制(或2位十六进制数)表示,表1中列出了输出数字电压高4位及低4位可能出现的16个值。如果FPGA从ADC0804接收到信号01101000B(68H),按公式计算2.0V。

2.3 AD0804时钟脉冲产生模块

用FPGA的20M信号分4倍频,产生5M的CLKO时钟脉冲信号。程序如下:

library    ieee;

use ieee.std_logic_11.all;

entity clk0804 is

    port(clki:in bit;

         clko:out bit);

end entity  clk0804;

architecture bhv of clk0804 is

signal b:bit;

begin

    process(clki)

    variable a:integer range 0 to 3;

    begin

        if (clki'event and clki='1') then

         if a=3 then a:=0;b<=not b;

            else a:=a+1;

            end if;

        end if;

    end process;

clko<=b;

end architecture bhv;

2.4显示译码模块设计

用两位数码管显示结果。程序如下:

LIBRARY IEEE ;

 USE IEEE.STD_LOGIC_11.ALL ;

 ENTITY DECL7S IS

  PORT ( A  : IN  STD_LOGIC_VECTOR(3 DOWNTO 0);

      LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

      dp:out std_logic  ) ;

 END ;

 ARCHITECTURE one OF DECL7S IS

 BEGIN

  PROCESS( A )

  BEGIN

  CASE  A  IS

WHEN "0000" => LED7S <= "0111111" ;

WHEN "0001" => LED7S <= "0000110" ;

WHEN "0010" => LED7S <= "1011011" ;

WHEN "0011" => LED7S <= "1001111" ;

WHEN "0100" => LED7S <= "1100110" ;

WHEN "0101" => LED7S <= "1101101" ;

WHEN "0110" => LED7S <= "1111101" ;

WHEN "0111" => LED7S <= "0000111" ;

WHEN "1000" => LED7S <= "1111111" ;

WHEN "1001" => LED7S <= "1101111" ;

WHEN "1010" => LED7S <= "1110111" ;

WHEN "1011" => LED7S <= "1111100" ;

WHEN "1100" => LED7S <= "0111001" ;

WHEN "1101" => LED7S <= "1011110" ;

WHEN "1110" => LED7S <= "1111001" ;

WHEN "1111" => LED7S <= "1110001" ;

WHEN OTHERS => NULL ;

   END CASE ;

  END PROCESS ;

dp<='0';

 END ;

2.5整体设计电路及引脚分配设计图

三. 仿真结果

   FPGA设计完成后,用FPGA软件编译和仿真,波形如图3所示。由图3可知,FPGA工作时,先启动控制模块,它对模数转换的一次控制由四个状态组成。在状态ST0,选定ADC0804,为模数转换做准备;在状态ST1,使ADC0804进行转换,当FPGA的INTR信号端由高电平转为低电平时,模数转换结束进入下一状态ST2,为读取转换结果做准备;在状态ST3,FPGA读取模数转换结果。接着,FPGA的计算模块工作,求出二进制模数转换数据的8位BCD码。最后启动显示驱动模块,用数码管显示有一位小数的数字电压值。例如,模数转换结果即FPGA的输入信号Din[7..0]若为68H,则输出电压Dout[11..0]是2.08 V,Din[7..0]为70H时,输出电压Dout[11..0]是2.24 V,符合设计要求。

 

四.显示结果展示

五.本项目存在的不足

1.ad0804采用不同频率,输出结果不同。稳定性不好;

2.ad0804输入电阻较小,会影响电源输入电压;

3.改变输入电压值,要重新下载程序,才有显示。

六. 结 语

    本文数字电压表的功能由VHDL程序决定,用QUARTERS II软件编译、仿真和逻辑综合后,下载到FPGA芯片EP2C5T144C8。FPGA工作主频为20 MHz,逻辑综合占用了174个逻辑单元,资源利用率为30%。本文所设计的数字电压表电路板已通过硬件测试,能测量和显示0~5 V的弱电压信号,准确度为0.02 V,显示精确度为0.1

文档

数字电压表设计论文

引言   随着计算机与微电子技术的发展,电子设计自动化EDA领域已成为电子技术发展的主体,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流发展的引擎,就是日趋进步和完善的FPGA设计技术。而电子设计自动化,是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科,其中EDA设计语言中的VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。该数字电压表的电路设计,正是用VHDL语言完成的。此次设计主要应用美国
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top