常见时序逻辑电路

article/2025/11/11 12:34:09

目录

  • 触发器
    • D触发器
      • 最简D触发器
      • 带复位端的D触发器
    • T触发器
  • 计数器
    • 二进制计数器
    • 任意进制计数器
  • 移位寄存器
  • 序列信号发生器
  • 有限同步状态机
    • 顺序脉冲发生器
    • “11010”序列检测器

与组合逻辑电路不同,时序逻辑电路的输出不仅与当前时刻输入变量的取值有关,而且与电路的原状态(即过去的输入情况有关)。
时序逻辑电路的结构框图如下:
在这里插入图片描述

  • 与组合电路相比,时序逻辑电路有两个优点:
  1. 时序逻辑电路包括组合逻辑电路和存储电路两部分,存储电路具有记忆功能,通常由触发器组成。
  2. 存储电路的状态反馈到组合逻辑电路输入端,与外部输入信号共同决定组合逻辑电路的输出。组合逻辑电路的输出除包括外部输出外,还包含连接到存储电路的内部输出,它将控制存储电路状态的转移。
  • 时序逻辑电路按状态变化的特点,可分为同步时序逻辑电路和异步时序逻辑电路。在同步时序逻辑电路中,电路状态的变化在同一时钟脉冲作用下发生,即各触发器状态的转换同步完成。在异步时序逻辑电路中,没有统一的时钟脉冲信号,即各触发器状态的转换是异步完成的。
  • 对时序逻辑电路功能的描述方式主要有三种:逻辑方程,状态转移表和状态转移图,时序图。
  • 对时序逻辑电路的设计进行描述也有不同的方式,主要有三种:状态转移图描述,基于状态化简的结构性描述,VerilogHDL抽象描述。

触发器

触发器是时序逻辑电路的最基本电路单元,主要有D触发器、JK触发器、T触发器和RS触发器等。根据功能要求的不同,触发器还具有置位、复位、使能、选择等功能。

D触发器

最简D触发器

D触发器的逻辑符号如下所示:
在这里插入图片描述
图中D为信号输入端,clk为时钟控制端,Q为信号输出端。这种触发器的逻辑功能是:不论触发器原来的状态如何,输入端的数据D(无论D=0,还是D=1)都将在时钟clk的上升沿被送入触发器,使得Q=D。其真值表如下所示:
在这里插入图片描述
代码如下:

module DFF (q, clk, data_in);output q;input clk, data_in;reg q;always @(posedge clk)   q <= data_in;
endmodule

带复位端的D触发器

在D触发器的实际使用中,有时需要一个复位端(也称清零端)。带有复位端的D触发器的逻辑符号如下所示:
在这里插入图片描述
电路上电时,电路的逻辑处于不定状态,复位脉冲的到来将电路初始化为Q=0的状态。随后,在时钟的控制下,输入端D的数据在每个时钟上升沿被置到输出端Q。同步清0的D触发器的代码如下:

module DFF_rst (q, clk, reset, data_in);output q;input clk, reset, data_in;reg q;always @(posedge clk) if (!reset)  q <= 0;else         q <= data_in;
endmodule

异步清0的D触发器的代码如下:

module DFF_srst (q, clk, reset, data_in);output q;input clk, reset, data_in;reg q;always @(posedge clk or negedge reset)//只要接收到复位信号,立马复位if(!reset)  q <= 0;else        q <= data_in;
endmodule

可以看到,同步清0和异步清0的电路代码只是在always后的敏感向量表上有所不同。对于同步清0,并不是清0信号一变化电路马上就会被置0,清0信号有效后需等待时钟的有效边沿到来后电路才会有动作,因此不应该把清0信号写入敏感向量表中。而异步清0时,只要清0信号有效,电路就会马上更新,输出置0,因此对于异步电路,清0信号有必要写入敏感向量表中。

T触发器

T触发器的逻辑符号如下所示:
在这里插入图片描述
其逻辑功能为:当时钟的有效边沿到来时,如果T=1,则触发器翻转;如果T=0,则触发器的状态保持不变。reset为复位端,异步复位,低电平有效。代码如下:

module TFF (data_out, T, clk, reset);output data_out;input T, clk, reset;reg data_out;always @(posedge clk or negedge reset)if (!reset)     data_out <= 1'b0;elseif(T)       data_out <= ~data_out;  
endmodule

计数器

计数器是应用最广泛的逻辑部件之一。计数器可以统计输入脉冲的个数,具有计时、计数、分频、定时、产生节拍脉冲等功能、
根据计数器中触发器时钟端的链接方式,分为同步计数器和异步计数器;根据计数方式分为二进制计数器、十进制计数器和任意进制计数器;根据计数器中的状态变化规律,分为加法计数器、减法计数器和加/减计数器。

二进制计数器

采用D触发器实现的二进制计数器的逻辑电路图如下:
在这里插入图片描述
代码如下:

module comp2bit (Q, clk, reset);output  q;input clk, reset;reg Q;always @(posedge clk or negedge reset)if (!reset)Q <= 1'b0;else   Q <= ~Q;
endmodule

任意进制计数器

对于M进制的计数器,首先应确定计数器所需触发器的个数。N个触发器对应了2的N次方个状态,其应大于M。
以十一进制计数器为例,最少需要4个触发器。采用反馈清零法设计的十一进制计数器的代码如下:

module comp_11 (count, clk, reset);output [3:0]count;input clk, reset;reg [3:0]count;always @(posedge clk)if(reset)   count <= 4'b0000;//复位elseif (count == 4'b1010)//一个技术循环结束count <= 4'b0000;elsecount <= count + 1;
endmodule

移位寄存器

移位寄存器 可以用来实现数据的串并转换,也可以构成移位计数器,进行计数、分频,还可以构成序列码发生器、序列码检测器等。
以环形移位寄存器为例,N位环形寄存器由N个移位寄存器组成,它可以实现环形移位,如下图所示:
在这里插入图片描述
其将每个寄存器的输出作为下一位寄存器的输入,并将高位寄存器的输出作为循环的输入,代码如下:

module shiftregist1 (D, clk, reset);parameter shiftregist_width = 4;output [shiftregist_width-1:0]D;//[3:0]Dinput clk, reset;reg[shiftregist_width-1:0]D;always @(posedge clk)if (!reset)D <= 4'b0000;elseD <= {D[shiftregist_width-2:0], D[shiftregist_width-1]};//D[2:0], D[3]
endmodule

序列信号发生器

序列信号发生器是能够产生一组或多组序列信号的时序电路,它可以由纯时序电路构成,也可以由包含时序逻辑和组合逻辑的混合电路构成。
以一个产生100111序列的信号发生器为例,可以采用不同的方法:

  1. 由移位寄存器构成
    采用循环移位寄存器,在电路工作前,将所需的序列码置入移位寄存器中,然后循环移位,就可以不断地产生需要的序列。由于移位寄存器输入和输出信号之间没有组合电路,不需要进行组合逻辑的反馈运算,因此所占用的电路的面积很大,结构框图如下:
    在这里插入图片描述
    代码如下:
module signal_maker (out, clk, load, D);parameter M = 6;output out;input clk, load;input [M-1:0]D;  reg [M-1:0]Q;initial     Q = 6'b100111;always @(posedge clk)if(load)    Q <= D;else        Q <= [Q[M-2:0], Q[M-1]];//移位  Q[4:0]+Q[5]assign out = Q[M-1]
endmodule
  1. 由移位寄存器和组合逻辑电路构成
    反馈移位寄存器型序列信号发生器的结构框图如下所示:
    在这里插入图片描述
    它由移位寄存器和组合反馈网络组成,从移位寄存器的某一输出端可以得到周期性的序列码。
    代码如下:
module signal_maker2 (out, clk, load, D);parameter M = 4;output out;input clk, load;input [M-1:0]D;reg [M-1:0]Q;wire w1;always @(posedge clk)//时序电路部分,移位寄存器if(load)        Q <= D;else            Q <= {Q[M-2:0], w1};assign w1 = (~Q[3])|(~Q[1]&(~Q[0]))|(Q[3]&(~Q[2]));//组合逻辑电路,反馈网络assign out = Q[M-1];
endmodule

有限同步状态机

有限状态机是时序电路的通用模型,任何时序电路都可以表示为有限状态机。

  • 根据输出信号的产生方式,有限状态机可以分为米利型(Mealy)和摩尔型(Moore)。Mealy型状态机的输出与当前状态和输入有关,Moore型状态机的输出仅依赖于当前状态,而与输入无关。结构如下所示:
    在这里插入图片描述
  • 状态机的编码方式很多,由此产生的电路也各不相同。常见的编码方式有三种:二进制编码、格雷编码和一位独热编码。
  1. 二进制编码:其状态寄存器是由触发器组成的。N个触发器可以构成2的N次方个状态。二进制编码的优点是使用的触发器个数较少,节省了资源;缺点是状态跳转时可能有多个bit(位)同时变化,引起毛刺,造成逻辑错误。
  2. 格雷编码:与二进制编码类似。格雷编码状态跳转时只有一个bit(位)发生变化,减少了产生毛刺和一些暂态的可能。
  3. 一位独热(One Hot)编码:这是对于n个状态采用n个bit(位)来编码,每个状态编码中只有一个bit(位)为1,如0001、0010、0100、1000。One Hot编码增加了使用触发器的个数,但该种编码方式为以后的译码提供了方便,能有效地节省和简化组合电路。
  • 有限状态机的描述方法有两段式和三段式两种。
    1.两段式描述方法:
//第一个进程,同步时序always块,格式化描述次态寄存器迁移到现态寄存器
always@(posedge clk or negedge rst_n)//异步复位if(!rst_n)	current_state <= IDLE;else		current_state <= next_state;//非阻塞赋值
//第二个进程,组合逻辑always模块,描述状态转移条件判断
always@(current_state or 输入信号)//电平触发beginnext_state = x;//初始化,使得系统复位后能进入正确的状态case(current_state)S1:if(...)next_state = S2;//阻塞赋值out <= 1'b1;//非阻塞逻辑...endcaseend

2.三段式描述方法:

//第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器
always@(posedge clk or negedge rst_n)//异步复位if(!rst_n)	current_state <= IDLE;else		current_state <= next_state;//非阻塞赋值
//第二个进程,组合逻辑always模块,描述状态转移条件判断
always@(current_state or 输入信号)//电平触发beginnext_state = x;//初始化,使得系统复位后能进入正确的状态case(current_state)S1:if(...)next_state = S2;...endcaseend
//第三个进程,同步时序always模块,格式化描述次态寄存器输出
always@(posedge clk or negedge rst_n)begin...//case(next_state or 输入信号)S1: out1 <= 1'b1;S2: out1 <= 1'b0;default:...   //default免除综合工具综合出锁存器endcaseend		

三段式并不是一定要写三个always块,如果状态机更为复杂,always块也会相应增加。

接下来以两个时序电路来说明有限同步状态机的应用。

顺序脉冲发生器

顺序脉冲发生器又称脉冲分配器,其将高电平脉冲依次分配到不同的输出上,保证在每个时钟周期内只有一路输出高电平,不同时钟上的高电平脉冲依次出现在所有输出端。
以4位顺序脉冲发生器为例,其有4路输出S0、S1、S2、S3,每路输出上高电平脉冲依次出现,输出在1000、0100、0010、0001之间循环。4位顺序脉冲发生器的状态转移图如下所示:
在这里插入图片描述
代码如下:

module state4 (OUT, clk, rst_n);output [3:0]OUT;input clk;input rst_n;reg [3:0]OUT;reg [1:0]STATE, next_STATE;always @(STATE)case(STATE)2'b00;beginOUT <= 4'b1000;next_STATE <= 2'b01;end2'b01;beginOUT <= 4'b0100;next_STATE <= 2'b10;end2'b10:beginOUT <= 4'b0010;next_STATE <= 2'b11;end2'b11;beginOUT <= 4'b0001;next_STATE <= 2'b00;endendcasealways @(posedge clk or negedge rst_n)if (!rst_n)     STATE <= 2'b00;else            STATE <= next_STATE;
endmodule

“11010”序列检测器

序列检测器就是将一个指定的序列从数字码流中检测出来。当输入端出现序列11010时,输出为1,否则输出为0。在此不考虑重复序列,即出现指定序列后就重新开始序列检测,不再考虑以前的数据。该序列检测器的状态转移图如下所示:
在这里插入图片描述
代码如下:

module seqdet (D_out, D_in, rst_n, clk);parameter IDLE = 3'd0, A = 3'd1, B = 3'd2, C = 3'd3, D = 3'd4, E = 3'd5;output D_out;input D_in, rst_n, clk;reg [2:0]state, next_state;wire D_out;assign D_out = (state == E)?1:0;always @(state or D_in)case(state)IDLE:if(D_in)   next_state = A;else       next_state = IDLE;A:  if(D_in)    next_state = B;else        next_state = IDLE;B:  if(D_in)    next_state = B;else        next_state = C;C:  if(D_in)    next_state = D;else        next_state = IDLE;D:  if(D_in)    next_state = B;else        next_state = E;E:  if(D_in)    next_state = IDLE;else        next_state = A;default:    next_state = IDLE;endcasealways @(posedge clk)state <= next_state;
endmodule

http://chatgpt.dhexx.cn/article/QGYJRWj4.shtml

相关文章

基本时序逻辑电路

一、基本RS锁存器 1.简介 RS锁存器为最基本的时序逻辑电路&#xff0c;其特点是电路中各点的电位值不仅与当前时刻有关&#xff0c;还与电路前一时刻状态有关。 上图所示电路为基本RS锁存器&#xff0c;其重要的结构特点为反馈线&#xff0c;该线使得时序逻辑电路与普通组合…

VHDL语言基础-时序逻辑电路-概述

目录 时序逻辑电路-概述: 时序逻辑电路: 时序逻辑电路——有记忆功能: 时序电路的分类: 按照触发器的动作特点: 按照输出信号的特点: 同步时序逻辑电路: 异步时序逻辑电路: 时序逻辑电路-概述: 数字电路按其完成逻辑功能的不同特点&#xff0c;划分为组合逻辑电路和时序…

数电6、时序逻辑电路

6.1 概述一、时序逻辑电路的特点 功能上&#xff1a;任一时刻的输出不仅取决于该时刻的输入&#xff0c;还与电路原来的状态有关。 例&#xff1a;串行加法器&#xff0c;两个多位数从低位到高位逐位相加 . 电路结构上 ①包含存储电路和组合电路 ②存储器状态和输入变量共同决定…

「数字电子技术基础」7.时序逻辑电路

目录 绪论一般结构分类 时序电路的分析方法同步时序电路的分析步骤异步时序电路的分析步骤 计数器集成同步加法计数器计数器的级联同步并行进位异步串行进位 利用集成加法计数器构造任意进制的计数器由大容量计数器构造小容量计数器清零法置数法 由小容量计数器构造大容量计数器…

一文搞懂时序逻辑电路

时序逻辑电路 1.1 介绍1.2 特点1.3 锁存器1.3.1 特点1.3.2 常用锁存器1.3.2.1 SR锁存器1.3.2.1.1 或非实现1.3.2.1.1.1 状态方程1.3.2.1.1.2 状态转换图1.3.2.1.1.3 真值表 1.3.2.1.2 与非实现1.3.2.1.2.1 状态方程1.3.2.1.2.2 状态转换图1.3.2.1.2.3 真值表 1.3.2.2 SR锁存器与…

聊聊网站被运营商劫持

本人站长一枚&#xff0c;在教育行业摸爬滚打已经近5年的时间了&#xff0c;近期遇到一件炒鸡恶心的事情&#xff0c;今天就来和大家聊聊网站被运营商劫持&#xff0c;希望给经历过或正在经历的朋友一些指引和帮助。 大概在2个月以前&#xff0c;一次偶然的发现&#xff0c;在用…

运营商流量劫持攻击之链路劫持剖析

运营商流量劫持攻击之链路劫持剖析 0x00 前言 链路劫持属于流量劫持攻击的一种&#xff0c;在电商领域较为常见&#xff0c;网络上也有不少案例。本文作者将会结合公司实际发生的案例来简要剖析链路劫持有关技术。由于作者水平有限&#xff0c;见解浅显在所难免&#xff0c;望大…

当部分地区电信运营商劫持页面,如何识别及解决

【网络安全篇】关于近期个别用户反馈部分地区电信运营商劫持页面,如何识别及解决。 01 DNS是什么 DNS全称是域名系统,它所起到的作用,在于把域名解析为IP地址。我们能访问到某个网站,靠的是连接到该网站服务器的IP地址,DNS在这里面起到的作用就是把“www.baidu.com”解析成…

手机版百度m.baidu.com被运营商劫持到xjcf168.com

近期通过辽宁联通访问手机版百度m.baidu.com发现&#xff0c;手机会在手机百度和http://xjcf168.com/mbaidu/?from1012382a来回跳转&#xff0c;最终过了一分钟之后才跳转到百度首页 使用电脑访问手机版百度时&#xff0c;跳到xjcf168.com之后无法跳回&#xff0c;显示为空白…

你可能不知道你已经被运营商劫持了

大家想必一定遇到过这种小助&#xff08;guang )手( gao )&#xff1a; 这个是移动&#xff0c;当然联通和电信也绝对不会放过你&#xff0c;而且网页中间也能加 还有PC端 其实&#xff0c;你看到的这些广告都是中途被别人暗地里加的&#xff0c;这个别人就是中国特色的合法的黑…

防运营商劫持代码

一、什么是运营商劫 什么是运营商&#xff1a; 运营商是指那些提供宽带服务的ISP&#xff0c;包括三大运营商中国电信、中国移动、中国联通&#xff0c;还有一些小运营商&#xff0c;比如长城宽带、歌华有线宽带。运营商提供最最基础的网络服务&#xff0c;掌握着通往用户物理大…

运营商劫持是什么意思,如何解决运营商劫持的问题?

网站被劫持跳转到网站无碍乎有四种原因导致的,其中一种就是运营商劫持。运营商不是为我们提供网络服务的吗,为什么会劫持?运营商劫持是怎么回事?如何才能解决运营商劫持的问题?运营商是指那些提供宽带服务的ISP,包括三大运营商中国电信、中国移动、中国联通,还有一些小运…

运营商劫持狠起来,连json都改

原创&#xff1a;小姐姐味道&#xff08;微信公众号ID&#xff1a;xjjdog&#xff09;&#xff0c;欢迎分享&#xff0c;转载请保留出处。感谢neko的供稿 运营商劫持&#xff0c;是常见的流氓手段&#xff0c;它们老少通吃&#xff0c;连孩子都不放过&#xff0c;经常嚣张的在右…

电信等运营商劫持的解决方法

老是弹出广告,其实这个是由于当地电信或者网通等运营商劫持DNS,然后进行投放他们的广告。 弹出广告一般的现象是先弹出一个114或者vnet.cn的网站,类似114.vnet.cn等等,然后进行跳转到广告页面,可以在打开页面的时候仔细观察一下浏览器的左下角部分。 IIS7网站监控可以及时…

劫持网络--运营商投放广告

居住在大深圳的关外几年&#xff0c;换了几家宽带运营商&#xff0c;对于运营商的DNS拦截投放广告已经无力吐槽了&#xff0c;在度娘上搜索任意东西他们时刻会提醒我&#xff0c;尤其是是惯了下淘宝或京东。作为一个小小的程序员&#xff0c;实在忍不住想看下究竟&#xff0c;也…

运营商进行网络劫持的前生今世+劫持的危害

原文地址&#xff1a;https://www.v2ex.com/amp/t/255600 运营商进行网络劫持的前生今世劫持的危害 2016-02-06 00:00:52 08:00 raysonx 西元 2016 年 2 月 5 日晚 &#xff08;注&#xff1a;本人只是一名技术人员&#xff0c;凭专业知识和经验写成本文&#xff0c;并非运营…

什么是网络流量劫持?

流量劫持 什么是流量劫持呢&#xff1f;网络劫持的具体表现&#xff1a;流量劫持常见的有两种&#xff1a;1、DNS劫持2、数据劫持&#xff08;或者可以说是HTTP劫持&#xff09; 网络劫持都有哪些类型&#xff1f;1.流量劫持2.权重劫持3.广告劫持4.后退劫持5.其他劫持(浏览器、…

你可能已经被运营商http劫持了

IIS7.COM网站劫持检测 1、检测网站是否被劫持2、域名是否被墙3、DNS污染检测4、网站打开速度检测5、网站是否被黑、被入侵、被改标题、被挂黑链 【深度检测】1、可以检测多层js劫持、图片劫持、FLASH劫持、地区电信劫持、DNS劫持、域名被墙、DNS污染2、可以获取严重占用加载时间…

运营商劫持(DNS/HTTP302)

本人以网络技术出身&#xff0c;近两年接触CDN网络&#xff0c;处理了一些CDN方面的网络问题&#xff0c;大多数以运营商丢包&#xff0c;延迟抖动为主&#xff0c;也处理一些硬件故障&#xff0c;比如机械硬盘的读写io测试&#xff0c;内存条兼容性测试&#xff0c;服务器IPMI…

运营商劫持是什么、运营商DNS网络劫持如何解决

在网络安全中DDoS攻击和运营商劫持攻击出现的频率非常高,此外,还有之前的暴力破解和针对Web层的攻击,所以系统安全是一项非常重要的环节和技术手段。 运营商劫持分为DNS劫持与HTTP劫持两种。简单介绍一下DNS劫持与HTTP劫持的概念,即运营商通过某些方式篡改了用户正常访问的…