100进制计数器

合集下载

基于MSI芯片74160设计模为100的计数器

基于MSI芯片74160设计模为100的计数器

基于MSI芯片74160设计模为100的计数器1、实验目的:基于MSI芯片74160,利用QuartusII软件设计并实现一个计数器的逻辑功能,通过电路的仿真和硬件验证,进一步了解计数器的特性和功能。

2、实验原理:利用集成计数器MSI芯片的清零端和置数端实现归零,可以按自然态序进行计数的N进制计数器的方法。

集成计数器中,清零、置数均采用异步方式的有74LS163;均采用异步方式的有74LS193、74LS197、74LS192;清零端采用异步方式、置数端采用同步方式的有74LS161、74LS160。

74161/74160功能真值表表1图13、实验环境:PC机(Windowsxp,QuartusII)4、实验内容:按照第五章相关内容,完成计数器的实际,包括原理图输入、编译、综合、适配、仿真,并将此计数器电路设计成一个硬件符号入库。

最后利用两个MSI芯片74160完成一个模为60的计数器的设计,包括原理图的输入、编译、综合、适配、仿真。

5、实验步骤:Step1.启动QuartusII“开始”菜单“所有程序”中的“Altera”程序框中选择“QuartusII”如图1所示:Step2.建立工作库目录文件夹以便设计工程项目的存储EDA工具中的任何一项设计都是一项工程(PROJECT),应首先为此工程建立一个放置与此工程相关的文件的文件夹,此文件夹将被EDA软件默认为工作库(WORK LIBRARY).一般不同的设计项目最好放在相应的文件夹中,注意,一个设计项目可以包含多个设计文件夹。

本项目中的文件夹取名为counter_100,路径为:E:/数字逻辑/作业/100511217/。

注意:文件夹名不能用中文,且不可带空格。

Step3.输入设计(1)打开QuartusII,选择File|New命令。

在New窗口中(如图2所示)的DeviceDesign File中选择硬件设计文件类型为Block Diagram/Schematic File,然后在框图设计文件编辑窗中输入源程序图1的文件。

(完整版)触发器时序逻辑电路习题答案

(完整版)触发器时序逻辑电路习题答案

第4章 触发器4.3 若在图4.5电路中的CP 、S 、R 输入端,加入如图4.27所示波形的信号,试画出其Q 和Q 端波形,设初态Q =0。

SRCP图4.27 题4.3图解:图4.5电路为同步RS 触发器,分析作图如下:S RQ4.5 设图4.28中各触发器的初始状态皆为Q =0,画出在CP 脉冲连续作用下个各触发器输出端的波形图。

Q 11CPQ 3CPCPQ 2Q 6Q 4Q 5CP图4.28 题4.5图解:Q Q nn 111=+ Q Q n n 212=+ Q Q nn 313=+Q Q n n 414=+ Q Q n n 515=+ Q Q nn 616=+Q 1CP Q 2Q 3Q 4Q 5Q64.6 试写出 图4.29(a)中各触发器的次态函数(即Q 1 n+1 、 Q 2 n+1与现态和输入变量之间的函数式),并画出在图4.29(b )给定信号的作用下Q 1 、Q 2的波形。

假定各触发器的初始状态均为Q =0。

1A BCP>1D C1=1A BQ 1Q 2Q 2(a)BA(b)图4.29题4.6图解:由图可见:Q B A AB Q n n 111)(++=+ B A Q n ⊕=+12B A Q 2Q 14.7 图4.30(a )、(b )分别示出了触发器和逻辑门构成的脉冲分频电路,CP 脉冲如图4.30(c )所示,设各触发器的初始状态均为0。

(1)试画出图(a )中的Q 1、Q 2和F 的波形。

(2)试画出图(b )中的Q 3、Q 4和Y 的波形。

Y(b )(c )CPQ 1Q 2(a )图4.30 题4.7图解: (a )Q Q nn 211=+ QQ nn 112=+ Q F 1CP ⊕= R 2 = Q 1 低电平有效CPQ 1Q 2F(b )Q Q Q n n n 4313=+ Q Q Q n n n 4314=+ Q Q Y nn43=CP 3= CP 上降沿触发 CP 4= CP 下降沿触发CPQ 3Q 4Y4.8 电路如图4.31所示,设各触发器的初始状态均为0。

计数器工作原理及应用

计数器工作原理及应用

计数器工作原理及应用除了计数功能外,计数器产品还有一些附加功能,如异步复位、预置数(注意,有同步预置数和异步预置数两种。

前者受时钟脉冲控制,后者不受时钟脉冲控制)、保持(注意,有保持进位和不保持进位两种)。

虽然计数器产品一般只有二进制和十进制两种,有了这些附加功能,我们就可以方便地用我们可以得到的计数器来构成任意进制的计数器。

下面我们举两个例子。

在这两个例子中,我们分别用同步十进制加法计数器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,从而我们实现了状态跳跃。

数电第5章习题解答张克农版

数电第5章习题解答张克农版

5章课后习题解答5.1 一同步时序电路如图题5.1所示,设各触发器的起始状态均为0态。

(1) 作出电路的状态转换表; (2) 画出电路的状态图;(3) 画出CP 作用下各Q 的波形图; (4) 说明电路的逻辑功能。

[解] (1) 状态转换表见。

(2) 状态转换图如图解5.1(1)。

(3) 波形图见图解5.1(2)。

(4) 由状态转换图可看出该电路为同步8进制加法计数器。

5.2 由JK FF 构成的电路如图题5.2所示。

(1) 假设Q 2Q 1Q 0作为码组输出,该电路实现何种功能?(2) 假设仅由Q 2输出,它又为何种功能?[解] (1) 由图可见,电路由三个主从JK 触发器构成。

各触发器的J ,K 均固定接1,且为异步连接,故均实现T '触发器功能,即二进制计数,故三个触发器一起构成8进制计数。

当Q 2Q 1Q 0作为码组输出时,该电路实现异步8进制计数功能。

(2) 假设仅由Q 2端输出,则它实现8分频功能。

图题 5.1图题5.2000001010 011 111110101100Q Q Q 012CPQ 0Q 1Q 2(1) (2)CP 210 n n n Q Q Q +1+1+1210 n n n Q Q Q 0 1 2 3 4 5 6 70 0 00 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 10 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 05.3 试分析图题5.3所示电路的逻辑功能。

[解] (1) 驱动程式和时钟方程02nJ Q =,01K =;0CP CP = 111J K ==;01CP Q= 210n nJ Q Q =,21K =;2CP CP = (2) 将驱动方程代入特性方程得状态方程0+1000020 ()n n n n nQ J Q K Q Q Q CP =+=+1111 ()n n Q Q CP = +12210 ()n n n n Q Q Q Q CP =(3) 根据状态方程列出状态转换真值表(4) 作状态转换图(5) 逻辑功能:由状态转换图可见该电路为异步5进制计数器。

100进制减法计数器程序

100进制减法计数器程序

100进制减法计数器程序计数器一般都是用十进制数计数,但是在某些场景中,需要使用其他进制数进行计数。

100进制是一种常见的进制数,它的进制基数为100,每一位可以表示0-99的数字。

本文将介绍如何实现100进制的减法计数器程序。

首先,我们需要明确100进制的基本概念。

100进制一般可以使用两位来表示一个数位,例如45在100进制中可以表示成45,而120可以表示成1*100+20,即1020。

在程序中,我们可以用数组来表示100进制数,每一位用一个两位数来表示。

在实现减法计数器程序之前,我们需要先了解一下10进制减法的计算方法。

当我们做10进制减法时,如果被减数的某一位小于减数的对应位,我们需要从高位借位,并将被减数该位加上10,然后再计算减法。

在100进制中也是一样的,需要借位和进位操作。

下面,我们来看一下100进制减法计数器程序的具体实现。

首先,我们需要定义一个数组来表示计数器的值,例如:```int counter[4] = {0, 0, 0, 0}; //初始化为0```这个数组的长度为4,表示计数器能够计数的最大值为9999,因为100^4=10000。

接下来,我们定义一个函数来实现100进制减法:```void subtract(int* counter, int value) {int borrow = 0;for (int i = 3; i >= 0; i--) {int diff = counter[i] - (value % 100) - borrow;if (diff < 0) {diff += 100;borrow = 1;} else {borrow = 0;}counter[i] = diff;value /= 100;}}```这个函数接收一个计数器数组和一个减数,然后通过循环实现计数器减去减数的功能。

在每一次循环中,我们将被减的两个两位数相减,并考虑是否需要借位。

数字式100进制加减计数电路的工作原理及制作

数字式100进制加减计数电路的工作原理及制作

数字式100进制加减计数电路的工作原理及制作工作原理1、振荡与分频:晶振X1与集成电路ICl(4060)内部的非门电路共同产生32768Hz的方波信号,经IC1进行214分频后由IC1的13脚输出频率为2Hz的方波信号,再经IC2(集成触发器74LS73)分频一次,输出1Hz的方波信号作为计数器的计数脉冲,送入到个位计数器IC4进行计数。

振荡电路中的R1为反馈电阻;其数值较大(10MΩ)有利于提高振荡频率的稳定性。

电容C1、C2与晶体构成一个谐振型网络,实现对振荡频率的控制,同时提供180度相移,从而和IC1内部的非门构成一个正反馈网络满足振荡条件,使振荡电路正常电工作。

2、计数:计数电路由二块74LS190(IC4、IC5)构成个位和十位的计数。

IC4的13脚为进位输出端/借位输出端)与IC5的14脚(计数脉冲输入端)相连,完成个位向十位进位或借位的功能。

3、译码与显示:该部分电路由两块74LS48(IC6、IC7)和两个数码管组成,IC6对个位计数电路输出的8421BCD码进行译码驱动,数码管显示,IC7对十位计数电路输出8421BCD码进行译码驱动,数码管显示。

4、控制电路:主要由三个按钮SB1、SB2、SB3和一块双JK触发器74LS73构成。

①加法计数控制:接通电源的瞬间,由于电容C4两端的电压不能突变而为0,故IC3A、IC3B的CLR=O,故两触发器清零,即1Q=2Q=O,1Q=2Q=1,2Q=0送到IC2的CLR端,使其清零,此时IC2无计数脉冲输出到计数器74LS190,又因IC3B的Q(的反)=1,该信号送到74LS190的使能控制端(CTEN),则计数器工作在保持状态,故开机后,数码显示不变。

再按一次SB2,IC4、IC5的LOAD变为低水平,使IC4、IC5处于并行输入状态,同时因A=D=U/D=0,B=C=0,故IC4、IC5的QA=QB=QC=QD=0,故显示为00(置0),再按一次SB3(启动)使IC3B获得一个下降脉冲,则IC3B输出从O翻转为1,使IC2输出计数脉冲,送至IC4,同时因IC3B的Q(的反)转为0,则IC4、IC5的CTEN=0,此时虽然C4充电后变为高电平,但IC3A无下降脉冲触、发,故其Q保持为0,则U/D=0,。

100进制计数器

100进制计数器

100进制计数器
首先要制作100进制计数器,需要用到2个74LS190N计数器,两个计数器的范围都是从0~99,然而74LS190N自身就是十进制可逆计数器,所以只需要将两个74LS190N芯片级联就可以达到100进制计数器的目的了。

PL是低电平有效地,预置数允许端,PL=0,时,预置数输入端P0~P3上的数据被置入计数器。

MR是有效地复位端,MR=1时,计数器被复位,所有输出端都为低电平。

CPU是加数计时,CPD是减数计时,当CPU=CPD时,计数器处于保持状态,不计数。

TCU是进位输出端,当加数计时达到最大计数值时,即达到9时,TCU在后半个周期(CPU=0)内变成低电平,其他情况均为高电平。

TCU借位为输出端,当减数计时器计时到零时,TCU在时钟的后半个周期(CPD=0)内变成低电平,其他情况均是高电平。

为实现100进制的计数可把第一芯片的TCU,TCD分别接后一级的CPU,CPD就可以级联使用,这就达到了0~99的技术过程了。

电路仿真图:。

74192实现100进制计数器实验原理

74192实现100进制计数器实验原理

74192是一种常见的集成电路,通常用于实现二进制或十进制的计数器。

虽然74192本身是二进制的计数器,但我们可以通过逻辑设计来将其转换为100进制计数器。

以下是实现100进制计数器的基本原理:
1. 使用四个74192:由于74192是四位计数器,我们需要使用四个74192芯片来构建100进制计数器。

每个74192芯片负责计数器的一个数位。

2. 设置计数范围:根据100进制,我们需要设置计数范围为0-99。

这意味着每个数位需要以100为基数进行计数。

因此,我们需要将每个74192的计数范围设置为0-99。

3. 连接输出:将四个74192芯片的计数输出相连,以形成完整的100进制计数器。

低位计数器的进位输出(Carry Out)将连接到高位计数器的时钟输入(Clock In),以实现进位。

4. 重置和启动:在开始计数之前,需要将所有74192芯片的复位输入(Reset)设置为逻辑高电平,以将计数器复位为0。

然后,通过将任意一个74192的时钟输入(Clock In)设置为逻辑高电平来启动计数器。

5. 结果显示:将每个74192芯片的计数输出连接到适当的显示设备,如数码管或LED灯,以显示计数器的当前值。

通过这种方式,我们可以利用多个74192芯片实现一个100进制计数器。

该实验需要适当的电路设计和连接,以及对集成电路的正确使用和配置。

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

实验课程:EDA 实验
实验地点:第五实验室 实验时间:2012/11/12 班级:通信103班 学号: 102193 姓名:杨险峰
100进制计数器
一、实验目的:
1、设计一个100进制计数器;
2、掌握ISE 软件的综合与设计实现流程;
3、掌握采用ISE 软件进行FPGA 开发的过程以及试验箱的使用方法;
4、了解对设计电路进行功耗分析的方法;
5、了解ISE 软件设计报告中电路资源利用率情况分析;
6、掌握使用VHDL 创建测试文件的方法。

二、实验步骤:
1、启动ISE 集成开发环境,新建一个工程;
2、为工程添加设计源文件;
3、对源文件进行语法检查,并改正错误之处;
4、对设计进行时序仿真,分析设计的正确性;
5、锁定引脚,完成设计实现过程,并在试验箱上连线,利用iMPACT 进行程序下载;
6、在试验箱上验证计数器的功能,观察并记录实验结果;
7、打开report 文件查看资源利用率的情况;
三、实验原理:
输入时钟信号,输出接七段数码管的段码,数码管原理图如下:
四、实验代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
entity counter100 is
port(clk1,clk2:in std_logic;
y:out std_logic_vector(6 downto 0);
Y0 Y1 Y2 Y3 Y4
Y5 Y6 EN
clr en clk Vcc
swgw:out std_logic_vector(1 downto 0)); end counter100;
architecture Behavioral of counter100 is
signal xy:std_logic_vector(1 downto 0);
signal gw:std_logic_vector(3 downto 0) :="0000"; signal sw:std_logic_vector(3 downto 0);
signal w:std_logic_vector(3 downto 0);
signal led:std_logic_vector(6 downto 0);
begin
swgw<=xy;
y<=led;
process(clk1)
begin
if(clk1='1') then
xy<="01";
else
xy<="10";
end if;
end process;
process(clk2)
begin
if(clk2' event and clk2='1') then
if(gw="1001") then
gw<="0000";
else
gw<=gw+'1';
end if;
end if;
end process;
process(clk2)
begin
if(clk2' event and clk2='1') then
if(gw="1001") then
if(sw="1001") then
sw<="0000";
else
sw<=sw+'1';
end if;
end if;
end if;
end process;
process(xy)
begin
if(xy="01") then
w<=gw;
else
w<=sw;
end if;
end process;
with w select
led<="0000110" when "0001", --1
"1011011" when "0010", --2
"1001111" when "0011", --3
"1100110" when "0100", --4
"1101101" when "0101", --5
"1111101" when "0110", --6
"0000111" when "0111", --7
"1111111" when "1000", --8
"1101111" when "1001", --9
"0111111" when others; --0
end Behavioral;
所加激励:
五、实验记录及分析:
仿真激励:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
ENTITY counter_tbw IS
END counter_tbw;
ARCHITECTURE behavior OF counter_tbw IS
-- Component Declaration for the Unit Under Test (UUT) COMPONENT counter100
PORT(
clk1 : IN std_logic;
clk2 : IN std_logic;
y : OUT std_logic_vector(6 downto 0);
swgw : OUT std_logic_vector(1 downto 0)
);
END COMPONENT;
--Inputs
signal clk1 : std_logic := '1';
signal clk2 : std_logic := '1';
--Outputs
signal y : std_logic_vector(6 downto 0);
signal swgw : std_logic_vector(1 downto 0); BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: counter100 PORT MAP (
clk1 => clk1,
clk2 => clk2,
y => y,
swgw => swgw
);
-- Stimulus process
stim_proc:--process
--begin
clk1<= not clk1 after 20 ns;
clk2<= not clk2 after 30 ns;
-- insert stimulus here
--end process;
END;
设计元件:
基准波形:
UCF文件:
NET "y[0]" LOC = B4;
NET "y[1]" LOC = A4;
NET "y[2]" LOC = D5;
NET "y[3]" LOC = C5;
NET "y[4]" LOC = A6;
NET "y[5]" LOC = B6;
NET "y[6]" LOC = E7;
NET "clk1" LOC = F7;
NET "clk2" LOC = D7;
NET "swgw[0]" LOC = C7;
NET "swgw[1]" LOC = F8;
NET "clk2" CLOCK_DEDICATED_ROUTE = FALSE;
表1:可编程器件、拨码开关的关系:
VHDL端口名称FPGA引脚号拨码开关序号Clk1 F7 时钟信号
Clk2 D7 时钟信号
Swgw[0]
C7 数码管段码1 Swgw[1]
F8 数码管段码2 y (6)
E7 接数码管对应短脚
y (5)
B6 y (4)
A6 y (3)
C5 y (2)
D5 y (1)
A4 y (0) B4
六、心得体会:
实验代码是其他同学写好的,在认真了读懂其含义后,完成了实验。

这样写的实验代码的程序比教材上给出的60进制计数器的方法要清晰和方便,能够直接利用数码管的显示观察计数器,更加直观。

这次实验过程,我们最开始没能理解如何“同时”显示多个数码管,并企图用数电课老师给的方法设计电路,频频有误。

后借鉴代码才明白多个数码管显示时并不是同时亮,而是通过clk 控制,使人眼观察为同时显示。

之前未给定个位的初始值,在仿真过程y 的输出信号总是不变化。

后给定初始值“0000”后,能实现仿真。

通过实验我更直观也更容易地明白了老师传授的相关知识。

相关文档
最新文档