根据状态转移表实现时序电路

某同步时序电路转换表如下,请使用D触发器和必要的逻辑门实现此同步时序电路

电路的接口如下图所示

A表示输入,Y 表示输出

理解状态转移表,画成状态转移图

`timescale 1ns/1nsmodule seq_circuit(input                A   ,input                clk ,input                rst_n,output   wire        Y
);parameter state1 = 2'b00;parameter state2 = 2'b01;parameter state3 = 2'b10;parameter state4 = 2'b11;reg [1:0] c_state;reg [1:0] n_state;//第一段:状态转移,次态给现态always@(posedge clk or negedge rst_n)beginif(!rst_n)c_state <= state1;elsec_state <= n_state;end//第二段:现态和输入决定次态always@(*)begincase(c_state)state1:beginif(A == 0)n_state = state2;elsen_state = state4;endstate2:beginif(A == 0)n_state = state3;elsen_state = state1;endstate3:beginif(A == 0)n_state = state4;elsen_state = state2;endstate4:beginif(A == 0)n_state = state1;elsen_state = state3;enddefault:n_state = state1;endcaseend//第三段:输出赋值
//     reg Y_reg;
//     always@(posedge clk or negedge rst_n)
//         begin
//             if(!rst_n)
//                 Y_reg <= 1'b0;
//             else if(c_state == state4 && c_state != n_state)
//                 Y_reg <= 1;
//         end//     assign Y = Y_reg;assign Y = (c_state == state4)?1:0;
endmodule

知识点

三段式状态机
第一段:时序逻辑;主要实现状态转换:次态赋给现态

//第一段
always@(posedge clk or negedge rst_n)
beginif(!rst_n)curr_state <= 2'b00;elsecurr_state <= next_state;
end

第二段:组合逻辑;主要是实现:现态和输入决定次态

//第二段
always(*)
begincase(curr_state)2'b00:net_state = (A == 1'b1)?2'b11:2'b01;2'b01:net_state = (A == 1'b1)?2'b00:2'b10;2'b10:net_state = (A == 1'b1)?2'b01:2'b11;2'b11:net_state = (A == 1'b1)?2'b10:2'b00;default:next_state = 2'b00;
end

第三段:时序逻辑;主要是实现:输出判断

//第三段
always@(posedge clk or negedge rst_n)
beginif(!rst_n)Y <= 1'b0;else if(next_state == ...)Y <= 1'b1;
end

根据状态转移表实现时序电路相关推荐

  1. 计算机时序电路的作用,时序逻辑电路

    数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路).组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路 ...

  2. 第21讲 时序电路简介与储存原理

    时序电路简介与储存原理 1.时序电路简介 2.状态图.状态表 1.时序电路简介 ●时序电路:输出不仅依赖当时的输入,而且依赖过去的输入,又称有限状态机. ●为何学习时序电路: 1).对于输出与输入关系 ...

  3. 数字电路复习(时序电路)

    文章目录 什么是时序电路 译码器和使能相结合 如何实现定制函数 什么是时序电路 锁存器 状态: 被保存的过去的输入,时序电路又称为有限状态机 f(输出)=输入&当前状态(&表示有关) ...

  4. [从零开始学习FPGA编程-29]:进阶篇 - 基本时序电路-时序电路的两大基本特征(状态记忆与时钟触发)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  5. 用jk触发器构成二分频电路_深入了解数字电路之时序电路

    什么是时序电路? 组合电路是根据当前输入信号的组合来决定输出电平的电路,换言之,就是现在的输出不会被过去的输入所左右,也可以说成是,过去的输入状态对现在的输出状态没有影响的电路.时序电路和组合电路不同 ...

  6. 关于fpga的语言逻辑异步电路同步时序电路终于读懂了

    原文链接: http://m.elecfans.com/article/575270.html 从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表.抢 ...

  7. 漫画描述数字电路之时序电路

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 来源 | 巧学模电数电单片机 1什么是时序电路? 组合电路是根据当前输入信号的组合来决定输出电平的电路,换言之,就是现在的输出不 ...

  8. Verilog学习之路(8)— 时序电路的设计

    Verilog学习之路(8)- 时序电路的设计 一.前言 时序逻辑电路的输出不仅与当前时刻输入变量的取值有关,而且与电路的原状态,即与过去的输入情况有关. 时序逻辑电路的两个特点: 时序逻辑电路包括组 ...

  9. 数逻第四章 时序电路

    和组合电路不同,当输入改变时,输出并不会马上改变.而是需要时钟信号改变时,输出会更新. 需要时序电路的原因很简单:当我们需要一个循环时,我们希望控制循环的变量是离散的. 如果i=1时进行循环,如果i= ...

最新文章

  1. Xcode中通过删除原先版本的程序来复位App
  2. 这是一份不完整的数据竞赛年鉴
  3. python之生成器
  4. SmartCode Release 4
  5. npm升级以及使用淘宝npm镜像
  6. Golang面向API编程-interface(接口)
  7. 操作系统(李治军) L11内核级线程
  8. python爬取b站搜索结果播放地址_如何利用Python快速爬取B站全站视频信息
  9. 【SparkStreaming学习之二】 SparkStreaming算子操作
  10. 基于flask的网页聊天室(四)
  11. docker设置不同网络和迁移到指定网络
  12. 华为数通ensp命令(一)
  13. 特洛伊木马 (计算机木马程序)
  14. 工业AI落地场景案例实战,飞桨EasyDL让工业更智能
  15. 小白学 Python 数据分析(4):Pandas——数据导入
  16. Lumerical---FDE中的金属边界条件仿真
  17. sql 语句实现电话号筛选,例如:AABB,ABAB
  18. vue项目引入字体.ttf
  19. 休谟问题---至今无解的难题!
  20. 薛霄计算机,计算机科学与技术学院2008届本科毕业生

热门文章

  1. bioinformatics databases
  2. 概率密度函数、分布函数区别
  3. python学习之路4(基础练习题)
  4. MOS驱动电路(2)
  5. 2D的RPG游戏人物角色移动代码(以egret游戏引擎、TypeScript语言为例)
  6. 基于 dlib 的人脸检测(68关键点)
  7. vivado jtag回读 flash
  8. j2me上面实现图片的特效 (缩放,裁剪,调整大小,镜像,对比度亮度调整,黑白,线条,粉笔画,蒙版)等功能
  9. 频繁项集挖掘算法在告警关联中的应用
  10. LMS自适应滤波的MATLAB实现