可变模计数器

可变模计数器
可变模计数器

实验名称:可变模数计数器

一、实验目的:

设计一个可变模计数器,计数器由3个触发器构成,在外部控制信号S2S1的控制下分别实现模3、模5、模7和模8的计数,即

(1)、S2S1=00时,实现模3计数,触发器状态依次为0→1→2→0;

(2)、S2S1=01时,实现模5计数,触发器状态依次为0→1→2→3→4→0;

(3)、S2S1=10时,实现模7计数,触发器状态依次为0→1→2→3→4→5→6→0;(4)、S2S1=11时,实现模8计数,触发器状态依次为0→1→2→3→4→5→6→7→0;二、实验内容:

(1)、顶层原理图:

(2)、各个模块程序:

1、模3:(库略)

entity cnt3 is

port(

s2,s1,en,rd:in std_logic;

clk:in std_logic;

q:out std_logic_vector(3 downto 0)

);

end cnt3;

architecture cnt of cnt3 is

signal qn:std_logic_vector(3 downto 0);

begin

process(clk,s1,s2)

begin

if (rd='0' ) then

qn<=X"0";

elsif (en='0') then

qn<=X"0";

elsif (clk'event and clk='1' and s1='0' and s2='0') then

if qn(3 downto 0)= X"2" then qn( 3 downto 0 )<="0000"; else qn<=qn+1; end if; end if; end process; q<=qn; end cnt; 2、模5:(库略) entity cnt5 is port( s2,s1,en,rd:in std_logic; clk:in std_logic; q:out std_logic_vector(3 downto 0) ); end cnt5;

architecture cnt of cnt5 is signal qn:std_logic_vector(3 downto 0); begin process(clk,s1,s2) begin if (rd='0' ) then qn<=X"0"; elsif (en='0') then qn<=X"0"; elsif (clk'event and clk='1' and s1='1' and s2='0') then if qn(3 downto 0)= X"4" then qn( 3 downto 0 )<="0000"; else

qn<=qn+1;

end if; --else --qn<=X"0"; end if; end process; q<=qn; end cnt;

3、模7:(库略) entity cnt7 is port( s2,s1,en,rd:in std_logic; clk:in std_logic; q:out std_logic_vector(3 downto 0) ); end cnt7;

architecture cnt of cnt7 is signal qn:std_logic_vector(3 downto 0); begin process(clk,s1,s2) begin if (rd='0' ) then qn<=X"0"; elsif (en='0') then qn<=X"0"; elsif (clk'event and clk='1' and s1='0' and s2='1') then if qn(3 downto 0)= X"6" then qn( 3 downto 0 )<="0000"; else qn<=qn+1;

end if;

--else

--qn<=X"0";

end if;

end process;

q<=qn;

end cnt;

4、模8:(库略)

entity cnt8 is

port(

s2,s1,en,rd:in std_logic;

clk:in std_logic;

q:out std_logic_vector(3 downto 0)

);

end cnt8;

architecture cnt of cnt8 is

signal qn:std_logic_vector(3 downto 0);

begin

process(clk,s1,s2)

begin

if (rd='0' ) then

qn<=X"0";

elsif (en='0') then

qn<=X"0";

elsif (clk'event and clk='1' and s1='1' and s2='1') then

if qn(3 downto 0)= X"7" then

qn( 3 downto 0 )<="0000";

else

qn<=qn+1;

end if;

--else

--qn<=X"0";

end if;

end process;

q<=qn;

end cnt;

5、decoder显示:(库略)

entity decoder is

port(

s1,s2:in std_logic;

seg:out std_logic_vector(6 downto 0);

done,dtwo,dthree,dfour:in

std_logic_vector(3 downto 0)

);

end decoder;

architecture dec of decoder is

signal d : std_logic_vector(3 downto 0); begin

process(s1,s2)

begin

if ( s1='0' and s2='0') then

d <=done;

elsif ( s1='1' and s2='0') then

d <=dtwo;

elsif ( s1='0' and s2='1') then

d <=dthree;

else

d<=dfour;

end if;

end process;

with d select

seg <="0111111" when "0000",

"0000110" when "0001",

"1011011" when "0010",

"1001111" when "0011",

"1100110" when "0100",

"1101101" when "0101",

"1111101" when "0110",

"0000111" when "0111",

"1111111" when "1000",

"1101111" when "1001",

"0000000" when others;

end dec;

三、实验总结:

通过本次实验,掌握了从顶层文件原理图开始,自上而下的设计电路的方法,感受到此方法的在各个模块程序调试时的方便,有更好的逻辑思路。除此之外,还对VHDL语言的编写、调试,更好的掌握VHDL语言的编写的一些技巧。

约翰逊计数器

环形计数器是由移位寄存器加上一定的反馈电路构成的,用移位寄存器构成环形计数器的一般框图见图23-5-1,它是由一个移位寄存器和一个组合反馈逻辑电路闭环构成,反馈电路的输出接向移位寄存器的串行输入端,反馈电路的输入端根据移位寄存器计数器类型的不同,可接向移位寄存器的串行输出端或某些触发器的输出端。 图23-5-1 移位寄存器型计数器方框图 23.5.1 环形计数器 23.5.1.1 电路工作原理 图23-5-2为一个四位环形计数器,它是把移位寄存器最低一位的串行输出端Q1反馈到最高位的串行输入端(即D触发器的数据端)而构成的,环形计数器常用来实现脉冲顺序分配的功能(分配器)。 假设寄存器初始状态为[Q4Q3Q2Q1]=1000,那么在移位脉冲的作用下,其状态将按表23-11 中的顺序转换。 当第三个移位脉冲到来后,Q1=1,它反馈到D4输入端,在第四个移位脉冲作用下Q4=1,回复到初始状态。表23-11中的各状态将在移位脉冲作用下,反复在四位移位寄存器中不断循环。

由上述讲讨论可知,该环形计数的计数长度为N=n。和二进制计数器相比,它有2n-n个状态没有利用,它利用的有效状态是少的。 23.5.1.2 状态转换图和工作时序 表23-11中是以1000为初始状态的,它所对应的状态转换图见图23-5-3。如果移位寄存器中的初始状态不同,就会有不同的状态转换图。图23-5-4给出了四位环形计数器可能有的其它几种状态转换图。 图23-5-3 状态转换图 (a) (b) (c) (d) 图23-5-4 四位环行计数器其它的状态转换图 图23-5-4(a)、(b)、(c)三个状态转换图中各状态是闭合的,相应的时序为循环时序。当计数器处于图23-5-4(d)所示的状态0000或1111时,计数器的状态将不发生变化。这两个状态称为悬态或死态。 四位环形计数器可能有这么多不同的循环时序,是我们不希望的,只能从这些循环时序中选出一个来工作,这就是工作时序,或称为正常时序,或有效时序。其它末被选中的循环时序称为异常时序或无效时序。一般选图23-5-3的时序为工作时序,因为它只循环一个“1”,不用经过译码就可从各触发器的Q端得到顺序脉冲输出,参看图23-5-5。

计数进制可变的计数器设计

数字电子技术基础自主实验 班级:1201106 学号:1120110618 姓名: 陈振鑫

姓名班级学号 实验日期节次教师签字成绩 实验名称:计数进制可变的计数器设计 一、实验目的 利用74LS138(3线-8线译码器),74LS253(4选1数据选择器),74LS161(同步十进制加法计数器)三个芯片组合,利用清零法组成模数可以改变的加法计数器。 二、实验设备名称,型号 1.实验电路箱 2.直流稳压电源 3.74LS138、74LS253 、74LS161等芯片 4.导线若干 5.数字万用表 74ls138 74ls161

74ls253 三、实验电路图 四、设计思路及方案 设计思路:将计数器的输出作为译码器的输入端,译码数通过数据选择器,输出低点平,利用同步十进制加法计数器74LS161的清零端将计数器清零。 设计方案:电路图如图上图所示,74LS161计数器输出端QdQcQbQa分别与74LS138的输入端B0B1B2和输入使能端E2(高电平有效)相连,译码器的输出端Y0Y1Y6Y7与四选一数据

选择器输入端相连,输出端与计数器清零端相连。当E3=1,B2B1B0从000到111变化时Y1~Y7分别被选中,当MN分别取00~11时,便可实现改变计数器当进制。 五、实验步骤 1.检查导线通断后按电路图连好电路,QdQcQbQa端接数码显示管,CP端接手动计数脉冲,MN端设为00,检查无误后接通电源; 2.接通电源连续发动计数脉冲至CP端,观察数码显示,使计数器进入主计数循环; 3.按表测量并记录数据; 4.分别设MN=01,10,11,重复上述步骤; 5.分析实验结果。 六、仿真结果

东南大学可变步长计数器

东南大学电工电子实验中心 实验报告 课程名称:电路与电子线路实验I 第 3 次实验 实验名称:可变步长计数器的设计 院(系):吴健雄专业:信息 姓名:学号: 实验室: 502 实验组别: 6 同组人员:实验时间:年月日评定成绩:审阅教师:

一、实验内容要求 1.可变步长计数器的设计 内容: ● 实现N 步长计数器 ● 实现1/N 步长计数器 ● N 为四位二进制数,可现场设置 要求: ● 在Multisim 软件平台上设计实验电路 ● 运行并检验实验结果 二、 实现方案 整个实验的实现方案的框架如图: 在此基本呢框架上添加量程设置,加减,N 与1/N 步长的具体方案。 三、 电路设计 首先,将电路分为两个模块搭建,分别为可变量程可逆计数的功能模块与可变步长的模块。 可逆功能可以通过用74LS160再加非门实现,也可直接用74LS190或74LS192(可加减十进制计数器)来实现。本实验将利用74LS190来实现,并通过逻辑门对计数器进行置数与清零的控制,74LS190引脚图如下图所示:

可变量程功能可以通过利用计数器输出数通过逻辑门的判断将结果输入到置数端,与到达最大值时传送信息到到清零端。 可变步长功能可以用74LS283(全加器)与D触发器控制开关来实现,74LS283引脚图如下所示: 四、电路分析仿真 可变量程加减计数模块

N步长计数器 以上模拟电路可以通过控制不同开关,改变步长,步长可以由1-15变化,当计数为16时灯灭。 五、实验总结 1、本实验让我进一步了解了74LS190计数器的基本原理。基本掌握集成计数器芯片74LS190工作原理及应用。 2、在设计可变量程功能时最开始找不到方法。经过自己的努力和尝试,渐 渐地思路清晰起来,经过多次尝试,实现了设计的要求。

模可变计数器设计(Verilog语言)概览

模可变计数器设计 (一)实验目的 1、进一步熟悉实验装置和QuartusⅡ软件的使用; 2、进一步熟悉和掌握EDA设计流程; 3、学习简单组合、时序电路的EDA设计; 4、学习计数器中二进制码到BCD码的转换技巧; 5、学习实验装置上数码管的输出方法。 (二)设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下: 1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定)的 数,没按下时模为100-199之间(具体数值自行确定)的数; 2、计数结果用三位数码管十进制显示。 (三)主要仪器设备 3、微机1台 4、QuartusII集成开发软件1套 5、EDA实验装置1套 (四)实验步骤 主要有三个模块 1:一个模20和模119的计数器 2:数码管的显示 3:BCD的调整 源程序: module count (clk,m,en,rst,a,sel,SG,d); input clk,m,en,rst; output [7:0] SG; output [2:0] sel; output a; (* synthesis, keep *) reg clk1; (* synthesis, keep *) wire [3:0] gw,sw,bw; /*(* synthesis, keep *) */reg [3:0]a; reg [11:0] q; reg [11:0] model;

reg [7:0] cnt,SG; reg [2:0] sel; reg [0:0]d; output [0:0]d; always @(posedge clk) begin cnt=cnt+1; if (cnt==200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; //200分频,CLK为数码管扫描频率,CLK1为计数频率 if (sel<2) sel=sel+1; else sel=0; end //sel为数码管选择 always @(sel) begin case (sel) 0: a=bw; //0数码管为百位 1: a=sw; //1数码管为十位 2: a=gw; //2数码管为个位 default: a=0; endcase case (a) 0:SG<=8'b00111111; 1:SG<=8'b00000110; 2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101; 6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; //8段译码值 default: SG=8'b11111111; endcase end always @(m) if (m) model=12'b000000100000; //模值20 else model=12'b000100011001; //模值119 assign gw=q[3:0]; assign sw=q[7:4]; assign bw=q[11:8]; always @(posedge clk1,negedge rst) begin if (!rst) q=0; else if (en) begin if (q

计数器工作原理及应用

计数器工作原理及应用 除了计数功能外,计数器产品还有一些附加功能,如异步复位、预置数(注意,有同步预置数和异步预置数两种。前者受时钟脉冲控制,后者不受时钟脉冲控制)、保持(注意,有保持进位和不保持进位两种)。虽然计数器产品一般只有二进制和十进制两种,有了这些附加功能,我们就可以方便地用我们可以得到的计数器来构成任意进制的计数器。下面我们举两个例子。在这两个例子中,我们分别用同步十进制加法计数器74LS160构成一个六进制计数器和一个一百进制计数器。 因为六进制计数器的有效状态有六个,而十进制计数器的有效状态有十个,所以用十进制计数器构成六进制计数器时,我们只需保留十进制计数器的六个状态即可。74LS160的十个有效状态是BCD编码的,即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001[图5-1]。 图5-1 我们保留哪六个状态呢?理论上,我们保留哪六个状态都行。然而,为了使电路最简单,保留哪六个状态还是有一点讲究的。一般情况下,我们总是保留0000和1001两个状态。因为74LS160从100 1变化到0000时,将在进位输出端产生一个进位脉冲,所以我们保留了0000和1001这两个状态后,我们就可以利用74LS160的进位输出端作为六进制计数器的进位输出端了。于是,六进制计数器的状态循环可以是0000、0001、0010、0011、0100和1001,也可以是0000、0101、0110、0111、1000和1001。我们不妨采用0000、0001、0010、0011、0100和1001这六个状态。 如何让74LS160从0100状态跳到1001状态呢?我们用一个混合逻辑与非门构成一个译码器[图5. 3.37b],当74LS160的状态为0100时,与非门输出低电平,这个低电平使74LS160工作在预置数状态,当下一个时钟脉冲到来时,由于等于1001,74LS160就会预置成1001,从而我们实现了状态跳跃。

实验二 模可变计数器(DOC)

南昌大学实验报告 学生姓名:学号:专业班级:中兴101班 实验类型:□验证□综合■设计□创新实验日期:2012、10、18成绩: 实验二模可变计数器的设计 一、实验目的 1.学习计数器的VHDL设计、波形仿真和硬件测试; 2.学会自己设计程序; 3.学会设计模可变计数器; 4.学习多层次设计方法。 二、实验内容与要求 1.计设置一位控制模的位M,要求M=0:模23计数;当M=1:模109计数。 2.计数结果用静态数码管显示,一个四位二进制表示0~9中的一个数; 3.给出此项设计的仿真波形; 4.应用实验装置验证此计数器的功能。 三、实验思路 1.按照实验要求,本实验可分为四个模块进程: 分频、模23与109计数转换、数码管控制、七段译码。 2.模可变计数器原理: 即在原有的模值计数器上加入模值转换功能 3.计数器的数码管显示 需注意十位和百位的进位即:当个位数的数值为9的下一个脉冲来时转换为,同时向十位进一,转换的算法为: 9(1001)+7(0111)=0(0000),并进一位; 当数值为99时,用同样的方法转换: 153(1001 1001B,数码管显示99)+103(01100111B)=100(0001 0000 0000); 4.要求分别实现模23和模109的计数,因此我分别用buffer变量GW、SW 、 BW 代表个位、十位、百位。还有一个控制模的位M,当M为0时实现模23计数,只用到GW和SW分别为个位和十位计数;当M为1时实现模109计数,用GW 、SW、 BW 分别为个位十位和百位计数。由于端口不能参与运算,因些在结构体中定义了se10、 sel1、 sel2三个buffer变量,分别用来对应SEL(0)、 SEL(1)、SEL(2);在程序的最后用端口接收信号。 5.进程敏感信号为RST EN M 三个,当RST为低电平,EN为高电平时则计数,否则不计数。 6.位选信号的设置: 用整形变量CNT8分别使不同的位选信号对应不同的输入,而得到不同输出。 对应关系: 表一位选信号

模可变计数器设计Verilog语言

模可变计数器设计 V e r i l o g语言 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

模可变计数器设计 (一)实验目的 1、进一步熟悉实验装置和QuartusⅡ软件的使用; 2、进一步熟悉和掌握EDA设计流程; 3、学习简单组合、时序电路的EDA设计; 4、学习计数器中二进制码到BCD码的转换技巧; 5、学习实验装置上数码管的输出方法。 (二)设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下: 1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定) 的数,没按下时模为100-199之间(具体数值自行确定)的数; 2、计数结果用三位数码管十进制显示。 (三)主要仪器设备 3、微机1台 4、QuartusII集成开发软件 1套 5、EDA实验装置1套 (四)实验步骤 主要有三个模块 1:一个模20和模119的计数器

2:数码管的显示 3:BCD的调整 源程序: module count (clk,m,en,rst,a,sel,SG,d); input clk,m,en,rst; output [7:0] SG; output [2:0] sel; output a; (* synthesis, keep *) reg clk1; (* synthesis, keep *) wire [3:0] gw,sw,bw; /*(* synthesis, keep *) */reg [3:0]a; reg [11:0] q; reg [11:0] model; reg [7:0] cnt,SG; reg [2:0] sel; reg [0:0]d; output [0:0]d; always @(posedge clk) begin cnt=cnt+1; if (cnt==200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; //200分频,CLK为数码管扫描频率,CLK1为计数频率 if (sel<2) sel=sel+1; else sel=0; end //sel为数码管选择 always @(sel) begin case (sel) 0: a=bw; //0数码管为百位 1: a=sw; //1数码管为十位 2: a=gw; //2数码管为个位 default: a=0; endcase case (a) 0:SG<=8'b00111111; 1:SG<=8'b00000110; 2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101; 6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; //8段译码值 endcase end always @(m) if (m) model=12'b000000100000; //模值20 assign gw=q[3:0]; assign sw=q[7:4]; assign bw=q[11:8];

(工作分析)计数器工作原理的模式化分析

(工作分析)计数器工作原理的模式化分析

计数器工作原理的模式化分析 时序逻辑电路是《脉冲和数字电路》这门课程的重要组成部分,计数器是时序逻辑电路基础知识的实际应用,其应用领域非常广泛。计数器原理是技工学校电工电子专业学生必须重点掌握的内容,也是本课程的考核重点,更是设计计数器或其他电子器件的基础。 但近年来技校学生的文化理论基础和理解能力普遍较差,按照课件体系讲授计数器这个章节的知识,超过70%的学生听不懂。 我先后为四届学生讲授过这门课,于教学实践中摸索出壹套分析计数器的方法——模式化分析,即把分析步骤模式化,引导学生按部就班地分析计数器。用这种方法分析,我只要以其中壹种计数器(如异步二进制计数器)为例讲解,学生便能够自行分析其他计数器。 教学实践证明,用这种方法讲授计数器知识,学生比较感兴趣,觉得条理清晰,易于理解,掌握起来比较轻松。这种方法仍有壹个好处,不管是同步计数器仍是异步计数器,不管是二进制计数器仍是十进制计数器,不管是简单的计数器仍是复杂的计数器,只要套用这种方法,计数器工作原理迎刃而解。即使是平时基础很差的学生,只要记住几个步骤,依葫芦画瓢,也能把计数器原理分析出个大概来。 一、明确计数器概念 分析计数器当然要先清楚什么是计数器啦。书上的概念是:

计数器是数字系统中能累计输入脉冲个数的数字电路。我告诉学生,计数器就是这样壹种电子设备:把它放于教室门口,每个进入教室的同学均于壹个按钮上按壹下,它就能告诉你壹共有多少位同学进入教室。其中,每个同学按壹下按钮就是给这个设备壹个输入信号,N个同学就给了N个信号,这N个信号就构成计数器的输入CP脉冲,计数器要统计的就是这个CP脉冲系列的个数。当然,如果没有接译码器,计数器的输出端显示的是二进制数而非十进制数,比如有9位同学进入教室,它不显示“9”,而是显示“1001”。 随后,我简要介绍了计数器的构成和分类,且强调,计数器工作前必须先复位,即每个触发器的输出端均置零。 二、回顾基础知识 分析计数器要用到触发器的关联知识,其中JK触发器最常用,偶尔用到T触发器和D触发器。因此,介绍完计数器概念后,我不急于教学生分析其原理,而是先提问JK、T、D触发器的关联知识,包括触发器的逻辑符号、特性方程、特性表等。 由于计数器的控制单元由逻辑门电路构成,分析前仍要简要回顾壹下和、或、非等常用逻辑门电路的关联知识。另外,用模式化方法分析计数器仍要用到逻辑代数的运算方法、逻辑函数的化简方法等关联知识。 三、画出解题模板 准备工作做完了,下面进入核心部分——列出分析计数器的

计数器原理分析及应用实例

计数器原理分析及应用实例 除了计数功能外,计数器产品还有一些附加功能,如异步复位、预置数(注意,有同步预置数和异步预置数两种。前者受时钟脉冲控制,后者不受时钟脉冲控制)、保持(注意,有保持进位和不保持进位两种)。虽然计数器产品一般只有二进制和十进制两种,有了这些附加功能,我们就可以方便地用我们可以得到的计数器来构成任意进制的计数器。下面我们举两个例子。在这两个例子中,我们分别用同步十进制加法计数器74LS160构成一个六进制计数器和一个一百进制计数器。 因为六进制计数器的有效状态有六个,而十进制计数器的有效状态有十个,所以用十进制计数器构成六进制计数器时,我们只需保留十进制计数器的六个状态即可。74LS160的十个有效状态是BCD编码的,即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001[图5-1]。 图5-1 我们保留哪六个状态呢?理论上,我们保留哪六个状态都行。然而,为了使电路最简单,保留哪六个状态还是有一点讲究的。一般情况下,我们总是保留0000和1001两个状态。因为74LS160从1001变化到0000时,将在进位输出端产生一个进位脉冲,所以我们保留了0000和1001这两个状态后,我们就可以利用74LS160的进位输出端作为六进制计数器的进位输出端了。于是,六进制计数器的状态循环可以是0000、0001、0010、0011、0100和1001,也可以是0000、0101、0110、0111、1000和1001。我们不妨采用0000、0001、0010、0011、0100

和1001这六个状态。 如何让74LS160从0100状态跳到1001状态呢?我们用一个混合逻辑与非门构成一个译码器[图5.3.37b],当74LS160的状态为0100时,与非门输出低电平,这个低电平使74LS160工作在预置数状态,当下一个时钟脉冲到来时,由于等于1001,74LS160就会预置成1001,从而我们实现了状态跳跃。 图5.3.37b用置数法将74160接成六进制计数器(置入1001) 比这个方案稍微繁琐一点的是利用74LS160的异步复位端。下面这个电路中[图5.3.34],也有一个由混合逻辑与非门构成的译码器。 图5.3.34用置零法将74LS160接成六进制计数器

N进制计数器——可变分频器

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT_N IS PORT ( CLK,RST,EN : IN STD_LOGIC; N : IN STD_LOGIC_VECTOR(11 DOWNTO 0); CNT : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT_N; ARCHITECTURE behav OF CNT_N IS BEGIN PROCESS(CLK, RST, EN) V ARIABLE CNTI : STD_LOGIC_VECTOR(11 DOWNTO 0); BEGIN IF RST = '1' THEN CNTI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) IF CNTI < N-1 THEN CNTI := CNTI + 1; --小于N/2,允许加1计数 ELSE CNTI := (OTHERS =>'0'); --大于等于N/2,计数值清零 END IF; END IF; END IF; IF CNTI < CONV_INTEGER(N)/2 THEN COUT <= ‘0'; ELSE COUT <= ‘1'; END IF; CNT <= CNTI; COUT <= COUTI; --将计数值向端口输出 END PROCESS; END behav;

定时计数器设计.

设计数字钟,内有4组可设置的定时开/关,控制一路开关量输出。定时开关的设置分为单次操作(2011年6月25日8:00开2011年6月26日18:00关),周期操作(如周三8:00 开,周四16:00关)。数码管显示时间(单位秒)与设置值(单位分钟),用发光二极管表示周期与单次操作。 任务安排: (1)设计任务及要求分析 (2)方案比较及认证说明 (3)系统原理阐述,写出设计方案结构图。 (4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释 (5)调试记录及结果分析、 (6)总结 (7)参考资料5篇以上 (8)附录:程序清单 时间安排: 6月24日:安排设计任务;收集资料;方案选择 6月25日:程序设计 6月26——27日:实验室内调试程序并演示 6月28日:撰写报告 7月1日:交能力拓展训练报告

摘要 单片机在电子产品中的应用越来越广泛,特别是51系列的单片机,由于其使用方便、价格低廉等优势,在市场上占有很大的份额。AT89C51就是51系列中的一个比较成熟的型号,它完全兼容51单片机的指令。 本文详细介绍了基于AT89C51单片机的数字电子钟的设计,本电子钟可以实现日期、时间的显示和调整,带有整点提示和一个闹钟,并且可以显示当前气温。 本设计包括硬件设计和软件设计两部分。主要硬件有:三端稳压器LM7805、AT89C51单片机、字符型液晶显示模块HY1602A和若干按键等。软件大致思路为:使用12MHz的晶振,单片机内部的定时器0工作在方式1,每计数50000个机器周期(即50ms)产生一次中断,中断20次就是一秒,这样就可以实现精确计时的目的,不断扫描按键,如果有按键按下,则对按键做出相应的响应。 关键字:单片机;电子钟; LCD1602;

变模计数器

数字电路课程设计报告 ——变模计数器 课程设计任务书 一﹑题目:16进制计数器, 计数器的计数模值可变,计数模M从2~16变化,用多路开关控制M的选择。 原始条件:该系统由计数模值设置开关电路、变模控制模块、16进制计数器、显示驱动电路构成。 二、要求完成设计的主要任务如下:(变模计数器输出状态表如表2-1所示。 电路设计框图如图2-1所示。)

图2-1变模计数器设计框图 一、实验目的 1、设计变模计数器,掌握变模计数器的设计方法,实现二~十六进 制之间的转换。 2、掌握中规模集成计数器74LS85的逻辑功能和使用方法 3、计数器的计数模M值可变,多路开关控制M的选择

二、设计理念 变模开关控制电路: 设置三个开关来控制切换A、B、C三个输入端,就可以实现001到111的进制实现功能。 变模控制电路: 计数器四位输出送4-16译码器,译码器输出接16选1数据选择器,数 据选择器控制端接模设置开关电路(拨码开关)。 显示驱动电路: 计数器输出送显示译码器,再送4段LED显示器。 三、实验原理 通过161计数器计数输出送给4-16译码器,再送给选择器,最后显示驱动。通过计数器的计数模值可变,计数模M从2~16变化,用多路控 制M的选择。 根据变模计数器的引脚图,电路图(如下图所示)。进行变模计数器的设计。 四、实验设备 74LS85 一个 74LS161 一个 74LS00 一个 导线若干 面包板一个

电路板一个 电源线一个 五、实验内容 (1)电路图: 手绘电路图(2)各芯片的引脚图

74LS00引脚图 74LS85引脚图

实验九_步长可变的加减计数器

实验九步长可变的加减计数器 一、实验目的 1.掌握加减法计数器以及特殊功能计数器的的设计原理。 2用VHDL语言设计多功能计数器。 二、实验原理 计数分同步计数器和异步计数器,如果按工作原理和使用情况来分那就更多了。 1.加减工作原理 加减计数也称为可逆计数,就是根据计数控制信号的不同,在时钟脉冲的作用下,计数器可以进行加1计数操作或者减1计数操作。 2.变步长工作原理 如步长为3的加法计数器,计数状态变化为0、3、6、9、12……,步长值由输入端控制。在加法计数时,当计数值达到或超过99时,在计数器下一个时钟脉冲过后,计数器清零;在减法计数时,当计数值达到或小于0时,在计数器下一个时钟脉冲过后,计数器也清零。 三、实验内容 1 设计的计数步长可在0~79之间变化 2 通过仿真或观察波形图验证设计的正确性。 3 编译下载验证结果。 四、设计提示 1.注意IF语句的嵌套。 2.注意加减计数状态的变化,计数值由9变0(加法)及由0变9(减法)各位的变化。 由于计数器为十进制计数器,还应考虑进位或借位后进行加6及减6校正。 五、实验报告要求

1.写出多模加减计数器的VHDL源程序。 2.叙述多模加减计数器的工作原理。 SF = ‘1’加标志,SF=’0’减标志 3.画出计数器工作波形图. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CHANGABLE IS PORT(CLK,RESET,SF:IN STD_LOGIC; SIZE:IN STD_LOGIC_VECTOR(6 DOWNTO 0); DO:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END ENTITY CHANGABLE; ARCHITECTURE C_SIZE OF CHANGABLE IS SIGNAL C_COUNT: STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN PROCESS(CLK,RESET,SF,SIZE) V ARIABLE TP:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN IF(RESET = '1')THEN C_COUNT<=(OTHERS=>'0'); ELSIF(CLK'EVENT AND CLK = '1')THEN IF(SF='1')THEN TP:=C_COUNT+SIZE; IF(TP>79)THEN C_COUNT<=(OTHERS=>'0'); ELSE C_COUNT<=C_COUNT+SIZE; END IF; ELSE IF(TP < SIZE)THEN C_COUNT<=(OTHERS=>'0'); ELSE C_COUNT<=C_COUNT-SIZE; END IF; END IF; END IF; DO<=C_COUNT; END PROCESS; END ARCHITECTURE C_SIZE;

采用VHDL语言实现多功能可变模计数器设计并进行仿真验证

采用VHDL语言实现多功能可变模计数器设计并进行仿真验证引言 随着电子技术、计算机技术和EDA技术的不断发展,利用FPGA/CPLD进行数字系统的开发已被广泛应用于通信、航天、医疗电子、工业控制等领域。与传统电路设计方法相比,FPGA/CPLD具有功能强大,开发周期短,投资少,便于追踪市场变化及时修改产品设计,以及开发工具智能化等特点。近年来,FPGA/CPLD发展迅速,随着集成电路制造工艺的不断进步,高性价比的FPGA/CPLD器件推陈出新,使FPGA/CPLD成为当今硬件设计的重要途径。在FPGA/CPLD的应用设计开发中,VHDL语言作为一种主流的硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,并在语言易读性和层次化、结构化设计方面。表现出了强大的生命力和应用潜力。 QuartusⅡ是Altera公司在21世纪初推出的FPGA/CPLD集成开发环境,是Altera公司前一代FPGA/CPLD集成开发环境Max+PlusⅡ的更新换代产品,其界面友好,使用便捷,功能强大,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。 计数器是数字系统中使用最多的时序电路之一,不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。可变模计数器由于计数容量可以根据需要进行变化,为其广泛使用创造了便利。这里在QuartusⅡ开发环境下,用VHDL 语言设计了一种具有清零、置数、使能控制、可逆计数和可变模功能的计数器。 1 基本可变模计数器设计 可变模计数器是指计数/模值可根据需要进行变化的计数器。电路符号图1所示,clk为时钟脉冲输入端,clr为清零端,m为模值输入端,q为计数输出端。 基本可变模计数器的VHDL代码如下所示:

一种多功能计数器的设计

一种多功能计数器的设计 摘要:计数器在我们的日常生活中用得非常普遍,在计算机和数字化设备中更是无处不在。自动化生产流水线上对产品的计数更为重要,但一般计数器专用性强,一种计数器只能对某一种材料或特性的产品进行计数,在一定程度上限制了它的计数对象。鉴于此,本设计制作一个能对不同材料的产品进行计数的多功能计数器,扩大一般计数器的应用范围。 关键词:产品;传感器;计数器 abstract:counter is widely used in our life, especially in computer and digital equipment. but with the problem of material and property of products on pipelining, it is restricted badly on this tache. one counter may barely count the products of same material, though broad usage, its simplex function at a certain extent restrict its using in depth. considering the disadvantage of counter, the objective of this design is definite, that is we can make a multifunctional counter, which enlarge its scope of application. key words: product; sensor; counter 1 引言 计数器在生产实践中的广泛应用大家有目共睹,计数器是数字化设备的基石,少了计数器,大大影响其功能。但就计数器本身而言,

实验六verilog设计分频器计数器电路答案

实验六 Verilog设计分频器/计数器电路 一、实验目的 1、进一步掌握最基本时序电路的实现方法; 2、学习分频器/计数器时序电路程序的编写方法; 3、进一步学习同步和异步时序电路程序的编写方法。 二、实验内容 1、用Verilog设计一个10分频的分频器,要求输入为clock(上升沿有效),reset (低电平复位),输出clockout为4个clock周期的低电平,4个clock周期的高电平),文件命名为。 2、用Verilog设计一异步清零的十进制加法计数器,要求输入为时钟端CLK(上升沿)和异步清除端CLR(高电平复位),输出为进位端C和4位计数输出端Q,文件命名为。 3、用Verilog设计8位同步二进制加减法计数器,输入为时钟端CLK(上升沿有效)和异步清除端CLR(低电平有效),加减控制端UPDOWN,当UPDOWN为1时执行加法计数,为0时执行减法计数;输出为进位端C和8位计数输出端Q,文件命名为。 4、用VERILOG设计一可变模数计数器,设计要求:令输入信号M1和M0控制计数模,当M1M0=00时为模18加法计数器;M1M0=01时为模4加法计数器;当M1M0=10时为模12加法计数器;M1M0=11时为模6加法计数器,输入clk上升沿有效,文件命名为。 5、VerilogHDL设计有时钟时能的两位十进制计数器,有时钟使能的两位十进制计数器的元件符号如图所示,CLK是时钟输入端,上升沿有效;ENA是时钟使能控制输入端,高电平有效,当ENA=1时,时钟CLK才能输入;CLR是复位输入端,高电平有效,异步清零;Q[3..0]是计数器低4位状态输出端,Q[7..0]是高4位状态输出端;COUT是进位输出端。 三、实验步骤 实验一:分频器 1、建立工程

自动计数器课程设计..

西安电子科技大学 长安学院课程设计实验报告 姓名: 学号: 指导老师:

自动计数器课程设计 摘要:自动计数器在日常生活中屡见不鲜,它是根据不同的情况设定的,能够通过技术功能实现一些相应的程序,如通过自动计数器来实现自动打开和关闭各种电器设备的电源。广泛用于路灯,广告灯,电饭煲等领域。 自动计数器给人们生产生活带来了极大的方便,而且大大地扩展了自动计数器的功能。诸如自动定时报警器、按时自动打铃、时间程序自动控制、定时广播、自动启闭电路,定时开关烤箱、甚至各种定时电器的自动启用等,所有这些,都是以自动计数器为基础的。由于它的功能强劲,用途广泛,方便利用,所以在这个电子科技发展的时代,它是一个很好的电子产品。如在洗衣机的定时控制以及路灯等一些人们不能再现场控制的操控。都可以利用自动计数器来完成这样的功用。可见此系统所能带来的方便和经济效益是相当远大的。因此,研究自动计数器及扩大其应用,有着非常现实的意义。 本次课设设计是检验理论学习水平、实践动手能力及理论结合实际的能力,要求具有一定的分析处理问题能力和自学能力的一个比较重要得实践课程。通过这样的过程,使我们的论文及实践水平有一次较为全面的检查,同时也使我们硬件方面的能力有所提高,对以后的学习有这非常重要的意义。 关键词:电器设备;自动计数器;电源 指导老师签名:

1. 设计任务及方案 1.1设计任务 设计并制作一个自动计数器,NE555构成时钟信号发生器,CD4518为二,十进制加计数器,CD4543为译码驱动器,调节R17课调节555的震荡频率,C1为充放电电容,电容越大,充点时间越长,振荡频率越低。 介绍了一种新型的自动计数器设计方法,以NE555构成计数脉冲信号发生器,CD4518为二/十进制加法计数器,CD4543为译码驱动器,与按键、数码管等较少的辅助硬件电路相结合,实现对LED数码管进行控制。本系统具有体积小、硬件少、电路结构简单及容易操作等优点。 本计数器可将机械或人工计数方式变为电子计数,并且采用LED数码显示,简单直观,可适用于诸多行业,以满足现代生产、生活等方面的需求。随着生产技术的不断改善和提高,在现代化生产的许多场合都可以看到计数器的使用。本计数器具有低廉的造价以及控制简单等特点。通过对计数脉冲的转换可使本计数器应用更为广泛。 2.电路原理 2.1 元器件的设计与参数 本小组设计的电路原理图所涉及的元器件有:电压为+5V的直流稳压电源;最大电阻为100K的滑动变阻器R17一个;有极性电容C1一个;无极性电容C2和C3; 开关SW一个;电阻R1~~R16总共16个;芯片有:NE555,CD4518,CD4543;以及共阴极7段数码显示器两个。

模可变计数器设计(Verilog语言)解答

模可变计数器设计 (一)实验目的 1、进一步熟悉实验装置和Quartus n软件的使用; 2、进一步熟悉和掌握EDA 设计流程; 3 、学习简单组合、时序电路的EDA 设计; 4、学习计数器中二进制码到BCD 码的转换技巧; 5、学习实验装置上数码管的输出方法。 (二)设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA 实验装置上实现模可变计数器功能,具体要求如下: 1 、设置一个按键控制改变模值,按键按下时模为10-99 之间(具体数值自行确定)的 数,没按下时模为100-199 之间(具体数值自行确定)的数; 2、计数结果用三位数码管十进制显示。 (三) 主要仪器设备 3、微机 1 台 4、QuartusII 集成开发软件 1 套 5、EDA 实验装置 1 套 (四) 实验步骤 主要有三个模块 1:一个模20 和模119 的计数器 2:数码管的显示 3:BCD 的调整 源程序: module count (clk,m,en,rst,a,sel,SG,d); input clk,m,en,rst; output [7:0] SG; output [2:0] sel; output a; (* synthesis, keep *) reg clk1; (* synthesis, keep *) wire [3:0] gw,sw,bw; /*(* synthesis, keep *) */reg [3:0]a; reg [11:0] q; reg [11:0] model; reg [7:0] cnt,SG; reg [2:0] sel;

reg [0:0]d; output [0:0]d; always @(posedge clk) begin cnt=cnt+1; if (cnt==200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; //200 分频,CLK 为数码管扫描频率,CLK1 为计数频率 if (sel<2) sel=sel+1; else sel=0; end //sel 为数码管选择 always @(sel) begin case (sel) 0: a=bw; //0 数码管为百位 1: a=sw; //1 数码管为十位 2: a=gw; //2 数码管为个位 default: a=0; endcase case (a) 0:SG<=8'b00111111; 1:SG<=8'b00000110; 2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101; 6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; //8 段译码值default: SG=8'b11111111; endcase end always @(m) if (m) model=12'b000000100000; // 模值20 else model=12'b000100011001; // 模值119 assign gw=q[3:0]; assign sw=q[7:4]; assign bw=q[11:8]; always @(posedge clk1,negedge rst) begin if (!rst) q=0; else if (en) begin if (q

cd4017计数器的工作原理

cd4017工作原理及应用电路图 CD4017功能简述: CD4017是5位Johnson计算器,具有10个译码输出端,CP,CR,INH输入端。时钟输入端的斯密特触发器具有脉冲整形功能,对输入时钟脉冲上升和下降时间无限制。INH为低电平时,计算器在时钟上升沿计数;反之,计数功能无效。CR为高电平时,计数器清零。Johnson计数器,提供了快速操作,2输入译码选通和无毛刺译码输出。防锁选通,保证了正确的计数顺序。译码输出一般为低电平,只有在对应时钟周期内保持高电平。在每10个时钟输入周期CO信号完成一次进位,并用作多级计数链的下级脉动时钟。 CD4017逻辑结构图: CD4017 Logic Diagram 逻辑图

CD4017的引脚图 CD4017引脚功能: C D4017内部是除10的计数器及二进制对10进制译码电路。CD4017有16支脚,除电源脚VDD及VSS为电源接脚,输入电压范围为3–15V之外,其余接脚为: A、频率输入脚:CLOCK(Pin14),为频率信号的输入脚。 B、数据输出脚: a、Q1-Q9(Pin3,2,4,7,10,1,5,6,9,11),为解码后的时进制输出接脚,被计数到的值,其输出为Hi,其余为Lo 电位。 b、CARRY OUT(Pin12),进位脚,当4017计数10个脉冲之后,CARRY OUT 将输出一个脉波,代表产生进位,共串级计数器使用。 D、控制脚: a、CLEAR(Pin15):清除脚或称复位(Reset)脚,当此脚为Hi时,会使CD4017的Q0为”1”,其余Q1-Q9为”0”。 b、CLOCK ENABLE(Pin13),时序允许脚,当此脚为低电位,CLOCK输入脉波在正缘时,会使CD4017计数,并改变Q1-Q9的输出状态。

相关文档
最新文档