24进制计数器设计VHDL语言
二十四进制计数器设计

目录摘要 (1)1. 设计任务 (2)1.1 设计目的 (2)1.2 设计指标 (2)1.3 设计要求 (2)2.设计思路与总体框图 (3)3.系统硬件电路的设计 (3)3.1 555多谐荡电路 (3)3.2 计数器电路 (5)3.3 译码和显示电路 (6)4.系统设计仿真 (6)4.1各功能元件的选用与分析 (6)一.74LS48译码器 (6)二. 74LS08芯片 (7)三. 计数及译码显示 (8)四. 共阴极七段数码管显示器 (10)五.电阻 (11)六.电容 (15)4.2仿真原理总设计图 (17)5. 系统硬件焊接与调试 (18)5.1焊接步骤 (18)5.2元件清单 (18)5. 3实物图 (19)5.2硬件电路测试 (20)总结 (21)致谢 (22)参考文献 (23)二十四进制计数器设计摘要:24进制数字钟是一种用数字电路技术实现时计时的装置,与机械式时钟相比具有更高的准确性和直观性。
此次设计与制作24进制电子数字钟时计数、译码、显示电路需要了解组合逻辑电路和时序逻辑电路;了解集成电路的引脚安排;了解各种时计数、译码芯片的逻辑功能及使用方法;了解数字钟的原理。
本次设计是基于24进制电子数字钟的原理,实现具有24进制清零功能的电子钟,它主要由脉冲、二-五-十进制加法器74LS90、译码器74LS48、共阴极LED数码管等四个模块构成。
脉冲利用555设计一个多谐振荡器。
各功能模块multisim 软件中描述出,然后将其打包成可调用的元件,再利用原理图输入法将各模块按功能连接起来就得到顶层文件的原理图。
这时,再进行时序仿真、引脚锁定和嵌入逻辑分析仪之后,就编译下载至硬件中,选择正确的模式和各种设置后即可实现这次设计所要求的功能。
关键词:加法器;译码器;显示数码管1. 设计任务1.1 设计目的1. 了解计数器的组成及工作原理。
2. 进一步掌握计数器的设计方法和计数器相互级联的方法。
3. 进一步掌握各芯片的逻辑功能及使用方法。
计数计时器的VHDL设计.ppt

PROCESS(clk, bcd1wr) BEGIN IF(bcd1wr='1') THEN bcd1n<=datain; ELSIF(clk'EVENT AND clk='1') THEN IF(cin='1') THEN IF(bcd1n=“1001”) THEN bcd1n<="0000"; ELSE bcd1n<=bcd1n+1; END IF; END IF; END IF; END PROCESS;
加上异步复位和置位的十进制计时器
LIBRARY IEEE; RST为复位端,EN为 USE IEEE.STD_LOGIC_1164.ALL; 使能端; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); COUT为进位输出端; END CNT10;
二、计数器的设计(P63-67)
简单计时器的设计; 六十进制计数器和计时器的设计; 二十四进制计时器的设计; 数字钟的设计。
最简单的计时器
【例3-19】
ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q : BUFFER INTEGER RANGE 15 DOWNTO 0 ) ; END ; BUFFER模式 ARCHITECTURE bhv OF CNT4 IS 才可以读取 BEGIN PROCESS (CLK) BEGIN 在时钟CLK信号的 IF CLK'EVENT AND CLK = '1' THEN 驱动下 Q <= Q + 1 ; Q对时钟信号CLK进行计 END IF; 数;由于Q为BUFFER模 END PROCESS ; 式,所以可以读取Q的值 END bhv; 表式Q <= Q + 1的右项与左项并非处于相同的时刻内,对于时序电 路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即 左项要获得当前的Q + 1,需等待下一个时钟周期。
24进制计数器

沈阳工业大学实验报告(适用计算机程序设计类)实验名称:24进制加法计数器1.实验目的:(1)学习掌握VHDL语言程序编写的方法,并利用其解决实际问题。
(2)学习掌握QuartusII应用软件,练习使用原理图输入设计方法,并正确使用软件仿真解决实际问题。
(3)学习掌握EDA实验系统的应用,学会利用其解决实际的问题。
2.实验内容:(1)学习掌握利用QuartusII应用软件进行工作库文件的创建、VHDL语言的编写、工程创建、时序仿真及引脚设置和下载等操作。
(2)学习掌握EDA实验系统模式的选择及引脚的查询等使用操作。
(3)利用VHDL硬件描述语言及原理图输入设计方法,设计一个24进制加法计数器,并利用QuartusII进行功能仿真,并通过EDA实验系统验证其功能的正确性。
3.实验方案(程序设计说明)(1)明确所要设计的电子线路所要实现的功能和要求,并设计方案。
(2)根据自己的设计方案,设计一个十进制的VHDL硬件描述语言。
(3)利用QuartusII将十进制的VHDL硬件描述语言转化为原理图。
(4)利用QuartusII软件创建工程,并进行时序仿真,观察波形图。
(5)把设计的VHDL硬件语言进行引脚设置,下载到EDA实验系统。
4. 实验步骤或程序(经调试后正确的源程序)附件A 沈阳工业大学实验报告(适用计算机程序设计类)1、建立10进制计数器工作库文件夹、并编辑设计VHDL 文件2、创建10进制加法计数器的工程见附件A5.程序运行结果绘制的仿真波形图能够正确的反映出所设计电子线路的功能,下载到EDA 实验系统的文件,能够通过EDA 实验系统正确的实现其功能。
6.出现的问题及解决方法问题:在利用原理图创建24进制计数器工程时,把10进制计数器原理图的工程替换了解决方法:重新创建10进制计数器工程,并构建24进制计数器。
3、利用原理图输入设计法设计24进制加法计数器4、创建24进制加法计数器的工程5、24进制加法计数器时序仿真6、引脚设置(模式5)选择模式5的数码管1和数码管2Q0[0] 引脚:PIO16-13 Q0[1] 引脚:PIO17-14 Q0[2] 引脚:PIO18-15 Q0[3] 引脚:PIO19-16 Q1[0] 引脚:PIO20-17 Q1[1] 引脚:PIO21-18 Q1[2] 引脚:PIO22-19 Q1[3] 引脚:PIO23-20 CLOCK: 选择clock2-1537、配置文件下载。
基于VHDL控制的24点智力游戏机

• 27•本文基于VHDL语言,利用Quartus II设计了一款24点智力游戏机。
内部包含“信号随机生成”,“四则运算”,“二进制—BCD 码转换”,“数码管显示”等模块。
游戏体验良好,可极大的娱乐人们的日常闲暇时光,丰富人们的生活。
“24点”游戏是人们日常生活中非常常见的一种游戏,传统的24点游戏以扑克牌为载体,出题者随机发出四张扑克牌,玩家要运用这扑克牌上的四个数进行加减乘除运算,若运算结果为24,则玩家赢得胜利。
本文的24点智力游戏器基于VHDL语言,不需要手动发牌,使游戏过程更加简单,方便。
1 系统设计1.1 系统设计方案本产品主要由四个模块组成,其中包括随机数生成模块,数据1.2 硬件设计随机数生成模块:图3 随机数生成模块随机数生成模块的功能是随机生成四个0~9的整数,其中clk 输入50MHz的脉冲信号,en处于高电平时,模块开始工作,当rand 按下时会产生上升沿信号,此时会生成四个整数,并由r1,r2,r3,r4端口输出其对应的四位二进制码。
数据选择分配模块:图4 数据选择分配模块a[3..0],b[3..0],c[3..0],d[3..0]端输入随机生成模块产生的4个随机数,c1[3..0]段是由玩家给出输入信号来选择其中的两个数给到set模块的a[3..0],b[3..0]端,set的c[7..0]端口用于输入上一步运算的结果值,(当c[7..0]的值为空时,q1[7..0],q2[7..0]输出玩家选择的两个数,否则q1[7..0],q2[7..0]将输出c[7..0]与玩家在做大于两次运算时选择的一个数)最后会以八位二进制的形式将相应的q1[7..0],q2[7..0]两个数输出。
运算模块:图5 运算模块a[7..0],b[7..0]为所要运算的值,只有当s1,s2,s3或s4给高电基于VHDL控制的24点智力游戏机大连理工大学城市学院 严飞杰 杜建硕 付明雨 于海霞图1 21点智力游戏器的系统框图选择分配模块,四则运算模块(加减乘除),BCD转码与数码管显示模块。
VHDL语言实现24制数字电子钟的设计程序

VHDL 语言实现24制数字电子钟的设计原理框图:系统构成图:各模块程序:秒计数Second 模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport(clk: in std_logic;reset: in std_logic;setmin: in std_logic;enmin: out std_logic;daout: out integer range 0 to 59);end entity second;architecture art of second issignal count:integer range 0 to 59;signal enmin_1,enmin_2:std_logic;begindaout<=count;enmin_2<=(setmin and clk);enmin<=(enmin_1 or enmin_2);process(clk,reset,setmin)beginif(reset='0')thencount<=0;enmin_1<='0';elsif(clk'event and clk='1')thenif(count<59) thencount<=count+1; enmin_1<='0';elsecount<=0;enmin_1<='1';end if;end if;end process;end art;分计数minute模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport(clk: in std_logic;clks: in std_logic;reset: in std_logic;sethour:in std_logic;enhour: out std_logic;daout: out integer range 0 to 59);end entity minute;architecture art of minute issignal count:integer range 0 to 59;signal enhour_1,enhour_2:std_logic;begindaout<=count;enhour_2<=(sethour and clks);enhour<=(enhour_1 or enhour_2);process(clk,reset,sethour)beginif(reset='0')thencount<=0;enhour_1<='0';elsif(clk'event and clk='1')thenif(count<59) thencount<=count+1; enhour_1<='0';elsecount<=0;enhour_1<='1';end if;end if;end process;end art;时计数hour模块:LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all;entity hour isport ( clk : in std_logic;reset: in std_logic;daout: out integer range 0 to 11);end entity hour;architecture zrt of hour issignal count:integer range 0 to 11;begindaout<=count;process(clk,reset)beginif(reset='0') thencount<=0;elsif (clk'event and clk='1') thenif(count<11) thencount<=count+1;elsecount<=0;end if;end if;end process;end zrt;时间调整及多路选择settime模块;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity settime isport(clk1: in std_logic;reset: in std_logic;sec,min:in integer range 0 to 59;hour: in integer range 0 to 11;daout: out integer range 0 to 9;dp: out std_logic;sel: out std_logic_vector(5 downto 0)); end settime;architecture art of settime issignal count:std_logic_vector(2 downto 0); beginprocess(clk1,reset)beginif(reset='0')thencount<="000";elsif(clk1'event and clk1='1')thenif(count>="101")thencount<="000";elsecount<=count+1;end if;end if;end process;process(clk1,reset)variable a ,b:integer range 0 to 9;beginif(reset='0')thendaout<=0;dp<='0';sel<="111111";elsif(clk1'event and clk1='1')thencase count iswhen"000"=>a:=sec rem 10;daout<=a;dp<='0';sel<="000001";when"001"=>b:=sec /10;daout<=b;dp<='0';sel<="000010";when"010"=>a:=min rem 10;daout<=a;dp<='1';sel<="000100";when"011"=>b:=min / 10;daout<=b;dp<='0';sel<="001000";when"100"=>a:=hour rem 10;daout<=a;dp<='1';sel<="010000";when"101"=>b:=hour / 10;daout<=b;dp<='0';sel<="100000";when others=>null;end case;end if;end process;end art;报时alert模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert isport ( clk,clk1,reset,stop:in std_logic;dainm:in integer range 0 to 59;dains:in integer range 0 to 59;speak:out std_logic);end alert;architecture art of alert issignal s_speak,enspeak:std_logic;beginspeak<=enspeak and s_speak;process(clk1,reset)beginif(reset='0')thens_speak<='0';elsif(clk1'event and clk1='1')thenif(dainm=0)thenif(dains>10)thens_speak<='0';elses_speak<=clk;end if;elses_speak<='0';end if;end if;end process;process(stop,reset,dains)beginif(reset='0' or dains>10)thenenspeak<='1';elsif(stop'event and stop='1')thenenspeak<='0';end if;end process;end art;译码deled模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity deled isport(num: in integer range 0 to 9;led: out std_logic_vector(6 downto 0)); end entity deled;architecture art of deled isbeginled<="1111110"when num=0 else"0110000"when num=1 else"1101101"when num=2 else"1111001"when num=3 else"0110011"when num=4 else"1011011"when num=5 else"1011111"when num=6 else"1110000"when num=7 else"1111111"when num=8 else"1111011"when num=9 else"0000000";end art;顶层文件clock:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport (clk1,stop,clk,reset,setmin,sethour:in std_logic;dp,speak:out std_logic;led:out std_logic_vector(6 downto 0);sel:out std_logic_vector(5 downto 0));end entity clock;architecture one of clock iscomponent second isport(clk: in std_logic;reset: in std_logic;setmin: in std_logic;enmin: out std_logic;daout: out integer range 0 to 59);end component second;component minute isport(clk: in std_logic;clks: in std_logic;reset: in std_logic;sethour:in std_logic;enhour: out std_logic;daout: out integer range 0 to 59);end component minute;component hour isport ( clk : in std_logic;reset: in std_logic;daout: out integer range 0 to 11);end component hour;component alert isport ( clk,clk1,reset,stop:in std_logic;dainm:in integer range 0 to 59;dains:in integer range 0 to 59;speak:out std_logic);end component alert;component settime isport(clk1: in std_logic;reset: in std_logic;sec,min:in integer range 0 to 59;hour: in integer range 0 to 11;daout: out integer range 0 to 9;dp: out std_logic;sel: out std_logic_vector(5 downto 0));end component settime;component deled isport(num: in integer range 0 to 9;led: out std_logic_vector(6 downto 0));end component deled;signal min:std_logic;signal secondout:integer range 0 to 59;signal hour1:std_logic;signal minuteout:integer range 0 to 59;signal hourout:integer range 0 to 11;signal settimeout:integer range 0 to 9;beginu1:second port map(clk=>clk,reset=>reset,setmin=>setmin,enmin=>min,daout=>secondout);u2:minute port map(clk=>min,clks=>clk,reset=>reset,sethour=>sethour,enhour=>hour1,daout=>minuteout);u3:hour port map(clk=>hour1,reset=>reset,daout=>hourout);u4:alert port map(clk=>clk,clk1=>clk1,reset=>reset,stop=>stop,dainm=>minuteout,dains=>secondout,speak=> speak);u5:settime port map(clk1=>clk1,reset=>reset,sec=>secondout,min=>minuteout,hour=>hourout,daout=>settimeou t,dp=>dp,sel=>sel);u6:deled port map(num=>settimeout,led=>led);end architecture one;。
vhdl实验报告--数字钟

VHDL实验报告一、实验目的1、设计一个24小时制数字钟,要求能显示时,分,秒,并且可以手动调整时和分。
2、通过复杂实验,进一步加深对VHDL语言的掌握程度。
二、实验原理数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分为模60计数器,小时是模24计数器,分别产生3位BCD码。
BCD码经译码,驱动后接数码管显示电路。
秒模60计数器的进位作为分模60计数器的时钟,分模60计数器的进位作为模24计数器的时钟。
为了实现手动调整时间,在外部增加了setm(调整分),seth(调整时)按键,当这两个按键为低电平时,电路正常计时,当为高电平时,分别调整分,时。
同时在外部还增加了一个清零按键clr.和消抖动电路。
三、实验步骤1、单元模块设计部分1)消抖动电路关键部分signal key_in1,key_in2:std_logic:='0';beginprocess(clk,key_in)beginif clk'event and clk='1' thenkey_in1<=key_in;key_in2<=key_in1;if key_in='1' and key_in1='1' and key_in2='1' then key_out<='1';else key_out<='0';end if;2) 模60计数器程序关键部分:signal md_temp,mg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr)beginif clr='1' thenmd_temp<="0000"; mg_temp<="0000";elsif set='1' thenmd_temp<=setl; mg_temp<=seth;elsif clk'event and clk='1' thenif md_temp="1001" thenmd_temp<="0000";mg_temp<=mg_temp+'1';else md_temp<=md_temp+'1';if md_temp="1001" and mg_temp="0101" thenmd_temp<="0000";mg_temp<="0000";2、模24计数器程序关键部分signal hd_temp,hg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr,set,setl,seth)isbeginif set='1' then hd_temp<=setl; hg_temp<=seth;elsif clr='1' then hd_temp<="0000"; hg_temp<="0000";elsif clk'event and clk='1' thenif hg_temp="0010" and hd_temp="0011" thenhd_temp<="0000"; hg_temp<="0000";elsif hd_temp="1001" thenhg_temp<=hg_temp+'1' hd_temp<="0000";else hd_temp<=hd_temp+'1';end if;end if;end process ;3、清零和调时部分显示部分关键程序process (sd,sg,md,mg,hd,hg)begincase sd iswhen "0000" =>sl<="1111110";when "0001" =>sl<="0110000";when "0010" =>sl<="1101101";when "0011" =>sl<="1111001";when "0100" =>sl<="0110011";when "0101" =>sl<="1011011";when "0110" =>sl<="1011111";when "0111" =>sl<="1110000";when "1000" =>sl<="1111111";when "1001" =>sl<="1111011";when others =>sl<="0000000";end case;if clk_g'event and clk_g='1' thenif sel="101" thensel<="000";else sel<=sel+'1';end if;end if;process(sel,sd,sl,sg,sh,md,ml,mg,mh,hd,hl,hg,hh)begincase sel iswhen"000"=>led<=sl;led_which<=sd;when"001"=>led<=sh;led_which<=sg;when"010"=>led<=ml;led_which<=md;when"011"=>led<=mh;led_which<=mg;when"100"=>led<=hl;led_which<=hd;when"101"=>led<=hh;led_which<=hg;when others=>led<="0000000";led_which<="0000";end case;4、顶层文件关键程序port(clk,clk_g:in std_logic;-----clk_g是用在数码管显示里面的信号clr: in std_logic;------clr=1时清零setm,seth:in std_logic;---------setm为1时调分,seth为1时调时setd,setg:in std_logic_vector(3 downto 0);----调整时间的时候,setd调整的是低位setg 调整高位led:out std_logic_vector(6 downto 0);sel_out: out std_logic_vector(2 downto 0);led_which: out std_logic_vector(3 downto 0));---输出的是秒分时的哪一个beginu1:de_shake port map (clk=>clk,key_in=>clr,key_out=>clro);u2:de_shake port map (clk=>clk,key_in=>setm,key_out=>setmo);u3:de_shake port map (clk=>clk,key_in=>seth,key_out=>setho);u4:s60 port map (clk=>clk,clr=>clro,sd=>sdl,sg=>sgh,fenmaichong=>fenmaichong o);u5:m60 port map (clk=>fenmaichongo,clr=>clro,md=>mdl,mg=>mgh,xiaoshimaichong=> xiaoshimaichongo,setl=>setd,seth=>setg,set=>setmo);u6:h24 port map (clk=>xiaoshimaichongo,clr=>clro,hd=>hdl,hg=>hgh,set=>setho,se tl=>setd,seth=>setg);u7:led_xs port map (clk_g=>clk_g,sd=>sdl,sg=>sgh,md=>mdl,mg=>mgh,hd=>hdl, hg=>hgh,led=>led,sel_out=>sel_out,led_which=>led_which);四、实验结果及分析本设计,满足了本次试验设计的任务要求,能显示时分秒,并且可以手动调节分和时。
24小时计时器设计

24小时计时器设计摘要:使用硬件描述语言VHDL进行编程,设计六十进制和二十四进制计数器,利用原理图输入设计方法,使用两片六十进制计数器和一片二十四进制计数器,设计出了一个24小时计时器系统。
使用QuartusII软件进行编译,时序仿真,来验证该系统的正确性。
整个系统设计简单,使用方便,具有24小时计时显示功能,可以分别对时,分,秒进行校正。
关键词:VHDL 计数器24小时计时器目录1.设计背景 (1)2.设计方案 (1)2.1.六十进制计数器设计 (2)2.2.二十四进制计数器设计 (3)3.方案实施 (5)4.仿真结果 (6)5.参考文献 (7)1.设计背景随着EDA技术的发展和应用领域的扩大,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。
基于EDA技术的数字系统设计,一般可以再单片PLD实现,具有功能强、功耗低,体积小、可靠性高等特点,成为当今数字系统设计的主流。
此次EDA课程大作业,我的设计课题是24小时计时器系统设计,根据要求使用平时所学VHDL语言进行编程和原理图输入设计方法来完成。
报告书主要包括设计背景、设计方案、方案实施、仿真波形。
设计方案主要介绍了我对于设计课题的大致设计思路,之后各个部分将会详细介绍设计组成及程序。
2.设计方案24小时计时器的原理图如图2.1所示。
它由两片六十进制计时器和一片二十四进制计数器构成,输入CLK为1Hz的时钟,经过60分频后产生1分钟时钟信号,再经过60分频后,产生1小时的时钟信号,最后进行24分频,得到1天的脉冲送COUT输出。
将两个60分频和一个24分频的输出送7段数码管,得到24小时的计时显示结果。
图2.1 24小时计时器的原理图图2.1中的CLK是1Hz时钟输入端;RST是复位输入端,高电平有效;JM、JF和JS分别是校秒、校分和校时的输入端,下将沿有效;QM[7..0]、QF[7..0]和QS[7..0]分别是秒、分、时的计时输出端;COUT是“天”脉冲输出端。
计数计时器的VHDL设计

END IF; END IF; END PROCESS;
END behav;
二十四进制计数器的设计
二十四进制计数器
ENTITY clk_h IS PORT(clk: IN BIT;
q1: BUFFER INTEGER RANGE 0 TO 9; qt: BUFFER INTEGER RANGE 0 TO 2; co: OUT BIT); END clk_h;
bcd1n, bcd10n: 计数值的个
DOWNTO 0);
位输出和十位输出;
bcd1n: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));
co: 计数值进位输出。
END bcd60count;
结构体
ARCHITECTURE behave OF bcd60count IS BEGIN
二、计数器的设计(P63-67)
简单计时器的设计; 六十进制计数器和计时器的设计; 二十四进制计时器的设计; 数字钟的设计。
最简单的计时器
【例3-19】
ENTITY CNT4 IS
PORT ( CLK : IN BIT ;
Q : BUFFER INTEGER RANGE 15 DOWNTO 0 ) ;
IF EN = '1' THEN IF CQI < 9 THEN CQI := CQI + 1;
CQI := (OTHERS =>‘0’) 为 省略赋值方式,对CQI清零
检测是否允许计数
ELSE CQI := (OTHERS =>'0');
END IF; END IF;
允许计数, 检测是否小于9
计数器的VHDL设计与实现

期刊论文—EDA课程设计题目:计数器的VHDL设计与实现学生姓名:***学生学号:09专业班级:计算机科学与技术0902班指导老师:***计数器的VHDL设计与实现摘要:介绍了各种基本计数器的组成及其工作原理,重点研究了可变模计数器的设计与实现, 在对现有的可变模计数器的研究基础上,在Quartus 开发环境中,用VHDL语言设计一种功能更加强大的可变模计数器,它具有清零、置数、使能控制、可逆计数和可变模等功能,并且对传统的可变模计数器的计数失控问题进行研究,最终设计出一种没有计数失控缺陷的可变模计数器,并通过波形仿真和EPF10K20TI144-4系列实验箱,验证了其各项设计功能。
结果表明该设计正确.功能完整。
运行稳定。
关键词:VHDL;计数器;可变模计数;可逆计数VHDL Design and Realization of CounterAbstract:This paper analyzes all kinds of basic counter and its working principle, focus on the counter variable mode of design and implementation. In the environment of Quartus based on research of the existing module—alterable counter,a module—alterable counter with more functions,such as clear,set,enable control,reversible count,module—alterable count and so on,which is designedwith VHDL.By researching the problem of losing control existed in traditional module—alterable counter.A module—alterablecounter with no fault designed.And through the waveform simulation and EPF10K20TI144-4 series experiment box,all of the functions are verified.The resuit indicates that the counter is designed correctly,and has integral functions and stable operation.Keywords:VHDL;counter;divided frequency impIement;reversible引言随着电子技术、计算机技术和EDA技术的不断发展,数字系统规模越来越大,传统的电路设计已难以适应复杂电子系统的设计要求。
基于VHDL语言的二十四进制数字钟

module clock(clk,ena,tt5,tt4,tt3,tt2,tt1,tt0,speak); input clk,ena; output [7:0]tt5; output [7:0]tt4; output [7:0]tt3; output [7:0]tt2; output [7:0]tt1; output [7:0]tt0; reg [7:0]tt5; reg [7:0]tt4; reg [7:0]tt3; reg [7:0]tt2; reg [7:0]tt1; reg [7:0]tt0; reg [3:0]t5; reg [3:0]t4; reg [3:0]t3; reg [3:0]t2; reg [3:0]t1; reg [3:0]t0; output speak; wire x,xa,xb,xc,xd,xe;
闹钟在 23 点 59 分 module example6(clk,clr,ena,cout,t); input clk ,clr,ena; output [3:0] t; output cout; reg cout; reg [3:0] t; always @(posedge clr or posedge clk) begin if (clr) t='b0000; else if (ena) begin if(t<='b0100) begin t=t+1; cout=0; end else begin t=0; cout=1; end end end endmodule module example10(clk,clr,ena,cout,t); input clk ,clr,ena; output [3:0] t; output cout; reg cout; reg [3:0] t; alwaysk) begin if (clr) t='b0000; else if (ena) begin if(t<='b1000) begin t=t+1; cout=0;
数字逻辑实验--24s计时器

数字逻辑课程实验报告实验名称时序电路研究之24s计时器实验人姓名学号班级同组人姓名实验时间成绩一、实验内容结合试验箱设计一个计数器能够实现24秒计时功能,设计应具备必要的输入输出和起停功能二、实验原理24s计数器是由分频器,计数器,译码器组成。
如下图2为24s计数器的原理图图2分频器用于较高频率的时钟进行分频操作,得到较低频率的信号,工作原理是计数。
由于实验箱的工作频率为100000HZ,而我们所需要的24S计数器是以S(即1HZ)为计量单位的,所以需要把频率降低。
其原理图如2.1图2,1计数器主要是用来计数的,24s计时器要求从24s开始依次往下降,所以需要一个计数器,在计数器的设计过程中要有暂停键。
下图2,2为其原理图图2。
2译码器是把具有特殊含义的输入代码译成对应输出的有效信号。
因为最终要把代码下载到芯片上,用led数码管显现出来,所以需要把0-24进行编码,可以把个位和十位分别用一个数码管表示。
由于数码管的输入为四位,所以个位和十位分别用四位2进制进行编码。
如图2.3为译码器的原理图和led灯的图。
其编码对应的真值表为:a f00000 "00000000";00001 "00000001";00010 "00000010";00011 "00000011";00100 "00000100";00101 "00000101";00110 "00000110";00111 "00000111";01000 "00001000";01001 "00001001";01010 "00010000";01011 "00010001";01100 "00010010";01101 "00010011";01110 "00010100";01111 "00010101";10000 "00010110";10001 "00010111";10010 "00011000";10011 "00011001";10100 "00100000";10101 "00100001";10110 "00100010";10111 "00100011";11000 "00100100"; orther 111111111图2.3三、VHDL实现1.分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity divpin isport(clk,en:in std_logic;Reset: in std_logic;clkout:out std_logic);end divpin;architecture clock of divpin issignal counter:integer range 0 to 3;signal div_clk: std_logic;beginprocess(clk, Reset,en)beginif (Reset='1') thendiv_clk<='1';counter<=0;elseif (en='1') thenif (clk'event and clk='1') thenif (counter=3)thencounter<=0;div_clk<=not div_clk;elsecounter<=counter+1; end if;end if;elsecounter<=0;end if;end if;end process;clkout<=div_clk;end clock;2.计时器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clock_24 isport(clk,en,Reset:in std_logic;q:out std_logic_vector(4 downto 0));end clock_24;architecture counter1 of clock_24 issignal counter:std_logic_vector(4 downto 0);beginprocess(clk,en,Reset)beginif (Reset='1') thencounter<="11000";elseif (clk'event and clk='1')thenif(en='1' and counter/="00000")then counter<=counter-1;elsecounter<=counter;end if;end if;end if;end process;q<=counter;end counter1;3.译码器library ieee;use ieee.std_logic_1164.all;entity deco_24 isport(a:in std_logic_vector(4 downto 0);f: out std_logic_vector(7 downto 0) );end deco_24 ;architecture decoder_47 of deco_24 issignal h: std_logic_vector(4 downto 0);beginh<=a;process(h)begincase h iswhen "00000"=>f<="00000000";when "00001"=>f<="00000001";when "00010"=>f<="00000010";when "00011"=>f<="00000011";when "00100"=>f<="00000100";when "00101"=>f<="00000101";when "00110"=>f<="00000110";when "00111"=>f<="00000111";when "01000"=>f<="00001000";when "01001"=>f<="00001001";when "01010"=>f<="00010000";when "01011"=>f<="00010001";when "01100"=>f<="00010010";when "01101"=>f<="00010011";when "01110"=>f<="00010100";when "01111"=>f<="00010101";when "10000"=>f<="00010110";when "10001"=>f<="00010111";when "10010"=>f<="00011000";when "10011"=>f<="00011001";when "10100"=>f<="00100000";when "10101"=>f<="00100001";when "10110"=>f<="00100010";when "10111"=>f<="00100011";when "11000"=>f<="00100100";when "11000"=>f<="00100100";when others=>f<="11111111";end case;end process;end decoder_47 ;四、测试及分析分频器:为了使波形实验结果明显,不妨把频率仅仅降低一点。
24进制计数器

学生实验报告实验课名称:VHDL硬件描述语言实验项目名称:同步计数器专业名称:电子科学与技术班级:32050801学号:3205080127学生姓名:柯斌教师姓名:程鸿亮2010年_11月 13日组别_____________________同组同学李福来实验日期2011年11月13日实验室名称成绩_____一、实验名称:同步计数器二、实验目的与要求:设计一个同步二十四进制计数器,理解触发器同步计数工作机制,掌握同步触发控制的VHDL描述方法以及异步清零的描述方法。
三、实验内容:通过VHDL编程,实现一个同步二十四进制计数器,要求有1个异步清零端、1个时钟脉冲输入、驱动7段数码管显示的个位和十位信号端四、实验条件:1. WindowsXP操作系统2. QuartusII EDA开发系统3. 杭州康芯SOPC硬件开发平台五、实验原理:clk:计数时钟脉冲输入;clr:异步清零信号,高电平有效,此时输出显示为“00”ten[6..0]:十位数的7段数码管显示输出;one[6..0]:个位数的7段数码管显示输出;六、源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-------------------------------entity cnt24 isport(clk,clr:in std_logic;ten,one:out std_logic_vector(6 downto 0);co:out std_logic);end entity cnt24;---------------------------architecture str of cnt24 issignal ten_temp,one_temp:std_logic_vector(3 downto 0); begin--------------------------process(clr,clk) isbeginif (clr='1') thenten_temp<="0000";one_temp<="0000";co<='0';elsif (clk'event and clk='1') thenif(one_temp="0011" and ten_temp="0010") then one_temp<="0000";ten_temp<="0000";co<='1';elsif(one_temp="1001") thenten_temp<=ten_temp+1;one_temp<="0000";elseone_temp<=one_temp+1;end if;end if;end process;----------------------------process(one_temp) isbegincase one_temp iswhen"0000"=>one<="1111110";when"0001"=>one<="0110000";when"0010"=>one<="1101101";when"0011"=>one<="1111001";when"0100"=>one<="0110011";when"0101"=>one<="1011011";when"0110"=>one<="1011111";when"0111"=>one<="1110000";when"1000"=>one<="1111111";when"1001"=>one<="1111011";when others=>one<="1111110"; end case;end process;---------------------------------- process(ten_temp)isbegincase ten_temp iswhen"0000"=>ten<="0000000";when"0001"=>ten<="0110000";when"0010"=>ten<="1101101";when others=>ten<="1111110"; end case;end process;-----------------------------------end str;七、实验结果与分析:1,RTL仿真如下:2,时序仿真结果:3,代码下载后的部分实例:计数到23时,无进位。
(完整word版)24小时数字钟VHDL语言

数字钟的设计一、任务要求:(1)设计一个数字钟。
(2)具有时,分,秒计数显示功能,以24小时循环计时。
(3)具有清零,调节小时、分钟功能。
(4)具有整点报时功能,整LED灯花样显示。
二、系统框图:三、模块说明(含程序代码)1. 秒模块程序清单library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SECOND isport(clk,clr:in std_logic;----时钟/清零信号sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位co:out std_logic);-------输出/进位信号end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数beginif clr='1' then----当ckr为1时,高低位均为0cnt1:="0000";cnt0:="0000";elsif clk'event and clk='1' thenif cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位cnt0:="1001";----低位为9elsif cnt0<"1001" then----小于9时cnt0:=cnt0+1;----计数elsecnt0:="0000";if cnt1<"0101" then----高位小于5时cnt1:=cnt1+1;elsecnt1:="0000";co<='0';end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;秒模块仿真波形秒模块原理图当clr=1时,秒的高低位清零;当clr=0时,来一个时钟信号sec0加1,当sec0加到九时清零,co=1,sec1加1。
24进制计数器课程设计

24进制计数器设计系别:电子工程系专业:应用电子班级:学生姓名:学号:指导教师:设计流程图目录1、74LS290计数器、虚拟电子实验室相关 (3)1.1、74LS290计数器介绍 (3)1.2、M ULTISIM介绍及基本操作方法 (4)1.2.1、Multisim的主窗口界面。
(4)1.2.2、菜单栏(这里只介绍需要使用的菜单) (4)1.2.3、工具栏 (6)2、电路设计 (7)2.1计数器电路原理 (7)2.2、电路仿真效果图试 (8)3、元器件及仪器设备明细 (8)4、总结 (9)5、参考文献 (10)6、致谢 (11)前言本24进制计数器实现24进制计数及自动清零功能,它主要由脉冲、10进制加法器74LS290、共阴极LED数码管等构成。
通过找课外书,上网查找有关该设计方面的知识,自学Multisim10软件的操作,并进行防真实验,在28号到29查找资料学习计数器的知识,选出合适的芯片来设计电路,学习并使用虚拟电子实验室的基本用法。
30号以后进行电路的设计以及仿真调试。
1、74ls290计数器、虚拟电子实验室相关1.1、74ls290计数器介绍(1)74ls290的逻辑符号示意图:CP1、CP0是脉冲输入端,S9A\S9B、R0A\S0B、是置数控制端。
Q0\Q1\Q2\Q3是输出端。
(2)74ls2290的逻辑功能:74LS290是异步十进制计数器。
它由一个一位二进制计数器和一个异步五进制计数器组成。
如果计数脉冲由端CP0输入,输出由Q0端引出,即得二进制计数器;如果计数脉冲由CP1端输入,输出由Q1Q2Q3引出,即是五进制计数器;如果将Q0与CP1相连,计数脉冲由CP0输入,输出由Q0Q1Q2Q3引出,即得8421码十进制计数器。
因此,又称此电路为二-五-十进制计数器。
当复位输入R0AR0B=1,且置位输入S9AS9B=0时,74LS290的输出被直接置零;只要置位输入S9AS9B=1,则74LS290的输出将被直接置9,即Q0Q1Q2Q3=1001;只有同时满足R0AR0B=0和S9AS9B=0时,才能在计数脉冲(下降沿)作用下实现二-五-十进制加法计数。
设计24进制的计数器用VHDL实现

设计24进制的计数器用VHDL实现 设计24进制的计数器用VHDL实现 24进制的计数器用VHDL
实验目的:
• 通过两个十进制计数器 74ls160实现成一个二十四进制 的计数器,并且用vhdl硬件仿真 来实现它。
设计思路:
• 首先通过一个十进制计数器 74ls160,把它设计成为一个四 进制的计数器,然后用另一个十 进制的计数器74ls160,将它设计 成为一个六进制的计数器,最后 将他们用并行输出的方法连接起 来,从而就设计出了一个二十四 进制的计数器。
实验步骤:
• 首先利用一个十进制74ls160将其转换 成一个四进制的计数器,如图所示
D0
CP
D1
D2
D3 C CP “1”
LD
D0
D1
D2
D3 C
ET EP
74ls160
Q0 Q1 Q2 Q3
ET
74ls160
Q0 Q1 Q2 Q3
LD
“1”
RD
EP
RD
“1”
&
• 其次利用一个十进制74ls160将其转换 成一个六进制的计数器,如图所示
谢谢观赏
如图所示:
引脚锁定:
• 实验结论: 通过对两个相同的十进制计数器 74ls160的转换,最后成功的将其 转换成为二十四进制的计数器,理 论和实践统一。
• 经验总结: 通过学习书本上的知识和搜索课外书 籍,使我基本掌握了设计计数器的方法, 更重要老师对我的帮助,使我对计数器 产生了很大的兴趣,才能坚持将计数器 做完。在设计过程中遇到了很多问题, 尤其是在仿真时,最后一步引脚锁定, 不知如何下手,通过老师的讲解和同学 们的讨论,最后成功了。通过这次试验, 我要继续认真学习数字电子技术这本书, 了解更多的不同的设计方法。
基于VHDL的24进制计数器的程序设计

基于VHDL的24进制计数器的程序设计
基于VHDL的24进制计数器的程序设计
余丽红;龙诺春;林春景
【期刊名称】《电子技术》
【年(卷),期】2016(000)006
【摘要】24进制计数器的程序设计可以作为《EDA技术与应用》课程的实验项目.该项目可以帮助学生理解数字系统自顶向下的设计方法,加深学生对分频器、计数器以及动态扫描原理的理解,使学生进一步领会VHDL设计方法.本文以MAX+PLUSⅡ为软件设计平台完成程序的设计及编译,并利用达盛EDA实验箱实现硬件仿真.
【总页数】3页(83-85)
【关键词】计数器;程序设计;分频器;动态扫描
【作者】余丽红;龙诺春;林春景
【作者单位】广东白云学院电气与信息工程学院广东广州510450;广东白云学院电气与信息工程学院广东广州510450;广东白云学院电气与信息工程学院广东广州510450
【正文语种】中文
【中图分类】
【相关文献】
1.基于VHDL的60进制计数器的程序设计 [J], 张舒豪
2.基于VHDL的任意进制计数器设计 [J], 钟其明
3.用74160集成计数器构成任意进制计数器的电路设计[J], 单嵛琼; 单长吉
4.基亏集成计数器的N进制计数器设计与仿真 [J], 赵家松; 周兵; 严伟榆。
24进制计数器设计

湖南人文科技学院课程设计报告课程名称:电子技术基础课程设计设计题目:24进制数字电子钟时计器、译码显示电路系别:专业:班级:学生姓名:学号:起止日期:2009/06/01————2009/06/18指导教师:教研室主任:摘要24进制数字钟是一种用数字电路技术实现时计时的装置,与机械式时钟相比具有更高的准确性和直观性。
此次设计与制作24进制电子数字钟时计数、译码、显示电路需要了解组合逻辑电路和时序逻辑电路;了解集成电路的引脚安排;了解各种时计数、译码芯片的逻辑功能及使用方法;了解数字钟的原理.本次设计是基于24进制电子数字钟的原理,实现具有24进制清零功能的电子钟,它主要由脉冲、10进制加法器74LS160、译码器74LS48、共阴极LED数码管等四个模块构成。
脉冲本利用555设计一个多谐振荡器,但由于制板受单面板限制,故撤销了555设计的多谐振荡器,而直接由实验室提供脉冲。
各功能模块在QuartusⅡ软件中先由VHDL语言描述出,然后将其打包成可调用的元件,再利用原理图输入法将各模块按功能连接起来就得到顶层文件的原理图。
这时,再进行时序仿真、引脚锁定和嵌入逻辑分析仪之后,就编译下载至硬件中,选择正确的模式和各种设置后即可实现这次设计所要求的功能。
关键词:加法器;译码器;显示数码管目录设计要求 (1)前言 (1)1.方案论证与对比 (2)1.1方案一 (2)1。
2方案二 (2)1。
3两种方案的对比 (3)2、各功能模块设计 (3)2.1计数器电路 (3)2.2译码驱动电路 (5)2。
3共阴极七段数码管显示器 (6)3、调试与操作说明 (8)3.1电路仿真效果图 (8)3。
2P ROTEL电路印刷板原理图及印刷板制版电路图 (9)3.3实际电路系统的制作及测试 (10)3.4电路板的测试情况、参数分析与实际效果 (10)4、心得与体会 (11)5、元器件及仪器设备明细 (12)6、参考文献 (13)7、致谢 (14)24进制电子数字钟时计数、译码器、显示电路设计要求时间以24秒为一个周期,具有自动清零功能。
基于vhdl语言的的电子钟设计说明书

通信电路EDA课程项目基于VHDL语言的的电子钟设计负责人:xxxxxxxxxxx成员:xxxxxxxxxxxxx、xxxxxxxxxxxx完成日期:xxxxxxxx目录1、设计要求与目的2、设计原理3、设计流程4、编程构想及项目程序代码5、项目仿真与分析6、项目说明Part 1设计要求:设计一个电子钟,在输入时钟脉冲的作用下,采用24小时制计时,可以显示时、分、秒,用户也可以自行设置时间设计目的:1.掌握多位计数器相连的设计方法。
2.掌握十六进制,二十四进制,六十进制计数器的设计方法。
3.掌握程序的层次化设计方法。
4.培养团队合作,分析问题,解决问题的能力。
Part 2设计原理:1、电子时钟是一个将“时”“分”“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时;显示满刻度为23时59分59秒,另外具备校时功能。
因此,一个基本的数字钟电路主要由“时”“分”“秒”计数器校时电路组成。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累加60秒发送一个“分脉冲”信号,该信号将被送到“分计数器”。
“分计数器”也采用60进制计数器,每累加60分发送一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计数器,可实现对一天24小时的累计。
译码显示电路“时”“分”“秒”计数器的输出状态六段显示译码器译码。
通过六位LED七段显示器显示出来。
校时电路器是用来对“时”“分”“秒”显示数字进行校时调整的,可以根据当前需要的时间来设置电子时钟的时间,使它从这个时间开始计时。
也可以对电子钟复位,重新开始计时。
2、各模块及其功能电子钟计数采用层次化设计,将设计任务分成若干个模块。
规定每一模块的功能和各模块之间的接口。
1)SECOND模块:用来对秒进行计时,当记到计数器的低四位为1001时,若高三位不是101时,则秒计数器加7,目的是使计数值变为BCD码。
若高三位是101时,则有一进位。