EDA课程设计数字电压表设计.doc

上传人:小飞机 文档编号:3980953 上传时间:2023-03-30 格式:DOC 页数:24 大小:805KB
返回 下载 相关 举报
EDA课程设计数字电压表设计.doc_第1页
第1页 / 共24页
EDA课程设计数字电压表设计.doc_第2页
第2页 / 共24页
EDA课程设计数字电压表设计.doc_第3页
第3页 / 共24页
EDA课程设计数字电压表设计.doc_第4页
第4页 / 共24页
EDA课程设计数字电压表设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《EDA课程设计数字电压表设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计数字电压表设计.doc(24页珍藏版)》请在三一办公上搜索。

1、电子课程设计数字电压表的设计 学院:xx学院 专业、班级:电子092203 姓名:xx 学号:xxxxxx指导老师:xx2011年12月25日目录目录1一、前言2二、设计任务与要求6三、总体框图6四、选择器件8五、模块功能11六、总体设计电路图20七、总结1,心得222,展望223,致谢23八,参考文献23一、前言课题研究的背景随着信息技术获得了突飞猛进的发展,信息技术渗透了我们生活的几乎全部领域,改变着人类的生存状态和思维模式。而我们的课题所涉及的电子设计自动化(EDA)技术就是在这种时代背景下产生的,并影响巨大。FPGA是新型的可编程逻辑器件,与传统 ASIC 相比,具有设计开发周期短、设

2、计制造成本低、开发工具先进 等优点,特别适合于产品的样品开发和小批量生产。传统的数字电压表多以单片机为控制核心,芯片集成度不高,系统连线复杂,难以小型化,尤其在产品需求发生变化时,不得不重新布版、调试,增加了投资风险和成本。而采用 FPGA 进行产品开发,可以灵活地进行模块配置,大大缩短了开发周期,也有利于数字电压表向小型化、集成化的方向发展。 随着电子技术的发展,当前数字电子系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。推动该潮流发展的引擎就是日趋进步和完善的ASIC设计技术。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能的要求,自上而下的完成相应的描述、综合、优化

3、、仿真与验证,直接生成器件。上述设计过程除了系统行为和功能描述以外,其余所有的设计几乎都可以用计算机来自动完成,也就说做到了电子设计自动化(EDA)这样做可以大大的缩短系统的设计周期,以适应当今品种多、批量小的电子市场的需求伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,己经广泛应用于模拟与数子电路系统等许多领域。目前电子技术的发展主要体现在EDA领域,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。电子设计自动化是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科。其中EDA设计语言中的VHDL语言是一种快速的电路设计

4、工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。本电压表的电路设计正是用VHDL语言完成的。此次设计主要应用的软件是美国ALTERA公司自行设计的Quartus II。FPGA设计具有以下优点:(1)硬件设计软件化这是FPGA开发的最大优势。传统硬件电路设计先要进行功能设计,然后进行电路板级设计并做称电路板后进行调试,如果电路中有什么错误,整个电路板都将作废,这是很不经济的。FPGA的开发在功能层面上可以完全脱离硬件而在EDA软件上做软仿真。当功能确定无误后可以进行硬件电路板的设计。最后将设计好的,由EDA软件生成的烧写文件下载到配置设备中去,进行在线调试,如果这时的结果与要求

5、不一致,可以立即更改设计软件,并再次烧写到配置芯片中而不必改动外接硬件电路。(2)高度集成化,高工作频率一般的FPGA内部都集成有上百万的逻辑门,可以在其内部规划出多个与传统小规模集成器件功能相当的模块。这样将多个传统器件集成在同一芯片内部的方法不但可以改进电路板的规模,还可以减少PCB布线的工作。由于各个模块都是集成在FPGA芯片内部,这就很大程度地解决了信号的干扰问题,使得FPGA的工作频率可以大幅度的提高。另外,一般的FPGA内部都有PLL倍频的时钟,这进一步解决了电磁干扰和电磁兼容问题。(3)支持多种接口FPGA芯片可支持多种标准的接口电平,可通过EDA开发工具来选定采用什么样的接口标

6、准,包括常用的TTL和差分输入等。这便于后端各种不同接口电路的匹配。FPGA设计流程 可编程逻辑器件的设计是利用EDA开发软件和编程土具对器件开发的过程。它包括设计准备、设计输入、功能仿真、设计处理、时序仿真和器件编程及测试等七个步骤。1设计准备 在系统设计之前,首先要进行方案论证、系统设计和器件选择等准备工作。一般采用自上而下的设计方法,也可采用传统的自下而上的设计方法。2设计输入设计输入将所设计的系统或电路以开发软件要求的某种形式表示出来,并送入计算机的过程称为设计输入。设计输入通常有以下集中形式: 1)原理图输入方式 2)硬件描述语言输入方式 3)波形输入方式3功能仿真功能仿真也叫做前仿

7、真。用户所设计的电路必须在编译之前进行逻辑功能验证,此时的仿真没有延时信息,对于初步的功能检测非常方便。仿真中如发现错误,则返回设计输入中修改逻辑设计。4设计处理设计处理是器件设计中的核心环节。在设计处理过程中,编译软件将对设计输入文件进行逻辑化简、综合优化和适配,最后产生编程用的编程文件。主要有: 1) 语法检查和设计规则检查2)逻辑优化和综合3)适配和分割4)布局和布线5时序仿真时序仿真又称后仿真或延时仿真。由于不同器件的内部延时不一样,不同的布局布线方案也给延时造成不同的影响,因此在设计处理以后,对系统和各模块进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竟争冒险等是非常有

8、必要的。6器件编程测试时序仿真完成后,软件就可产生供器件编程使用的数据文件。VHDL语言描述硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述,结构描述,数据流描述的语言.目前,利用硬件描述语言可以进行数字电子系统的设计.随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来.有些HDL成为IEEE标准,但大部分是企业标准.VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司.可谓百家争鸣,百花齐放.这些不同的语言传播到国内,

9、同样也引起了不同的影响.在我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言.这两种语言已成为IEEE标准语言。VHDL语言的设计流程采用VHDL语言设计硬件电路系统的设计流程一般可以分为以下几个步骤。硬件电路系统设计要求的定义。编写描述硬件电路系统功能的VHDL语言程序。VHDL语言程序的模拟。VHDL语言的综合、优化和布局布线。布局布线后的设计模拟。器件的编程。设计人员在从事硬件电路系统的合计过程中,编写VHDL语言程序之前必须对硬件电路系统的设计目的和设计要求有一个非常明确的认识才行。Quartus II开发平台简介 Quartus II是Altera提供的FP

10、GA/CPLD开发集成环境,Altera是世界最大可编程逻辑器件供应商之一。Quartus II在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plus II的更新换代产品,其界面友好,使用便捷。在Quartus II上可以完成设计输入、HDL综合、布线布局(适配)、仿真和下载和硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。本次所设计的电压表的测量范围是05V,精度为0.01V。此电压表的设计特点为:通过软件编程下载到硬件实现,设计周期短,开发效率高。关键字:电子设计自动化(EDA);FPGA;VHDL;A/D;

11、数字电压表。二、设计任务与要求要求利用FPGA控制模块数转换器对外部输入的模拟信号进行采样,获取当前电压值,并在数码管上显示。传统的数字电压表设计通常以大规模ASIC(专用集成电路)为核心器件,辅以少量中规模集成电路及显示器件构成。ASIC完成从模拟量的输入到数字量的输出,是数字电压表的心脏,这种电压表的设计简单、精确度高,但是这种设计方法由于采用了ASIC器件使得的它欠缺灵活性,其系统功能固定,难以更新扩展,。后来发展起来的微处理器(单片机)控制通用A/D转换器件的数字电压表的设计的灵活性有所提高,系统功能的扩展性变得简单,但是由于微处理机的引脚数量有限,其控制转换速度和灵活性还是不能满足日

12、益发展的电子工业的需求。而应以EDA技术及FPGA,其集成度高、速度快、性能十分可靠、用户可自由编程且编程语言通俗易懂、系统工程扩展非常方便。采用FPGA芯片控制通用A/D转换器可是速度、灵活性大大优于微处理器和通用A/D转换器构成的数字电压表。a,能够实现一个通道的采样控制;b,产生ADC0809工作所需的各种控制信号;c,计算转换后的数字电压信号,并以BCD码方式表示。三、 总体框图方案一:本利用ADC0809作为电压采样端口,FPGA作为系统的核心器件,用LED进行数码显示,把读取的8位二进制数据转换成便利于输出3位十进制BCD码送给数码管。采用FPGA芯片作为系统的核心器件,负责ADC

13、0809的A/D转换的启动、地址锁存、输入通道的选择、数据的读取。同时,把读取的8位二进制数据转换成便于输出3位十进制的BCD码送给数码管,以显示当前测量电压值。这些工作由ADC0809转换控制模块、数据转换模块、译码模块完成。图1图2方案二:基于VHDL语言的系统设计是采用自顶向下的设计方法,将系统划分为多个功能模块,然后再逐个实现各个模块的功能,最终把他们组合在一起,形成一个大的系统。本系统共分为6个模块,分别为时钟分频(div_f)、数据采集控制(cs_control)、数据串转并(chuan2bing)、显示数值计算(data_calculate)、数码管扫描(led_select)、

14、显示译码(led_translate)。在设计中,主要采用分模块的方式,先实现各个模块,然后组成整个系统。主要分为如下几个模块:时钟分频(div_f)、数据采集控制(cs_control)、数据串转并(chuan2bing)、显示数值计算(data_calculate)、数码管扫描(led_select)、显示译码(led_translate)。其中时钟分频主要用计数器实现,采样数据暂存于一寄存器。利用TLC549就可以采集外部模拟电压的大小并转换成数字信号,通过串行输入到控制器,经过控制器对数据处理如计算成实际电压、保留三位小数,再经过控制器设计的数码管控制模块控制四个数码管显示处理过后的数

15、据,就实现了将外部电压值显示在数码管的功能,这样就实现了数字电压表的显示。这里我们采用方案一。四、选择器件(1)A/D转换器ADC0809控制电路编程说明利用ADC0809作为电压采样端口,FPGA作为系统的核心器件,用LED进行数码显示,把读取的8位二进制数据转换成便于输出3位十进制BCD码送给数码管。由FPGA设计的ASIC芯片:一方面产生ADC0809的控制信号,控制ADC0809实现05v的模拟电压到8位数字量DB0DB7的变换;另一方面将读入的数字量转化成电压工程值,并转换为3位BCD码的七段数字显示字符码送到LED数码管进行显示。FPGA构成的ASIC芯片中包括三部分电路:1, 用

16、有限状态机设计的A/D转换控制电路;2, 将8位数字量DB0DB7转换为3位BCD码的电压值的转换电路;3, 3位LED显示器的译码显示电路。所用芯片ADC0809的技术资料:1, 工作电压:+5v,即VCC=+5v。采用逐次逼近的方法实现A/D转换。2, 模拟输入电压范围:0+5v。3, 分辨率:8位。2, 转换时间:100us。3, 转换误差:1LSB。参考电压:2.5v。 图3,ADC0809控制器的状态转换图 图4外部特性(引脚功能) ADC0809芯片有28条引脚,采用双列直插式封装,如图1323所示。下面说明各引脚功能。 IN0IN7:8路模拟量输入端。2-12-8:8位数字量输出

17、端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。 START: AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一5V。 GND:

18、地。ADC0809芯片的控制方法及转换过程:控制ADC0809动作的信号有:ALE,START,OE,EOC。ADC0809的动作大致分为5个步骤区间:S0,S1,S2,S3,S4。每个步骤区间的动作方式如下:步骤S0:对ADC0809进行复位操作;步骤S1:由FPGA发出信号要求ADC0809进行A/D转换;步骤S2:转换后,转换完毕后的EOC将高电位降到低电位,而转换时间100us;步骤S3:转换结束,有FPGA发出读命令;步骤S4:有FPGA读取DB0DB7上的数字转换资料,并锁存数据。(2)将采样数字量转换成3位BCD码编程说明8位数字量BD0BD7如何变成3位BCD码?用FPGA实现

19、乘除法是很耗资源的,因而,下面采用查表方法求取BD0BD7与模拟输入电压05v的对应关系。编一个查表程序,对上述电压进行BCD编码,然后根据对应的4位BCD码相加的结果决定是否进位,从而得到待处理数据的BCD码。例如:从AD0809上取得的数据位“11011110”,“1101”对应的电压值位4.16v,其对应的BCD编码为“010000010110”,“1110”对应的电压值为0.28v,其对应的BCD编码为“000000101000”。低4位相加为“1110”,大于9,加6将其调整为BCD码,其值为0100,并且向前有一进位。四位相加的结果为0011,由于低位有进位,因此最终结果为0100

20、,。高四位的结果为0100.三位合计值为4.44v,与4.16+0.28的结果一样。表中将8位数字量分为高4位HB和低4位LB,这样每个4位码的编程都是从00001111的16组码,由于5V被8位二进制码最大值除得到的结果是0.02v,即数字量每增大1对应模拟电压增大0.02v。 表中ADC0809采样的参考电压值是2.56v。16进制2进制高4位电压低4位电压0 0000 0.00 0.001 0001 0.32 0.022 0010 0.64 0.04 3 0011 0.96 0.064 0100 1.28 0.085 0101 1.60 0.106 0110 1.92 0.127 011

21、1 2.24 0.148 1000 2.56 0.16 9 1001 2.88 0.18A 1010 3.20 0.20B 1011 3.52 0.22C 1100 3.84 0.24D 1101 4.16 0.26E 1110 4.48 0.28F 1111 4.80 0.30 图52, 从表中得到的模拟电压值必须用BCD码表示才能便于用LED数码管显示。 例如,ADC0809的DB0DB7是89H(10001001B),高4位HB是1000,低4位LB是1001,表中查询到高四位1000对应的2.56v,写成BCD码是0010,0101,0110;低四位1001对应的是0.18v,写成BC

22、D码是0000,0001,1000.其和是2.74v,求的BCD码的运算如下: HB 0010 0101 0110 LB 0000 0001 1000 +进位 1 0110 结果 0010 0111 0100(3)译码,显示电路编程说明1, 译码、显示电路可以采用动态扫描显示和静态显示两种方法。这里采用动态显示。2, 动态显示的字位更新采用一个计数器频率约为125Hz的信号轮流接通各位数码管的位线,并对显示字符进行扫描,应保证显示不闪烁。(4)EP1C12Q240C8FPGA EP1C12Q240C8开发板是基于FPGA的硬件描述语言EDA和软内核嵌入式系统的SOPC开发平台。系统采用多层PC

23、B板设计,完善的电源和时钟设计,性能稳定可靠、结构紧凑美观。系统采用主流FPGA构建平台,片内资源丰富,板载器件多、周边接口多、可扩展性强。优化设计使系统调试方便,配置容易。配备丰富的例程有利于FPGA和SOPC的学习、快速入门与提高。FPGA/SOPC开发平台是电子、信息类专业学生学习FPGA和SOPC的理想良师益友,是各大专院校教学科研的良好工具,也可用于科研机构研发特色新产品。五、功能模块1,ADC0809(ad)功能:利用ADC0809作为电压采样端口,进行A/D转换。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic

24、_unsigned.all;entity ad isport(clk:in std_logic; eoc:in std_logic; datain:in std_logic_vector(7 downto 0); dataout:out std_logic_vector(7 downto 0); oe:out std_logic; ale:out std_logic; start:out std_logic; add:out std_logic_vector(2 downto 0);end ad;architecture one of ad istype states is(st0,st1,s

25、t2,st3,st4);signal current_state,next_state:states:=st0;signal temp:std_logic_vector(7 downto 0);signal lock:std_logic;begin add=001; dataoutale=0;start=0;oe=0;lock=0; next_stateale=1;start=1;oe=0;lock=0; next_stateale=0;start=0;oe=0;lock=0; if (eoc=1)then next_state=st3; else next_stateale=0;start=

26、0;oe=1;lock=1; next_stateale=0;start=0;oe=1;lock=1; next_state=st0; end case; end process;process(clk)begin if(clk event and clk=1) then current_state=next_state; end if;end process;process(lock)begin if lock=1 and lock event then temp=datain; end if; end process;end architecture one;其生成项目符号: 图6该模块时

27、序仿真图如下: 图7如图:Datain、EOC、CLK:输入端Dataut、OE、ALE、START、ADD:输出端当输入时钟信号时,八位数字量在EOC有高电位变为低电位时,标志着A/D转换结束。2, Dataprocess功能:将采样数字量转换成3位BCD码。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dataprocess isport(b_datain:in std_logic_vector(7 downto 0); b_dataout:out std_logic_vect

28、or(11 downto 0);end dataprocess;architecture one of dataprocess issignal middata:std_logic_vector(7 downto 0);signal vdata:std_logic_vector(11 downto 0);signal hdata:std_logic_vector(11 downto 0);signal ldata:std_logic_vector(11 downto 0);signal c0:std_logic;signal c1:std_logic;signal c2:std_logic;b

29、egin middata=b_datain; hdata=010010000000when middata(7 downto 4)=1111else 010001001000when middata(7 downto 4)=1110else 010000010110when middata(7 downto 4)=1101else 001110000100when middata(7 downto 4)=1100else 001101010010when middata(7 downto 4)=1011else 001100100000when middata(7 downto 4)=1010

30、else 001010001000when middata(7 downto 4)=1001else 001001010110when middata(7 downto 4)=1000else 001000100100when middata(7 downto 4)=0111else 000110010010when middata(7 downto 4)=0110else 000101100000when middata(7 downto 4)=0101else 000100101000when middata(7 downto 4)=0100else 000010010110when mi

31、ddata(7 downto 4)=0011else 000001100100when middata(7 downto 4)=0010else 000000110010when middata(7 downto 4)=0001else 000000000000;ldata=000000110000when middata(3 downto 0)=1111else 000000101000when middata(3 downto 0)=1110else 000000100100when middata(3 downto 0)=1101else 000000100100when middata

32、(3 downto 0)=1100else 000000100010when middata(3 downto 0)=1011else 000000100000when middata(3 downto 0)=1010else 000000011000when middata(3 downto 0)=1001else 000000010110when middata(3 downto 0)=1000else 000000010100when middata(3 downto 0)=0111else 000000010010when middata(3 downto 0)=0110else 00

33、0000010000when middata(3 downto 0)=0101else 000000001000when middata(3 downto 0)=0100else 000000000110when middata(3 downto 0)=0011else 000000000100when middata(3 downto 0)=0010else 000000000010when middata(3 downto 0)=0001else 000000000000;c001001 else 0;c101001 else 0;c201001 else 0;vdata(3 downto

34、 0)=hdata(3 downto 0)+ldata(3 downto 0)+0110 when c0=1 elsehdata(3 downto 0)+ldata(3 downto 0);vdata(7 downto 4)=hdata(7 downto 4)+ldata(7 downto 4)+0111 when c1=1 and c0=1 elsehdata(7 downto 4)+ldata(7 downto 4)+0110 when c1=1 and c0=0else hdata(7 downto 4)+ldata(7 downto 4)+0001 when c1=0 and c0=1

35、else hdata(7 downto 4)+ldata(7 downto 4);vdata(11 downto 8)=hdata(11 downto 8)+ldata(11 downto 8)+0111 when c2=1 and c1=1 elsehdata(11 downto 8)+ldata(11 downto 8)+0110 when c2=1 and c1=0else hdata(11 downto 8)+ldata(11 downto 8)+0001 when c2=0 and c1=1else hdata(11 downto 8)+ldata(11 downto 8);b_da

36、taout=vdata;end architecture one;其生成项目符号: 图8该模块时序仿真图如下:图9如图:B_Datain:输入, B_Dataout:输出。将8位数字量转化为3位BCD码图中Datain“11011110”,“1101”对应的电压值位4.16v,其对应的BCD编码为“010000010110”,“1110”对应的电压值为0.28v,其对应的BCD编码为“000000101000”。低4位相加为“1110”,大于9,加6将其调整为BCD码,其值为0100,并且向前有一进位。四位相加的结果为0011,由于低位有进位,因此最终结果为0100,。高四位的结果为0100.

37、三位合计值为4.44v,与4.16+0.28的结果一样。3, Leddisplay功能:用LED进行数码显示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity leddisplay isport(bcdcode:in std_logic_vector(11 downto 0); ck:in std_logic; led_dp:out std_logic; seg:out std_logic_vector(6 downto 0);

38、 sel:out std_logic_vector(1 downto 0);end leddisplay;architecture one of leddisplay issignal num:std_logic_vector(3 downto 0);signal count:std_logic_vector(1 downto 0);begin process(ck) begin if ck event and ck=1 then count=count+1; end if; end process;sel=count; num=bcdcode(3 downto 0) when count=0

39、 else bcdcode(7 downto 4) when count=1 else bcdcode(11 downto 8) when count=2 else 0000;led_dp=1 when count=2 else 0;seg=0111111 when num =0 else 0000110 when num =1 else 1011011 when num =2 else 1001111 when num =3 else 1100110 when num =4 else 1101101 when num =5 else 1111101 when num =6 else 0000

40、111 when num =7 else 1111111 when num =8 else 1101111 when num =9 else 1110111 when num =10 else 1111100 when num =11 else 0111001 when num =12 else 1011110 when num =13 else 1111001 when num =14 else 1110001 when num =15 else 0000000;end one;其生成项目符号为: 图10该模块时序仿真图如下: 图11如图:Bcdcode、CK:输入Led_dp、seg、sel:输出输出随输入发生相应的变化4,Decoder2_to_4_tlibrary ieee;use ieee.std_logic_1164.all;entity decoder2_to_4_t isport(sel:in std_logic_vector(1 downto 0); sel00,sel01,sel10,sel11:out std_logic);end entity decoder2_to_4_t;architecture dec of decoder2_t

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号