从0学习数字电路(6)

这篇具有很好参考价值的文章主要介绍了从0学习数字电路(6)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在这一章,我们重点学习下时序电路。时序电路在功能上,任意时刻的输出不仅取决于该时刻的输入,还与电路原来的状态有关;在结构上,时序逻辑电路包含储存电路,时序电路的基本单元是触发器;组合逻辑电路是以门电路为基本单元的。

其次我们要知道,时序逻辑电路的基本方程组有3个,分别是输出方程,驱动方程以及状态方程;

输出方程是输出变量和输入变量和状态变量之间的关系;驱动方程是每个触发器的输入信号和外部的输入信号以及状态之间的关系;状态方程是次态和初态以及输入之间的关系。

我们要知道,输出方程和驱动方程就是普通的组合逻辑函数式,没有设计初态和次态的关系。

从0学习数字电路(6),学习,fpga开发

时序逻辑电路的分类

时序逻辑电路可以分成同步时序逻辑电路和异步时序逻辑电路:同步时序逻辑电路指的是所有触发器收到一个时钟信号控制;异步时序电路指的式各个触发器的时钟信号不完全一致。

还可以分成Mealy型时序电路以及Moore型时序电路:Mealy型时序电路指的式输出信号不仅仅取决于电路状态,还取决于输入信号;而Moore型时序电路指的是输出信号仅仅取决于电路状态而与输入无关。如果一个电路没有外部输入信号,那么他一定是Moore型电路;但是Moore型时序电路并不是指没有外部输入信号,而是说电路的输出方程里面没有输入变量。

时序逻辑电路的分析方法

1.根据给定的逻辑电路图写出每个触发器的驱动方程,即每个触发器的输入信号的表达式

2.将每个触发器的驱动方程带入其特性方程,就得到其状态方程

3.根据给定的逻辑电路图写出输出方程

4.根据基本方程组列出状态转化表

5.根据状态转化表绘制状态转化图

这里我门重新回顾下触发器的特性方程

从0学习数字电路(6),学习,fpga开发

 下面举个例子:分析下列时序逻辑电路图

从0学习数字电路(6),学习,fpga开发

的首先经过判断我们得知,这是一个同步时序逻辑电路,其次没有输入信号,这是一个Moore型电路,有三个jk触发器并且都是下降沿动作。

从0学习数字电路(6),学习,fpga开发

从0学习数字电路(6),学习,fpga开发

我们可以看到状态转化表和真值表类似:真值表左边是输入变量,右边是输出变量;而状态转化表左边是输入变量和初态,右边是输出变量和次态。因为本题美哟u输入变量,所以左边只有三个初态,我们再将状态和输出变量放在一起可以看到,没有一个下降沿到达,就会发生一个变化,将000带到次态里面就是001;将001带到次态里面就是010.。。。当把110带到次态里面就是000,即每7个就是一个循环,一共有8个状态

从0学习数字电路(6),学习,fpga开发

 我们要知道在状态图中每一个圆圈就代表一个状态,则n个变量就应该有2^n个状态,即2^n个圆圈。而箭头就表示状态转化的方向,箭头胖著注明状态转换前的输入变量和输出变量。平且在时序逻辑电路中至少要存在一个环,这个环叫做有效循环。我们还要知道,便是各个状态转换的箭头标注的输出对应的都是转换前的输出,因为输出方程式一个组合逻辑函数时,根本就不涉及次态,输出方程中的状态变量带入的式Q而不是Q*,因此两个圈一个箭头表示的是在这个初态下出入x,输出为Y,状态转换为次态。

刚才在上面提到了一个有效状态,无效状态,有效循环,无效循环的概念,这就涉及到时序逻辑电路中的自启动的问题:如果我们的电路能够从给定的任何一个初始状态下将纳入主循环就叫做有效循环,则此时这个时序逻辑电路称他可以自启动;但是如果存在没有办法进入主循环而是自行成环的的无效状态,就称此时的时序逻辑电路无法自启动。

从0学习数字电路(6),学习,fpga开发

 下面再举一个例子:

从0学习数字电路(6),学习,fpga开发

是和上一题不同,这道题有了一个输入变量,我们要知道,再将检查的时候,如果有2个变量,就应该有2^n个状态,如果还有m个输入变量,那应该有2^(m+n)个箭头

从0学习数字电路(6),学习,fpga开发

同步时序逻辑电路的基本分析思路是:基本方程组;状态转化表;状态转化图;描述逻辑功能。

寄存器

我们知道,存储一组二值代码的电路模块是寄存器,由于一个N位的二进制代码最多可以表示2^n种状态,每个触发器可以存储1位二进制代码,所以由N个触发器构成的寄存器能够存储N的二值代码,即N位寄存器。因为寄存器只需要实现存1或者存0的功能,因此使用的触发器是D触发器。而T触发器一定不行。不论是电平触发还是边沿触发都可以实现。这些数据回一同出现在输入端,一同出现在输出端,特点是数据并行输入并行输出,但是一旦位数高的话,就会浪费数据线。

从0学习数字电路(6),学习,fpga开发

移位寄存器

从0学习数字电路(6),学习,fpga开发

 可以看到移位寄存器由边沿触发的D触发器组成,第一个触发器接受的是来子最左边的输入信号,其他触发器的输入i新年好是前一个触发器的状态。当时钟上升沿到来的时候,每个触发器按照前一个触发器原来的状态机进行翻转,因此电路中各个触发器的状态效果就是数据不但的右移。注意移位寄存器只能够使用边沿触发,因为电平触发的话时间远大于边沿触发的时间没数据一下子就过去了,不能实现移位的操作

 举个例子

从0学习数字电路(6),学习,fpga开发

 好比在第一个触发器种输入了1011这个四位的二进制代码,数据和时钟之间应该有一个配合,即早来晚走,在时钟的边沿之前就让数据保持稳定,在时钟的边沿之后,我还要保证数据维持一段时间后再变化。下面进行详细的分析:

再第一个时钟上升沿之前,D1=1,因此在第一个时钟上升沿的时候,将Q0置1

在第二个时钟上升沿的时候,Q1按照Q0的状态,也置1,而Q0继续接受数据,被置0;

在第三个时钟上升沿的时候,Q2按照Q1的状态置1,Q1按照10的状态置0,Q0被置1

因此宏观来看,数据发生了移位,并且整体数据在输入端D是按照串行的方式进行的,但是在每一个触发器输出端式并行输出,我们可以看到在第四个时钟上升沿的地方触发器刚好是1011,再过三个时钟周期Q3就是1011.

假如在第一个触发器输入端串输入了N位代码,经过N个时钟脉冲后,数据会在各个触发器的输出端接受到完整的并行输出的代码,再经过2N-1个时钟脉冲,数据回全部被移出。

移位寄存器芯片-74LS194(四位双向位移寄存器)

从0学习数字电路(6),学习,fpga开发

 D的作用是直接去改变每个第一个触发器的状态,外部让你是多少,你就是多少。S1和S0是我的工作控制端,一共四种个工作摸式,我可以通过设置两位的S来控制四种不同的工作摸式。其实很简单,如果像报保持的话,就让输入状态是他自己的状态,即Q=Q*;如果想左移,就让后面的触发器的输出状态作为我的输入状态;Q1*=Q2;如果想右移,就让左边触发器的输入作为我这个触发器的输出:Q1*=Q0;如果想并行输入的话,就让Q*=外部的输入。

这其中,我们将四个不同来源的信号根据功能需求选择其中一个作为触发器的输入,其实这就是一个数据选择器,附加控制diamagneticS1S0就是地址码,赋予S1S0不同的状态编码含义,即对应四种工作摸式,根据地址码S1S0选择每个触发器的输入。

计数器

首先计数器是数字电路中最重要,使用最广泛的时序电路。

根据内部触发器是否同一动作可以分为同步计数器或者异步计数器;

按照计数过程中的数字增减情况可以分为加法计数器,减法计数器,可逆计数器(加减法计数器);

按照计数器的计数容量可以分为:十进制计数器;十二进制计数器;60进制计数器;

按照计数器中的数字的编码方式可以分为:而二进制计数器,21进制计数器;格雷码计数器等等

计数器的特点

从0学习数字电路(6),学习,fpga开发

 文章来源地址https://www.toymoban.com/news/detail-535828.html

当T触发器(只有保持和翻转的功能)是1的时候,时钟下降沿到来的时候进行翻转,因为电路时异步时序逻辑电路,每个触发器的状态就是下一个触发器的时钟信号,因此Q0就会按照01010101的方式进行翻转,但是Q1只会在Q0的下降沿进行翻转,因此Q1按照00110011的方式翻转,一次类推Q2会按照000111的方式进行翻转,Q0是最低位,Q2是最高位,因此每个触发器的状态正好对应二进制涮熟运算从000到111的每一位变化i情况,即电路是一个八进制的加法计数器,每8个时钟周期为一个循环。对于最原始的时钟信号(f0)进行分频,Q0的频率是f0/2;Q1的频率是f0/4;Q2的频率是f0/8.即八进制的计数器最高可以实现8分频。

如果我们在此电路中引出一个输出信号C=Q0Q1Q2,那么只有当Q0Q1Q2=111的时候C=1;且该信号只能维持一个时钟周期,这个i新年好就是计数器的进位信号,因此该电路可以对应时钟脉冲计数。即这个脉冲信号也可以对应时间,即电路可以实现定时的功能;计数器的本质是计时间脉冲的数!!!!!!!!!!!!!!!!!!!!

同步二进制加法计数器

这里的二进制表示按照二进制进行编码的。只有当Q3Q2Q1Q0=1111的时候才会出现一个脉冲信号,当Q3Q2Q1Q0=0的时候,进位信号就变成0,因为我第一个触发器一直要翻,因此T0一直等于1,而后面的触发器按照二进制加法运算原则,应该前面全是1时,下一个时钟沿才会进翻转,因此Ti=Qi-1Qi-2.....Q0

从0学习数字电路(6),学习,fpga开发

四位同步二进制加法计数器芯片-74161

这里的LD指的是当LD‘为1的时候,才允许D3D2D1D0输入去改变我Q3Q2Q1Q0的状态,当RD’=1的时候开始复位,当RD'=0的时候,Q3Q2Q1Q0全部置0从0学习数字电路(6),学习,fpga开发

 同步二进制减法计数器

和同步二进制加法计数器类似,第一个触发器的输入信号恒为1,即该触发器一直在010101翻转,后面的触发器按照二进制减法运算规则,当所有的低位触发器都是0的时候,在下一个时钟脉冲沿此触发器的状态才翻转。从0学习数字电路(6),学习,fpga开发

同步二进制可逆计数器

 我们要引入一个附加的控制输入端A,当A=0的时候进行加法计数,A=1的时候进行加法计数。

同步二进制计数器一般都是由T触发器构成,其实现方式有两种,一种是同一个时钟控制每个触发器的输入信号,另一种是第一个触发器的输入信号恒为1进而去控制其他区触发器的信号。

同步十进制加法计数器

十进制计数即每是个护照那个太一个u想你还,如果采用8421码的编码方式,就要用0000-1001这是个状态来表示,而我们的设计思路就是在1001这个状态后,回到0000而并不是1010,体哦啊过原本循环中的6个无关状态。

当 Q=1001时:原本的1001要转变成1010,而现在的设计目标时将其修正为0000,因此需要修正FF3和FF0这两个触发器的输入信号以及进位输出信号:

对于FF3,原本的T为0即保持,而现在要变成1,让1变成0;对于FF1原本的状态是1要反转,但是我们不能让他翻转,因此要让T=0让他保持0.这里实际上涉及到了译码的思想。

从0学习数字电路(6),学习,fpga开发以上的思想是完全译码的思想T3原本=001,或上1110就变成1,T1原本=1,我让他与上1001就是0.

从0学习数字电路(6),学习,fpga开发

还有一种思想是不完全译码,即000-1001这10个状态中,由于9是1001时Q3=Q1=1的时候时第一次出现,因此用Q3Q0着一项也可以实现上面的思想。

同步十进制减法器

思想和加法器i写那个他,但是我要让0000的下一个状态是1001而并非1111,即T2原本状态是1我要让他保持不变,要变成0,T0的原本状态是1,而我要让他保持不变T0=0从0学习数字电路(6),学习,fpga开发

 异步二进制计数器

只利用T触发器T=1翻转的功能特点,让每一个T触发器的输入信号恒为1,每个触发器的状态作为下一个触发器的输入信号,N个级联的触发器就实现了N位二进制数的计数。

异步二进制计数器的特点是电路结构设计简单们不用其他的门电路,但是传输延迟大,容易产生竞争冒险的现象。

环形计数器

如果我们将四位移位寄存器的Q3直接反馈给D0,那么在连续的时钟信号下,移位寄存器的数据会循环右移,如果选定初态是1000,则按照状态可以有1000-0100-0010--0001-1000进行循环。他的优点是结构简单,缺点是N位寄存器一共有2^N个状态,但是环形计数器值用了N种状态,没有充分利用,并且无法自启动。

从0学习数字电路(6),学习,fpga开发

扭环形计数器

将一个四位移位寄存器的Q3'直接给D0,得到纽环形计数器,着会有8个状态,即对于n个移位寄存器来说,纽环形计数器可以得到2n种状态。

从0学习数字电路(6),学习,fpga开发

 如果给定的是一个N进制的计数器器件,设计目标是M进制计数器,该怎么办?一般的芯片都有置0和预置数的功能,因此设计的方法分为置0法和置数法。进一步可以分为异步置0法,同步置0法,异步置数法,同步置数。

M<N的情况

用同步10进制计数器采用置0法来设计同步6进制计数器(使用异步置0法)

从0学习数字电路(6),学习,fpga开发

现在有个10进制计数器设计成6进制计数器,即在0000-0001-0011-0100-0101-0000,置0法就是让她在某个状态出回到0000即可,因为采用的方法是异步置0,即无需等到时钟信号边沿就立即置0,如果我们选择在0101即5的地点去译码产生置0信号,那么这个状态只会在很短很短的时间出现,所以在设计是应该用0110这和状态去译码,即在0110出跳变回0000,而0110置式瞬间出现,因此不会出现在稳定的M个有效循环中。我们还要注意,因为现在的进位输出信号是9进位的机内输出(在1001的时候输出,持续一个周期),到那时这个电路应该在0101(5)进行进位。

从0学习数字电路(6),学习,fpga开发

从0学习数字电路(6),学习,fpga开发

 而采用同步置0的方式,即需要等到下一个时钟信号上升沿到达之后才置0,因此应该选择在0101(5)的时候进行置0,这样0101这个状态可以稳定一个时钟信号周期,在下一个上升沿到达之后回到0000.对于异步置0来说,同步置0持续的时间长,更加可靠。而且进位也是0101。

同步置数法

采用置数法进行设计的时候,将预置数设置为0000,那么同步置数法事实上就是同步置0,区别在于译码i新年好要接到同步预置数控制端LD而并非置0端RD。当然置数法还有个好处,不管将置数端设置成什么,只要由M个数,就可以进行循环,而不必一定是0000。

M>N的情况

当M>N的时候,次啊用多片计数器芯片进行拓展即可

从0学习数字电路(6),学习,fpga开发

从0学习数字电路(6),学习,fpga开发

 

 

 

 

 

 

 

 

 

 

 

 

 

 

到了这里,关于从0学习数字电路(6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从0学习数字电路(6)

    在这一章,我们重点学习下时序电路。时序电路在功能上,任意时刻的输出不仅取决于该时刻的输入,还与电路原来的状态有关;在结构上,时序逻辑电路包含储存电路, 时序电路的基本单元是触发器;组合逻辑电路是以门电路为基本单元的。 其次我们要知道,时序逻辑电

    2024年02月13日
    浏览(31)
  • 【FPGA数据采集测试系统】——基于FPGA的通用数据采集测试系统是当今数字电路领域最热门的研究课题之一。它不仅可以用于数字信号处理,而且也被广泛应用于音频、视...

    【FPGA数据采集测试系统】——基于FPGA的通用数据采集测试系统是当今数字电路领域最热门的研究课题之一。它不仅可以用于数字信号处理,而且也被广泛应用于音频、视频以及其他多媒体领域。 此外,基于FPGA的数据采集测试系统还可以用于传感器接口、机器视觉、自动控制

    2024年02月09日
    浏览(47)
  • 数字集成电路后端(Innovus)开发设计

    一、本文目的是对数字IC进行: 1、平面规划设计(Floorplanning the Design); 2、电源路径设计( Routing Power with Special Route); 3、使用Early Global Router分析路径(布线)可行性(Analyzing Route Feasibility with the Early Global Router)。 二、设计过程与结果: 1、平面规划设计(Floorplanning

    2024年02月05日
    浏览(117)
  • FPGA应用学习笔记-----复位电路(二)和小结

    不可复位触发器若和可复位触发器混合写的话,不可复位触发器是由可复位触发器馈电的。    不应该出现的复位,因为延时导致了冒险,异步复位存在静态冒险  附加素隐含项,利用数电方法,消除静态冒险    这样多时钟区域还是算异步的,每一时钟区域用一个复位同步

    2024年02月13日
    浏览(46)
  • 数字IC前端学习笔记:时钟切换电路

    相关阅读 数字IC前端 https://blog.csdn.net/weixin_45791458/category_12173698.html?spm=1001.2014.3001.5482         有些时候我们需要在系统运行时切换系统时钟,最简单的方法就是使用一个MUX(数据选择器)选择输出的时钟,如下代码片所示。但这样做会导致毛刺的产生,这可能会导致寄存

    2024年02月04日
    浏览(42)
  • fpga开发:二进制转BCD码的电路设计

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 题目:二进制转BCD码的电路设计 一、设计要求 利用上海安路科技的EG4X20BG256板卡上面的资源(4个按键、4个

    2024年02月03日
    浏览(50)
  • CMOS反相器基础(数字电路学习笔记)

    通过几个问题来记录CMOS反相器是什么,以及数字电路中为什么要使用CMOS反向器。 目录 问题 Q1:模拟电路和数字电路的区别? Q2:为什么说相对模拟电路来说数字电路比较稳定? Q3:数字电路中为什么要使用CMOS门电路? Q4:CMOS的 输入噪声容限是什么? Q5:CMOS结构中P管的宽

    2023年04月16日
    浏览(53)
  • 学习笔记|LED点亮原理|三极管在数字电路中的应用|Keil中的Tab设置|C51中对准双向口|STC32G单片机视频开发教程(冲哥)|第四集-上:点亮LED

    为什么LED能点亮? 概念引入:输出电压=VCC就是高电平,输出电压 =GND(一般是OV)就是低电平,分别用1和0来表示,这个是理想值。 现在STC 的带硬件USB的MCU支持用硬件USB下载,因为用的是USB-HID通信协议,不需要安装任何驱动。STC打狗棒、降龙棍、开天斧、屠龙刀核心板以及STC开

    2024年02月14日
    浏览(39)
  • Verilog学习笔记(3):Verilog数字逻辑电路设计方法

    例:用Verilog设计模256(8bits)计数器 (a)可综合程序描述方式 (b)常见的错误描述方式 同时Verilog的电路描述方式具有多样性,这也决定了对于电路设计的多样性。 例:用Verilog设计数字多路选择器 (a)采用真值表形式的代码 (b)采用逻辑表达式形式的代码 (c)采用结

    2023年04月08日
    浏览(118)
  • [从零开始学习FPGA编程-32]:进阶篇 - 基本时序电路-D触发器(Verilog语言)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:  目录 第1章 什么是时序电路 1.1 时序电路 1.2 什么是触发器

    2023年04月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包