精华内容
下载资源
问答
  • 异步时序逻辑电路设计部分停留了好些时候, 思维一度陷入混乱, 但最终还是坚持了下来, 并找到了一种设计异步时序逻辑电路的方法. 这里肯定会有很多朋友问道, 既然已经掌握了同步时序逻辑电路的设计方法, 且同步时序...

           在异步时序逻辑电路设计部分停留了好些时候, 思维一度陷入混乱, 但最终还是坚持了下来, 并找到了一种设计异步时序逻辑电路的方法. 这里肯定会有很多朋友问道, 既然已经掌握了同步时序逻辑电路的设计方法, 且同步时序逻辑电路比异步时序逻辑电路少了一段级联变化的时间, 那么为什么不用同步时序逻辑电路来设计呢? 由于我报考的院校在初试中考察异步时序逻辑电路的设计知识, 所以我只能花大段时间彻底弄懂异步时序逻辑电路的设计了. 好了闲话不多说, 下面我将为大家详细讲解异步十进制加法计数器的设计方法.

           第一步, 和同步时序逻辑电路的设计套路一样, 列十进制加法计数器的状态表:

            第二步, 将状态表转换为时序图, 并从中找Q3、Q2、Q1和Q0的变化规律:

    从时序图中可以看出, 只要系统时钟迎来上升沿时刻, Q0的状态就发生变化; Q1变化在Q0的下降沿处, Q2变化在Q0的下降沿处, Q3也变化在Q0的下降沿处——确定时钟关系 CP0=CP, CP1=CP2=CP3=Q0n'.

            第三步, 根据得到的时钟方程, 修改状态表:

    当系统上升沿到来时, CP0既有效, 所以CP0=1; 由 CP1=CP2=CP3=Q0n', 当Q0由1->0(下降沿)时, CP1、CP2和CP3才有效. 对于无效时钟的次态, 用×来代替之前的数值. 

            第四步, 根据修改后的状态表, 绘制状态激励表:

    根据D触发器的特性方程Q^(n+1)=D, 将修改后的状态表变换为下面的状态激励表(只需将Q3^(n+1)、Q2^(n+1)、Q1^(n+1)和Q0^(n+1)改为D3、D2、D1和D0即可).

            第五步, 根据绘制的状态激励表, 求输出方程和状态激励方程:

    用卡诺图化简的方式, 求得 D0=Q0n', D1=Q3n'·Q1n', D2=Q2n异或Q1n, D3=Q2n·Q1n, Y=Q3n·Q1n.

            第六步, 求次态方程:

    Q3^(n+1)=D3=Q2n·Q1n, Q0下降沿时刻有效;

    Q2^(n+1)=D2=Q2n异或Q1n, Q0下降沿时刻有效;

    Q1^(n+1)=D1=Q3n'·Q1n', Q0下降沿时刻有效; 

    Q0^(n+1)=D0=Q0n', 系统时钟CP上升沿时刻有效.

            第七步, 根据次态方程, 求无效状态的次态:

    将无效状态1010、1011、1100、1101、1110和1111代入求出的次态方程中, 得: 

            第八步, 检查电路的自启动功能:

    根据求出的无效状态的次态, 可以得到 1010->1011->0100, 1100->1101->0100, 1111->1000, ∴电路具备自启动功能.

            第九步, 绘制电路的逻辑图:

    和同步时序逻辑电路一样, 将四个触发器水平依次排开: 低位在左, 高位在右. 根据D3、D2、D1和D0的表达式来接线(D3对应#3触发器, D2对应2#触发器, D1对应1#触发器, D0对应0#触发器). 和同步时序逻辑电路不同的是, 要根据每个触发器的时钟方程来接时钟信号线: CP0=CP->0#触发器的CLK引脚接到系统信号线; CP1=Q0n'->1#触发器的CLK引脚接到0#触发器的Q'端; CP2=Q0n'->2#触发器的CLK引脚接到0#触发器的Q'端; CP3=Q0n'->3#触发器的CLK引脚接到0#触发器的Q'端.

             肯定有朋友会提问道, 看时序图确定每个触发器的时钟方程, 多个人眼中的规律可能是不同的, 那么有标准答案吗: 对于这个问题, 我用异步十进制加法计数器(也就是该电路)做了实验. 在这份设计中, 我做出"Q0变化在系统时钟CP的上升沿时刻, Q1变化在Q0的下降沿时刻, Q2变化在Q0的下降沿时刻, Q3变化在Q0的下降沿时刻"的判断: 在课本中, 作者做出的是"Q0变化在系统时钟CP的上升沿时刻, Q1变化在Q0的下降沿时刻, Q2变化在Q1的下降沿时刻, Q3变化在Q0的下降沿时刻"的判断, 相应得到的时钟方程为 CP0=CP. CP1=CP3=Q0n', CP2=Q1n', 显然CP2和这份设计中的结论不同. 我用multisim7验证了这两种判断, 发现它们都是正确的. 所以, 我们可以说, 对同一异步时序逻辑电路的设计, 时钟方程无标准答案.

            也会有朋友问到, 为什么我用的是JK触发器而给出的激励方程用的是D, 这是因为我将JK触发器改造成了D触发器(J=D, K'=D). 具体的分析步骤为 Q^(n+1)=D=D(Qn+Qn')=D·Qn+D·Qn'=J·Qn'+K'·Qn, 所以J=D, K'=D, 即J=K'=D. mutisim7中提供74107N和74109N, 二者都为JK触发器, 区别大致有两点: ①74107N为下降沿触发的触发器, 74109N为上升沿触发的触发器, ②74107N的两个激励信号为J和K, 74109N的两个激励信号为J和K'(可能是因为multisim7中未提供上升沿触发的D触发器, 只提供了下降沿触发的7474N, 而74109N的存在正是为了弥补这一缺憾).

            最后, 要注意到这里统一使用上升沿触发的JK触发器, 课本上也是这样设计的, 该设计方法也只适用于上升沿触发的触发器(在后续的博客中, 我会讲解如何将统一使用上升沿触发的触发器的异步时序逻辑电路改造成统一使用下降沿触发的触发器的异步时序逻辑电路).

    展开全文
  • 本文从本人的163博客搬迁至此。 MFM是改进型频率调制的缩写,其本质是一种非归零码,是用于磁介质硬盘存储的一种调制方式。...设计过程: 若码元的同步时钟为CLK,不失一般性,假设CLK的上升沿开始产生新的码元...

    本文从本人的163博客搬迁至此。

    MFM是改进型频率调制的缩写,其本质是一种非归零码,是用于磁介质硬盘存储的一种调制方式。调制规则有两句话,即两个翻转条件:

    1、为1的码元在每个码元的正中进行一次翻转;为0的码元不翻转。

    2、对连续两个为0的码元,则在第一个为0的码元结束时翻转一次;单个的0码元不翻转。

    设计过程:

    若码元的同步时钟为CLK,不失一般性,假设CLK的上升沿开始产生新的码元,下降沿为该码元的正中。则MFM调制信号有可能在时钟的上升沿,也有可能在时钟的下降沿发生电平翻转。由于一个触发器不会在两个边沿都翻转,也就不可能由单个触发器的输出作为MFM调制的输出。一种合理的思路是分别由一个上升沿和一个下降沿触发器分别在上升沿和下降沿翻转,然后用它们的输出相异或的结果作为总输出。特别值得注意的是,异或具有如下的属性:参与异或的两个数,不论其中一个为01,只要另一个发生翻转,异或的结果一定会翻转。下面分别来实现MFM调制规则的两个条件,即在满足条件1时翻转的电路——设其输出为Dout1,和满足条件2时翻转的电路——设其输出为Dout2,再将它们异或为最终的MFM调制结果Dout。

    条件1要求在为1的码元的正中进行一次翻转,比较容易实现,使用受控的触发器时钟即可。条件2较难实现,原因在于其对应的触发器需要在第二个码元为0的还没有到来之前,先就对是否存在两个连续为0的码元做出判断,并在第二个为0的码元开始出现的上升沿就先翻转。由于我们的电路不可能“未卜先知”地知道上升沿出现后的码元是否为0,只能让判断条件2的电路延迟(潜伏)一个时钟(CLK)周期后再发生翻转。当然由于条件2翻转的触发器电路,需要延迟一个CLK,条件1翻转的触发器电路也必须随之延迟一个时钟周期,以同步于条件2翻转的电路。图1中的DinD就是延迟一个时钟周期后的输入被调制信号。

    1 MFM调制电路及其时序

    满足条件1的电路,应该由两部分构成。第一个部分在上升沿动作,完成延迟一个时钟周期。第二部分则在下降沿动作,当码元为1时在下降沿翻转Dout1,为一个T'触发器。

    满足条件2的电路,也由两部分组成。第一个部分是一组下降沿移位寄存器,该移位寄存器有两个D触发器构成,负责保存最近两个下降沿时刻码元的值,当两个触发器同时为0时输出允许Dout2翻转的信号。第二个部分是在第一部分允许的条件下,在上升沿翻转的T'触发器,其输出就是Dout2。

    从图中可以看到,本电路是一个典型的异步时序逻辑电路,为了在连续的一个/组下降沿和上升沿之间不间断地动作,满足条件1的电路和满足条件2的电路的前后两个部分所使用的时钟边沿都不相同。使用硬件描述语言时,需要分别使用两个always模块来对应上升沿和下降沿电路。由于上升沿电路和下降沿电路交叉出现在两个always模块中,这段VerilogHDL不太容易直接看懂。

     

     1 module MFM(
     2 
     3     input CLK,      //产生被调制信号的时钟,其周期等于被调制信号一个码元的宽度
     4 
     5     input Din,      //被调制信号
     6 
     7     input rst,      //复位信号
     8 
     9     output DinD,    //延迟了一个clk周期的被调制信号
    10 
    11     output Dout1,   //为1的码元在码元正中翻转的信号
    12 
    13     output Dout2,   //连续两个为0的码元,在两个码元之间翻转的信号
    14 
    15     output MFM_Dout //Dout1和Dout2异或的结果,也就是DOUT1和Dout2翻转时都翻转的信号。
    16 
    17     );
    18 
    19     reg DinD_reg;//这个寄存器的值将输入延迟了一个时钟周期
    20 
    21     reg Dout1_reg;//Dout1对应的寄存器
    22 
    23     reg Dout2_reg;//Dout2对应的寄存器
    24 
    25     reg[1:0] D_reg_n;   //在下降沿缓冲两级输入,以判断是否是连续两个0
    26 
    27     assign DinD = DinD_reg;
    28 
    29     assign Dout1 = Dout1_reg;
    30 
    31     assign Dout2 = Dout2_reg;
    32 
    33     assign MFM_Dout = Dout1^Dout2;
    34 
    35 //异或的属性就是不论第一个自变量为0还是1,只要第二个自变量变化,结果都会跟着变化,因此MFM_Dout可以在DOUT1和Dout2翻转时都翻转
    36 
    37     always @(posedge CLK or posedge rst)
    38 
    39     begin
    40 
    41         if(rst)
    42 
    43         begin
    44 
    45             DinD_reg <= 0;
    46 
    47             Dout2_reg <= 0;
    48 
    49         end
    50 
    51         else begin
    52 
    53             DinD_reg <= Din;
    54 
    55             if(~(D_reg_n[0]|D_reg_n[1]))
    56 
    57 //如果D_reg_n[0]和D_reg_n[1]都为0则翻转Dout2
    58 
    59                 Dout2_reg <= ~Dout2_reg;
    60 
    61         end
    62 
    63     end
    64 
    65      
    66 
    67     always @(negedge CLK or posedge rst)
    68 
    69      begin
    70 
    71          if(rst)
    72 
    73          begin
    74 
    75              Dout1_reg <= 0;
    76 
    77              D_reg_n[1:0] <= 2'b11;
    78 
    79          end
    80 
    81          else begin
    82 
    83              if (DinD == 1)
    84 
    85                  Dout1_reg <= ~Dout1_reg;
    86 
    87              D_reg_n[1:0] <= {D_reg_n[0],Din};
    88 
    89 //缓冲两个下降沿时的输出,如果都为0,则需要在下一个上升沿翻转Dout2
    90 
    91          end
    92 
    93      end
    94 
    95 endmodule
    View Code

    上述代码在Vivado中综合后,得到下图所示的Schematic。

    2 在Vivado中综合后产生的Schematic

    这个实例再次印证了用硬件描述语言开发硬件电路的那个准则:在开始描述之前,脑中应该先有电路的大概模型,否则不可能综合出满足要求的硬件电路。

    转载于:https://www.cnblogs.com/helesheng/p/10112919.html

    展开全文
  • 异步时序逻辑电路例题,异步时序逻辑电路设计与分析例题,从而简化异步时序逻辑电路的分析与设计
  • 异步时序逻辑电路.zip

    2019-11-14 09:12:45
    该压缩文件中包含11个异步时序逻辑电路, 均为本人设计. 读者可通过电路源文件与本人博客中的解析, 完整地学习这部分的设计.
  • 异步时序逻辑电路设计,数字电路实验,华中科技大学
  • 在10.28日的博客中讲述了如何设计异步十进制加法计数器, 这里我们再以异步十六进制加法计数器的设计, 加深对异步时序逻辑电路设计思路的理解. 设计方案1: 第一步, 和同步时序逻辑电路的设计套路一样, 列十六进制...

           在10.28日的博客中讲述了如何设计异步十进制加法计数器, 这里我们再以异步十六进制加法计数器的设计, 加深对异步时序逻辑电路设计思路的理解.

           设计方案1:

           第一步, 和同步时序逻辑电路的设计套路一样, 列十六进制加法计数器的状态表:

           第二步, 将状态表转换为时序图, 并从中找出Q0、Q1、Q2和Q3的变化规律:

    从时序图中可以看出, 只要系统时钟迎来上升沿, Q0的状态就会变化; Q1变化在Q0的下降沿处, Q2变化在Q1的下降沿处, Q3变化在Q2的下降沿处. 根据这里的分析, 得到时钟方程 CP0=CP, CP1=Q0n', CP2=Q1n', CP3=Q2n'.

           第三步, 根据时钟方程修改状态表:

           第四步, 根据修改后的状态表, 绘制状态激励表(统一选择上升沿触发的D触发器):

            第五步, 根据绘制的状态激励表, 求输出方程和状态激励方程:

    用卡诺图化简的方式, 求得 D0=Q0n', D1=Q1n', D2=Q2n', D3=Q3n', Y=Q3n·Q2n·Q1n·Q0n.

            第六步, 求次态方程:

            Q3^(n+1)=D3=Q3n', Q2下降沿时有效;

            Q2^(n+1)=D2=Q2n', Q1下降沿时有效;

            Q1^(n+1)=D1=Q1n', Q0下降沿时有效;

            Q0^(n+1)=D0=Q0n', 系统时钟CP上升沿时有效.

            (由于电路设计采用全编码方案, 故电路不需验证自启动功能)

            第七步, 绘制电路的逻辑图:

            从该电路的设计思路来看, 我们可以发现, 对异步时序逻辑电路的设计也是成体系的: 只要掌握好设计流程, 那么设计异步时序逻辑电路就不再是件难事. 

            之前我在博客中提到过, 对异步时序逻辑电路时钟的选择不是唯一的, 即还有别的选择方案. 在异步十进制加法计数器的设计描述中, 我提到了这一问题, 但没有拿出篇幅来向大家验证. 下面我将会以另一种时钟的选择对异步十六进制加法计数器进行设计.

            设计方案2:

            第一步, 列十六进制计数器的状态表:

            第二步, 将状态表转换为时序图, 并从中找出Q0、Q1、Q2和Q3的变化规律:

    从时序图中可以看出, Q0变化在系统时钟CP的上升沿处, Q1变化在Q0的下降沿处, Q2变化在Q0的下降沿处, Q3变化在Q0的下降沿处. 由这里的分析, 得时钟方程 CP0=CP, CP1=CP2=CP3=Q0n'.

            第三步, 根据时钟方程修改状态表:

            第四步, 根据修改后的状态表绘制状态激励表:

            第五步, 根据绘制的状态激励表求输出方程和状态激励方程:

    用卡诺图化简的方式, 求得 D0=Q0n', D1=Q1n', D2=Q2n异或Q1n, D3=Q3n·Q1n'+Q3n·Q2n'+Q3n'·Q2n·Q1n, Y=Q3n·Q2n·Q1n·Q0n.

            第六步, 求次态方程:

            Q3^(n+1)=D3=Q3n·Q1n'+Q3n·Q2n'+Q3n'·Q2n·Q1n, Q0下降沿处有效;

            Q2^(n+1)=D2=Q2n异或Q1n, Q0下降沿处有效;

            Q1^(n+1)=D1=Q1n', Q0下降沿处有效;

            Q0^(n+1)=D0=Q0n', 系统时钟CP上升沿有效.

            (由于电路采用全编码设计方案, 故不需验证电路的自启动功能)

            第七步, 绘制电路逻辑图:

            从上述两种设计方案中可以再次印证"异步时序逻辑电路时钟的选择不唯一"这一观点. 

            大家应对上述设计用例仔细推敲, 以掌握异步时序逻辑电路的设计方法.

    展开全文
  • 异步时序逻辑电路的分析 1. 同步时序逻辑电路的分析 (1)列出方程组 ① 激励方程组 ② 转换方程组 ③ 输出方程组 (2)根据转换方程组和输出方程组,列出电路的转换表和状态表,画出状态图和时序图。 (3)确定...

    1. 同步时序逻辑电路的分析

    (1)根据电路列出三个方程组

    • 激励方程组
    • 转换方程组
    • 输出方程组

    方程组是最基础的。其他只是为了直观体现。

    (2)根据转换方程组和输出方程组,列出电路的转换表

    (3)根据转换表画出状态图

    (4)根据转换表画出时序图。

    (5)根据状态图和时序图,确定电路的逻辑功能。

    2. 同步时序逻辑电路的设计

    ()有给定的逻辑功能建立原始状态图和原始状态表
    ()状态化简
    ()状态分配
    ()选择触发器的类型
    ()确定激励方程组和触发方程组
    ()根据激励方程和输出方程,画出逻辑图
    ()检查自校正能力

    3. *异步时序逻辑电路的分析

    展开全文
  • 掌握异步时序逻辑电路的分析方法 4. 掌握典型时序逻辑电路计数器寄存器移位寄存器的逻辑功能及其应用 5. 了解时序可编程器件;6.1 时序逻辑电路基本概念;6.1 时序逻辑电路基本概念;6.1 时序逻辑电路基本概念;6.1 ...
  • 时序逻辑电路

    2020-12-10 12:02:12
    同步时序电路:在同一时钟源的同一脉冲边沿作用下同步进行状态的转换。 异步时序电路:触发器的时钟输入端没有接在同一的时钟...同步时序逻辑电路设计 同步时序逻辑电路分析 ...
  • 时许逻辑电路的基本概念 时序逻辑电路的基本结构与分类 ...同步时序逻辑电路设计举例 同步时序逻辑电路中的时钟偏移 异步时序逻辑电路的分析 若干典型的时许逻辑电路 寄存器和以为寄存器 计数器 ...
  • 本文研究了MSI可编程计数器改变应用方向的逻辑修改方法及时序逻辑电路设计技术。  1 基本原理  74LSl61是可编程中规模同步4位二进制加法计数器,图1为其图形符号。其中,Q3,Q2,Q1,Q0为计数状态输出端;C为...
  • 时序逻辑电路的基础——计数器(在每个时钟的上升沿递增1)  例1.四位计数器(同步使能、异步复位) // Module Name: counter_4bit // Description: 4bit异步复位同步使能二进制计数器 module counter_4bit( ...
  • 用always@(posedge clk)描述 时序逻辑电路的基础——计数器(在每个时钟的上升沿递增1) 例1.四位计数器(同步使能、异步复位) // Module Name: counter_4bit // Description: 4bit异步复位同步使能二进制计数器 ...
  • 转态转换真值表二、同步时序逻辑电路的分析三、同步时序逻辑电路的设计四、异步时序逻辑电路的分析五、若干典型的时序逻辑电路 学习完本节,要能回答以下问题: 掌握时序逻辑电路的描述方式及其相互转换 掌握时序...
  • 时序逻辑电路的基础——计数器(在每个时钟的上升沿递增1)  例1.四位计数器(同步使能、异步复位) // Module Name: counter_4bit // Description: 4bit异步复位同步使能二进制计数器 module counter_4...
  • 用VHDL设计一个具有异步复位及同步置位的可逆计数器,并加上七段显示译码器模块完成显示功能,结合UP-SOPC1000实验系统,通过QuartusII软件对其进行仿真和硬件测试。
  • 通过学习可以了解到:同步时序电路的所有动作是和时钟同步的,而异步时序电路设计则一般是不和时钟同步 同步和异步的区别也可以通过Verilog HDL代码书写的区别体现出: 同步时序 always@(clk) // clk Only begin ...
  • 时序逻辑电路分为同步时序电路和异步时序电路,其中同步时序电路指的是电路中所有的触发器共用一个时钟源。 3. 时序电路分析流程 根据电路图确定输出方程 各触发器的驱动方程 将驱动方程代入相应触发器的特性方程,...
  • 【数字逻辑】第六章 时序逻辑电路

    千次阅读 多人点赞 2019-12-04 02:45:31
    【数字逻辑】第六章 时序逻辑电路 马上就要考试了,这是一篇抱佛脚的大白话速记文章,没什么内涵,不考试就不要看这篇,看别的去时序电路1.分析如图的时序电路 P155分析异步时序电路 P1612.设计同步时序电路 P1693....
  • 数电第六章:时序逻辑电路

    千次阅读 2019-06-28 14:40:10
    异步时序电路二、同步时序电路设计三、计数器(分频器)1.2^n^进制计数器(1)2^n^进制同步加法计数器(2)2^n^进制同步减法计数器四、寄存器五、序列信号发生器1.选用四选一数据选择器2.选用译码器 一、时序电路...
  • 同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化,状态...
  • 原文链接: ... 从大学时代第一次接触FPGA至今已有10多年的时间,...当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的。后来读研究生,工作陆陆续续也用过Quartus II...
  • 进入大三下学期了,备战考研的同时也打算整理拓展所学的技能,到时候无论是通过考研...异步时序电路设计 实战:十六人投票器(multisim仿真后自制电路) FSM(有限状态机)和HLSM(高级状态机)(上板实验) memory和他
  • FPGA系统性学习笔记连载_Day10 【时序逻辑、竞争冒险、同步复位、异步复位】之【计数器设计、verilog语法补充】 连载《叁芯智能fpga设计与研发-第10天》 【时序逻辑、竞争冒险、同步复位、异步复位】之【计数器...
  • 同步逻辑异步逻辑的区别同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系...同步电路设计电路消耗更多硬件资源,但大大提高性能,同时方便对其进行静态时序分析。大规模集成电路基本...
  • 常用时序逻辑部件

    2020-12-09 09:16:28
    这一章主要是介绍常用的时序逻辑功能部件。如计数器、移位寄存器的分析与设计方法以及集成计数器、集成移位寄存器的原理及应用。它是本课程的重点内容之一,我们一定要掌握好! 在学习时要注意同步、异步计数器...
  • (1) 理解亚稳态产生的物理意义 (2) 理解触发器本身的建立时间和保持时间以及异步复位恢复的概念 (3) 理解亚稳态恢复和同步寄存器的概念 (4) 理解组合逻辑的延迟产生的...(9) 理解并掌握异步电路设计方法
  • 同步逻辑异步逻辑定义

    千次阅读 2019-08-06 17:06:37
    同步逻辑:整个设计中只有一个全局时钟成为同步逻辑。只有时钟脉冲同时到达各记忆... 同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变...
  • 74HC160是应用最广泛的时序逻辑器件,分为同步计数器和异步计数器两大类。计数器根据计数容量又可分为二进制、十进制和其它进制计数器,根据计数方式又可分加法、减法和加/减计数器三种类型。74HC160为常用的同步十...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 153
精华内容 61
关键字:

异步时序逻辑电路设计