河北科技大学EDA课程设计报告-数字电压表设计_第1页
河北科技大学EDA课程设计报告-数字电压表设计_第2页
河北科技大学EDA课程设计报告-数字电压表设计_第3页
河北科技大学EDA课程设计报告-数字电压表设计_第4页
河北科技大学EDA课程设计报告-数字电压表设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、-. z科技大学课程设计报告 学生:学 号:专业班级: 电科141 课程名称: EDA技术课程设计 学年学期: 2021 2021 学年第 1 学期 指导教师: 武瑞红 2 0 17 年 12 月课程设计成绩评定表学生学 号成绩专业班级电科141起止时间设计题目数字电压表的设计指导教师评语指导教师: 年 月 日目录TOC o 1-3 u 一、课程设计目的1二、课程设计原理1一A/D转换器ADC0809控制电路2二译码,显示电路4三、课程设计容4一 ADC0809ad5二 Dataprocess7三Leddisplay9(四原理图设计 PAGEREF _Toc15827 10五引脚锁定 PAGE

2、REF _Toc23283 11六 下载测试 PAGEREF _Toc6811 11四、 课程设计结果 PAGEREF _Toc6645 11五、 课程设计心得 PAGEREF _Toc579612-. z一、课程设计目的1、加深对EDA课程的学习;2、熟练掌握PLD的根本知识、根本构造、工作原理及其设计过程;3、加深对根本EDA工具软件的使用及用VHDL进展数字电子系统描述的掌握;4、学会实际动手设计数字电路,熟练掌握VHDL语言的实际应用方法;5、了解FPGA的根本构成,利用所学培养用EDA解决实际问题的初步能力。二、课程设计原理利用ADC0809作为电压采样端口,FPGA作为系统的核心器

3、件,用LED进展数码显示,把读取的8位二进制数据转换成便利于输出3位十进制BCD码送给数管。采用FPGA芯片作为系统的核心器件,负责ADC0809的A/D转换的启动、地址锁存、输入通道的选择、数据的读取。同时,把读取的8位二进制数据转换成便于输出3位十进制的BCD码送给数码管,以显示当前测量电压值。这些工作由ADC0809转换控制模块、数据转换模块、译码模块完成。时钟信号start A/D转换器A/D转换控制模块数据转换模块译码 模块aleaddoeeoc数据输入一A/D转换器ADC0809控制电路利用ADC0809作为电压采样端口,FPGA作为系统的核心器件,用LED进展数码显示,把读取的8

4、位二进制数据转换成便于输出3位十进制BCD码送给数码管。由FPGA设计的ASIC芯片:一方面产生ADC0809的控制信号,控制ADC0809实现05v的模拟电压到8位数字量DB0DB7的变换;另一方面将读入的数字量转化成电压工程值,并转换为3位BCD码的七段数字显示字符码送到LED数码管进展显示。FPGA构成的ASIC芯片中包括三局部电路:1 用有限状态机设计的A/D转换控制电路;2 将8位数字量DB0DB7转换为3位BCD码的电压值的转换电路;3 3位LED显示器的译码显示电路EOC=1 st0st1st2st3st40/00000/1100EOC=0EOC/ALE/START/OE/LOC

5、K0/00000/0011ADC0809芯片的控制方法及转换过程。控制ADC0809动作的信号有:ALE,START,OE,EOC。首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比拟器。START上升沿将逐次逼近存放器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进展。直到A/D转换完成,EOC变为高电平,指示A/D转换完毕,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门翻开,转换结果的数字量输出到数据总线上。 转换数据的传送 A/D转换后得到的数据应及时传送给单片机进展处理。数据传送的关键问题是

6、如何确认A/D转换的完成,因为只有确认完成后,才能进展传送。为此可采用下述三种方式。1定时传送方式 对于一种A/D转换器来说,转换时间作为一项技术指标是的和固定的。例如ADC0809转换时间为128s,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进展数据传送。 2查询方式 A/D转换芯片由说明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进展数据传送。 3中断方式 把说明转换完成的状态信号EOC作为中断请求信号,以中断

7、方式进展数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进展数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机承受18。ADC0809的动作大致分为5个步骤区间:S0,S1,S2,S3,S4。每个步骤区间的动作方式如下:步骤S0:对ADC0809进展复位操作;步骤S1:由FPGA发出信号要求ADC0809进展A/D转换;步骤S2:转换后,转换完毕后的EOC将高电位降到低电位,而转换时间100us;步骤S3:转换完毕,有FPGA发出读命令;步骤S4:有FPGA读取DB0DB7上的数字转换资料,并锁存数据。二译码,显示电路对多位数字显示采用

8、扫描式显示可以节电,这一点在*些场合很重要。对于*些系统输出的的数据,应用扫描式译码显示,可使电路大为简化。有些系统,比方计算机,*些A/D转换器,是以这样的形式输出数据的:由选通信号控制多路开关,先后送出由高位到低位或由低位到高位一位十进制的BCD码选通信号可用节拍发生器产生。1译码、显示电路可以采用动态扫描显示和静态显示两种方法。这里采用动态显示。2动态显示的字位更新采用一个计数器频率约为125Hz的信号轮流接通各位数码管的位线,并对显示字符进展扫描,应保证显示不闪烁。三、课程设计容在Quartus II中,新建工程,完成以下源程序的输入、转换,并最终以原理图设计的方式完成数字电压表的设计

9、。ADC0809adlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_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

10、(2 downto 0);end ad;architecture one of ad istype states is(st0,st1,st2,st3,st4); signal current_state,ne*t_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;ne*t_stateale=1;start=1;oe=0;lock=0;ne*t_stateale=0;start=0;oe=

11、0;lock=0; if (eoc=1) then ne*t_state=st3;else ne*t_stateale=0;start=0;oe=1;lock=1;ne*t_stateale=0;start=0;oe=1;lock=1;ne*t_state=st0;end case;end process;process(clk)begin if(clk event and clk=1) then current_state=ne*t_state; end if;end process;process(lock)begin if lock=1 and lock event then temp=

12、datain; end if;end process;end one;状态机设计是一类重要的时序电路,是许多逻辑电路的核心部件,是实现高效率、高可靠性逻辑控制的重要途径。尽管状态机的设计理论并没有增加多少新的容,但EDA工具的开展使状态机的设计技术和实现方法有了新的容。一般状态机分类为以下两种:MOORE型状态机:它的输出仅仅取决于现态,与输入无关。MEALY型状态机:它的输出不仅仅取决于现态,还与输入有关。尽管状态机的表达方式和功能不尽一样,但都有相对固定的语句和程序构造。 上述程序中用Case-When语句构成了一个Moore状态机,将信号oe设定为高电位,这样在下一个脉冲信号clk正沿时

13、,才开场读取ADC0809上的数字转换信号。其生成的符号元件原理图如右图所示:调用modelsim进展门级仿真波形结果如下:Datain、EOC、CLK:输入端Dataut、OE、ALE、START、ADD:输出端当输入时钟信号时,八位数字量在EOC有高电位变为低电位时,标志着A/D转换完毕。当oe为上升沿时,在dataout输出对应的datain值。Dataprocesslibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dataprocess isport(b_datain:in s

14、td_logic_vector(7 downto 0); b_dataout:out std_logic_vector(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);sign

15、al c0:std_logic;signal c1,c2:std_logic;begin middata=b_datain; -(1)For A/D Conversion Data High Byte 001110000100when middata(7 downto 4)=1100else 001101010010when middata(7 downto 4)=1011else 001100100000when middata(7 downto 4)=1010else 001010001000when middata(7 downto 4)=1001else 001001010110whe

16、n 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 middata(7 downto 4)=0011else 000001100100when middata(7 downto 4)=00

17、10else 000000110010when middata(7 downto 4)=0001else 000000000000; -For A/D Conversion Data Low Byteldata=000000110000when middata(3 downto 0)=1111else 000000101000when middata(3 downto 0)=1110else 000000100100when middata(3 downto 0)=1101else 000000100100when middata(3 downto 0)=1100else 0000001000

18、10when 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 000000010000when middata(3 downto

19、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;-(3)Check BCD Addition Carryc001001 else 0;c101001 else 0;c201001 else 0;-(4)BCD Addition(3

20、0)vdata(3 downto 0)=hdata(3 downto 0)+ldata(3 downto 0)+0110 when c0=1 elsehdata(3 downto 0)+ldata(3 downto 0);-(5)BCD Addition(74) 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)+ldat

21、a(7 downto 4)+0001 when c1=0 and c0=1else hdata(7 downto 4)+ldata(7 downto 4);-(6)BCD Addition(118)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

22、=0 and c1=1else hdata(11 downto 8)+ldata(11 downto 8);b_dataout=vdata;end one;上述程序(1)、(2)区块分别是高、低4位的电压查表转换,转换结果各是12位的BCD码;程序(3)区块是在BCD码相加前,先行判断那几个4位相加会有几位,并做进位记录;程序)(4)(6)区块分别是由第4位、中4位、高4位作BCD码相加。其生成的符号元件原理图如右图所示:调用ModelSim进展门级仿真波形结果如下:三Leddisplaylibrary ieee;use ieee.std_logic_1164.all;use ieee.std

23、_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); sel:out std_logic_vector(1 downto 0);end leddisplay;architecture one of leddisplay issignal num:std_logic_v

24、ector(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; -(1) num=bcdcode(3 downto 0) when count=0 else bcdcode(7 downto 4) when count=1 else bcdcode(11 downto 8) when count=2 else 0000; -(2)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 0000111 when num =7 else 11

温馨提示

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

评论

0/150

提交评论