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

计数器的VHDL设计与实现

计数器的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技术的不断发展,数字系统规模越来越大,传统的电路设计已难以适应复杂电子系统的设计要求。

实验3 基于VHDL的计数器设计

实验3 基于VHDL的计数器设计

(6)、仿真器参数设置。
选择菜单Processing→Simulator Tool, 打开仿真参数设置窗口。在Simulation mode项内可以选择使用时序仿真 (Timing)或者功能仿真(Function)。 在Simulation input项,通过单击按钮 “…”选择需要仿真的文件cnt.vwf。然 后单击Start进行仿真。
实验步骤与结果: 1、新建工程cnt,放置于D:\CNT。 2、新建VHDL源文件。选择 File→New→Design Files→VHDL File。 在打开的窗口中编辑VHDL源程序。保存 于同一文件夹下。
保存的文件名必须与实体名一致,后缀名是.vhd! 实体名是cnt(关键词entity后),因此保存的文件名应是cnt.vhd
5.仿真
通过编译后,必须对工程的功能和时序性质进行仿真 测试,以了解设计结果是否满足设计要求。
(1)、新建波形文件。File→New→Vector Waveform File。 (2)、设置仿真时间。Edit→End Time。
(3)、添加仿真信号。 在进行仿真之前,必须添加仿真信号,即仿真中的激励和所要观察 的信号。添加仿真信号的方法有很多, 如:通过Edit→Insert→Insert Node or Bus菜单命令打开 Insert Node or Bus 窗口。然后选择Node Finder按钮打开
实验3 基于VHDL的计数器设计
实验目的 (1)、掌握VHDL语言基本结构。 (2)、掌握顺序描述语句IF的使用方法。 (3)、掌握时序电路的设计方法,了解 信号同步与异步的概念与区别。 (4)、掌握不同要求计数器的设计方法 (5)、学习使用RTL观察器。
实验内容与要求: 设计一个含异步清零和同步使能的4位二进 制加法计数器。记满“1111”后,进位端 输出高电平‘1’。完成波形仿真和硬件验 证。

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告VHDL实验报告班级:电子学号:姓名:2014/5/23Experiment 1 两位二进制数的大小比较器一、实验目的:(1)熟悉QuartusII的开发环境、熟练掌握编程开发流程。

(2)学习VHDL的基本语法及编程设计。

二、实验内容:数值比较器设计三、实验要求:(1)熟练掌握QuartusII开发环境下对可编程逻辑器件进行程序化设计的整套流程;2)设计输入使用插入语言模板(Insert Template); ((3)在QuartusII开发环境下对设计程序进行时序仿真,将生成的配置文件下载到实验板,进行最终的实物测试验证。

四、实验原理:根据两位二进制数的大小得到对应的比较结果,其电路示意图及电路特性表为: 比较器特性表A B In_s In_l In_e 比较器电路示意图YsYe YlY A > B × × × 0 0 1A[3:0] Yl Number B[3:0] A < B × × × 1 0 0 Ye A = B 0 1 0 0 0 1 In_sYs Comparer In_l A = B 1 0 0 1 0 0 In_e A = B 0 0 1 0 1 0 A = B 0 0 0 × × × A = B × 1 1 × × × A = B 1 × 1 × × × A = B 1 1 × × × ×五、程序编写、调试及仿真(芯片型号:MAX?系列EPM1270T144C5) (1)程序编写:library ieee;use ieee.std_logic_1164.all;2entity Vhdl1 isport(a,b:in std_logic_vector(3 downto 0);ins,inl,ine: in std_logic;ys,ye,yl: out std_logic);end Vhdl1;architecture one of Vhdl1 issignal temps,tempe:std_logic; beginys<=temps;ye<=tempe;yl<=temps nor tempe;process(a,b,ine)beginif (a=b and ine='1')thentempe<='1';elsetempe<='0';end if;end process;process(a,b,ins)beginif(a<b) thentemps<='1';elsif(a=b and ins='1') then temps<='1';elsetemps<='0';end if;end process;end one;(2)功能仿真:3(3)芯片引脚设定:(4)适配下载结果六、结果分析本实验实现了两位二进制数的比较。

60进制计数器实验报告

60进制计数器实验报告
五、整体电路及实现
电容充电时间:tp1=0.7(R1+R2)C
电容放电时间:tp2=0.7R2 C
电路振荡周期:T=tp1+tp2=0.7(R1+2R2)C
电路震荡频率:f=1/T
由此得到振荡周期为1s的脉冲信号。
产生的脉冲信号波形如下图所示:
(2)74LS161的16进制改10进制(低位)
(3)74LS161的16进制改6进制(高位)
(2)、确定使用74LS161芯片的个数。74LS161有16个状态,十进制计数器有10个状态,只用一片74LS161就可以实现模为10的计数器。实现六十进制,需要两片74LS161芯片。
(3)、确定输出状态。计数器应从0000状态开始计数,当低位第十个脉冲出现时,即1010状态出现时立即返回0000状态。高位第六个脉冲出现时,即0110状态出现时立即返回0000状态。
三、逻辑功能表
74LS161逻辑功能表
输入
输出
CR
LD
CTP
CTT
CP
D3
D2
D1
D0
Q3
Q2
Q1
Q0
0
*
*
*
*
*
*
*
*
L
L
L
L
1
0
*
*

D3
D2
D1
D0
D3
D2
D1
D0
1
1
*
0

*
*
*
*
保持
1
1
0
*
*
*
*
*
*
保持
1
1
1

EDA实验报告

EDA实验报告
cin: in std_logic;
sum: out std_logic_vector(n downto 1);
cout: out std_logic
);
end siwei;
architecture Behavioral of siwei is
component quanjia
port (a,b,cin:in std_logic;
when"110"=>Y<="01000000";
when"111"=>Y<=;
whenothers=>null;
endcase;
elseY<=;
endif;
endprocess;
endBehavioral;
仿真结果:
2. 60进制计数器
实验程序:
library IEEE;
use Uncomment the following lines to use the declarations that are
仿真结果:
实验二、四位全加器和8位移位寄存器设计实验
1、实验目的
1)学习了解加法器工作原理。
2)学习用VHDL语言设计全加器的设计方法。
3)学习使用元件例化的方法设计多位加法器。
4)了解移位寄存器的工作原理
5)学习移位寄存器设计方法
2、实验内容
1)用VHDL语言设计全加器。
2)用元件例化方法设计一个四位二进制加法器。
验一:译码器及计数器设计实验
1、实验目的
1)复习二进制译码器的功能。
2)学习VHDL语言源程序输入方法。
3)学习VHDL语言源程序检查和修改。

实验三__一般计数器的VHDL设计

实验三__一般计数器的VHDL设计

EDA与VHDL语言课程实验报告实验名称:一般计数器的VHDL设计班级:学号:姓名:实验日期:实验三一般计数器的VHDL设计1.实验目的:学习一般计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

2.实验内容:(1)用VHDL设计含异步清0和同步时钟使能的十进制加法计数器。

要求:在Quartus 2上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。

引脚锁定以及硬件下载测试。

选择目标器件EPIC3,建议选择实验电路模式5。

(2)用VHDL设计含异步清0和同步时钟使能的十进制加减可控计数器。

要求:在Quartus 2上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。

3.实验原理:计数器的输入信号是计数信号(Cn),门控信号是手动清零信号(Rest)、手动允许计数(En)。

清零信号Rest为1时,保持在异步清零状态,计数脉冲上升沿无效;允许计数端为0时,为保持状态,这时保持至最后一个计数,计数脉冲上升沿无效;清零信号为0,允许计数信号为1时,计数器上升沿脉冲计数。

4.实验程序:程序1: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);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK,RST,EN)VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1'THEN CQI:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1'THENIF EN ='1'THENIF CQI<9 THEN CQI:=CQI+1;ELSE CQI:=(OTHERS =>'0');END IF;END IF;END IF;IF CQI=9 THEN COUT<='1';ELSE COUT<='0';END IF;CQ<=CQI;END PROCESS;END behav;程序2:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ZZZ isport(clk,rst,en:in std_logic;cq:out std_logic_vector(3 downto 0); cout:out std_logic);end ZZZ;architecture behav of ZZZ isbeginprocess(clk,rst,en)variable cqi:std_logic_vector(3 downto 0);beginif rst='1'then cqi:=(others=>'0');elsif clk'event and clk='1' thenif en='1' thenif cqi<9 then cqi:=cqi+1;else cqi:=(others=>'0'); end if;else if cqi<9 and cqi>0 then cqi:=cqi-1;else cqi:=(others=>'0'); end if;end if; end if ;if cqi=9 then cout<='0';end if;cq<=cqi;end process;end behav;5.仿真图:程序1编译仿真后的波形如下所示:程序2 编译仿真后的波形如下所示:6.实验心得:通过本次上机实验使我能更好的对Quartus 2软件进行使用,了解了其功能。

计数计时器的VHDL设计

计数计时器的VHDL设计
ELSE co<='0';
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设计.ppt

计数计时器的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,需等待下一个时钟周期。

EDA60进制计数器画图

EDA60进制计数器画图

实验报告课程名称:可编程逻辑器件与数字实验项目:60进制计数器(电路图法)专业班级:姓名:学号:实验室号:实验组号:实验时间:批阅时间:指导教师:成绩:沈阳工业大学实验报告(适用计算机程序设计类)专业班级:学号:姓名:实验名称:60进制计数器1.实验目的:学习60进制计数器电路图法的设计、仿真和硬件测试,进一步熟悉VHDL设计技术2.实验内容:(1)在QuartusⅡ上用电路图连接成一个60进制计数器。

详细描述此程序功能特点,给出其所有信号的时序仿真波形。

(2)引脚锁定以及硬件下载测试。

引脚锁定后进行编译、下载和硬件测试实验。

3. 实验方案(程序设计说明)(1)建立电路图文件(2)绘制电路图(3)对电路图进行编译(4)编译无错误后进行时序仿真(5)仿真正确之后,选好模式之后进行管脚的设置(6)再进行一次编译,正确之后下载到实验箱4. 实验步骤或程序(经调试后正确的源程序)5.程序运行结果数码显示管从0一直跳变到59,然后再回到0重新循环。

6.出现的问题及解决方法附件A 沈阳工业大学实验报告(适用计算机程序设计类)专业班级:学号:姓名:实验步骤或程序:(1)新建block文件;(2)绘制电路图;(3)保存之后建工程;(4)编译程序;(5)新建一个vector waveform 文件(6)保存在相应的文件夹内;(7)对输入信号进行编辑;(8)保存然后再仿真;(9)选择模式,确定管脚,输入管脚号;(10)保存后再重新编译;(11)之后运行Program configure;(12)在EDA实验箱上调到相应的模式,然后对输出的信号进行验证。

实验一实用计数器的VHDL设计

实验一实用计数器的VHDL设计

实验一实用计数器的VHDL设计一.实验目的熟悉quartusII的VHDL文本设计流程全过程,学习计数器的设计,仿真,进一步了解异步的概念。

二.实验原理实用的D触发器除含有时钟端CLK外,还含有异步清零端CLR和时钟使能端ENA。

这里的异步并非时序逻辑的异步,而是指独立于时钟控制的复位控制端,在任何时候,只要CLR=’1’,此时D触发器的输出端即可清零,与时钟信号无关。

三.程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK,RST,EN,LOAD:IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHAV OF CNT10 ISBEGINPROCESS(CLK,RST,EN,LOAD)VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='0' THEN Q :=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF(LOAD='0') THEN Q:= DATA; ELSEIF Q<9 THEN Q:=Q+1;ELSE Q:=(OTHERS=>'0');END IF;END IF;END IF;END IF;IF Q="1001" THEN COUT<='1';ELSE COUT<='0';END IF;DOUT <=Q;END PROCESS;END BEHAV;四.程序分析该程序的进程语句中含有两个独立的IF语句。

  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.进行目标器件选择,管脚锁定并编译下载验证实验结果。

相关文档
最新文档