模60计数器VHDL设计实验

合集下载

EDA-六十进制计数器的VHDL设计概要

EDA-六十进制计数器的VHDL设计概要

THEN
3.1.3 VHDL的数据类型
1. BIT:位数据类型,只有两个取值:‘0’和‘1’。 2. BIT_VECTOR( ): 位矢量数据类型。 3. STD_LOGIC:标准逻辑位数据类型。有9种不同的取值: 4. STD_LOGIC_VECTOR():标准逻辑位矢量数据类型。
STD_LOGIC所定义的9种数据的含义是:
数据类型时,需要使用库和程序包,具体格式如下所示:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
3.2 VHDL的完整结构
图2-2 D触发器
D触发器的功能:在时钟信号上升沿到来的时候,输 出跟随输入变化,否则,输出保持不变。
3.2.1 时钟上升沿检测表式
时钟上升沿的检测有两种表达方式:
1. CLK’EVENT AND CLK = ‘1’
2. RISING_EDGE(CLK)
3.2.2 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 DFF1;
3.3 六十进制计数器的VHDL设计
六十进制BCD码计数器的源程序:
实体名
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt60 IS PORT (clk, clr: IN STD_LOGIC; ten, one: DOWNTO 0 ); OUT STD_LOGIC_VECTOR(3

vhdl秒表报告

vhdl秒表报告

实验:vhdl秒表设计报告一、实验目的:秒表的逻辑结构比较简单,它主要由、显示译码器、分频器、十进制计数器、六进制计数器组成。

秒表实现功能:计时范围60s。

可以用4个键(k0-k3)控制计数器实现清零,开始,暂停,结束功能。

清零键k0:当k0按下后,计数器清零,显示为0.开始键k1:k1按下后,开始计数暂停键k2:k2按下后,显示暂停,但计数器继续在行走。

结束键k3:k3按下后,计数器停止,显示最终的时间。

二、结构组成:1、一个十进制计数器:用来对秒时钟进行计数;2、一个六进制计数器:用来分别对十秒进行计数;3、分频率器:用来产生1hz的计数脉冲;4、状态控制器:对秒表各状态的控制。

设计为4个状态s1,s2,s3,s4.三、实验内容及步骤:1、用vhdl语言实现各小功能模块设计。

并仿真无误,生成模块符号。

2、设计顶层原理图文件。

3、综合编译并仿真,实现特定功能。

4、下载到硬件上,确保设计的正确。

四、实验源代码如下:1,分频器模块:功能:产生秒时钟。

原理图如下源代码vhdl语言如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity div isport(inclk:in std_logic;outclk:out std_logic:='0');end;architecture behave of div issignal temp:integer range 0 to 99999;signal internal:std_logic:='0';beginprocess(inclk)beginif inclk'event and inclk='1'thenif temp=10thentemp<=0;internal<=not internal;else temp<=temp+1;end if;outclk<=internal;end if;end process;end behave;2,十进制计数器模块原理图:十进制vhdl源码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,clr,en:in std_logic;q:buffer std_logic_vector(3 downto 0);c10:out std_logic);end;architecture behave of cnt10 isbeginprocess(clr,clk)beginif clr='0'then q<="0000";elsif clk'event and clk='1'thenif en='1'thenif q<9else q<="0000";end if;end if;end if;end process;process(q)beginif q="0000"then c10<='1';else c10<='0';end if;end process;end;3,六进制计数模块原理图源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt6 isport(clk,clr,en:in std_logic;q:buffer std_logic_vector(2 downto 0);c6:out std_logic);end;architecture behave of cnt6 isbeginprocess(clr,clk)beginif clr='0'then q<="000";elsif clk'event and clk='1'thenif en='1'thenif q<5else q<="000";end if;end if;end if;end process;process(q)beginif q="000"then c6<='1';else c6<='0';end if;end process;end;4,十进制锁存原理图:代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity suo isport(inp:in std_logic_vector(3 downto 0);suo:in std_logic;--stop:in std_logic;clr:in std_logic;outp:out std_logic_vector(3 downto 0)); end;architecture behave of suo issignal temp:std_logic_vector(3 downto 0);signal temp1:std_logic_vector(3 downto 0); beginprocess(suo)beginif suo'event and suo='0'then temp<=inp;end if;end process;process(inp,clr)beginif clr='0' then outp<="0000";elsif suo='1' then outp<=inp;else outp<=temp;end if;end process;end behave;5,六进制锁存原理图:Vhdl语言:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity suo6 isport(inp:in std_logic_vector(2 downto 0);suo:in std_logic;clr:in std_logic;clk:in std_logic;outp:out std_logic_vector(3 downto 0)); end;architecture behave of suo6 issignal temp:std_logic_vector(3 downto 0); beginprocess(suo)beginif suo'event and suo='0'then temp<='0'&inp; --temp1<=temp;end if;end process;process(clr,clk)beginif clr='0' then outp<="0000";elsif clk'event and clk='1'thenif suo='1' then outp<='0'&inp;else outp<=temp;end if;end if;end process;end behave;6,状态机控制器原理图:Vhdl语言:library ieee;use ieee.std_logic_1164.all;entity key isport(clk:in std_logic;k:in std_logic_vector(3 downto 0);suo:out std_logic;clr:out std_logic;--stop:out std_logic;en:out std_logic);--_vector(2 downto 0)); end;architecture behave of key istype statetype is (s0,s1,s2,s3);signal state:statetype:=s0;beginprocess(clk)beginif clk'event and clk='1'thencase state iswhen s0=> if k(1)='0'then state <=s1;else state <=s0;end if;when s1=> if k(0)='0'then state <=s0;elsif k(2)='0' then state <=s2;elsif k(3)='0' then state <=s3;else state <=s1;end if;when s2=> if k(1)='0'then state <=s1;elsif k(3)='0' then state <=s3;else state <=s2;end if;when s3=> if k(0)='0'then state <=s0;else state <=s3;end if;when others=>null;end case;end if;end process;process(clk)beginif clk'event and clk='1'thencase state iswhen s0=> en<='0'; suo<='0'; clr<='0';when s1=> en<='1'; suo<='1'; clr<='1';when s2=> en<='1'; suo<='0'; clr<='1';when s3=> en<='0'; suo<='1'; clr<='1';when others=> null;end case;end if;end process;end;五,顶层原理图文件:六,仿真结果结果分析:k0为0时,清零初始化。

60进制计数器课程设计报告

60进制计数器课程设计报告

电子技术基础实验课程设计60进制计数器一、实验目的(一)掌握中规模集成计数器74LS161的引脚图和逻辑功能。

(二)熟悉555集成定数器芯片的引脚图。

(三)利用74LS161和555定时器构成60进制计数器。

(四)在Multisim软件中仿真60进制计数器。

二、实验容(一)集成计数器74LS161逻辑功能验证。

(二)用555定时器构成多谐振荡器。

(三)用两片74LS161和555定时器构成60进制计数器。

三、集成计数器介绍(一)集成计数器74LS161管脚介绍74LS161是4位二进制同步加法计时器。

图1为它的管脚排列图,集成芯片74LS161的CLR是异步清零端(低电平有效),LOAD是异步预置数控制端(低电平有效)。

CLK是时钟脉冲输入端,RCO是进位输出端,ENP、ENT是计数器使能端,高电平有效。

A、B、C、D是数据输入端;QA、QB、QC、QD是数据输出端。

图1 74LS161管脚排列图(二)集成计数器74LS161功能介绍由表1可知,74LS161具有以下功能:1.异步清零。

当CLR=0时,无论其他各输入端的状态如何,计数器均被直接置“0”。

2.同步预置数。

当CLR=1、LOAD=0且在CP上升沿作用时,计数器将ABCD同时置入QA、QB、QC、QD,使QA、QB、QC、QD=ABCD。

3.保持(禁止)。

CLR=LOAD=1且ENP、ENT=0时,无论有无CP脉冲作用,计数器都将保持原有的状态不变(停止计数)。

4.计数。

CLR=LOAD=ENP=ENT=1时,74LS161处于计数状态。

表1 74LS161功能表四、用555定时器构成多谐振荡器(一)多谐振荡器的构成由555定时器构成的多谐振荡器如图1所示,R1,R2和C是外接定时元件,电路中将高电平触发端(THR脚)和低电平触发端(TRI脚)并接后接到R2和C的连接处,将放电端(DIS脚)接到R1,R2的连接处。

(二)工作原理由于接通电源瞬间,电容C来不及充电,电容器两端电压为低电平,小于(1/3)Vcc,故高电平触发端与低电平触发端均为低电平,输出为高电平,放电管V1截止。

60进制计数器VHDL实验报告

60进制计数器VHDL实验报告
VHDL 语言的英文全名是 Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言.HDL 发展的技术源头是: 在 HDL 形成发展之前,已有了许多程序设计语言,如汇 编,C,Pascal,Fortran,Prolog 等.这些语言运行在不同硬件平台和不同的操作 环境中,它们适合于描述过程和算法,不适合作硬件描述.CAD 的出现,使人们可 以利用计算机进行建筑,服装等行业的辅助设计,电子辅助设计也同步发展起来. 在从 CAD 工具到 EDA 工具的进化过程中,电子设计工具的人机界面能力越来越高. 在利用 EDA 工具进行电子设计时,逻辑图,分立电子原件作为整个越来越复杂的 电子系统的设计已不适应.任何一种 EDA 工具,都需要一种硬件描述语言来作为 EDA 工具的工作语言.这些众多的 EDA 工具软件开发者,各自推出了自己的 HDL 语 言.
(2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路 , 也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或 者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯 性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强 大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的 数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的 自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述 , 它可以从一个模拟器移植到另一个模拟器上、从一个综合器 移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执 行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时, 设计人员并不需要首先考虑选择进 行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的 优化, 而不需要考虑其他的问题。当硬件电路的设计描述完成以后 ,VHDL 语言允许采用多种不同的器件结构来实现。

vhdl实验报告

vhdl实验报告

专用集成电路实验报告13050Z011305024237X德文实验一开发平台软件安装与认知实验实验内容1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9.2软件平台上完成设计电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。

下载芯片选择Xilinx公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。

2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。

源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-- Unment the following lines to use the declarations that are-- provided for instantiating Xilinx primitive ponents.--library UNISIM;--use UNISIM.Vponents.all;entity ls74138 isPort ( g1 : in std_logic;g2 : in std_logic;inp : in std_logic_vector(2 downto 0);y : out std_logic_vector(7 downto 0));end ls74138;architecture Behavioral of ls74138 isbeginprocess(g1,g2,inp)beginif((g1 and g2)='1') thencase inp iswhen "000"=>y<="00000001";when "001"=>y<="00000010";when "010"=>y<="00000100";when "011"=>y<="00001000";when "100"=>y<="00010000";when "101"=>y<="00100000";when "110"=>y<="01000000";when "111"=>y<="10000000";when others=>y<="00000000";end case;elsey<="00000000";end if;end process;end Behavioral;波形文件:生成元器件及连接电路思考:有程序可以看出,定义了三个输入端,一个输出端。

同步计数器VHDL的设计

同步计数器VHDL的设计

EDA技术及应用实验报告
——同步计数器VHDL的设计
班级:XXX
姓名:XXX
学号:XXX
一、实验目的:
学习数控分频器的设计、分析和测试方法。

二、实验原理:
同步计数器的功能就是在时钟脉冲的控制下,构成计数器的各触发器状态同时发生变化的一类计数器。

本实验是一个模为60,具有异步复位、同步置数功能的8421BCD码计数器。

三、实验内容和步骤:
1、打开文本编辑器,完成同步计数器的设计。

2、完成同步计数器的设计输入、进行目标器件选择。

3、引脚锁定。

4、编译。

5、对同步计数器设计进行仿真。

四、实验下载并实测
该同步计数器具有异步复位,同步置数功能。

当load=1时,便把输入信号与指导输出端,然后开始计数,计数到60时,LED灯闪烁,计数器从0开始计数。

数字电路设计实验vhdl语言实验报告

数字电路设计实验vhdl语言实验报告

实验一秒表计数器的设计实验目的:本实验通过设计四种频率可选的数字时钟系统, 以达到熟悉VHDL 语言编程语法、设计思路和熟练掌握Quartus II 开发软件的目的。

二、实验内容:该数字时钟的显示格式如下所示: HH: MM: SS, 其中HH表示时计数的两位, MM表示分计数的两位, SS表示秒计数的两位。

本系统输入信号分别为复位信号rst(高有效)、sel(两位信号, 分别可以选择2分频、4分频8分频和16分频)、clk_in(时钟信号)、8位时输出、8位分输出、8位秒输出(其中高4为表示对应的高半字节、低4位表示的低半字节, 譬如当时间为08:59:30时, 时输出为”0000_1000”,分输出为”0101_1001”,秒输出为”0011_0000”)。

该时钟系统可以通过Sel信号时钟运行的快慢。

三、实验流程:通过对实验内容的分析: 可以考虑时钟系统的可由三部分组成: 1.分频器:分频器为时序电路并且通过《数字电路》理论课程的学习可知由计数器来实现, 同学可以回想一下实验1中是如何实现计数器电路的设计), 该模块主要产生2.4.8、16分频的时钟信号;2.多路选择器:在VHDL中多路选择器为组合逻辑, 可以有多种实现方法, 在这里主要选用了case语句来实现。

该模块的作用是从分频器中根据Sel信号选择适当的时钟信号;3.时钟控制器:该模块比较复杂, 主要实现功能是实现一个24小时的计时。

当时间为00:00:59的时候下一个时钟到来时状态的跳变为00:01:00, 计时中多数计数为加1操作, 有几个特殊状态需要重点考虑:当时间产生分进数时, 譬如上例。

当时间产生时进数时, 譬如00:01:59时刻的下一个状态为00:02:00;当时间产生时进数时, 譬如00:59:59是个的下一个状态为01:00:00。

当时间产生天进数时, 譬如23:59:59的下一个状态为00:00:00。

四、仿真要求:1、本次试验的结果全部采用功能仿真分析:在结果图中能够看到让复位信号rst为有效的情况下, 所有的输出为00:00:00;2.当频率选择输出分别为”00”、”01”、”10”、”11”时秒为的进数分别包含2.4.8、16倍clk_in的时钟周期;3.可以看到完整的计时周期00:00:00->23:59:59->00:00:00。

vhdl实验报告--数字钟

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);四、实验结果及分析本设计,满足了本次试验设计的任务要求,能显示时分秒,并且可以手动调节分和时。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告
专业班级
姓名
学号
成绩评定
考核内容实验
表现
实验
报告
实验成果
或答辩
综合评
定成绩
成绩
电气与信息学院
和谐勤奋求是创新
实验教学考核和成绩评定办法
1.课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。

实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。

2.单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。

3.实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为0.2 、0.4 、0.4;原则上根据上述三个方面进行综合评定。

学生未取得1)和2)项成绩时,第3)项成绩无效。

4.实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。

实验成绩在教师手册中有记载。

实验报告主要内容
一.实验目的
二.实验仪器及设备
三.实验原理
四.实验步骤
五.实验记录及原始记录
六.数据处理及结论
七. 思考题
八.实验体会(可选项)
注:1. 为了节省纸张,保护环境,便于保管实验报告,统一采用A4纸,实验报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。

2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。

3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)
的实验。

4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。

5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。

实验题目模60计数器VHDL设计实验
实验室一教408 实验时间2014 年11 月27 日实验类别验证同组人数 2
一、实验目的
1、掌握计数器的设计原理和逻辑功能。

2、学习用原理图输入法设计数字电路的方法和过程。

3、掌握MAX+PLUSⅡ开发系统编译、仿真和下载的过程。

二、实验原理
计数分同步计数器和异步计数器,本设计可以采用同步计数方式。

在时钟脉冲的作用下,计数器进行加1计数操作,12个脉冲后计数器清零并循环计数。

三、实验内容
1.利用语言输入法设计模60计数器进行调试。

--A asynchronous reset;;enable up;8421bcd counter
--module=60;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY cntm60v IS
PORT
( en :IN std_logic;
clear:IN std_logic;
clk :IN std_logic;
cout :out std_logic;
qh :buffer std_logic_vector(3 downto 0);
ql :buffer std_logic_vector(3 downto 0)
);
END cntm60v;
ARCHITECTURE behave OF cntm60v IS
BEGIN
cout<='1'when(qh="0101"and ql="1001"and en='1')else'0';
PROCESS(clk,clear)
BEGIN
IF(clear='0')THEN
qh<="0000";
ql<="0000";
ELSIF(clk'EVENT AND clk='1')THEN
if(en='1')then
if(ql=9) then
ql<="0000";
if(qh=5)then
qh<="0000";
else
qh<=qh+1;
end if;
else
ql<=ql+1;
end if;
end if;--end if(en)
END IF;--end if clear
END PROCESS;
END behave;
2.进行目标器件选择,管脚锁定并编译下载验证实验结果。

相关文档
最新文档