视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验4 计数器和分频器报告
2025-09-25 04:57:16 责编:小OO
文档
实验4 计数器和分频器

一.计数器

实验设计方案

1.原理:计数器是数字系统中常用的一种可统计时钟的个数的时序逻辑部件。计数器中的“数”是触发器的状态组合。某一种触发器状态组合代表某个“数”,即“编码”。计数器循环一次所包括的状态总数就是称作“容量”或“模”。在计数脉冲作用下,使状态逐个迁移成不同的状态组合来实现数的增加和减少。

 2.VHDL代码:

(1)2选1多路选择器

library ieee;

use ieee.std_logic_11.all;

entity mux4_2_1 is

port(d0,d1:in std_logic_vector(3 downto 0);

sel:in std_logic_vector(1 downto 0);

dout:out std_logic_vector(3 downto 0));

end mux4_2_1;

architecture rtl of mux4_2_1 is

begin

dout<=d0 when sel="00"else

        d1 when sel="01";

end rtl;

(2)十三进制计数器

library ieee;

use ieee.std_logic_11.all;

use ieee.std_logic_unsigned.all;

entity exp_cnt13 is

port( Clk,clrn,En:in std_logic;

        cq:out std_logic_vector(3 downto 0);

        cq1:out std_logic_vector(3 downto 0);

        cout:out std_logic);

end exp_cnt13;

architecture bhv of exp_cnt13 is

signal cqi:std_logic_vector(3 downto 0);

signal cqi1:std_logic_vector(3 downto 0);

begin

    process(En,Clk,clrn,cqi)

    begin

    if clrn='0' then

cqi<="0000";

    elsif Clk'event and Clk='1' then

        if En='1' then

     if cqi<12 then

     cqi<=cqi+1;

        else

         cqi<="0000";

            end if;

        end if;

    end if;

        if cqi=12 then

     cout<='1';

        else 

         cout<='0';

            end if;

         cq<=cqi;

            

         if cqi>9 then

cq1<="0001";

cqi1<=cqi-10;

         else 

cq1<="0000";

cqi1<=cqi;

         end if;   

         

cq<=cqi1;

        end process;

    end bhv;

3.结构框图:

实验波形仿真

1波形图:

2操作说明:

设置网格为80ns,设置clk选低电平,为一个周期80ns的函数;把clrn设置为高电平;设置En选高电平; 设置cq为一个周期函数,根据数组在每段的值设置cq[0] 到cq[3]的值,然后仿真波形,看输出的cout的波形,通过下载到实验箱可以验证波形的正确性。

二.偶数次分频器

实验设计方案

1.原理:通过计数值来控制输出时钟的高电平和低电平的时间。占空比为50%的分频器的设计是,考虑计数到刚好一半状态时将输出电平进行一次翻转,并给计数器一个复位信号,如此循环。为了有限度的实现占空比可调,可以当计数器计数值未达到一半是将时钟输出为0(或1),剩余状态时钟输出1(或0);当计数器计数到N-1时,如此循环。

2.VHDL代码:

library ieee;

use ieee.std_logic_11.all;

entity exp_clkdiv10_1 is

generic(dwidth:integer:=10);

port(clkin:in std_logic;

        clkout:out std_logic);

    end exp_clkdiv10_1;

architecture rtl of exp_clkdiv10_1 is

signal temp:integer range dwidth-1 downto 0;

begin 

process(clkin)

begin 

if(clkin'event and clkin='1')then

if temp=9 then 

temp<=0;

else 

temp<=temp+1;

end if;

end if;

end process;

process(temp)

begin

if tempclkout<='1';

else

clkout<='0';

end if;

end process;

end rtl;

实验波形仿真

1.波形图:

2.操作说明:

设置网格为100ns,设置clkin选低电平,为一个周期100ns的函数,然后仿真波形,看输出的clkcout的波形,通过下载到实验箱可以验证波形的正确性。

实验日志

1实验感想:

数码管下载是本门课的重难点,应该熟练的掌握;我对第一次的实验没能掌握好其中的原理,应该会灵活的掌握计数器和几选一多路选择器的代码并能根据需要进行修改。

2思考与练习:

1.计数器级联的方法有哪些?

答:同步联接法和异步联接法。

2.同步计数和异步计数的区别?

答:异步计数器的的每个触发器不是由同一个脉冲来控制的,同步计数器的每个触发器都是由同一个脉冲来控制的。

3,如何根据exp_cnt60.vhd代码绘出顶层电路图?

答:利用原件例化功能,即在exp_cnt60工程中,在exp_cnt60.vhd代码编译成功后,按File->create/update->create symbol flies for current file

4, 如何设计0.5次分频器?

答:设计一个模N的计数器,再设计一个脉冲扣除电路,每来两个脉冲扣除一个脉冲,即可实现分频系数为N-0.5的分频器。脉冲扣除电路由异或门和一个2分频器构成。本设计在半整数分频器原理的基础上,对异或门加一个使能控制信号,通过对异或门和计数器计数状态值的控制,实现同一个电路完成多种形式分频.

5. 偶数次分频器与奇数次分频器的vhdl设计主要区别?

答:偶数分频对时钟进行偶数分频比较简单,如占空比为50%的时钟信号只要使用一个计数器,在前半段时间内高电平后半段电平内低电平这样分频出来的信号就是占空比为50%的时钟信号。奇数分频相对偶数分频来说,如果不要求占空比的话是一样的,但是如果要求占空比为50%的话则计数分频必偶数分频要复杂些。其中需要使用些技巧。可以先对输入时钟的上升沿进行计数,然后让一个内部信号在前一半段时间内为低电平,后一半段时间内为高电平。同时对输入时钟的下降沿进行计数,让另一个内部信号在前半段时间内为高电平,在后半段时间内为低电平。然后让两个内部信号进行相与,得到了半个时钟的一个高电平,在让这个信号和第一个内部信号相或,就得到了占空比为50%的时钟信号了下载本文

显示全文
专题