概述
目录
- 时序逻辑电路
- 同步时序逻辑电路
- 异步时序逻辑电路
- 常用时序电路
- 1、移位寄存器
- 2、计数器
- 3、顺序脉冲发生器
- 4、序列信号发生器
- 自启动
时序逻辑电路
在组合逻辑电路中,输出仅仅与输入有关;而在时序逻辑电路中,输出不仅与输入有关,还与之前的状态有关。
其实,时序逻辑电路还有一个名字,那就是状态机(State Machine ,SM)或者有限状态机(Finite State Machine,FSM)。
状态机Verilog设计实例
时序逻辑电路由两个部分组成,组合电路和存储电路,其中存储电路是必不可少的,并且存储电路的输出必须反馈到组合电路的输入端,与输入信号一起决定组合逻辑的输出。
而根据时序逻辑电路的输出信号的特点,又将其分为Mealy型和Moore型
Mealy型:输出不仅与存储电路的状态有关,还与输入有关;
Moore型:仅与存储电路的状态有关。
在时序电路的设计中,同步时序逻辑电路是使用最多的。
同步时序逻辑电路
同步时序逻辑电路就是时序逻辑电路中所有的触发器都工作在同一时钟下。
分析同步时序逻辑电路的步骤如下:
1、从给定的逻辑图中写出每个触发器的驱动方程(即每个触发输入端的方程,常用另外触发器的输出和最终输出表示);
2、将驱动方程带入每个触发器的特性方程;
3、根据逻辑图写出电路的输出方程。
以下图为例
而为了能够直观地看出状态的变换,常常使用以下四种方式来观察:
1、状态转换表
2、状态转换图
3、状态机流程图(SM图)
4、时序图(要注意触发器是电平触发还是边沿触发)
例图就是高电平触发
异步时序逻辑电路
异步时序电路就是触发器的触发时钟不一致
异步时序电路的分析相对来说要稍难,步骤还是差不多,只是具体方法不一样
1、写出驱动方程;
2、将驱动方程带入特性方程(注意,这个时候的输出跟触发器的输入时钟有关了,用时序图分析最为直观)
3、写出输出方程
画时序图步骤:
1、先画出初始Q0、Q1、Q2、Q3;
2、画出clk0,在通过clk0的触发画出Q0的输出;
3、画出clk1,再通过clk1的触发画出Q1;
4、画出clk2,通过clk2的触发画出Q2;
5、画出clk3,通过clk3的触发画出Q3;
6、最后直接画出组合输出Y。
常用时序电路
1、移位寄存器
分析一下具体实现,假设CLK同时到达所有寄存器(D1依次输入1101),假设Q默认为0000
1、第一个CLK上升沿到来,Q0 = D1 = 1,这时Q1、Q2、Q3还为默认值;
2、第二个CLK上升沿到来,Q0 = D1 = 1,这时Q1 = Q0 = 1;Q2、Q3还为默认值;
3、第三个CLK上升沿到来,Q0 = D1 = 0,这时Q1 = Q0 = 1;Q2 = Q1 = 1,Q3还为默认值;
4、第四个CLK上升沿到来,Q0 = D1 = 1,这时Q1 = Q0 = 0;Q2 = Q1 = 1,Q3 = Q2 = 1。
最终并行Q输出序列为1101 ,与串行D1输入一致
可以看到最先输入的D1,是先到高位Q3
2、计数器
N进制计数器就是一种在每个时钟上升沿加1,并且又在等于N-1的时候清零。即在这个时钟沿检测到计数为N-1,就将计数清零。
计数器分为同步计数器和异步计数器,其中,同步计数器使用最为广泛。
同步计数器
同步二进制计数器
二进制计数器全名为N位二进制计数器。假设4位二进制计数器,那么计数到1111就会清零,并且输出计数标志。
Q初始为0000,由状态方程可以知道:
1、当第一个上升沿到来,Q0 = 1,Q1 = 0,Q2 = 0,Q3= 0;
2、当第二个上升沿到来,将第1步的Q带入,Q0 = 0,Q1 = 1,Q2 = 0,Q3= 0;
…
15、当第15个上升沿到来,将第14步的Q带入,Q0 = 1,Q1 = 1,Q2 = 1,Q3= 1;
16、当第16个上升沿到来,将第15步的Q带入,Q0 = 0,Q1 = 0,Q2 = 0,Q3= 0;
时序图如下,因为是同步,所以Q均在时钟边沿发生改变
同步十进制计数器
同步十进制计数器就是计数到9(1001)的时候就清零,1010到1111的状态全部跳过。
同步任意进制计数器
其他进制计数器原理和同步十进制计数器类似
异步计数器
异步计数器原理和同步计数器原理一样,只是状态转换的时间不同,不同的Q在不同的时钟边沿输出。
下面以异步二进制计数器为例
移位计数器
环形计数器
假设是4位环形移位计数器,那么其状态转换为0001—0010—0100—1000—0001;
D0 = Q(n-1)
扭环形计数器(约翰逊计数器)
D0 = Q(n-1)’
4位扭环形计数器状态转换如下:0000—1000—1100—1110—1111—0111—0011—0001—0000
3、顺序脉冲发生器
有时候系统需要按照事先规定的顺序进行一系列操作。顺序脉冲发生器是生成一组有先后顺序的脉冲信号。
如下:可以看到Q0脉冲最先,其次是Q1、Q2、Q3;然后又是Q0。
如果在Q的触发下进行操作,就可以实现顺序执行。
4、序列信号发生器
有时候一个系统需要在指定的时间间隔下执行一定操作,这时候设计一个序列脉冲发生器就很必要了。
假设一个系统要每1s内的,要产生一个序列组1011000101,这样,在1的时候执行操作。我们一般都是基于时钟来进行操作,而在这种情况下,因为时间间隔不等,没有规律,如果在时钟的触发下操作会显得麻烦。
自启动
自启动的意思就是,当芯片上电能马上进行计数等操作,而不会等待自己使能才开始执行计数等操作。
假设设计一个10进制计数器,上电的时候不知道是在哪个状态,可能是0000,也可能是1111。
但因为是10进制计数器在0000—1001之间进行状态转换,在这之中可以有序地转换。而当上电时处于1010—1111的时候,不知道该往哪个状态转换,会卡死。
所以如果要设计自启动,就需要将1010—1111的下一个状态设计为0000—1001中的一个,一般设计为初始状态0000.
最后
以上就是苹果皮皮虾为你收集整理的数字电子技术基础(十三):时序逻辑电路(状态机)(移位寄存器、计数器、信号发生器)的全部内容,希望文章能够帮你解决数字电子技术基础(十三):时序逻辑电路(状态机)(移位寄存器、计数器、信号发生器)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复