当前位置:文档之家› 《多功能数字钟》EDA实验报告

《多功能数字钟》EDA实验报告

《多功能数字钟》EDA实验报告
《多功能数字钟》EDA实验报告

《EDA课程设计》实验报告

多功能数字钟

姓名:

学号:

联系方式:

成绩:

1.摘要

在当代,随着人类社会进入到高度发达的信息化社会。信息技术的发展起着越来越大的作用,它几乎涉及到我们日常生活的每个领域,可以说要衡量一个当今社会的发展文明程度信息化技术的发展程度是一个非常重要的指标。众所周知,信息化社会的发展离不开电子信息技术产品的开发、产品品质的提高和改善。电子信息产品随着科学技术的进步,其电子器件和设计方法更新、换代的速度快的惊人,几乎是日新月异。然而实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。

由于基于PLD的EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益提高。

EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时为24小时小时制,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块,时、分、秒计数和校时程序模块、数据选择器程序模块、显示程序模块和例化程序模块。并且使用QUARTUS II软件进行电路波形仿真,下载到EDA实验箱进行验证。

作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。使自己熟练使用QuartusII 环境来进行设计,掌握VHDL语言的设计方法。注重理论与实践之间的不同,从而培养自己

的实践能力!

关键字:EDA,数字钟,QUARTUS II,VHDL,PLD,模块化,分频,校时,仿真,

2.概括

多功能数字钟应该具有的功能有:显示时-分-秒、整点报时、小时和分钟可调等基本功能。首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0~23时。

在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为它的范围是从0~23,所以可以用一个2位的二进制码显示十位,用4位二进制码(BCD 码)显示个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描确需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟进行分频。

对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。

本验设计的是当进行整点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

要求显示格式为小时-分钟-秒钟,整点报时,报时时间为5秒,即从整点前5秒钟开始进行报时提示,LED开始闪烁,过整点后,停止闪烁。系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10,000次分频。调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。另外用S12按键作为系统时钟复位,复位后全部显示00-00-00。

3.总体原理

3.1功能概括

本实验是通过编程实现多功能的数字时钟,其功能包含了基本的时间显示部分(由00—00—00至23—59—59)的基本显示部分;同时期附带有清零(RES)按键功能(这里用F12表示),当按下F12是所有的数字清零(00—00—00);此外还有整点报时功能模块,当时间还有5秒到达正点的时候通过指示灯的闪烁以及蜂鸣器的发生实现报时的功能;此外,还具有小时,分钟的调节功能(这里用S1,S2分别表示小时和分钟的调节),当按下S1一次的时候小时显示的数字增加‘1’(直至23后清零00),当按下S2一次的时候分钟上面的数字增加‘1’(直至59后归零00);

3.2功能结构图

a.本实验是采用功能分块的模式,通过不同的功能模块的组合,最终实验本实验的功能要求。

图1 数字钟的系统框图

b.图为基本功能结构图

c.七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。其单个静态数码管如下图所示。

静态七段数码管

由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。

3.3设计的基本要求及基本参数

系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10,000

次分频。从而的到需要的1s的信号。本实验中,所用到的秒,分,时的计时都是采用4位二进制的计数器进行设计计时的。通过设置不同的范围实现对7段数码管的显示设定。

4具体功能分块实现及介绍

4.1分频功能模块(这里将所有用到的端口名在此同时给出)

实现该功能是通过对系统的自身的1kHZ的信号的采用10000次的分频从而获得1s的所需要的信号。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY LG IS

PORT( Clk : IN STD_LOGIC; --时钟输入

S12 : IN STD_LOGIC; --复位输入

S1,S2 : IN STD_LOGIC; --时间调节输入

spk : OUT STD_LOGIC;

led : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --整点输报时输出 Display : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --七段码管显示输出 SEG_SEL : BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0) --七段码管扫描动);

END LG;

ARCHITECTURE ART OF LG IS

SIGNAL Disp_Temp : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL Disp_Decode : STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL SEC1,MIN1, : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL SEC10,MIN10 : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL HOUR10 HOUR1 : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL Music_Count : STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL Clk_Count1 : STD_LOGIC_VECTOR(13 DOWNTO 0); --产生1Hz时钟的分频计数器

SIGNAL Clk1Hz : STD_LOGIC;

SIGNAL led_count : STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL led_display : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL T : INTEGER RANGE 0 TO 15;

BEGIN

PROCESS(Clk)

BEGIN

IF(Clk'EVENT AND Clk='1') THEN

IF(Clk_Count1<10000) THEN

Clk_Count1<=Clk_Count1+1;

ELSE

Clk_Count1<="00000000000001";

END IF;

END IF;

END PROCESS;

4.2整点报时功能

Clk1Hz<=Clk_Count1(13);

PROCESS(Clk1Hz,S12)

BEGIN

IF(S12='0') THEN --系统复位

SEC1<="0000";

SEC10<="0000";

MIN1<="0000";

MIN10<="0000";

HOUR1<="0000";

HOUR10<="0000";

ELSIF(Clk1Hz'EVENT AND Clk1Hz='1') THEN --正常运行 IF(S1='0') THEN --调节小时

IF(HOUR1="1001") THEN

HOUR1<="0000";

HOUR10<=HOUR10+1;

ELSIF(HOUR10="0010" AND HOUR1="0011") THEN

HOUR1<="0000";

HOUR10<="0000";

ELSE

HOUR1<=HOUR1+1;

END IF;

ELSIF(S2='0') THEN --调节分钟

IF(MIN1="1001") THEN

MIN1<="0000";

IF(MIN10="0101") THEN

MIN10<="0000";

ELSE

MIN10<=MIN10+1;

END IF;

ELSE

MIN1<=MIN1+1;

END IF;

ELSIF(SEC1="1001") THEN

SEC1<="0000";

IF(SEC10="0101") THEN

SEC10<="0000";

IF(MIN1="1001") THEN

MIN1<="0000";

IF(MIN10="0101") THEN

MIN10<="0000";

IF(HOUR1="1001") THEN

HOUR1<="0000";

HOUR10<=HOUR10+1;

ELSIF(HOUR10="0010" AND HOUR1="0011") THEN

HOUR1<="0000";

HOUR10<="0000";

ELSE

HOUR1<=HOUR1+1;

END IF;

ELSE

MIN10<=MIN10+1;

END IF;

ELSE

MIN1<=MIN1+1;

END IF;

ELSE

SEC10<=SEC10+1;

END IF;

ELSE

SEC1<=SEC1+1;

END IF;

END IF;

END PROCESS;

---------------------------------------------------------------------- PROCESS(SEC1,T)

BEGIN

CASE SEC1 IS

WHEN "0000"=>T<=0;

WHEN "0001"=>T<=1;

WHEN "0010"=>T<=2;

WHEN "0011"=>T<=3;

WHEN "0100"=>T<=4;

WHEN "0101"=>T<=5;

WHEN "0110"=>T<=6;

WHEN "0111"=>T<=7;

WHEN "1000"=>T<=8;

WHEN "1001"=>T<=9;

WHEN OTHERS=>T<=0;

END CASE;

END PROCESS;

---------------------------------------------------------------------

PROCESS(Clk,T)

BEGIN

IF(Clk'EVENT AND Clk='1') THEN

Music_Count<=Music_Count+1;

IF(MIN10="0101" AND MIN1="1001" AND SEC10="0101") THEN --在59分50秒开始提示

IF((T MOD 2)=0) THEN --在偶数秒开始发声

SPK<=Music_Count(2); --嘀

ELSE

SPK<='0';

END IF;

ELSIF(MIN10="0000" AND MIN1="0000" AND SEC10="0000" AND SEC1="0000") THEN

SPK<=Music_Count(1); --嗒

ELSE

SPK<='0';

END IF;

END IF;

END PROCESS;

PROCESS(Clk)

BEGIN

IF(Clk1hz'EVENT AND Clk1hz='1') THEN

IF(MIN10="0101" AND MIN1="1001" AND SEC10="0101" AND sec1="0101") THEN --在59分55秒开始提示

led_Count<=led_Count+1;

ELSE

led_count<="000";

END IF;

END IF;

END PROCESS;

4.3复位和时间调节功能

Clk1Hz<=Clk_Count1(13);

PROCESS(Clk1Hz,S12)

BEGIN

IF(S12='0') THEN --系统复位

SEC1<="0000";

SEC10<="0000";

MIN1<="0000";

MIN10<="0000";

HOUR1<="0000";

HOUR10<="0000";

ELSIF(Clk1Hz'EVENT AND Clk1Hz='1') THEN --正常运行 IF(S1='0') THEN --调节小时

IF(HOUR1="1001") THEN

HOUR1<="0000";

HOUR10<=HOUR10+1;

ELSIF(HOUR10="0010" AND HOUR1="0011") THEN

HOUR1<="0000";

HOUR10<="0000";

ELSE

HOUR1<=HOUR1+1;

END IF;

ELSIF(S2='0') THEN --调节分钟

IF(MIN1="1001") THEN

MIN1<="0000";

IF(MIN10="0101") THEN

MIN10<="0000";

4.4时间显示功能

PROCESS(led_count)

BEGIN

CASE (led_count) IS

WHEN "000"=>led_display<="0000";

WHEN "001"=>led_display<="1111";

WHEN "010"=>led_display<="0111";

WHEN "011"=>led_display<="0011";

WHEN "100"=>led_display<="0001";

WHEN "101"=>led_display<="1111";

WHEN OTHERS=>led_display<="0000";

END CASE;

led<=led_display;

END PROCESS;

-------------------------------------------------------------------------- PROCESS(SEG_SEL)

BEGIN

CASE (SEG_SEL+1) IS

WHEN "000"=>Disp_Temp<=HOUR10;

WHEN "001"=>Disp_Temp<=HOUR1;

WHEN "010"=>Disp_Temp<="1010";

WHEN "011"=>Disp_Temp<=MIN10;

WHEN "100"=>Disp_Temp<=MIN1;

WHEN "101"=>Disp_Temp<="1010";

WHEN "110"=>Disp_Temp<=SEC10;

WHEN OTHERS=>Disp_Temp<=SEC1;

END CASE;

END PROCESS;

----------------------------------------------------------------------- --扫描累加

PROCESS(Clk)

BEGIN

IF(Clk'EVENT AND Clk='1') THEN

SEG_SEL<=SEG_SEL+1;

Display<=Disp_Decode;

END IF;

END PROCESS;

--------------------------------------------------------------------------显示转换

PROCESS(Disp_Temp)

BEGIN

CASE Disp_Temp IS

WHEN "0000"=>Disp_Decode<="00111111"; --0

WHEN "0001"=>Disp_Decode<="00000110"; --1

WHEN "0010"=>Disp_Decode<="01011011"; --2

WHEN "0011"=>Disp_Decode<="01001111"; --3

WHEN "0100"=>Disp_Decode<="01100110"; --4

WHEN "0101"=>Disp_Decode<="01101101"; --5

WHEN "0110"=>Disp_Decode<="01111101"; --6

WHEN "0111"=>Disp_Decode<="00000111"; --7

WHEN "1000"=>Disp_Decode<="01111111"; --8

WHEN "1001"=>Disp_Decode<="01101111"; --9

WHEN "1010"=>Disp_Decode<="01000000"; ---

WHEN OTHERS=>Disp_Decode<="00000000"; --全灭

END CASE;

END PROCESS;

END ART;

5.实验总结及心得

通过这次实验是我学习到了许多知识,首先是对EDA课程设计的基本要求以及对实验过程的具体实现方法,其次是对VHDL编程语言的语法掌握和认识有了更加深刻的理解和认识,再次是对QUARTUSII软件的基本操作和工作有了一定的了解和认识,还有就是对实验的过程收获了许多,受益了许多。

经过两周EDA课程设计,使我受益匪浅。这不仅增强了我对EDA设计的兴趣,更巩固了基本的电路设计流程、方法以及技巧。具备了这些基本知识,为今后的自主学习奠定了良好的基础。在编写时可以相互借鉴,这样可以节省一定的时间,但在一个问题上纠结了很久,现还未明白,为什么一个变量在进程中只能被一个边沿信号触发进行修改,无奈之下选择了另一种方法,通过一个控制端来进行选频,以实现快速调时,在闹钟的处理上使用了数据选择,设置闹铃时数码管显示闹钟时间。

在设计中还是需要注意一些常见的问题,比如实体名、项目名等,还有在编写VHDL文件时,一些文件名也是需要注意的;在编写程序的过程中,信号与变量的使用是一个特需要注意的,进程中一个信号不应有多个复制源,信号的复值是在进程结束之时,而变量的复值是立即的,在书写时容易出错的地方是,信号的赋值与变量的赋值符号,信号作为全局的联络线,信号往往不允许在多个进程中被赋值,因为进程之间是并行的。

通过实验也彻底的认识到了自己的不足,以及许多自己有待加强和努力的地方,比如说相关语法的具体实验过程,不同设计的优点分析等。还有就是对自己以后应该学习掌握的知识还有许多,自己懂得的还知识皮毛而已,如果真的要用于实际工程及设计中要走的路还是很长的。

最后在这里要感谢我的指导老师,感谢您的耐心指导和教诲,是您的耐心指导才使得我收获了这么多,学会了很多不懂得知识,掌握了这么多的专业知识,以及这么多有用的专业技巧和处理问题的方法和能力,正式由于您的努力才能帮助我的课程设计顺利的进行并能够最终完成自己的课程设计。在这里要表达我的感激之情以及感恩之意,是您让我又一次的成长了许多,此致敬礼!

6.源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

--------------------------------------------------------------------

ENTITY LG IS

PORT( Clk : IN STD_LOGIC; --时钟输入

S12 : IN STD_LOGIC; --复位输入

S1,S2 : IN STD_LOGIC; --时间调节输入

spk : OUT STD_LOGIC;

led : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --整点输报时输出

Display : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --七段码管显示输出

SEG_SEL : BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0) --七段码管扫描驱动

);

END LG;

--------------------------------------------------------------------

ARCHITECTURE ART OF LG IS

SIGNAL Disp_Temp : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL Disp_Decode : STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL SEC1,MIN1, : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL SEC10,MIN10 : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL HOUR10 HOUR1 : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL Music_Count : STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL Clk_Count1 : STD_LOGIC_VECTOR(13 DOWNTO 0); --产生1Hz时钟的分频计数器 SIGNAL Clk1Hz : STD_LOGIC;

SIGNAL led_count : STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL led_display : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(Clk)

BEGIN

IF(Clk'EVENT AND Clk='1') THEN

IF(Clk_Count1<10000) THEN

Clk_Count1<=Clk_Count1+1;

ELSE

Clk_Count1<="00000000000001";

END IF;

END IF;

END PROCESS;

---------------------------------------------------------------------------------- Clk1Hz<=Clk_Count1(13);

PROCESS(Clk1Hz,S12)

BEGIN

IF(S12='0') THEN --系统复位

SEC1<="0000";

SEC10<="0000";

MIN1<="0000";

MIN10<="0000";

HOUR1<="0000";

HOUR10<="0000";

ELSIF(Clk1Hz'EVENT AND Clk1Hz='1') THEN --正常运行

IF(S1='0') THEN --调节小时

IF(HOUR1="1001") THEN

HOUR1<="0000";

HOUR10<=HOUR10+1;

ELSIF(HOUR10="0010" AND HOUR1="0011") THEN

HOUR1<="0000";

ELSE

HOUR1<=HOUR1+1;

END IF;

ELSIF(S2='0') THEN --调节分钟

IF(MIN1="1001") THEN

MIN1<="0000";

IF(MIN10="0101") THEN

MIN10<="0000";

ELSE

MIN10<=MIN10+1;

END IF;

ELSE

MIN1<=MIN1+1;

END IF;

ELSIF(SEC1="1001") THEN

SEC1<="0000";

IF(SEC10="0101") THEN

SEC10<="0000";

IF(MIN1="1001") THEN

MIN1<="0000";

IF(MIN10="0101") THEN

MIN10<="0000";

IF(HOUR1="1001") THEN

HOUR1<="0000";

HOUR10<=HOUR10+1;

ELSIF(HOUR10="0010" AND HOUR1="0011") THEN HOUR1<="0000";

HOUR10<="0000";

ELSE

END IF;

ELSE

MIN10<=MIN10+1;

END IF;

ELSE

MIN1<=MIN1+1;

END IF;

ELSE

SEC10<=SEC10+1;

END IF;

ELSE

SEC1<=SEC1+1;

END IF;

END IF;

END PROCESS;

---------------------------------------------------------------------- PROCESS(SEC1,T)

BEGIN

CASE SEC1 IS

WHEN "0000"=>T<=0;

WHEN "0001"=>T<=1;

WHEN "0010"=>T<=2;

WHEN "0011"=>T<=3;

WHEN "0100"=>T<=4;

WHEN "0101"=>T<=5;

WHEN "0110"=>T<=6;

WHEN "0111"=>T<=7;

WHEN "1000"=>T<=8;

WHEN "1001"=>T<=9;

END PROCESS;

---------------------------------------------------------------------

PROCESS(Clk,T)

BEGIN

IF(Clk'EVENT AND Clk='1') THEN

Music_Count<=Music_Count+1;

IF(MIN10="0101" AND MIN1="1001" AND SEC10="0101") THEN --在59分50秒开始提示

IF((T MOD 2)=0) THEN --在偶数秒开始发声

SPK<=Music_Count(2); --嘀

ELSE

SPK<='0';

END IF;

ELSIF(MIN10="0000" AND MIN1="0000" AND SEC10="0000" AND SEC1="0000") THEN

SPK<=Music_Count(1); --嗒

ELSE

SPK<='0';

END IF;

END IF;

END PROCESS;

--------------------------------------------------------

PROCESS(Clk)

BEGIN

IF(Clk1hz'EVENT AND Clk1hz='1') THEN

IF(MIN10="0101" AND MIN1="1001" AND SEC10="0101" AND sec1="0101") THEN --在59分55秒开始提示

led_Count<=led_Count+1;

ELSE

led_count<="000";

END PROCESS;

------------------------------------------------------------------------- PROCESS(led_count)

BEGIN

CASE (led_count) IS

WHEN "000"=>led_display<="0000";

WHEN "001"=>led_display<="1111";

WHEN "010"=>led_display<="0111";

WHEN "011"=>led_display<="0011";

WHEN "100"=>led_display<="0001";

WHEN "101"=>led_display<="1111";

WHEN OTHERS=>led_display<="0000";

END CASE;

led<=led_display;

END PROCESS;

-------------------------------------------------------------------------- PROCESS(SEG_SEL)

BEGIN

CASE (SEG_SEL+1) IS

WHEN "000"=>Disp_Temp<=HOUR10;

WHEN "001"=>Disp_Temp<=HOUR1;

WHEN "010"=>Disp_Temp<="1010";

WHEN "011"=>Disp_Temp<=MIN10;

WHEN "100"=>Disp_Temp<=MIN1;

WHEN "101"=>Disp_Temp<="1010";

WHEN "110"=>Disp_Temp<=SEC10;

WHEN OTHERS=>Disp_Temp<=SEC1;

END CASE;

----------------------------------------------------------------------- --扫描累加PROCESS(Clk)

BEGIN

IF(Clk'EVENT AND Clk='1') THEN

SEG_SEL<=SEG_SEL+1;

Display<=Disp_Decode;

END IF;

END PROCESS;

--------------------------------------------------------------------------显示转换PROCESS(Disp_Temp)

BEGIN

CASE Disp_Temp IS

WHEN "0000"=>Disp_Decode<="00111111"; --0

WHEN "0001"=>Disp_Decode<="00000110"; --1

WHEN "0010"=>Disp_Decode<="01011011"; --2

WHEN "0011"=>Disp_Decode<="01001111"; --3

WHEN "0100"=>Disp_Decode<="01100110"; --4

WHEN "0101"=>Disp_Decode<="01101101"; --5

WHEN "0110"=>Disp_Decode<="01111101"; --6

WHEN "0111"=>Disp_Decode<="00000111"; --7

WHEN "1000"=>Disp_Decode<="01111111"; --8

WHEN "1001"=>Disp_Decode<="01101111"; --9

WHEN "1010"=>Disp_Decode<="01000000"; ---

WHEN OTHERS=>Disp_Decode<="00000000"; --全灭

END CASE;

END PROCESS;

END ART;

EDA实验报告

实验一计数器设计 一、实验目的 计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。 二、实验仪器与器材 1.EDA开发软件一套 2.微机一台 3.实验开发系统一台 4.其他器材与材料若干 三、实验说明 计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。 四、实验要求 1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。 2.编制仿真测试文件,并进行功能仿真。 3.下载并验证计数器功能。 4.为上述设计建立元件符号。 5.在上述基础上设计计数器。 五、实验结果

十进制计数器程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter10 is port(en,reset,clk:in std_logic; q:buffer std_logic_vector(3 downto 0); co:out std_logic); end counter10; architecture behav of counter10 is begin process(clk,en) begin if clk'event and clk='1' then if reset='1' then q<="0000"; elsif en='1' then if q<"1001" then q<=q+'1'; else q<="0000"; end if; end if; end if; end process;

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

EDA实验报告

目录 第一部分实验开发系统概述及使用说明.............................................................. 1第一章EDA实验系统 ....................................................................................... 1第二章EDA/SOPC实验系统 ............................................................................ 7第二部分实验部分............................................................................................ 10实验一EDA工具基本操作与应用 ........................................................... 10实验二计数器设计..................................................................................... 24实验三串入/并出移位寄存器实现 ........................................................... 26实验四四人抢答器设计............................................................................. 28实验五序列检测器设计............................................................................. 29实验六DDS信号源的设计........................................................................ 30实验七交通灯控制器设计......................................................................... 31实验八数字钟设计..................................................................................... 32实验九出租车计费器设计......................................................................... 33实验十频率计的实现................................................................................. 34附录——FPGA接口对照表 ............................................................................ 35

EDA设计II实验报告——多功能数字钟

『EDA设计II』 课程实验报告 姓名 学号 学院 指导教师 时间 2011年 05月

多功能数字钟 摘要:本实验利用Quartus II软件设计多功能数字钟并下载到Smart SOPC实验系统,实现校分、校时、清零、保持和整点报时等多种基本功能,以及闹钟等附加功能。本实验首先通过Quartus II 软件对各模块进行原理图设计,并进行仿真调试,最后下载至实验平台验证其功能。 关键词:多功能数字钟Quartus II软件仿真封装校分校时清零保持整点报时闹钟 Abstract:The experiment is to design a multi-purpose digital clock by Quartus II and then download to the test system of Smart SOPC. It can realize many functions such as minute adjusting, hour adjusting, resetting, keeping and reporting time on integral hour. Apart from this, it can also be used as a alarm clock. First of all, we design the schematic diagram of every part. In addition, we simulate through Quartus II. At last, we download it to the tests platform and test the function. Key words:multi-purpose digital clock Quartus II simulate seal minute- adjusting hour adjusting resetting keeping reporting time on integral hour alarm clock

EDA实验报告

EDA 实验报告 实验一:组合电路的设计 实验内容是对2选1多路选择器VHDL 设计,它的程序如下: ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ; Mux21a 仿真波形图 以上便是2选1多路选择器的VHDL 完整描述,即可以看成一个元件mux21a 。mux21a 实体是描述对应的逻辑图或者器件图,图中a 和b 分别是两个数据输入端的端口名,s 为通道选择控制信号输入端的端口名,y 为输出端的端口名。Mux21a 结构体可以看成是元件的内部电路图。最后是对仿真得出的mux21a 仿真波形图。 Mux21a 实体 Mux21a 结构体

实验二:时序电路的设计 实验内容D 触发器的VHDL 语言描述,它的程序如下: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q <= D ; END IF; END PROCESS ; END bhv; D 触发器的仿真波形图 最简单并最具代表性的时序电路是D 触发器,它是现代可编程ASIC 设计中最基本的时序元件和底层元件。D 触发器的描述包含了VHDL 对时序电路的最基本和典型的表达方式,同时也包含了VHDL 中许多最具特色的语言现象。D 触发器元件如上图所示,其在max+plus2的仿真得出上面的波形 D 触发器

eda数字时钟实验报告

EDA数字时钟电工电子实习 实验报告 姓名 班级 学号20

一、实验目的: 1、掌握多位计数器相连的设计方法。 2、掌握十进制、六十进制和二十四进制计数器的设计方法。 3、巩固数码管的驱动原理及编程方法。 4、掌握CPLD技术的层次化设计方法。 二、实验要求: 基本要求:具有时、分、秒计数显示功能,以二十四小时循环计时。 扩展要求:具有整点报时功能。 三、实验原理: 计数时钟由模60秒计数器、模60分计数器、模24小时计数器、蜂鸣器(用于整点报时)、分/时设定模块、输出显示模块构成,秒计数模块的进位输出为分钟计数模块的进位输入,分钟计数模块的进位输出为小时计数模块的进位输入。 74163功能简介:

图1 图2 由图1可知,74163的脉冲上升沿的时候工作。 四、实验过程

1.模60计数器(如图3) 图3 由74163实现计数功能,第一片74163实现10进制,即做0-9的循环,9即二进制的1001,化简可得当q[0]与q[3]同时为1的时候进行清零。第二片74163实现6进制,即做0-5的循环,5即二进制的111,化简可得当q[4]与q[6]同时为1的时候进行清零,同时第一片74163的进位端作为第二片的脉冲端。这样就可实现60进制。60进制计数器用于秒计数器和分计数器,秒个位的进位端作为秒十位的脉冲端秒十位的进位端作为分个位的脉冲端,分个位的进位端作为分十位的脉冲端。 2.模24计数器(如图4) 图4 分十位的进位端作为时个位的脉冲端,时个位的进位端作为时十位的脉冲端。因为24进制的特殊性,当十位是0和1的时候,个位做十进制循环,即0-9,9的二进制为1001;当十位是2的时候,个位做0-3的循环。而十位做0-2的循环。2的二进制为0010,3的二进制为0011。所以第一片74163不仅要在q[14]与q[17]同时为1的时候清零,还要在第二片74163的q[19]、第一片的q[14]、q[15]同时为1(即23时)做清零。第二片是3进制,在q[19]=1的时候进行清零。

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告 实验题目:数码管动态显示实验 学院名称: 专业:电子信息工程 班级: 姓名:高胜学号 小组成员: 指导教师: 一、实验目的 学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。 二、设计任务及要求

1、在SmartSOPC实验箱上完成数码管动态显示自己学号的后八个数字。 2、放慢扫描速度演示动态显示的原理过程。 三、系统设计 1、整体设计方案 数码管的八个段a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0~SEG7,8个数码管分别由八个选通信号DIG0~DIG7来选择,被选通的数码管显示数据,其余关闭。如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG0~DIG7分别被单独选通,并在此同时,在段信号输入口SEG0~SEG7加上该对应数码管上显示的数据,于是随着选通信号的扫描就能实现动态扫描显示的目的。虽然每次只有1个数码管显示,但只要扫描显示速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数码管都在同时显示。 2、功能模块电路设 (1)输入输出模块框图(见图1) 图1 (2)模块逻辑表达(见表1) 表1(数码管显示真值表) clk_1k dig seg ↑01111111 C0 ↑10111111 F9

注:数码管显示为01180121 (3)算法流程图(见图2) (4)Verilog源代码 module scan_led(clk_1k,d,dig,seg); //模块名scan_led input clk_1k; //输入时钟 input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚

EDA实验实验报告

数字eda实验实验报告 学院:计算机科学与工程学院专业:通信工程学 号: 0941903207 姓名:薛蕾指导老 师:钱强 实验一四选一数据选择器的设计 一、实验目的 1、熟悉quartus ii软件的使用。 2、了解数据选择器的工作原理。 3、熟悉eda开发 的基本流程。 二、实验原理及内容 实验原理 数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路, 可以采用数据选择器进行选择再对该路信号加以利用。从多路输入信号中选择其中一路进行 输出的电路称为数据选择器。或:在地址信号控制下,从多路输入信息中选择其中的某一路 信息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简称mux。 4选1数据 选择器: (1)原理框图:如右图。 d0 、d1、d2、d3 :输入数据 a1 、a0 :地址变量 由地址码决定从4路输入中选择哪1路输出。 (2)真值表如下图: (3)逻辑图 数据选择器的原理比较简单,首先必须设置一个选择标志信号,目的就是为了从多路信 号中选择所需要的一路信号,选择标志信号的一种状态对应着一路信号。在应用中,设置一 定的选择标志信号状态即可得到相应的某一路信号。这就是数据选择器的实现原理。 三.实验内容 1、分别采用原理图和vhdl语言的形式设计4选1数据选择器 2、对所涉及的电路进行 编译及正确的仿真。电路图: 四、实验程序 library ieee; use ieee.std_logic_1164.all; entity mux4 is port( a0, a1, a2, a3 :in std_logic; s :in std_logic_vector (1 downto 0); y :out std_logic ); end mux4; architecture archmux of mux4 is begin y <= a0 when s = 00 else --当s=00时,y=a0 a1 when s = 01 else --当s=01时,y=a1 a2 when s = 10 else --当s=10时,y=a2 a3; --当s取其它值时,y=a2 end archmux; 五、运行结果 六.实验总结 真值表分析: 当js=0时,a1,a0取00,01,10,11时,分别可取d0,d1,d2,d3. 篇二:eda实验报告模版 《eda技术》实验报告

北航eda实验报告

2014-2015-2-G02A3050-1 电子电路设计训练(数字EDA部分) 实验报告 (2015年5月19日) 教学班学号姓名组长签名成绩120311王天然* 120311马璇 120312唐玥 自动化科学与电气工程学院

目录 ( 2015年5月19日).........................................错误!未定义书签。目录 .........................................................错误!未定义书签。实验一、简单组合逻辑和简单时序逻辑............................错误!未定义书签。 简单的组合逻辑设计..................................错误!未定义书签。 实验目的和内容:..................................错误!未定义书签。 实验源代码:......................................错误!未定义书签。 测试模块源代码:..................................错误!未定义书签。 简单分频时序逻辑电路的设计...........................错误!未定义书签。 实验目的和内容:..................................错误!未定义书签。 实验源代码:......................................错误!未定义书签。 实验测试源代码:..................................错误!未定义书签。 (选作)设计一个字节(8位)比较器....................错误!未定义书签。 实验内容:........................................错误!未定义书签。 实验代码:........................................错误!未定义书签。 实验测试源代码:..................................错误!未定义书签。 实验小结.............................................错误!未定义书签。实验二、条件语句和always过程块...............................错误!未定义书签。 实验任务1——利用条件语句实现计数分频时序电路.......错误!未定义书签。 实验要求.........................................错误!未定义书签。 模块的核心逻辑设计...............................错误!未定义书签。 测试程序的核心逻辑设计...........................错误!未定义书签。 仿真实验关键结果及其解释.........................错误!未定义书签。 实验任务2——用always块实现较复杂的组合逻辑电路....错误!未定义书签。

EDA数字钟实验报告

目录 1.设计思路—————————————————————(3) 1.1总体结构——————————————————(3) 2.方案论证与选择——————————————————(3) 3.单元模块设计部分—————————————————(3)3.1 CNT10 模块的设计———————————————(4)3.2 CNT6 模块的设计———————————————(5)3.3 CNT101模块的设计———————————————(6)3.4 CNT61模块的设计———————————————(7) 3.5 CNT23模块的设计———————————————(8) 4.系统仿真—————————————————————(9) 4.1数字钟的引脚锁定———————————————(9) 4.2数字钟原理图————————————————(12) 4.3数字钟仿真图————————————————(10) 4.4数字钟编译报告———————————————(11) 5.参考文献————————————————————(13)

EDA数字钟设计 中文摘要: 数字钟学习的目的是掌握各类计数器及它们相连的设计方法;掌握多个数码管显示的原理与方法;掌握FPGA技术的层次化设计方法;掌握用VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,以24小时为计数循环;能实现清零,调节小时,分钟以及整点报时的功能。 关键词:数字钟,计数器,,FPGA,VHDL 1.设计思路 基于VHDL语言,用Top—To--Down的思想进行设计。 1.1 确定总体结构,如图1-1所示。 图1-1 2. 方案论证与选择 方案:设置小时和分,输出整点报时信号和时,分,秒信号。方案采用自顶向下的设计方法,它由秒计数模块,分计数模块,小时计数模块和顶层模块四部分组成。 3. 单元模块设计部分 RES是整个系统的复位键,低电平有效,复位时,各个输出都为零,时间显示0时0分0秒;clk是输入时钟,提供秒信号,上升沿触发,每出发一次,时间增加一秒;HRTMP,MIN10TMP,MINTMPKEYI可以分别设置小时位,10分位,分位,起到调时的作用,高电平有效,有效时,每来一个CLK时钟(1s),所对应的位都将以各自的计数循环; RING是整点报时。

EDA实验报告

湖北民族学院信息工程学院实验报告 (电气、电子类专业用) 班级: 09 姓名:周鹏学号:030940908 实验成绩: 实验地点: EDA实验室 课程名称:数字系统分析与设计实验类型:设计型 实验题目:实验一简单的QUARTUSII实例设计,基于VHDL格雷码编码器的设计 实验仪器:HH-SOC-EP3C40EDA/SOPC实验开发平台,PC机。 一、实验目的 1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。 2、初步了解QUARTUSII原理图输入设计的全过程。 3、掌握组合逻辑电路的静态测试方法。 4、了解格雷码变换的原理。 5、进一步熟悉QUARTUSII软件的使用方法和VHDL输入的全过程。 6、进一步掌握实验系统的使用。 二、实验原理、原理图及电路图 3-8译码器三输入,八输出。当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。其真值表如表1-1所示 输入输出 A B C D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0

1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 表1-1 三-八译码器真值表 译码器不需要像编码器那样用一个输出端指示输出是否有效。但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。 三、实验步骤及内容 实验内容一: 在本实验中,用三个拨动开关来表示三八译码器的三个输入(A、B、C);用八个LED来表示三八译码器的八个输出(D0-D7)。通过输入不同的值来观察输入的结果与三八译码器的真值表(表1-1)是否一致。实验箱中的拨动开关与FPGA的接口电路如下图1-1所示,当开关闭合(拨动开关的档位在下方)时其输出为低电平,反之输出高电平。实验内容二: 本实验要求完成的任务是变换12位二进制码到12位的格雷码。实验中用12位拨动开关模块的K1~K12表示8位二进制输入,用LED模块的LED1~LED12来表示转换的实验结果十二位格雷码。实验LED亮表示对应的位为‘1’,LED灭表示对应的位为‘0’。通过输入不同的值来观察输入的结果与实验原理中的转换规则是否一致。实验箱中的拨动开关、与FPGA的接口电路,LED灯与FPGA的接口电路以及拨动开关、LED与FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。 实验步骤一: 1、建立工程文件 1)选择开始>程序>Altera>QuartusII8.1> QuartusII8.1(32BIT),运行QUARTUSII 软件。或者双击桌面上的QUARTUSII的图标运行QUARTUSII软件,出现如图1-3所示,如果是第一次打开QUARTUSII软件可能会有其它的提示信息,使用者可以根据自己的实际情况进行设定后进入图1-3所示界面。

数字钟实验报告

EDA技术课程设计 ——多功能数字钟 学院:城市学院 专业、班级:电子C154 姓名:高阳夏岩 学号:158102 58128 指导老师:安亚军 2017年12月

一实验目的 1、具有时、分、秒记数显示功能,以24小时循环计时。 2、要求数字钟具有清零、调节小时、分钟功能。 3、具有整点报时,整点报时的同时LED灯花样显示 二实验原理 1时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 4蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。 5LED灯在时钟显示时有花样显示信号产生。即根据进位情况,LED不停的闪烁,从而产生“花样”信号 三实验内容 1时钟记数部分 1)小时部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下

2)分钟部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 3)秒部分 其VHDL描述如下

编译,无误。 经仿真,其波形如下 2整点报时部分,其VHDL描述如下 编译,无误。

经仿真,其波形如下 3驱动8位八段共阴扫描数码管的片选驱动信号输出部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 4驱动八段字形译码输出部分 该模块功能:信号输入后,模块驱动八段字形译码输出,A,B,C,D,E,F,G分别接八段共阴级数码管7个接口,即有字形输出。

EDA实验报告

实验一 单级放大电路的设计与仿真 一、实验目的 1)掌握单级放大电路在仿真软件中的设计。 1)掌握放大电路与静态工作点的调整和测试方法。 2)掌握放大电路的动态参数的测试方法。 3)观察静态工作点的选择对输出波形及电压放大倍数的影响。 二、实验要求 1.设计一个分压偏置的单管电压放大电路,要求信号源频率10kHz(峰值1mV) ,负载电阻3.9k Ω,电压增益大于70。 2.调节电路静态工作点(调节偏置电阻),观察电路出现饱和失真和截止失真的输出信号波形,并测试对应的静态工作点值。 3.调节电路静态工作点(调节偏置电阻),使电路输出信号不失真,并且幅度最大。在此状态下测试: ①电路静态工作点值; ②三极管的输入、输出特性曲线和 、 rbe 、rce 值; ③电路的输入电阻、输出电阻和电压增益; 4.电路的频率响应曲线和L f 、H f 值。 三、实验步骤 1.单级放大电路的原理图及原理

图1.1单级放大电路原理图 放大电路的原理图如上,该电路为一个分压偏置单级共射放大电路,其中信号源为10kHz (峰值为5mV ),该电路的负载为8k Ω。输入输出信号都是通过耦合电容连接信号源和负载的,这样做可以使得静态工作点不受负载和信号源的影响。该电路利用R4和R5从而稳定住三极管基极的电压值。引进了的电容C3对三极管的静态工作点没有影响,而在三极管的动态分析时可以将R2的作用忽略,使得小信号分析更加的简便。分压偏置的电路中引入了一个电位器R6,目的是为了在实验中便于修改三极管的静态工作点。 2.电路的截止失真和饱和失真 (1)电路的饱和失真 调节电位器R6,可以改变三极管的静态工作点,当R6值为1%时(0.7k Ω)在虚拟示波器中可以观察到输出波形明显的出现了饱和失真的现象,输出波形如图1.2所示。利用Multisim 的“直流工作点分析”功能可以测出三极管的静态工作点。由于软件本身的限制,无法直接读取三极管的Vce 值。为了解决这个问题,实验中添加表达式测量项b e V V (本实验电路中的表达式为“V(3)-V(2)”)来表示Vce ,测量结果如图1.3所示。

数字时钟设计实验报

电子课程设计题目:数字时钟

数字时钟设计实验报告 一、设计要求: 设计一个24小时制的数字时钟。 要求:计时、显示精度到秒;有校时功能。采用中小规模集成电路设计。 发挥:增加闹钟功能。 二、设计方案: 由秒时钟信号发生器、计时电路和校时电路构成电路。 秒时钟信号发生器可由振荡器和分频器构成。 计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。 三、电路框图: 图一 数字时钟电路框图 四、电路原理图: (一)秒脉冲信号发生器 秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。由振荡器与分频器组合产生秒脉冲信号。 ? 振荡器: 通常用555定时器与RC 构成的多谐振荡器,经过调整输出1000Hz 脉冲。 ? 分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能 扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz 标准秒脉冲。其电路图如下: 译码器 译码器 译码器 时计数器 (24进制) 分计数器 (60进制) 秒计数器 (60进制) 校 时 电 路 秒信号发生器

图二秒脉冲信号发生器 (二)秒、分、时计时器电路设计 秒、分计数器为60进制计数器,小时计数器为24进制计数器。 ?60进制——秒计数器 秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。当计数到59时清零并重新开始计数。秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。其电路图如下: 图三60进制--秒计数电路

北航eda实验报告数字部分

Verilog数字电路设计 实验报告 院系: 组员: 年月日

目录 分组概况 (3) 分组概况 (3) 实验概况 (4) 实验感想 (5) 实验内容 (9) 实验一 (9) 实验二 (15) 实验三 (25) 实验四 (33)

组长: 主要负责各次实验的总体进程,以及选做实验的代码编译。在实验报告中负责统筹规划及后期编排。 组员: 负责各次实验必做实验源代码的录入及仿真。在实验报告中负责报告前期录入,包括各次实验的简要内容、步骤等。

本课程共安排四次实验,其内容是: 1、练习一、简单的组合逻辑设计 练习二、简单分频时序逻辑电路的设计 选做一、设计一个字节(8位)的比较器 2、练习三、利用条件语句实现计数分频时序电路 练习五、用always块实现较复杂组合逻辑电路 选做一、利用10MB时钟设计一个单周期波形 选做二、运用always块设计一个8路数据选择器 3、练习四、阻塞赋值与非阻塞赋值的区别 练习六、在Verilog中使用函数 练习七、在Verilog中使用任务 练习题5、综合一个可以计算正整数平方、立方、阶乘的函数思考题3、在blocking模块中实现对两种写法的仿真 4、必做一、设计一个串行数据检测器 必做二、楼梯灯——基本任务 选做一、楼梯灯——扩展任务

三、感想 通过这4次的实验,我们基本熟悉Modelsim 软件,掌握了Modelsim 软件的编译、仿真方法。同时在编写程序的过程中,加深了我们对课上所讲的语法的认识以及学会了测试模块的编写。经过实验一,我们掌握了基本组合逻辑电路,基本时序电路;经过实验二,我们掌握条件语句在简单时序模块设计中的使用、在Verilog模块中应用计数器以及用always实现较大组合逻辑电路;经过实验三,我们掌握阻塞赋值与非阻塞赋值的概念与区别,了解函数的定义和在模块设计中的使用,掌握任务在verilog模块设计中的应用;经过实验四,我们掌握利用有限状态机实现一般时序逻辑分析的方法。在实验过程中,我们也遇到过程序编写以及软件仿真上的问题。程序编写时,要注意一些细节,比如符号,全角与半角等。软件仿真过程中,我们出现过程序无错,但添加波形运行后,却没有波形的情况,最后上网百度,找到了解决方法。实验总体来说,都比较顺利。对于难度较大的实验四,只要思路清晰,考虑到所有的情况,就能做出来。

简单数字电子钟的设计实验报告

《EDA技术》课程实验报告 学生姓名: 所在班级: 指导教师: 记分及评价: 一、实验名称 实验1-3:简单数字电子钟的设计(原理图输入设计方法) 二、任务及要求 【基本部分】 1、在QuartusII平台上,采用原理图输入设计方法,调用两片74160十进制计数器,采 用反馈置数法,完成一个24进制同步计数器的设计,并进行时序仿真。要求具备 使能功能和异步清零功能,设计完成后封装成一个元件。 2、同1,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法, 完成一个60进制同步计数器的设计,并进行时序仿真。要求具备使能功能和异步 清零功能,设计完成后封装成一个元件。 3、利用1和2所设计的60进制计数器和24进制计数器元件,采用同步的方式设计一 个简单的数字电子钟并进行时序仿真,要求具有时分秒功能显示功能、使能功能和 异步清零功能。 4、由于实验箱数码管采用的动态扫描方式,本实验暂时只要求仿真,硬件验证到实验 7再完成。 【发挥部分】 1、思考:采用反馈清零法设计的计数器与反馈置数法有何不同请用实例进行仿真。 2、如何实现电子钟时分秒连续可调的功能 三、原理图 二十四进制原理图

六十进制原理图 数字电子钟原理图

四、仿真及结果分析 24进制时序仿真图 24进制计数器采用的是两片74160集成块,利用同步置数原理,在第23个脉冲的时候跳转为零。这时个位计数器g3到g0的数值时0011,十位计数器的s3到s0的数值时0010。另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。 60进制时序仿真图 60进制计数器采用的是两片74160集成块,利用同步置数原理,在第59个脉冲的时候跳转为零。这时个位计数器g3到g0的数值时1001,十位计数器的s3到s0的数值时0101。另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。 电子时钟时序仿真图 电子时钟计数器采用的是两片60进制的计数器与一片24进制的计数器组成的,连接到一起就可以组成电子时钟计数器,要注意的是如果前面的24进制计数器与60进制计数器的使能短没接入与非门的话,可能会时钟脉冲的波形不是严格的按要求翻转。 五、小结 这次实验课,让我们更加了解了集成块74160的结构,学会使用集成块组成任意进制计数器。使用74160构成计数器时,应该注意使能端的使用、时钟脉冲信号多少,那些会影响仿真波形,但是,如果时钟脉冲多了的话,仿真波形就会在不该跳转的时候跳转。 实验中出现了很多问题,从发现错误到解决问题中自己学到了许多,明白了学习要善于思考,这样才能把自己的才能激发出来。这次的实验让我对学习EDA更加感兴趣,也增加我对这本课程的了解。

EDA实验报告

一MAX –plusII及开发系统使用 一、实验目的 1、熟悉利用MAX-plusⅡ的原理图输入方法设计简单的组合电路 2、掌握层次化设计的方法 3、熟悉DXT-BⅢ型EDA试验开发系统的使用 二、主要实验设备 PC 机一台(中档以上配置),DXT-B3 EDA实验系统一台。 三、实验原理 数字系统设计系列实验是建立在数字电路基础上的一个更高层次的设计性实验。它是借助可编程逻辑器件(PLD),采用在系统可编程技术(ISP),利用电子设计自动化软件(EDA),在计算机(PC)平台上进行的。 因为本实验是在计算机平台上进行,因此实验方式,实验手段和实验仪器与传统的实验有很大的区别,主要体现在以下几个方面: 1、实验器材集中化,所有实验基本上在一套实验设备上进行。 传统的实验每作完一个实验,实验器材基本上都要变动(个别除外)。而做本实验时,只要在计算机上把不同的程序输进去,其它步骤所有实验都一致; 2、实验耗材极小(基本上没有耗材); 3、在计算机上进行,自动化程度高,人机交互性好,修改、验证实验简单;

4、下载后,实验结果清晰; 5、实验仪器损耗少,维护简单; 下面,我们就本套实验设备做一个简单的介绍。 (一)Max+plusⅡ10.0的使用。 1、Max+PlusII软件的安装步骤: 第一步:系统要求 奔3CPU以上,128M内存以上,4G 以上硬盘,98 操作系统(98或Me操作系统才可以下载,其他操作系统下载必须安装驱动,否则只能仿真,如果大家只进行仿真的话,对系统没要求) 第二步:安装 点击安装可执行文件进行安装,安装完毕后会弹出一对话框,点击是或否都可以。 第三步:将安装文件夹中的License 文件夹打开,里面有一个License.bat 注册文件,将此文件复制到你的安装目录下(你的安装目录可放在任一个驱动器下,然后建立一个Max10的文件夹,将系统安装在此文件夹中,安装后此文件夹中会有三个文件夹)的任一个文件夹中,要清楚位置。 第四步:注册 启动Max+PlusII 软件,可以从开始-->程序-->Altera-->Max+PlusII 打开,也可以建立一个快捷方式在桌面上。启动软件后, 会有弹出一个对话框,点击是或否都可以,然 后进入系统。点击菜单中的Options,然后选 中License菜单项,打开弹出一个注册对话框, 在注册文件路径中打开你第三步中复制位置的 License 文件,然后点击OK,注册完毕。 2、 max+plusⅡ软件基本设计流程

EDA数字钟的设计实验报告

五邑大学实验报告 实验课程名称: EDA实验 院系名称:信息工程学院 专业名称:通信工程(物联网) (一)实验目的: 设计并实现具有一定功能的数字钟。掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。 (二)实验器材: 计算机一台,EDA实验箱一台。 (三)实验原理:

实验内容: 1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。 2.按键实现“校时”“校分”功能; 3.用扬声器做整点报时。当计时到达59’50”时鸣叫。 方案:利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。整个系统可以是若干文件组成,用PORT MAP 实现的方式;也可以是一个文件用多进程方式实现;亦或者是用文本和图形混合的方式实现;亦或者是用LPM参数化模块实现。 (五)实验步骤: 1. 新建一个文件夹,命名为shuzizhong. 2. 输入源程序。打开QuartusⅡ,选择File→new命令。在New窗口中的DesignFiles 栏选择编译文件-的语言类型,这里选择VHDL File选项。然后在VHDL文本编译窗口中输入秒模块程序。

秒模块源程序如下: library ieee; use SECOND is port(clk,clr:in std_logic;----时钟/清零信号 sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位 co:out std_logic);-------输出/进位信号 end SECOND; architecture SEC of SECOND is begin process(clk,clr) variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数 begin if clr='1' then----当ckr为1时,高低位均为0 cnt1:="0000"; cnt0:="0000"; elsif clk'event and clk='1' then if cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位 cnt0:="1001";----低位为9 elsif cnt0<"1001" then----小于9时 cnt0:=cnt0+1;----计数 else cnt0:="0000"; if cnt1<"0101" then----高位小于5时 cnt1:=cnt1+1; else cnt1:="0000"; co<='0'; end if; end if; end if; sec1<=cnt1; sec0<=cnt0; end process; end SEC; 3.文件存盘。选择File→Save As命令,找到已经设立的文件夹,存盘文件名应与实体名一致。 4.创建工程。打开并建立新工程管理窗口,选择File→New Project Wizard命令,即弹出设置窗口,命名为57。

相关主题
文本预览
相关文档 最新文档