由电路图6-44可知,74HC161(2)的P、T接到74HC161(1)的CO,只有74HC161(1)计数到1111时,产生进位信号(CO=1),再来一个CLK脉冲信号,74HC161(2)才计数一次。所以,74HC161(2)的输出是高位,74HC161(1)的输出是低位。
两片74HC161的预置数端被连接到非门,非门输入是74HC161(2)的进位输出;当74HC161(1)和74HC161(2)计数到1111时,两片74HC161重新置数Q7Q6Q5Q4Q3Q2Q1Q0=00111100。

因此,两片74HC161的状态范围是从00111100到11111111,共196个状态,完成一百九十六进制计数器的功能。
扩展资料:
三种逻辑器件
时序逻辑电路应用很广泛,根据所要求的逻辑功能不同进行划分,它的种类也比较繁多。在具体的授课环节中,主要选取了应用较广、具有典型时序逻辑电路特征的三种逻辑器件进行比较详细地介绍 [1] 。
1计数器
一般来说,计数器主要由触发器组成,用以统计输入计数脉冲CP的个数。计数器的输出通常为现态的函数。计数器累计输入脉冲的最大数目称为计数器的“模”,用M表示。如M=6计数器,又称六进制计数器。所以,计数器的“模”实际上为电路的有效状态数 。
同步七进制加法计数器的逻辑图计数器的种类很多,特点各异。主要分类如下:按计数进制可分为:二进制计数器、十进制计数器、任意进制计数器。
2寄存器
寄存器是存放数码、运算结果或指令的电路,移位寄存器不但可存放数码,而且在移位脉冲作用下,寄存器中的数码可根据需要向左或向右移位。寄存器和移位寄存器是数字系统和计算机中常用的基本逻辑部件,应用很广。
一个触发器可存储一位二进制代码, n个触发器可存储n位二进制代码。因此,触发器是寄存器和移位寄存器的重要组成部分。对寄存器中的触发器只要求它们具有置0或者置1功能即可,无论是用同步结构的触发器,还是用主从结构或者边沿触发的触发器,都可以组成寄存器 。
3顺序脉冲发生器
顺序脉冲是指在每个循环周期内,在时间上按一定先后顺序排列的脉冲信号。产生顺序脉冲信号的电路称为顺序脉冲发生器。在数字系统中,常用以控制某些设备按照事先规定的顺序进行运算或操作 。
参考资料:
-时序逻辑电路
汽车尾灯控制时序逻辑电路设计毕业论文
时序逻辑电路
数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。
时序逻辑电路是数字逻辑电路的重要组成部分,时序逻辑电路又称时序电路,主要由存储电路和组合逻辑电路两部分组成。它和我们熟悉的其他电路不同,其在任何一个时刻的输出状态由当时的输入信号和电路原来的状态共同决定,而它的状态主要是由存储电路来记忆和表示的。同时时序逻辑电路在结构以及功能上的特殊性,相较其他种类的数字逻辑电路而言,往往具有难度大、电路复杂并且应用范围广的特点。
在数字电路通常分为组合逻辑电路和时序逻辑电路两大类,组合逻辑电路的有关内容在前面的章节里已经作了介绍,组合逻辑电路的特点是输入的变化直接反映了输出的变化,其输出的状态仅取决于输入的当前的状态,与输入、输出的原始状态无关,而时序电路是一种输出不仅与当前的输入有关,而且与其输出状态的原始状态有关,其相当于在组合逻辑的输入端加上了一个反馈输入,在其电路中有一个存储电路,其可以将输出的状态保持住,我们可以用下图的框图来描述时序电路的构成。
从上面的图上可以看出,其输出是输入及输出前一个时刻的状态的函数,这时就无法用组合逻辑电路的函数表达式的方法来表示其输出函数表达式了,在这里引入了现态(Present state)和次态(Next State)的概念,当现态表示现在的状态(通常用Qn来表示),而次态表示输入发生变化后其输出的状态 (通常用Qn 1表示),那么输入变化后的输出状态表示为
Qn 1=f(X,Qn)
其中:X为输入变量。
组合逻辑电路的设计步骤
基于VHDL语言的汽车尾灯控制电路的设计
摘要:本课题主要是基于可编程逻辑器件,使用硬件描述语言VHDL,采用“自顶向下”的设计方法编写程序实现汽车尾灯的控制,并对控制器进行编程下载,它的体积小,功耗低,成本低,安全可靠,能实现控制器的在系统编程,其升级与改进极为方便。
关键词: VHDL 汽车尾灯控制 时钟信号
1 尾灯控制电路总框图,
根据电路总框图的描述,我们大概可以了解到整个汽车控制尾灯的工作原理,从中我们可以发现当左右转信号同时有效时,6盏灯的闪烁是通过一个与非门实现的。并且可以获知本次设计的汽车尾灯控制电路主要分为三个模块,即控制模块,左转LFTA模块和右转RITA模块。了解到这几点,就可以对本次设计作较为详尽的解释。
2.模块KONG。
模块KONG如图所示,此为整个程序的控制模块。程序如下:
Library ieee;
Use ieeestd_logic_1164all;
Entity kong is
Port(left,right:in std_logic;
Lft,rit,lr:out std_logic);
End kong;
Architecture kong_logic of kong is
Begin
Process(left,right)
Variable a:std_logic_vector(1 downto 0);
Begin
A:=left & right;
Case a is
When”00”=>lft<=’0’;
Rit<=’0’;
Lr <=’0’;
When”10”=>lft<=’1’;
Rit<=’0’;
Lr <=’0’;
When”01”=>rit<=’1’;
Lft<=’0’;
Lr <=’0’;
When other=>rit<=’1’;
lft<=’1’;
lr<=’1’;
end case;
end process;
end kong_arc;
控制模块首先使用了库说明语句:library ieee;
Use ieeestd_logic_1164all
使用ieee库中的std_logic_1164程序包的全部资源。此控制模块定义的实体名为kong。在程序中要求实体名与存储的文件名一致。实体名为kong,则存储的文件名为kongvhd。且此段程序包有5个端口,其名称分别为left Right Lft Rit Lr 。left 和right的端口方式是输入,lft, rit, lr 是输出,他们的端口类型都是std_logic的数据类型。实体说明部分结束以后,就是结构体的说明部分。结构体是整个VHDL语言中至关重要的一个组成部分,这个部分给出模块的具体说明,指定输入与输出之间的行为。结构体对实体的输入输出关系可以用三种关进行描述,即行为描述,寄存器传输描述和结构描述。只不过结构体的框架是完全一样的。本结构体中包含有一个进程语句,进程语句中又包含有两个敏感量process(left ,right),从begin开始到end process结束是一组顺序执行语句,ieee标准数据类型“std_logic_vector”定义了两位位矢量1downto 0,变量为a。程序往下把left和right的与赋值给a,下面便执行case语句了 ,case语句是无序的,所以所有条件表达式的值都是并行处理的。当条件表达式的值为”00”时则把lft ,rit ,lr,都变为0,所有信号都无效。当条件表达式为”10”时,左转信号lft有效,其它信号都无效,当条件表达式的值为”01”时右转信号rit有效,其余的无效。若条件表达式为其它的情况的话,那么就将rit ,lft ,lr 全部置1,即全部有效。最后结束case语句 end case 结束进程和结构体语句。
3 模块LFTA
源程序:
Library ieee;
Use ieeestd_logic_1164all;
Entity lfta is
Port(en,clk,lr:in std_logic;
L2,l1,l0:out std_logic);
End lfta;
Architecture lft_arc of lfta is
Begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0);
Begin
If lr=’1’ then
Tmp:=”111”;
Elsif en=’0’ then
Tmp:=”000”;
Elsif clk’event and clk=’1’ then
If tmp=”000” then
Tmp:=”001”;
Else
Tmp:=tmp(1 downto 0) & ‘0’;
End if ;
End if;
L2<=tmp(2);
L1<=tmp(1);
L0<=tmp(0);
End process;
End lft_arc;
模块LFTA同样使用了ieee库语句,定义的实体名为lfta,其共分为六个端口即en,clk,lr,l2,l1,l0,其中en,clk,lr为输入,l2,l1,l0的端口方式为输出,而它的端口类型同样也为std_logic数据类型。LFTA程序中结构体名为lft_arc,实体名为lfta 。结构体中包含有一个进程,共定义了三个敏感量clk,en,lr,设变量名tmp为2 downto 0 的三位位矢量。当左右开关同时接通时lr有效,即lr=1,此时tmp:=”111”右边的三盏灯全亮起来,当tr=1时但en=0则左边三盏灯全灭不亮。而如果这两种情况都不是的话,那么lr=’0’时当时钟上升沿脉冲到来时,如果tmp=”000”则左边第一盏灯亮,否则就将tmp(1 downto 0)和’0’的与赋值给tmp,那么依次左边的三盏灯就能实现从左到右按次序亮灭了。最后将tmp(2)送到l2,tmp(1)送到l1,tmp(0)送到lo,结束程序和结构体。这就是在实现左转弯的时候执行的程序的全过程。通过对左转的理解,右转弯就很容易了,其执行的过程和左转弯的时候非常相似的 。我们也可发现LFTA模块的功能是当左转时控制左边的三盏灯,当左右转信号都有效时,输出为全’1’。下面来看一下右转弯控制模块。
4模块RITA
源程序:
Library ieee;
Use ieeestd_logic_1164all;
Entity rita is
Port(en,clk,lr:in std_logic;
R2,r1,r0:out std_logic);
End rita;
Architecture rit_arc of rita is
Begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0);
Begin
If lr=’1’ then
Tmp:=”111”;
Elsif en=’0’ then
Tmp:=”000”;
Elsif clk’event and clk=’1’ then
If tmp=”000” then
Tmp:=”100”;
Else
Tmp:=’0’ & tmp(2 downto 1);
End if;
End if ;
R2<=tmp(2);
R1<=tmp(1);
R0<=tmp(0);
End process;
End rit_arc;
和左转弯时候的相同,右转弯时再次使用了ieee的库说明,这样我们可以很清楚的理解了右转弯的原理,此时库定义的实体名为rita,对于实体名前面已经讲过了不再重复了,同样的程序包中还是使用了6个端口en ,clk,lr,r2,r1,r0 en ,clk, lr的端口方式是输入,r2,r1,r0的端口方式是输出。结构体中和左转时相同引入一个进程同时和三个敏感量:clk,en,lr。变量tmp为2downto 0的三位位矢量。当左右开关同时接通时lr=’1’,那么此时变量tmp=’111’,即右面的三盏灯都有信号,三盏灯全亮。否则lr=’0’,当en=’0’时,tmp=’000’,即三盏灯全灭掉。Elsif clk’event and clk=‘1’即当时钟脉冲上升沿到来时,en=’1’,如果tmp=”000”,就把”100”送到tmp 此时右边的第一盏灯亮。否则就把’0’和tmp(2 downto 1)的与送到tmp,则依次为右边第一盏灯,第二盏,第三盏亮。然后结束if语句。这个之后就和左转的程序是一样的了,将tmp(2)中的数值送到r2,将tmp(1)中的数值送到r1,将tmp(0)中的数据送到r0,然后结束进程语句和整个结构体语句。那么到这里整个汽车尾灯的VHDL程序控制就结束了。
5结论:
本次设计用到了硬件描述语言VHDL实现了对汽车尾灯的控制,总结整个设计程序我们可以发现一些问题;
设计中的优点:基本实现了汽车在运行时候尾灯点亮方式的各种情况。
设计中的不足:由于在行车的时候都是用开关控制的,所以每一个开关应该有一个消除机械振动的装置,可以利用基本RS触发器来实现,所以在条件允许的情况下可以对整个设计进行进一步的改进。
6
参考资料:
王振红 《VHDL数字电路设计与应用实践教程》 机械工业出版社 2006年1月
彭容修 《数字电子技术基础》 武汉理工大学出版社 2005年9月
潘松 黄继业 《EDA技术与VHDL》 清华大学出版社 2006年11月
20091227
library ieee;
use ieeestd_logic_1164all;
entity ZHUKONG is
Port(left,right:in std_logic;
Lft,rit,lr:out std_logic);
end;
architecture kong_arc of ZHUKONG is
begin
Process(left,right)
Variable a:std_logic_vector(1 downto 0);
Begin
A:=left & right;
Case a is
When"00"=>lft<='0';
Rit<='0';
Lr <='0';
When"10"=>lft<='1';
Rit<='0';
Lr <='0';
When"01"=>rit<='1';
Lft<='0';
Lr <='0';
When others=>rit<='1';
lft<='1';
lr<='1';
end case;
end process;
end kong_arc;
library ieee;
use ieeestd_logic_1164all;
entity LFTA is
Port(en,clk,lr:in std_logic;
L2,l1,l0:out std_logic);
end;
architecture lft_arc of LFTA is
begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0);
Begin
If lr='1' then
Tmp:="111";
Elsif en='0' then
Tmp:="000";
Elsif clk'event and clk='1' then
If tmp="000" then
Tmp:="001";
Else
Tmp:=tmp(1 downto 0) & '0';
End if;
End if;
L2<=tmp(2);
L1<=tmp(1);
L0<=tmp(0);
End process;
end lft_arc;
library ieee;
use ieeestd_logic_1164all;
entity RITA is
Port(en,clk,lr:in std_logic;
R2,r1,r0:out std_logic);
end;
architecture rit_arc of RITA is
begin
Process(clk,en,lr)
Variable tmp:std_logic_vector(2 downto 0);
Begin
If lr='1' then
Tmp:="111";
Elsif en='0' then
Tmp:="000";
Elsif clk'event and clk='1' then
If tmp="000" then
Tmp:="100";
Else
Tmp:='0' & tmp(2 downto 1);
End if;
End if ;
R2<=tmp(2);
R1<=tmp(1);
R0<=tmp(0);
End process;
end rit_arc;
组合逻辑电路的设计方法
组合逻辑电路的设计步骤一般包括以下几个方面:
1 确定逻辑功能:根据实际需求,确定电路需要实现的逻辑功能,例如加法、减法、比较、选择等。
2 确定输入输出:确定电路的输入输出端口,以及输入输出的数据类型和格式。
3 设计逻辑表达式:根据逻辑功能,设计电路的逻辑表达式,例如布尔代数式、卡诺图等。
4 确定门电路类型:根据逻辑表达式,确定门电路类型,例如与门、或门、非门等。
5 组合电路:根据逻辑表达式和门电路类型,组合电路,实现逻辑功能。
6 确定时序逻辑:如果需要实现时序逻辑,例如状态机、计数器等,需要设计时序逻辑电路。
7 仿真测试:使用仿真工具对电路进行仿真测试,验证电路的逻辑功能和性能是否符合设计要求。
8 PCB 设计:根据电路的实际应用场景和尺寸要求,进行 PCB 设计和布线,制作 PCB 板。
9 调试测试:对制作好的电路进行调试测试,检查电路的性能和稳定性是否符合设计要求。
10 优化改进:根据测试结果和实际应用反馈,对电路进行优化改进,提高电路的性能和可靠性。
总之,组合逻辑电路的设计步骤需要根据实际需求和电路的复杂程度进行选择,通过逻辑表达式、门电路类型、组合电路、时序逻辑、仿真测试、PCB 设计、调试测试以及优化改进等步骤,最终实现电路的设计和制作。
时序电路包括两种类型
组合逻辑电路的设计:是根据给定的实际逻辑问题,求出实现其逻辑功能的最简单的逻辑电路。
一、组合逻辑电路的设计方法
组合逻辑电路的设计可以按以下步骤进行:
1、分析设计要求,设置输入和输出变量
2、列真值表
3、写出逻辑表达式,并化简
4、画逻辑电路图
二、组合逻辑电路的设计方法的例示:有一火灾报警系统,设有烟感、温感和紫外光感3种类型的火灾探测器。为了防止误报警,只有当其中2种或2种以上类型的探测器发出火灾探测信号时,报警系统才产生报警控制信号。试设计一个产生报警控制信号的电路。
解:令A,B,C分别代表烟感,温感和紫外光感三种火灾探测器发出的控制信号,用1表示发生火灾,用0表示无火灾;令Y代表报警控制信号,用1表示发出火灾报警控制信号,用0表示不发出火灾报警控制信号。
根据以上分析可以列出如表所示的真值表。
由表可以写出逻辑表达式为:
如果作以下变换:Y=AB+AC+BC,则可利用一个与或非门加一个非门实现,其逻辑电路图如图所示:
三、组合逻辑电路的分析:根据给定的逻辑电路图,求出电路的逻辑功能。
组合逻辑电路分析的主要步骤如下:
(1) 用逻辑图写表达式:可以从输入到输出逐级推导,写出电路输出端的逻辑表达式。
(2) 化简表达式:在需要时,用分式化简法或者卡诺图化简法将逻辑表达式化为最简式。
(3) 列真值表:将输入信号所有可能的取值组合代入化简后的逻辑表达式中进行计算,列出真值表。
(4) 描述逻辑功能:根据逻辑表达式和真值表,对电路进行分析,最后确定电路的功能。
数字逻辑同步时序逻辑电路的设计问题!书本上未有谈及,又很想弄个清楚,望哪位大虾指点!
时序逻辑电路 简称时序电路
时序电路,它是由最基本的 逻辑门 电路加上反馈逻辑回路(输出到输入)或器件组合而成的电路,与 组合电路 最本质的区别在于时序电路具有记忆功能。时序电路的特点是:输出不仅取决于当时的输入值,而且还与电路过去的状态有关。它类似于含储能元件的电感或电容的电路,如 触发器 、 锁存器 、 计数器 、 移位寄存器 、 储存器 等电路都是时序电路的典型器件。
时序逻辑电路的状态是由存储电路来记忆和表示的。
编辑本段 导读 虽然组合逻辑电路能够很好地处理像加、减等这样的操作,但是要单独使用组合逻辑电路,使操作按照一定的顺序执行,需要串联起许多组合逻辑电路,而要通过硬件实现这种电路带价是很大的,并且灵活性也很差。为了实现一种有效而且灵活的操作序列,我们需要构造一种能够存储各种操作之间的信息的电路,我们称这种电路为时序电路。
编辑本段 时序电路的定义 虽然每个数字电路系统可能包含有组合电路,但是在实际应用中绝大多数的系统还包括存储元件,我们将这样的系统描述为时序电路。
时序电路的框图如图711所示。组合电路和存储元件互联后组成了时序电路。存储元件是能够存储二进制信息的电路。存储元件在某一时刻存储的二进制信息定义为该时刻存储元件的状态。时序电路通过其输入端从周围接受二进制信息。时序电路的输入以及存储元件的当前状态共同决定了时序电路输出的二进制数据,同时它们也确定了存储元件的下一个状态。从框图中我们可以看出,时序电路的输出不仅仅是输入的函数,而且也是存储元件的当前状态的函数。存储元件的下一个状态也是输入以及当前状态的函数。因此,时序电路可以由输入、内部状态和输出构成的时间序列完全确定。
逻辑设计领域主要有两种类型的时序电路,它们分类的标准取决于我们观察到的输入信息的时机和内部状态改变的时机。同步时序电路( synchronous sequential circuit )的行为可以根据其在离散的时间点上的信号信息来定义。而异步时序电路( asynchronous sequential circuit )的行为则取决于任意时刻的输入信号以及输入信号在连续的时间内变化的顺序。
编辑本段 时序电路的分析 时序电路的行为是由输入、输出和电路当前状态决定的。输出和下一状态是输入和当前状态的函数。通过对时序电路进行分析,可以得到关于输入、输出和状态三者的时序的一个合理描
组合电路与时序逻辑电路有什么区别?
等效状态应满足以下几个条件,以S和T两个状态等效为例
1S和T发源在状态机输出端上产生相同的输出值;对于Mealy机,这一条必须对所有输入组合都为真。
2对于第一种输入组合,S和T必须具有相同的下一状态或者等效的下一状态
我没怎么看懂你说的,你根据我说的两点自己判断一下就知道了。
一、性质不同
1、组合逻辑电路性质:在任何时刻,输出状态只决定于同一时刻各输入状态的组合,而与电路以前状态无关,而与其他时间的状态无关。
2、时序逻辑电路性质:数字逻辑电路的重要组成部分。
二、特点不同
1、组合逻辑电路特点:任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。
2、时序逻辑电路特点:任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。
三、原理不同

1、组合逻辑电路原理:在实际的设计工作中,如果某些门电路由于某些原因不能得到,可以通过改变逻辑表达式来改变电路,从而可以用其他器件代替器件。同时,为了使逻辑电路的设计更加简洁,有必要通过各种方法对逻辑表达式进行简化。
2、时序逻辑电路原理:其状态主要由存储器电路来存储和表示。输出不仅与当前输入有关,而且与输出状态的原始状态有关。它相当于在组合逻辑的输入上加上一个反馈输入。电路中有一个存储电路,可以保持输出的状态。
-组合逻辑电路
-时序逻辑电路


