EDA课程设计--定时器
eda数字钟的设计课程设计

eda数字钟的设计课程设计一、课程目标知识目标:1. 让学生掌握EDA技术的基本原理和应用;2. 使学生了解数字时钟的工作原理,掌握其设计方法;3. 帮助学生理解数字电路的基本组成,掌握常用数字电路元件的功能和使用方法。
技能目标:1. 培养学生运用EDA软件进行数字电路设计的能力;2. 提高学生动手实践能力,能够独立完成数字钟的搭建和调试;3. 培养学生分析问题和解决问题的能力,学会运用所学知识解决实际工程问题。
情感态度价值观目标:1. 激发学生对电子工程领域的兴趣,培养其探索精神和创新意识;2. 培养学生良好的团队合作精神和沟通能力,学会在团队中发挥个人作用;3. 培养学生具备严谨的科学态度,注重实践操作的安全性和环保意识。
分析课程性质、学生特点和教学要求,本课程旨在通过数字钟的设计与实现,使学生在掌握基本理论知识的基础上,提高实践操作能力和创新设计能力。
课程目标具体、可衡量,便于学生和教师在教学过程中明确预期成果,为后续的教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下三个方面:1. EDA技术基本原理:- EDA软件的使用方法与操作流程;- 常用数字电路元件的原理与功能;- 数字电路设计的基本步骤和技巧。
2. 数字时钟工作原理与设计方法:- 数字时钟的基本组成和各部分功能;- 时钟信号的产生、分频和计数原理;- 数字钟电路图设计及仿真分析。
3. 实践操作与调试:- 数字钟电路的搭建与连接;- 调试过程中故障分析与解决;- 数字钟功能测试与性能优化。
教学内容根据课程目标制定,具有科学性和系统性。
教学大纲明确,教学内容安排和进度如下:1. EDA技术基本原理(2课时)2. 数字时钟工作原理与设计方法(3课时)3. 实践操作与调试(4课时)教学内容与教材章节关联紧密,确保学生能够将所学理论知识与实际操作相结合,提高综合运用能力。
三、教学方法针对本课程的教学目标和学生特点,采用以下多样化的教学方法:1. 讲授法:教师通过PPT、板书等形式,系统讲解EDA技术基本原理、数字时钟工作原理与设计方法等理论知识。
EDA课程设计-基于VHDL语言的定时器设计

基于VHDL语言的定时器设计一、EDA技术简介1. 电子技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。
EDA技术已有30年的发展历程,大致可分为三个阶段。
70年代为计算机辅助设计(CAD)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。
80年代为计算机辅助工程(CAE)阶段。
与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。
CAE的主要功能是:原理图输人,逻辑仿真,电路分析,自动布局布线,PCB 后分析。
90年代为电子系统设计自动化(EDA)阶段。
2. EDA技术的基本特征EDA代表了当今电子技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子技术。
二.VHDL在定时器中的应用传统的定时器硬件连接比较复杂,可靠性差,而且计时时间短,难以满足需要。
本设计采用可编程芯片和VHDL语言进行软硬件设计,不但可使硬件大为简化,而且稳定性也有明显提高。
由于可编程芯片的频率精度可达到50 MHz,因而计时精度很高。
完全可以满足用户三.系统设计1.系统设计框图图12. 减法器既实现11秒倒计时功能library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport (clk,rst,en : in std_logic;cq: out std_logic_vector(3 downto 0);count : out std_logic);end ;Architecture arch of cnt10 isbeginprocess(clk, rst, en)Variable cqi: std_logic_vector(3 downto 0);beginIf rst= '1' then cqi:="1010";Elsif clk'event and clk='1' thenIf en='1' thenIf cqi > "0000" then cqi:=cqi-1;Else cqi:="1010";end if;end if;end if;If cqi= "0000" then count <= '1' ; Else count <= '0';End if;Cq <= cqi;end process;end arch;仿真波形图2.1图2.2如上图可见,当en为高电平,rst为低电平,实现了从10到0的倒数,即11秒倒计时功能。
定时器报告(EDA)

数电设计实验二简单定时器设计一、设计要求:1、定时时间为24秒,按递减方式计时,每隔1秒,定时器减12、设置两个外部控制开关,控制定时器的直接复位、启动计时、暂停/连续计时。
3、当定时器递减计时到零(即定时时间到)时,定时器保持零不变,同时发出报警信号。
4、输入时钟脉冲的频率为1Hz,输出为8421BCD码二、逻辑设计用计数器对1Hz的时钟信号进行计数,其计数值即为定时时间.根据设计要求可知,电路需要输出2组员8421BCD码,计数器初值为24,按递减方式计数,减到0时,输出报警信号,并能控制计数器暂停/连续计数,所以需要设计一个预置初值的带使能控制的递减计数器.三、VHDL程序实现上述功能的V erilog HDL程序如下.module dingshiqi(TimerH,TimerL,Alarm,nRST,nPAUSE,CP);input nRST,nPAUSE,CP;wire nRST,nPAUSE,CP;output[3:0] TimerH,TimerL;reg [3:0] TimerH,TimerL;output Alarm;assign Alarm = ({TimerH,TimerL}==8'h00)&(nRST==1'b1);always @ (posedge CP or negedge nRST or negedge nPAUSE) beginif (~nRST){TimerH,TimerL} <= 8'h24;else if(~nPAUSE){TimerH,TimerL} <= {TimerH,TimerL};else if({TimerH,TimerL}==8'h00)begin {TimerH,TimerL} <= {TimerH,TimerL};end else if(TimerL ==4'h0)begin TimerH <= TimerH-1'b1;TimerL <= 4'h9;end elsebegin Timer<= TimerH;TimerL <= TimerL-1'b1;end endendmoduleHDL描述分为3部分:第一部分定义了电路的输入\输出信号.其输入信号为复位nRST(低电平有效).暂停/连续nPAUSE和时钟CP.输入信号为TimerH(定时器的十位)\TimerL(定时器的个位)和报警Alarm.第二部分用一个连续赋值语句assign说明当计数器递减到目前为止时,输出报警信号(Alarm=1).第三部分用一个过程块always说明计数器的计数\处理操作,计数器的个位和十位均按8421BCD码方式递减计数.四、设计实现1 仿真结果如下图所示2、引脚分配在对程序进行了设计与仿真之后,必须给所设计的程序进行引脚分配,使程序的输入、输出对应到实际芯片的引脚上。
EDA课程设计-基于VHDL语言的定时器设计

基于VHDL语言的定时器设计一、EDA技术简介1. 电子技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。
EDA技术已有30年的发展历程,大致可分为三个阶段。
70年代为计算机辅助设计(CAD)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。
80年代为计算机辅助工程(CAE)阶段。
与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。
CAE的主要功能是:原理图输人,逻辑仿真,电路分析,自动布局布线,PCB后分析。
90年代为电子系统设计自动化(EDA)阶段。
2. EDA技术的基本特征EDA代表了当今电子技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子技术。
2.VHDL在定时器中的应用传统的定时器硬件连接比较复杂,可靠性差,而且计时时间短,难以满足需要。
本设计采用可编程芯片和VHDL 语言进行软硬件设计,不但可使硬件大为简化,而且稳定性也有明显提高。
由于可编程芯片的频率精度可达到50 MHz ,因而计时精度很高。
完全可以满足用户的需要,使用也更为方便。
三 .系统设计1.系统设计框图 图12. 减法器既实现11秒倒计时功能library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport (clk,rst,en : in std_logic;cq: out std_logic_vector(3 downto 0);count : out std_logic);end ;Architecture arch of cnt10 isbeginprocess(clk, rst, en)Variable cqi: std_logic_vector(3 downto 0); 11秒倒计数 译码显示 七段共阴数码管显示 1Hz 时钟信号 分频器1kHz 时钟信号beginIf rst= '1' then cqi:="1010";Elsif clk'event and clk='1' then If en='1' thenIf cqi > "0000" then cqi:=cqi-1;Else cqi:="1010";end if;end if;end if;If cqi= "0000" then count <= '1' ; Else count <= '0';End if;Cq <= cqi;end process;end arch;仿真波形图2.1图2.2如上图可见,当en为高电平,rst为低电平,实现了从10到0的倒数,即11秒倒计时功能。
EDA整点报时课程设计

EDA整点报时课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握整点报时的原理。
2. 学生能运用所学知识,设计并实现一个简单的整点报时电路。
3. 学生了解时钟信号的基本特性,理解晶振在时钟电路中的作用。
技能目标:1. 学生通过本课程的学习,具备使用EDA软件进行电路设计和仿真的能力。
2. 学生能够运用电子元件搭建整点报时电路,并解决实际操作过程中遇到的问题。
3. 学生能够进行简单的电路调试和优化,提高电路的稳定性和准确性。
情感态度价值观目标:1. 培养学生对电子工程领域的兴趣,激发他们探索未知、勇于创新的科学精神。
2. 学生通过团队协作完成课程任务,培养合作意识,提高沟通能力。
3. 学生在课程实践中,体验到学以致用的成就感,增强自信心。
课程性质:本课程为实践性较强的课程,结合理论教学和实际操作,旨在培养学生运用EDA技术解决实际问题的能力。
学生特点:学生具备一定的电子基础知识,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:教师需注重理论与实践相结合,引导学生主动参与,关注学生的个体差异,提供有针对性的指导。
通过课程学习,使学生在知识、技能和情感态度价值观方面均有所提升。
二、教学内容本课程以《电子技术》教材中关于EDA技术和时钟电路的相关章节为基础,结合以下教学内容:1. EDA技术简介:介绍EDA技术的发展、基本概念及其在电子设计中的应用。
2. 时钟信号原理:讲解时钟信号的基本特性、晶振的工作原理及其在时钟电路中的作用。
3. 整点报时电路设计:分析整点报时电路的原理,介绍常见电路元件的选用和连接方法。
4. EDA软件操作:教授EDA软件的基本操作,包括原理图绘制、电路仿真和PCB布线等。
5. 电路搭建与调试:指导学生使用电子元件搭建整点报时电路,并进行调试和优化。
教学内容安排和进度如下:1. 第1课时:介绍EDA技术及其在电子设计中的应用。
2. 第2课时:学习时钟信号原理,了解晶振的作用。
EDA课程设计--定时器

电子课程设计——定时器学院:专业:姓名:学号:指导老师:2009年12月目录一.设计任务与要求 (3)二.总体框图 (3)三.功能模块 (4)四.总体设计电路图 (12)五.心得体会 (14)定时器一、设计任务与要求1.设计任务与要求:通过设计,定时器可以整体清零;可以定时最高到99MIN;以秒速度递增至预定时间,以分速度递减至零。
2.设计目的(1)了解并掌握电路的一般设计方法,具备初步的独立设计能力。
(2)进一步熟悉常用电子模块的设计思路和功能,并掌握合理选用的原则。
(3)提高综合运用所学的理论知识。
独立分析和解决问题的能力。
(4)进一步熟悉电子仪器的正确使用方法。
二、总体框图图1设计思路:通过记数器控制中心输入秒信号,并输出两个四位的BCD 码,可分别来表示各位与十位,也可整体复位清零。
通过该记数器实现以秒速度控制计数部分二选一选择器分频器译码器数码管时钟信号递增至清零,该记数器以秒的速度递增至99来实现置位,而以分的速度递减至零以实现定时功能。
通过二选一选择器对个位和十位进行扫描输出,并将输出送到译码器,通过译码器对输入的四位BCD 码进行七段码编译,然后输出到数码管。
三、功能模块1、ctrl 记数模块 模块器件图:ctrlinstcn res clkcout low[3..0]high[3..0]图2模块逻辑功能:ctrl 计数模块是该定时器的核心部分.res 为复位端,用来清零,采用异步复位方式;cn 用于置位,高电平有效。
cout 端将在定时结束时产生高电平。
Low 和high 为四位BCD 码输出端口,可用于显示。
当cn 有效时,clk 脉冲上升沿到来,计数加1;当cn 为低电平时,置位结束,进入计时阶段,每60个时钟周期(相当于一分钟)发出一个脉冲,使输出记数减1,直到记时结束,命名cout 位为高电平为止。
该模块的源程序如下:LIBRARY ieee;USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all;ENTITY ctrl ISPORT(cn,res,clk : IN STD_LOGIC;cout : out STD_LOGIC;low,high: OUT std_logic_vector(3 downto 0));END ctrl;ARCHITECTURE rtl OF ctrl ISSIGNAL displow,disphigh : std_logic_vector(3 downto 0); BEGINa:PROCESS (clk,cn,res)variable cnt: integer range 0 to 59;BEGINIF (res = '0') THENdisplow<="0000";disphigh<="0000";cnt:=0;cout<='0';ELSIF (clk'EVENT AND clk = '1') THENIF cn = '1' THENcnt:=0;if displow<"1001" thendisplow<=displow+'1';ELSEdisplow<="0000";if disphigh<"1001" thendisphigh<=disphigh+'1'; elsedisphigh<="0000";end if;end if;ELSEif cnt<59 thencnt:=cnt+1;elsecnt:=0;if displow>"0000" thendisplow<=displow-'1'; --elsif displow=1 then -- displow<="0000";else displow<="1001";if disphigh>"0000" then disphigh<=disphigh-'1'; elsedisplow<="1001";end if;end if;end if;end if;end if;if disphigh="0000" and displow="0000" thencout<='1';else cout<='0';end if;end process;high<=disphigh;low<=displow;end rtl;该器件的仿真波形如图3图3 通过仿真波形可以看出低位和高位都可以从零变到9,可以说明输出可以从0变到99,且低位为9时,下一时刻将变为0,而高位增1,当高位变成9时会自动清零。
EDA电子钟多功能数字时钟课程设计(含代码)[优秀]
![EDA电子钟多功能数字时钟课程设计(含代码)[优秀]](https://img.taocdn.com/s3/m/c660f9216bec0975f465e2d2.png)
多功能数字时钟设计说明:1.系统顶层框图:各模块电路功能如下:1.秒计数器、分计数器、时计数器组成最基本的数字钟,其计数输出送7段译码电路由数码管显示.2.基准频率分频器可分频出标准的1HZ频率信号,用于秒计数的时钟信号;分频出4HZ频率信号,用于校时、校分的快速递增信号;分频出64HZ频率信号,用于对按动“校时”,“校分”按键的消除抖动.2.多功能数字钟结构框图:一、系统功能概述已完成功能1.完成时/分/秒的依次显示并正确计数,利用六位数码管显示;2.时/分/秒各段个位满10正确进位,秒/分能做到满60向前进位,有系统时间清零功能;3.定时器:实现整点报时,通过扬声器发出高低报时声音;4.时间设置,也就是手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行调整;5.闹钟:实现分/时闹钟设置,在时钟到达设定时间时通过扬声器响铃.有静音模式.待改进功能:1. 系统没有万年历功能,正在思考设计方法.2. 应添加秒表功能.二、系统组成以及系统各部分的设计1.时计数模块时计数模块就是一个2位10进制计数器,记数到23清零.VHDL的RTL描述如下:----cnt_h.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_h isport(en,clk,clr:in std_logic;dout:out std_logic_vector(7 downto 0);c:out std_logic);end cnt_h;architecture rtl of cnt_h issignal t:std_logic_vector(7 downto 0);beginprocess(en,clk,clr)variable t:std_logic_vector(7 downto 0);beginif en='1' then --异步使能if clk 'event and clk='1' thent:=t+1;if t(3 downto 0)=X"A" then --个位等于10则十位加1t(7 downto 4):=t(7 downto 4)+1;t(3 downto 0):=X"0"; --个位清零end if;if t>X"23" then --大于23清零t:=X"00";end if;end if;if clr='1' then --异步清零t:=X"00";end if;end if;dout<=t;end process;end rtl;时计数器模块仿真波形如下从仿真波形可知,当计数到23时,下一个时钟上升沿到来时就清零了,符合设计要求.时计数模块框图如下2.分及秒计数模块分及秒计数模块也是一个2位10进制计数器,记数到59清零.VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end cnt_s;architecture rtl of cnt_s isbeginprocess(en,clk,clr)beginif en='1' thenif clr='1' then --异步清零dout<=X"00";elsif clk 'event and clk='1' thenif dout(3 downto 0)<9 thendout(3 downto 0)<=dout(3 downto 0)+1;c<='0';elsif dout(7 downto 4)<5 thendout(3 downto 0)<=X"0";dout(7 downto 4)<=dout(7 downto 4)+1;elsedout<=X"00";c<='1';end if;end if;else dout<="ZZZZZZZZ";end if;end process;end rtl;分和秒计数器模块仿真波形如下从仿真波形可知,当计数到59时,下一个时钟上升沿到来时就清零了,并且产生进位信号,符合设计要求.分和秒计数模块框图如下3.按键消抖动模块按键消抖动有很多方案,这里选择的是计数消抖,即只当有效电平到来后开始计数,当计数值大于一定值后再输出该有效电平,否则不输出,从而达到消抖目的. VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;entity haoin isport(din,clk:in std_logic;dout:out std_logic); end haoin;architecture rtl of haoin isbeginprocess(din)variable t: integer range 0 to 63:=0;beginif din='1' thenif clk 'event and clk='1'thent:=t+1;if t>10 thendout<='1';t:=t-1;else dout<='0';end if;end if;else dout<='0';t:=0;end if;end process;end rtl;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ring isport(clk: in std_logic;clk500: in std_logic;clk1k:in std_logic;beep:out std_logic);end ring;architecture rtl of ring isbeginprocess(clk)variable t: std_logic;variable n: integer range 0 to 15:=0;beginif clk 'event and clk='1' thent:=not t;n:=n+1;end if;if t='1' and n<11 thenbeep<=clk500;elsif n=11 thenbeep<=clk1k;else beep<='Z';end if;end process;end rtl;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity clock isport(SA: in std_logic;SB: in std_logic;SC: in std_logic;SD: in std_logic;clk1: in std_logic;dout: buffer std_logic_vector(23 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0);beep: out std_logic--led:out std_logic_vector(3 downto 0));end entity clock;architecture rtl of clock isco米ponent cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end co米ponent;co米ponent cnt_h isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0));end co米ponent;--co米ponent seg米ain is--port(clk,reset_n:in std_logic;--datain:in std_logic_vector(15 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0));--end co米ponent;--co米ponent ring is--port( en: in std_logic;-- clk: in std_logic;--clk500: in std_logic;--clk1k:in std_logic;--beep:out std_logic);--end co米ponent;co米ponent haoin isport(din,clk:in std_logic;dout:out std_logic);end co米ponent;co米ponent naoling isport (h,米:in std_logic_vector(7 downto 0);clk4hzh,clk4hz米:in std_logic;sys_en,sys_rst:in std_logic;h_o,米_o: out std_logic_vector(7 downto 0);beep:out std_logic);end co米ponent;signal reg_h:std_logic_vector(7 downto 0);signal reg_米:std_logic_vector(7 downto 0);signal reg_s:std_logic_vector(7 downto 0);signal reg_米_s:std_logic_vector(7 downto 0):=X"59"; signal reg_米_米:std_logic_vector(7 downto 0):=X"59";signal reg_米_h:std_logic_vector(7 downto 0):=X"59";signal clk_h:std_logic;signal clk_米:std_logic;signal clk_s:std_logic;signal c_s :std_logic;signal c_米:std_logic;signal c_h :std_logic;signal sys_clk1:std_logic;signal sys_clk4:std_logic;signal sys_clk64:std_logic;signal sys_clk500:std_logic;signal sys_clk1k:std_logic;signal clki:integer:=750000;signal sys_rst:std_logic:='0';signal sys_en:std_logic:='1';signal clk_ring,米h:std_logic;signal SAc,SBc,SCc,SDc:std_logic;signal en_r:std_logic;signal NL_reg_h,NL_reg_米:std_logic_vector(7 downto 0);signal NL_ring:std_logic;signal sys_clk4_NL_h,sys_clk4_NL_米:std_logic;beginh:cnt_h port 米ap(en=>sys_en,clk=>clk_h,clr=>sys_rst,dout=>reg_h);米:cnt_s port 米ap(en=>sys_en,clk=>clk_米,clr=>sys_rst,dout=>reg_米,c=>c_米);s:cnt_s port 米ap(en=>sys_en,clk=>sys_clk1,clr=>SCc,dout=>reg_s,c=>c_s);--sled:seg米ain port 米ap(clk=>clk1,reset_n=>SCc,seg_data=>seg_data,seg_co 米=>seg_co米,datain=>dout(15 downto 0));--ring0:ring port 米ap(en=>en_r,clk=>clk_ring,clk500=>sys_clk500,clk1k=>sys_clk1k,beep=>beep); haoin1:haoin port 米ap( SA,sys_clk64,SAc);haoin2:haoin port 米ap( SB,sys_clk64,SBc);haoin3:haoin port 米ap( SC,sys_clk64,SCc);haoin4:haoin port 米ap( SD,sys_clk64,SDc);NL:naoling port 米ap(beep=>NL_ring,h=>reg_h,米=>reg_米,clk4hzh=>sys_clk4_NL_h,clk4hz米=>sys_clk4_NL_米,sys_en=>sys_en,sys_rst=>sys_rst,h_o=>NL_reg_h,米_o=>NL_reg_米);beep<=clk_ring and 米h;--led<=reg_s(3 downto 0);p_sys_clk:process(clk1)variable t1,t4,t64,t500,t1k:integer range 0 to 50000000;beginif clk1 'event and clk1='1' thent1:=t1+1;t4:=t4+1;t64:=t64+1;t500:=t500+1;t1k:=t1k+1;if t1=clki/2 thent1:=0;sys_clk1<=not sys_clk1;end if;if t4=clki/8 thent4:=0;sys_clk4<=not sys_clk4;end if;if t64=clki/128 thent64:=0;sys_clk64<=not sys_clk64;end if;if t500=clki/1000 thent500:=0;sys_clk500<=not sys_clk500;end if;if t1k=clki/2000 thent1k:=0;sys_clk1k<=not sys_clk1k;end if;end if;end process p_sys_clk;p_c:process(SAc,SBc,SCc,SDc)beginif SAc='1' and SDc='0' thenclk_h<=sys_clk4;elseclk_h<=c_米;end if;if SAc='1' and SDc='1' thensys_clk4_NL_h<=sys_clk4;elsesys_clk4_NL_h<='0';end if;if SBc='1' and SDc='0'thenclk_米<=sys_clk4;elseclk_米<=c_s;end if;if SBc='1' and SDc='1'thensys_clk4_NL_米<=sys_clk4;elsesys_clk4_NL_米<='0';end if;if SDc='0' thendout(7 downto 0)<=reg_s;dout(15 downto 8)<=reg_米;dout(23 downto 16)<=reg_h;elsedout(7 downto 0)<="ZZZZZZZZ";dout(15 downto 8)<=NL_reg_米;dout(23 downto 16)<=NL_reg_h;end if;end process p_c;P_ring:process(reg_米,reg_s,sys_clk1k)variable clk_ring_t:std_logic;variable t:std_logic_vector(3 downto 0);beginif reg_米=X"59" and (reg_s=X"50" or reg_s=X"52" or reg_s=X"54" or reg_s=X"56" or reg_s=X"58") thenclk_ring_t:=sys_clk500;elsif reg_米=X"00" and reg_s=X"00" thenclk_ring_t:=sys_clk1k;else clk_ring_t:='Z';end if;if NL_ring='1' thenclk_ring_t:=sys_clk1k;end if;if sys_clk1k 'event and sys_clk1k='1' thent:=t+1;end if;if t>1 then 米h<='1';end if;clk_ring<=clk_ring_t;end process p_ring;end rtl;。
EDA课程设计报告99分定时器

课程设计报告设计名称EDA(VHDL)课程设计专业班级电子0942姓名姬鹏冲学号0904451213成绩评定电气与信息工程学院二0一二年一月课程设计要求和成绩考核办法(要求和成绩考核办法在封皮背面打印)1.不允许在教室或实验室内吸烟、吃零食,不准带无关人员到教室或实验室活动,否则扣平时表现分。
2.凡病事假超过3天(每天7小时),或迟到早退三次以上,或旷课两次(1天)以上,不得参加本次考核,按不及格处理,本次课程设计不能通过。
3.病事假必须有请假条,需经班主任或有关领导批准,否则按旷课处理。
4.课程设计的考核由指导教师根据设计表现(出勤、遵守纪律情况等)、设计报告、设计成果、答辩等几个方面,给出各项成绩或权重,综合后给出课程设计总成绩。
该设计考核须经教研室主任审核,主管院长审批备案。
5.成绩评定采用五级分制,即优、良、中、及格和不及格。
6.课程设计结束一周内,指导教师提交成绩和设计总结。
7.设计过程考核和成绩在教师手册中要有记载。
实习报告要求实习报告内容、格式各专业根据实习(设计)类别(技能实习、认识实习、生产实习、毕业实习等)统一规范,经教研室主任审核、主管院长审批备案。
注意:1.课程设计任务书和指导书在课程设计前发给学生,设计任务书放置在设计报告封面后和正文目录前。
2.为了节省纸张,保护环境,便于保管设计报告,统一采用A4纸,课程设计报告建议双面打印(正文采用宋体五号字)或手写,左侧装订,订两个钉。
基于FPGA的半整数分频器设计一、系统设计任务及功能概述本系统是利用VHDL硬件描述语言和原理图输入方式,通过MUX+PLUSⅡ开发软件和ALTER 公司的FLEX系列EPF10K10LC84-4型FPGA方便的完成了半整数分频器电路的设计。
本系统是通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。
二、系统设计方案和程序设计1.系统设计方案我们采用脉冲吞吐计数器和锁相环技术,先设计两个不同分频比的整数分频器,然后通112entity cont6 isport(clk:in std_logic;rst:in std_logic;en:in std_logic;qa,qb,qc:out std_logic);end entity cont6;architecture wode of cont6 issignal count:std_logic_vector(2 downto 0);beginprocess(clk,rst,en)isbeginif rst='1'then count<="000";elsif clk'event and clk='1'thenif en='1'thenif count="101" then count<="000";else count<=count+1;end if;end if;end if;end process;qa<=count(0);qb<=count(1);qc<=count(2);end architecture wode;模六计数器原件生成图如下:图一模六计数器原件生成上面的程序经编译、时序模拟在MAX+PLUSⅡ中可得到如图所示的仿真波形:图2 模6计数器仿真波形(2)半整数分频器设计现在通过设计一个分频系数为5.5的分频器给出用FPGA设计半整数分频器的一般方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子课程设计——定时器学院:专业:姓名:学号:指导老师:2009年12月目录一.设计任务与要求 (3)二.总体框图 (3)三.功能模块 (4)四.总体设计电路图 (12)五.心得体会 (14)定时器一、设计任务与要求1.设计任务与要求:通过设计,定时器可以整体清零;可以定时最高到99MIN;以秒速度递增至预定时间,以分速度递减至零。
2.设计目的(1)了解并掌握电路的一般设计方法,具备初步的独立设计能力。
(2)进一步熟悉常用电子模块的设计思路和功能,并掌握合理选用的原则。
(3)提高综合运用所学的理论知识。
独立分析和解决问题的能力。
(4)进一步熟悉电子仪器的正确使用方法。
二、总体框图图1设计思路:通过记数器控制中心输入秒信号,并输出两个四位的BCD 码,可分别来表示各位与十位,也可整体复位清零。
通过该记数器实现以秒速度控制计数部分二选一选择器分频器译码器数码管时钟信号递增至清零,该记数器以秒的速度递增至99来实现置位,而以分的速度递减至零以实现定时功能。
通过二选一选择器对个位和十位进行扫描输出,并将输出送到译码器,通过译码器对输入的四位BCD 码进行七段码编译,然后输出到数码管。
三、功能模块1、ctrl 记数模块 模块器件图:ctrlinstcn res clkcout low[3..0]high[3..0]图2模块逻辑功能:ctrl 计数模块是该定时器的核心部分.res 为复位端,用来清零,采用异步复位方式;cn 用于置位,高电平有效。
cout 端将在定时结束时产生高电平。
Low 和high 为四位BCD 码输出端口,可用于显示。
当cn 有效时,clk 脉冲上升沿到来,计数加1;当cn 为低电平时,置位结束,进入计时阶段,每60个时钟周期(相当于一分钟)发出一个脉冲,使输出记数减1,直到记时结束,命名cout 位为高电平为止。
该模块的源程序如下:LIBRARY ieee;USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all;ENTITY ctrl ISPORT(cn,res,clk : IN STD_LOGIC;cout : out STD_LOGIC;low,high: OUT std_logic_vector(3 downto 0));END ctrl;ARCHITECTURE rtl OF ctrl ISSIGNAL displow,disphigh : std_logic_vector(3 downto 0); BEGINa:PROCESS (clk,cn,res)variable cnt: integer range 0 to 59;BEGINIF (res = '0') THENdisplow<="0000";disphigh<="0000";cnt:=0;cout<='0';ELSIF (clk'EVENT AND clk = '1') THENIF cn = '1' THENcnt:=0;if displow<"1001" thendisplow<=displow+'1';ELSEdisplow<="0000";if disphigh<"1001" thendisphigh<=disphigh+'1'; elsedisphigh<="0000";end if;end if;ELSEif cnt<59 thencnt:=cnt+1;elsecnt:=0;if displow>"0000" thendisplow<=displow-'1'; --elsif displow=1 then -- displow<="0000";else displow<="1001";if disphigh>"0000" then disphigh<=disphigh-'1'; elsedisplow<="1001";end if;end if;end if;end if;end if;if disphigh="0000" and displow="0000" thencout<='1';else cout<='0';end if;end process;high<=disphigh;low<=displow;end rtl;该器件的仿真波形如图3图3 通过仿真波形可以看出低位和高位都可以从零变到9,可以说明输出可以从0变到99,且低位为9时,下一时刻将变为0,而高位增1,当高位变成9时会自动清零。
2、sel2二选一选择模块模块器件图:sel2instd1[3..0]d2[3..0]sel xz[7..0]q[3..0]图4模块逻辑功能:二选一选择模块主要是接受由ctrl 输出的四位BCD 码,并通过选择信号sel 进行选择输出。
其源程序如下:library ieee;use ieee.std_logic_1164.all; entity sel2 isport(d1,d2: in std_logic_vector(3 downto 0); sel: in std_logic;xz: out std_logic_vector(7 downto 0); q: out std_logic_vector(3 downto 0)); end sel2;architecture rtl of sel2 is beginq<=d1 when sel='0' else d2;xz<="11111110" when sel='0' else "11111101" ; End rtl;该器件的波形仿真如图5图5从波形仿真可以观察出:若选择信号端为低电平,输入d1为0001,则输出q为0001;反之,若选择信号为高电平,输入d2为0000,则输出q为0000.如此循环,选定信号端的高低电平,给选择器一个输入信号,即可得到相应的输出,这样就验证了此模块实现循环扫描功能的正确性。
3、译码器模块模块器件图:dispd[3..0]q[6..0]inst图6模块逻辑功能:译码器模块disp是对四位BCD码进行七段码译码,其输出Q0~Q6分别接数码管的a~g段,它的操作源程序如下:library ieee;use ieee.std_logic_1164.all;entity disp isport(d: in std_logic_vector(3 downto 0);q: out std_logic_vector(6 downto 0));end disp;architecture rtl of disp isbeginprocess(d)begincase d iswhen"0000"=>q<="0111111";when"0001"=>q<="0000110";when"0010"=>q<="1011011";when"0011"=>q<="1001111";when"0100"=>q<="1100110";when"0101"=>q<="1101101";when"0110"=>q<="1111101";when"0111"=>q<="0100111";when"1000"=>q<="1111111";when"1001"=>q<="1101111";when others=>null;end case;end process;end rtl;该器件的波形仿真如图7图7由波形可以看出:当输入的四位BCD码为0000时,译码器通过对七段码编译为0111111输出到数码管显示0,由此确定了该模块的正确性。
4、分频器模块模块器件图:div_clkclk_in div_outinst图8模块逻辑功能:把50MHZ的频率分为250HZ的频率,其源程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY div_clk ISPORT(clk_in : IN std_logic;div_out: OUT std_logic);END div_clk;ARCHITECTURE a OF div_clk ISSIGNAL fre_N : integer range 0 to 100000;SIGNAL clk_tmp: std_logic;BEGINdiv_out <= clk_tmp;process(clk_in)beginif falling_edge(clk_in) thenif fre_N >= 99999 thenfre_N <= 0;clk_tmp <= not clk_tmp;elsefre_N <= fre_N + 1;end if;end if;end process;END a;四、总体设计电路图1、总体框图:图9整体工作情况:该电路通过记数器控制中心输入秒信号,并输出两个四位的BCD 码,可分别来表示各位与十位,也可整体复位清零,通过二选一选择器对个位和十位进行扫描输出,并将输出送到译码器,通过译码器对输入的四位BCD码进行七段码编译,然后输出到数码管。
通过分频器来输入适当频率的时钟。
2、总体框图的波形仿真结果:图10观察波形:当cn有效时,clk脉冲上升沿到来计数加1,计数器输出四位BCD码,如,当res = '0',d[3..0]=0000,则输出q[6..0]=0111111,数码管显示0;当d[3..0]=0001,则输出q[6..0]=0000110,一直计数到当d[3..0]=1001,q[6..0]=1101111.随着时钟沿的到来,实现加法计数;相同,当cn为低电平时,置位结束,进入计时阶段,每60个时钟周期发出一个脉冲,使输出记数减1,实现减法计数。