现代电子综合报告.doc_第1页
现代电子综合报告.doc_第2页
现代电子综合报告.doc_第3页
现代电子综合报告.doc_第4页
现代电子综合报告.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

目 录摘 要2一 设计任务及要求3二 设计方案31 方案的选择与论述31.1方案一31.2方案二32. 方案确定3二 设计原理及理论计算41 总体设计原理 2 模块设计原理2.1 分频模块42.2 计时模块4 2.2.1秒计数模块11 2.2.2 分计数模块13 2.2.3小时计数模块模块132.3 显示模块132.4 去抖模块132.5 控制模块13三 系统仿真与测试分析143.1系统调试 3.1.1 硬件调试 3.1.2 软件调试 3.2模块仿真3.2.1正弦波15仿真波形仿真结果分析实际输出波形输出频率理论值输出频率实际值3.2.2 阶梯波163.2.3 三角波173.2.4 方波波193.2.5递增锯齿波203.1.6 递减锯齿波3.2系统仿真与硬件调试3.2.1波形仿真3.2.2FPGA器件引脚分配四 性能提升22五 设计总结24遇到的问题及解决途径结论六 附录(原理图)26电子钟的设计摘要:随着基于PLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。本文详细介绍EDA课程设计任务数字钟的设计的详细设计过程及结果,并总结出心得体会。本设计所有数字逻辑功能都在CPLD器件上用VHDL语言实现。此电子钟可以进行正常的时、分、秒计时功能,分别由六个数码管显示24小时、60分钟、60秒的计数器显示。还可以通过按键进行时和分的校正以及秒清零。本设计通过QuartusII采用自底向上实现电子钟的设计、下载和调试。这样设计具有体积小、设计周期短(设计过程中即可实现时序仿真)、调试方便、故障率低、修改升级容易等特点。关键词:EDA技术,VHDL语言,电子钟,QuartusII一、设计任务及要求:1.进行正常的时、分、秒计时功能,分别由六个数码管显示24小时、60分钟、60秒的计数器显示;2. 利用实验系统上的按键实现“校时”、“校分”功能:(1) 按下“SA”键时,计数器快速递增,按24小时循环,进行时校正;(2) 按下“SB”键时,计分器快速递增,按60分循环,进行分校正;(3) 按下“SC”键时,秒清零,进行秒校正;3.其他二、设计方案1.方案的选择与论述方案一:完全采用文本输入的方法设计,可以分为个两大模块来实现。顶层文件实现多波形输出功能,然后通过D/A转换器将数字量装换成模拟波形输出。方案二:完全采用原理图和文本输入的方法设计,模块I原理图是整个程序的核心,它实现整个系统的全部逻辑功能;模块II是通过各个子模块实现递增锯齿波、递减锯齿波、三角波、方波和正弦波程序送出相应的数据,模块III产生数据选择器片选信号。然后利用顶层文件将它们综合起来,实现功能。2. 方案的确定由以上两种方案分析,方案一由于采用了文本输入的方法,各部分内部结构相对复杂,不易修改,如果一处出错,设计不当,将导致结果不能正常输出波形。使测频结果精确度以及效率降低。方案二采用了文本和原理图两种方法进行设计,由于程序各个模块独立,思路清晰,比较简单,容易及时修改,验证和仿真;简单易行。实现了多功能信号发生器各个波形的成功输出。综合以上原因,从实现难易,误差大小以及最终结果等各方面考虑,选择方案二来完成该实验。二、设计原理1.总体设计原理 数字计时器是由分频电路、计时电路、控制电路、译码显示电路等几部分组成的。其中,分频电路将试验箱提供的50Mhz的频率分成各模块电路所需要的频率;计时电路完成计时功能,并与动态显示电路相连,将时间信息显示在七段数码管上;控制电路完成按键对时、分快速校正和秒清零。系统可为一下模块:1. 分频模块2. 计时模块a) 秒计数模块b) 分计数模块c) 小时时计数模块3. 显示模块4. 去抖模块5. 控制模块2.模块设计原理2.1 分频模块分频器就是对较高频率的信号进行分频,得到较低频率的信号。常见的分频器有二进制分频器、偶数分频器、奇数分频器、占空比可调的分频器和小数分频器。分频系数(倍率)rate=fin / foutrate=even(偶数),占空比50%此电路采用偶数分频器,偶数分频器设计原理:定义一个计数器对输入时钟进行计数,在计数的前一半时间里,输出高电平,在计数的后一半时间里,输出低电平,这样输出的信号就是占空比为50%的偶数分频信号。例如,6分频,计数值为02输出高电平,计数值为35输出低电平。以50000000为例,程序代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity clk1Hz isgeneric(N: integer:=50000000); -rate=N,N是偶数port(clk: in std_logic;clk1Hz: out std_logic);end clk1Hz;architecture behave of clk1Hz is signal cnt: integer range 0 to N/2-1; signal temp: std_logic;Begin process(clk) -根据计数值,控制输出时钟脉冲的高、低电平 begin if(clkevent and clk=1) then-秒冲上升沿 if(cnt=N/2-1) then cnt = 0; temp = NOT temp;-翻转 else cnt = cnt+1; end if; end if; end process; clk1Hz = temp;end behave;2.2计时模块2.2.1秒计数模块Clk为输入脉冲信号,adjust为按键校正信号,carry为进位信号,qcn为输出数值。代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miao isport(clk:in std_logic;adjust: in std_logic:=1;初始信号为1,即按键没有按下carry: out std_logic;-输出/进位信号qcn: buffer integer range 0 to 59:=0-输出范围为0-59);end miao;architecture behave of miao issignal temp:integer range 0 to 59;signal car:std_logic; begin process(clk,adjust) begin if(adjust=0) then-秒的调整信号按下时,输出为0,即复位temp = 0;- elsif(clkevent and clk=1) then-按键没有按下,时钟上升沿时 if(qcn=59) then-秒计数到59时自动清零temp = 0;car = 1;-进位信号 elsetemp = temp+1;-没有到59时继续加一计数car = 0;-进位信号为0 end if; end if; qcn = temp;-输出计数结果 carry = car;-输出进位信号 end process; end behave;2.2.2分计数模块use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fen isport(clk:in std_logic;carry: out std_logic;qcn: buffer integer range 0 to 59:=0;adjust:in std_logic:=1);end fen;architecture behave of fen issignal temp:integer range 0 to 59;signal car:std_logic; begin process(clk) begin if(clkevent and clk=1) then if(qcn=59) thentemp = 0;car = 1; elsetemp = temp+1;car = 0; end if; end if; qcn = temp; if(adjust = 1)thencarry = car;end if; end process; end behave;2.2.3小时时计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xiaoshi isport(clk:in std_logic;qcn: buffer integer range 0 to 59:=0);end xiaoshi;architecture behave of xiaoshi issignal temp:integer range 0 to 23; begin process(clk) begin if(clkevent and clk=1)then if(qcn=23) thentemp = 0; elsetemp = temp+1; end if; end if; qcn = temp; end process; end behave;3显示模块3.3.1动态扫描电路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity display2 is port(clk1kHz: in std_logic;qout: out integer range 0 to 7);end display2;architecture behave of display2 issignal temp:integer range 0 to 7 :=0;Beginprocess(clk1kHz)beginif(clk1kHzevent and clk1kHz = 1) thenif(temp=7) thentemp = 0;elsetemp = temp + 1;end if;end if;qout scan = 11111110;data scan = 11111101;data scan = 11111011;data scan = 11110111;data scan = 11101111;data scan = 11011111;data scan = 10111111;data scan = 01111111;data scan = 11111111;data seg seg seg seg seg seg seg seg seg seg seg seg = 00111111; end case; end process; end behave;3.3.3数码管分位显示电路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fenwei isport(num: in integer range 0 to 59;numshi: out integer range 0 to 9;numge: out integer range 0 to 9);end fenwei;architecture behave of fenwei isbeginprocess(num)beginnumge = num mod 10;numshi qout = 1;if(qin = 0) thencurrent = S1;elsecurrent qout = 1;if(qin = 0) thencurrent = S2;elsecurrent qout = 0;if(qin = 0) thencurrent = S2;elsecurrent qout = 1;current = S0;end case;end if;end process;end behave;5. 控制模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity opt isport(pin: in std_logic;dat0,dat1:in std_logic;pout:out std_logic);end opt;architecture behave of opt isbeginprocess(pin,dat0,dat1)beginif(pin=0) then pout=dat0 ;else pout=dat1 ; end if;end process;end behave;三 、系统仿真与系统调试(一)系统调试1.软件调试首先对波形的各个模块进行编译和波形仿真,再进行系统编译仿真,排除语法错误和逻辑错误。2.硬件调试根据硬件实际情况,分配好引脚。连接实验箱并将输出接到示波器上观察波形。示波器未出现波形,先将示波器输入接校准信号,排除示波器的错误。考虑到硬件系统反应速度,此时需等待示波器上的波形稳定后才可判断为系统输出波形,不能把示波器上的噪音信号当成输出信号。排除完硬件错误之后,再逐个模块的排除软件问题。(二)波形仿真1.正弦波模块仿真波形:仿真结果分析:在这个仿真图中,可以看到当clk1000为高电平的时候,出现一个clk时钟脉冲的上升沿开始计数,图中的数据将根据列表中所查到的数据按照一定的规律显示。如图所示,波形将出现正弦波的规律变化。实际输出波形:波形分析:输出频率理论值:输出频率实际值:977HZ2. 阶梯波模块仿真波形:仿真结果分析:在这个仿真图中,可以看到当clk1000为高电平的时候,出现一个clk时钟脉冲的上升沿开始以阶梯状计数,当增到255时等下一个脉冲来时将又跳回0,然后每来一个脉冲就加一阶梯值,直到加到255,依次重复,如图所示,波形将会以递增锯齿波的规律变化。实际输出波形:输出频率理论值:输出频率实际值:1953HZ3. 三角波仿真波形:仿真结果分析:在这个仿真图中,可以看到当clk1000为高电平的时候,出现一个clk时钟脉冲的上升沿开始计数,从0增到1,然后每来一个脉冲就增一次,直到增到255,等下一个脉冲到临时将有从255减到254,然后每来一个脉冲就减一次,直到减到0,依次重复,如图所示,波形将出现三角波的规律变化。实际输出波形输出频率理论值:输出频率实际值:122HZ4. 方波仿真波形仿真结果分析:在这个仿真波形图中,可以看到当clk1000为高电平的时候,出现一个clk时钟脉冲的上升沿计数,从0跳到255,等下一个脉冲来临时有从255跳到0,依次重复,如图所示,波形将以方波的规律变化。实际输出波形:输出频率理论值:输出频率实际值:961HZ5. 递减波 仿真波形仿真结果分析: 在这个仿真图中,可以看到当clk1000为高电平的时候,出现一个clk时钟脉冲的上升沿开始计数,当减到0时等下一个脉冲来临时将有跳回到255,然后依次再减到0,如图所示,波形将会以递减锯齿波的规律变化。实际输出波形输出频率理论值:输出频率实际值:244HZ6. 递增波仿真波形仿真结果分析:在这个仿真图中,可以看到当clk1000为高电平的时候,出现一个clk时钟脉冲的上升沿开始计数,当增到255时等下一个脉冲来时将又跳回0,然后每来一个脉冲就加一次,直到加到255,依次重复,如图所示,波形将会以递增锯齿波的规律变化。实际输出波形输出频率理论值:输出频率实际值:244HZ(三)FPGA器件引脚分配4、 性能提升1. 选择波形模块由于实验室的试验箱布局的局限性,无法设计自动的波形选择模块。若有硬件条件,可以设计几个按键实现对波形的选择。2. 谐波发生器采用与基波产生的同样原理,编程产生三种波形的谐波,所不同的是一个波形的周期采样的点数不同,如果基波采样点为63个,谐波采样点数则为21个,其每点的电压值为255*(sin360/60+sin360/20)(V),在对其进行循环扫描即可实现基波与谐波的线性叠加。3. 滤波电路设计D/A输出后,通过滤波电路、输出缓冲电路,使信号平滑且具有负载能力。5、 设计总结(1) 遇到的问题及解决途径(1)系统编译时完全通过,但是在下载到实验箱里时会提示出现数据类型不匹配。经检测我们发

温馨提示

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

评论

0/150

提交评论