当前位置:首页 » 课程大全 » eda电子秒表课程设计

eda电子秒表课程设计

发布时间: 2021-02-09 07:36:55

⑴ 单片机电子秒表课程设计

高估我啦,你上csdn上找找把

⑵ 电子秒表课程设计

我已经把我上学期做的秒表设计报告发到你的邮箱了,希望对你有所帮助~
请采纳答案,支持我一下。

⑶ EDA用Verilog HDL语言描述电子秒表设计(包括代码)

1. “分分:秒秒”计数器设计<br> 我们要实现“分分:秒秒”显示的电子秒表,需要设计计数频率为 的<br> 计数器。因为“分分:秒秒”的结构对应有4个十进制数字(个位的秒,十位的<br> 秒,个位的分,十位的分),如果采用统一计数再分别求出“分分:秒秒” 对应<br> 的4个十进制数字进行译码显示,则求解对应的4个十进制数字的过程难于用硬<br> 件实现。在此,我们将每个显示的值分别进行计数,即分别针对个位的秒、十位<br> 的秒、个位的分、十位的分设计对应的计数器,其中个位的秒计数频率为1Hz,<br> 其从0到9计数,当从9回到0时,向前进一位,使得十位的秒进行计数加1。<br> 35<br> 十位的秒从0到5计数,当从5回到0时,向前进一位,使得个位的分进行计数<br> 加1。个位的分从0到9计数,当从9回到0 时,向前进一位,使得十位的分进<br> 行计数加1。十位的分则从0 到5计数,计数到5时,又回到0。<br> 2. 扫描显示技术<br> 因为4位数码管的段控制输入是复用的,要分别显示不同的计数数值,需要<br> 使用动态扫描显示技术,其电路结构如图61 所示。首先,以扫描显示的频率进<br> 行2比特宽的模4计数,然后由其值从4个数码管的待显示值输入中选择对应的<br> 一个经译码后连接到公共的段控制输入端,同时将计数值经2到4译码后输出到<br> 对应数码管位的公共端,点亮对应的数码管。虽然各数码管位是轮流显示,每个<br> 数码管位上的数字是断续的显示,只要扫描的频率够快,由于人眼的视觉残余效<br> 应,就可以看到各数码管位上稳定的数字显示值。这和我们使用的电视、显示器<br> 的显示原理是一样的。参考液晶显示器的刷新频率,经验证,在每秒钟扫描60<br> 帧的时候,各数码管位上即能得到稳定的数字显示,此时,对应计数时钟的等效<br> 频率为240Hz。我们可以参考实验四的图47,再做一个等效分频计数器,通过<br> 产生的后级时钟使能信号将20MHz的时钟等效分频到240Hz。<br> 图 61 扫描显示电路结构<br> 3. 冒号点的处理<br> 数码管中间的时间分隔冒号点(对应为左边第2个数码管位的DP点)每秒<br> 钟闪烁一次,其频率为1Hz,只需要输出1Hz,占空比为50%的周期信号即可。<br> 其他数码管位的点号不需要显示,对应的DP 点输出低电平无效信号即可。这4<br> 个信号 所示的显示切换计数值进行4 选1 选择后接到数码管上公共的<br> DP控制端。<br> 在实验四中,我们为了得到1Hz的主功能计数频率,前面利用precnt<br> 进行了等效分频计数,其一个完整的计数周期即为1s,对应产生的使能信号en<br> 频率即为1Hz,但我们在此不能直接使用en 的信号,因为其占空比只有<br> 1/20000000,肉眼无法看到其闪烁的效果。为得到占空比为50%的1Hz信号,我<br> 们可以通过对precnt 的计数值进行比较得出,只需要在precnt 计数周期内一半的<br> 时间输出1,一半的时间输出0 即可,例如,当precnt>25'd9999999 时输出0,<br> 否则输出1,此时即可得到占空比为50%的1Hz信号。<br> 4. 总体设计<br> 总体设计只需要将时钟电路、复位电路、按键电路、数码管电路等组合起来,<br> 综合使用时钟使能的同步设计技术、按键处理技术、扫描显示技术、“分分:秒<br> 秒”计数器设计技术及冒号点的处理技术即可。

⑷ EDA课程设计——数字电子钟

1、基本要求:能利用现有的硬件系统设计一个至少能显示分、秒的控制电路。分和秒均用两位数码管指示,并具有调时、复位功能;
2、扩展要求:能同时显示小时(两位数码管)并能调节小时功能;具有闹钟定时功能。
3、设计方法:采用模块化描述方法,可分为分频模块、调时控制模块、数码显示模块、复位等模块,每个模块既可以编辑成独立的HDL文件或GDF文件,也可以作为HDL程序中的一个进程模块,最后进行系统仿真加以验证,在此基础上下载到硬件上进行现场测试。
4、输入、输出端口描述:输入信号——时钟信号clk、复位信号clr、时间设置键set、时间上调键tup、时间下调键tdown;输出信号——扫描式七段数码管段选输出端led[7..0]、位选输出端ctrlbit[3..0]。
我来帮他解答

2011-6-1 17:06
满意回答
设计原理
计数时钟由模为60的秒计数器模块、模为60的分计数模块、模为24的小时计数器模块、指示灯与报警器的模块、分/小时设定模块及输出显示模块等组成。秒计数器模块的进位输出为分计数器模块的进位输入,分计数器模块的进位输出为小时计数器模块的进位输入。其中秒计数器模块中应有分钟的设定,分计数器模块中应有小时的设定。
内容
设计一个计数时钟,使其具有24小时计数功能。通过“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意引线插孔可设置小时和分钟的值,并具有整点报时的功能。
电路原理图
模块说明:计数时钟由60秒计数器模块XSECOND、60分计数器模块XMINUTE、24小时计数器模块XHOUR等六个模块构成。秒计数器模块的进位输出为分计数器模块的进位输入,分计数器模块中有小时的设定。通过SW1、SW2、SW3、SW4可设定小时和分钟的值,并具有整点报时的功能。
输入信号:SETMIN为分钟设置信号;SETHOUR为小时设置信号;RESET为全局复位信号;CLK为全局时钟信号;CKDSP为数码管动态扫描信号。
输出信号:SPEAK为蜂鸣器报时信号;LAMP[2..0]为指示灯信号;A~G为数码管七个段位信号;SS[2..0]为数码管段位译码控制信号。
说明与电路连线
指示灯信号LAMP2~LAMP0为独立扩展下载板上CPLD器件的第11、10、9脚,内部已连接并已锁定,无需外接连线。
蜂鸣器报时信号SPEAK为独立扩展下载板CPLD器件的第31脚,内部已连接并已锁定,无需外接连线。
拨码开关SW1~SW7内部已连接并已锁定,无需外接连线。
数码管七个段位信号A~G为独立扩展下载板上CPLD器件的第86、87、88、89、90、92、93脚,应接数码管段位引线接线组KPL_AH,从左到右依次对应的A、B、C、D、E、F、G引线插孔。
数码管段位译码控制信号SS0、SS1、SS2为独立扩展下载板上CPLD器件的第68、69、70脚,为数码管的位选扫描信号,分别接信号接线组DS1-8A(T)的SS0、SS1、SS2引线插孔(即在电源引线插孔组GND孔处)。
复位信号RESET为独立扩展下载板上CPLD器件的第71脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意一个插孔。
小时设置信号SETHOUR为独立扩展下载板CPLD器件的第73脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意一个插孔。
分钟设置信号SETMIN为独立扩展下载板上CPLD器件的第74脚,应接“多功能复用按键F1-F12”信号接线组“F1_12(T)”的F9~F12的任意一个插孔。
时钟信号CLK为独立扩展下载板上CPLD器件的183脚(即GCLK2),应接时钟信号接线组“CLOCK(T)”的“FRQ(21)”引线插孔。
数码管动态扫描信号CKDSP为独立扩展下载板上CPLD器件的79脚(即GCLK1),应接时钟信号接线组“CLOCK(T)”的“FRQ(11)”引线插孔。
参考源程序
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xsecond is
port (
clk: in STD_LOGIC;
clkset: in STD_LOGIC;
setmin: in STD_LOGIC;
reset: in STD_LOGIC;
secout: out STD_LOGIC_VECTOR (6 downto 0);
enmin: out STD_LOGIC
);
end xsecond;
architecture xsecond_arch of xsecond is
signal sec : std_logic_vector(6 downto 0);
signal emin : std_logic;
signal sec1 : std_logic;
begin
-- <<enter your statements here>>
process(reset,sec,emin,setmin,clkset)
begin
if reset='0' then
enmin<='0';
secout<="0000000";
sec1<='1';
else
sec1<='0';
secout<=sec;
if clkset='1' and clkset'event then
if setmin='0' then
enmin<='1';
else
enmin<=emin;
end if;
end if;
end if;
end process;
process(clk,sec1)
alias lcount : std_logic_vector(3 downto 0) is sec(3 downto 0);
alias hcount : std_logic_vector(2 downto 0) is sec(6 downto 4);
begin
if sec1='1' then
sec<="0000000";
else
if (clk='1' and clk'event) then
if lcount=9 then
lcount<="0000";
if hcount/=5 then
hcount<=hcount+1;
emin<='0';
else
hcount<="000";
emin<='1';
end if;
else
lcount<=lcount+1;
emin<='0';
end if;
end if;
end if;
end process;
end xsecond_arch;

library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xminute is
port (
clkmin: in STD_LOGIC;
reset: in STD_LOGIC;
sethour: in STD_LOGIC;
clk: in STD_LOGIC;
minout: out STD_LOGIC_VECTOR (6 downto 0);
enhour: out STD_LOGIC
);
end xminute;
architecture xminute_arch of xminute is
signal min : std_logic_vector(6 downto 0);
signal ehour : std_logic;
signal min1 : std_logic;
begin
-- <<enter your statements here>>
process(reset,clk,sethour,min,ehour)
begin
if reset='0' then
enhour<='0';
minout<="0000000";
min1<='0';
else
min1<='1';
minout<=min;
if clk='1' and clk'event then
if sethour='0' then
enhour<='1';
else
enhour<=ehour;
end if;
end if;
end if;
end process;
process(clkmin,min1)
alias lcountm : std_logic_vector(3 downto 0) is min(3 downto 0);
alias hcountm : std_logic_vector(2 downto 0) is min(6 downto 4);
begin
if min1='0' then
min<="0000000";
else
if (clkmin='1' and clkmin'event) then
if lcountm=9 then
lcountm<="0000";
if hcountm/=5 then
hcountm<=hcountm+1;
ehour<='0';
else
hcountm<="000";
ehour<='1';
end if;
else
lcountm<=lcountm+1;
ehour<='0';
end if;
end if;
end if;
end process;
end xminute_arch;

library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xhour is
port (
clkhour: in STD_LOGIC;
reset: in STD_LOGIC;
hourout: out STD_LOGIC_VECTOR (5 downto 0)
);
end xhour;
architecture xhour_arch of xhour is
signal hour : std_logic_vector(5 downto 0);
begin
-- <<enter your statements here>>
process(reset,clkhour,hour)
alias lcount : std_logic_vector(3 downto 0) is hour(3 downto 0);
alias hcount : std_logic_vector(1 downto 0) is hour(5 downto 4);
begin
if reset='0' then
hourout<="000000";
hour<="000000";
else
if (clkhour='1' and clkhour'event) then
if lcount=9 then
lcount<="0000";
hcount<=hcount+1;
else
if hour="100011" then
hour<="000000";
else
lcount<=lcount+1;
end if;
end if;
end if;
hourout<=hour;
end if;
end process;
end xhour_arch;

library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xalert is
port (
clk: in STD_LOGIC;
d_in: in STD_LOGIC_VECTOR (6 downto 0);
speak: out STD_LOGIC;
d_out: out STD_LOGIC_VECTOR (2 downto 0)
);
end xalert;
architecture xalert_arch of xalert is
type state is (s1,s2,s3,s4);
signal next_state,current_state : state;
begin
-- <<enter your statements here>>
process(clk,current_state,d_in)
begin
if d_in/="0000000" then
speak<='0';
next_state<=s1;
current_state<=s1;
d_out<="000";
else
if clk='1' and clk'event then
speak<='1';
current_state<=next_state;
end if;
case current_state is
when s1 =>
d_out<="000";
next_state<=s2;
when s2 =>
d_out<="001";
next_state<=s3;
when s3 =>
d_out<="010";
next_state<=s4;
when s4 =>
d_out<="100";
next_state<=s1;
when others =>
d_out<="000";
null;
end case;
end if;
end process;
end xalert_arch;

library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xsettime is
port (
hour: in STD_LOGIC_VECTOR (5 downto 0);
min: in STD_LOGIC_VECTOR (6 downto 0);
sec: in STD_LOGIC_VECTOR (6 downto 0);
reset: in STD_LOGIC;
clk: in STD_LOGIC;
sel: out STD_LOGIC_VECTOR (2 downto 0);
d_out: out STD_LOGIC_VECTOR (3 downto 0)
);
end xsettime;
architecture xsettime_arch of xsettime is
signal sel1 : std_logic_vector(2 downto 0);
begin
-- <<enter your statements here>>
process(clk,reset,sel1,hour,min,sec)
begin
if reset='0' then
sel<="000";
d_out<="0000";
sel1<="000";
else
if (clk='1' and clk'event) then
if sel1<5 then
sel1<=sel1+1;
else
sel1<="000";
end if;
end if;
sel<=sel1;
case sel1 is
when "000" =>
d_out(3)<='0';
d_out(2)<='0';
d_out(1)<=hour(5);
d_out(0)<=hour(4);
when "001" =>
d_out<=hour(3 downto 0);
when "010" =>
d_out(3)<='0';
d_out(2)<=min(6);
d_out(1)<=min(5);
d_out(0)<=min(4);
when "011" =>
d_out<=min(3 downto 0);
when "100" =>
d_out(3)<='0';
d_out(2)<=sec(6);
d_out(1)<=sec(5);
d_out(0)<=sec(4);
when "101" =>
d_out<=sec(3 downto 0);
when others =>
null;
end case;
end if;
end process;
end xsettime_arch;

library IEEE;
use IEEE.std_logic_1164.all;
entity xdeled is
port (
d_in: in STD_LOGIC_VECTOR (3 downto 0);
a: out STD_LOGIC;
b: out STD_LOGIC;
c: out STD_LOGIC;
d: out STD_LOGIC;
e: out STD_LOGIC;
f: out STD_LOGIC;
g: out STD_LOGIC
);
end xdeled;
才五分啊,太少了吧
哥刚的

⑸ EDA课程设计——数字电子钟 设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。 扩展功能:秒

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity code is
port( clk: in std_logic;--电路工作时的时钟信号
clk1: in std_logic;--闹铃产生需要的时钟信号
k: in std_logic;--高电平表示输入1
led: out std_logic;--输入正确时亮
led1: out std_logic;--输入错误时亮
reset: in std_logic;-- 按下时复位
want: in std_logic;--是否修改密码
alarm: out std_logic;--输出闹铃声
show: out std_logic_vector(3 downto 0));--提示作用
end;

architecture a of code is
signal temp: std_logic_vector(3 downto 0);--输入一位加1
signal code: std_logic_vector(7 downto 0);--储存密码
signal getcode: std_logic_vector(7 downto 0);--储存修改后的密码
signal counter: std_logic_vector(3 downto 0);--计数
signal allow: std_logic;--是否允许修改密码
signal ring:std_logic;--是否接通闹铃
begin
process(clk)
begin
if ring='1' then
alarm<=clk1;--闹铃接通
else
alarm<='0';--闹铃截至
end if;
if reset='1' then--按下reset后,密码归为初始密码
getcode<="00000000";--初始密码
counter<="0000";--内部计数
code<="11001000";--密码
led<='0';
led1<='0';
allow<='0';
elsif clk'event and clk='1' then--输入clk脉冲,则接收1位密码
getcode<=getcode(6 downto 0)&k;--将这1位密码并入getcode中的最后一位
if counter="1000" then--输入为8位数码时比较
if code=getcode then
led<='1';--正确灯亮
led1<='0';
ring<='0';
allow<='1';--允许修改密码
elsif allow='1' and want='1' then--如果允许输入且想输入
code<=getcode;--输入新密码
led<='0';
led1<='0';
else
allow<='0';
led<='0';
led1<='1';--错误灯亮
ring<='1';--闹铃响
end if;
counter<="0000";--重新计数
else
counter<=counter+1; --累加
temp<=temp+1;--为防止泄露密码,特别设置
end if;
end if;
show <= temp;
end process;
end;

⑹ EDA用VHDL语言描述电子秒表设计

这样的问题需要自己解决,不能所有的东西都找网络。自己没有学好对自己没有一点好处!建议还是自己去好好学习下!

⑺ EDA—VHDL—设计一个倒计时电子秒表

初始计时25s通过tatb可以对倒计时进行设置0~99sqaqb输出到显示

后面接个译码器就可以显示ldn是调节有效位en为开始倒计时按键

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYJSQIS

PORT(CLR,LDN,EN,CLK:INSTD_LOGIC;

TA,TB,KK:INBIT;

QA:OUTSTD_LOGIC_VECTOR(3DOWNTO0);

QB:OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITYJSQ;

ARCHITECTUREARTOFJSQIS

SIGNALDA:STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALDB:STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(TA,CLR)IS

BEGIN

IFCLR='1'THEN

DA<="0000";

ELSE

IFTA'EVENTANDTA='1'THEN

DA<=DA+'1';

IFDA>="1001"THENDA<="0000";

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(TB,CLR)

BEGIN

IFCLR='1'THEN

DB<="0000";

ELSE

IFTB'EVENTANDTB='1'THEN

DB<=DB+'1';

IFDB>="1001"THENDB<="0000";

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CLK)IS

VARIABLETMPA:STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLETMPB:STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFCLR='1'THENTMPA:="0101";TMPB:="0010";

ELSIFCLK'EVENTANDCLK='1'THEN

IFLDN='1'THENTMPA:=DA;TMPB:=DB;

ELSIF(EN='1'ANDKK='0')THEN

IFTMPA="0000"THEN

TMPA:="1001";

IFTMPB="0000"THENTMPB:="0010";

ELSETMPB:=TMPB-1;

ENDIF;

ELSETMPA:=TMPA-1;

ENDIF;

ENDIF;

ENDIF;

QA<=TMPA;QB<=TMPB;

ENDPROCESS;

ENDARCHITECTUREART;

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919