这几天在刷HDLBits,参考的是HDLBits中文导学专栏:HDLBits中文导学,刷到120题的时候发现缺少了中间的120题到126题的解析,就打算自己边写边记录一下。也方便其他的同学进行参考。

Problem 120 Simple FSM 1s

牛刀小试

一个很简单的状态机的题目,给定一个输入,两种状态,一个输出。注意复位的时候复位成B状态,复位采用同步复位。

解答与分析

这里我们采用三段式的写法来描述这个简单的状态机。

三段式状态机基本格式是:

  • 采用组合逻辑判断状态转移条件
  • 状态触发器实现
  • 描述输出逻辑(既可以用组合电路输出,也可以用时序电路输出)

状态转移条件:根据输入信号以及当前的状态确定次态。

    always @(*) begincase(state)B:next_state=in?B:A;A:next_state=in?A:B;endcaseend

状态触发器实现,在时钟边沿实现状态寄存器的跳变以及状态复位

    always @(posedge clk) beginif(reset)  state<=B;else       state<=next_state;end

输出逻辑,根据当前状态实现输出

    assign out=state?1:0;

Problem 121 Simple FSM 2

牛刀小试

一个很简单的状态机的题目,给定两个输入,两种状态,一个输出。两种状态分别为开,关。复位的时候复位成OFF状态。复位采用异步复位,OFF状态输出0,ON状态输出1。

解答与分析

状态转移条件:根据输入信号以及当前的状态确定次态。

    always @(*) begincase(state)OFF:next_state=j?ON:OFF;ON:next_state=k?OFF:ON;endcaseend

状态触发器实现,在时钟边沿实现状态寄存器的跳变以及状态复位

    always @(posedge clk, posedge areset) beginif(areset)   state<=OFF;else     state<=next_state;end

输出逻辑,根据当前状态实现输出

    assign out=state?1:0;

Problem 122 Simple FSM 1s

牛刀小试

跟上题类似,只是复位方式不同而已,不再赘述。

Problem 123 Simple state transitions 3

牛刀小试

如图所示,一共有A,B,C,D四种状态。需要在满足特定输出的情况下进行状态转移和输出,state、next_state此时作为输入输出信号而不是内部信号。

解答与分析

如图所示,一共有A,B,C,D四种状态。状态转移逻辑和输出也很清晰的告诉了我们了。我们只要用状态机进行实现就可以了。

状态转移条件:根据输入信号以及当前的状态确定次态。

    always @(*) begincase(state)A:next_state=in?B:A;B:next_state=in?B:C;C:next_state=in?D:A;D:next_state=in?B:C;endcaseend

输出逻辑,根据当前状态实现输出

    assign out=(state==D)?1:0;

Problem 124 Simple one-hot state transitions 3

牛刀小试

解答与分析

独热码状态机的正确写法。独热码状态机仅使用单bit表示状态,是否处在某一状态仅跟一个bit有关,而下个状态的转移也仅与一个bit有关。与其他bit无关。因此我们要按下面的写法写状态转移条件。

状态转移条件:根据输入信号以及当前的状态确定次态。

    assign next_state[A] = state[A]&(in == 0) | state[C] & (in == 0);assign next_state[B] = state[A]&in | state[B]&in | state[D]&in;assign next_state[C] = state[B]&(in == 0) | state[D]&(in == 0);assign next_state[D] = state[C] & in;

输出逻辑,根据当前状态实现输出

    assign out=(state[D])?1:0;

Problem 125 Simple FSM 3

牛刀小试

同样是一道状态机的题目,给定一个输入,四种状态,一个输出。复位采用异步复位,复位成A状态。D状态输出1,其他状态输出0

解答与分析

状态转移条件:根据输入信号以及当前的状态确定次态。

    always @(*) begincase(state)A:next_state=in?B:A;B:next_state=in?B:C;C:next_state=in?D:A;D:next_state=in?B:C;endcaseend

状态触发器实现,在时钟边沿实现状态寄存器的跳变以及状态复位

    always @(posedge clk, posedge areset) beginif(areset)    state<=A;else       state<=next_state;end

输出逻辑,根据当前状态实现输出

    assign out=(state==D)?1:0;

Problem 126 Simple FSM 3s

牛刀小试

解答与分析

跟上题类似,只是复位方式不同而已,不再赘述。直接给出代码

module top_module(input clk,input in,input reset,output out); //reg [1:0] state,next_state;parameter A=0,B=1,C=2,D=3;always @(*) begincase(state)A:next_state=in?B:A;B:next_state=in?B:C;C:next_state=in?D:A;D:next_state=in?B:C;endcaseendalways @(posedge clk) beginif(reset) state<=A;else       state<=next_state;endassign out=(state==D)?1:0;
endmodule

verilog异步复位jk触发器_HDLBits: 在线学习Verilog(Problem 120-126)相关推荐

  1. verilog异步复位jk触发器_Verilog专题(九)DFF、Dlatch、JK flipflop

    DFF.Dlatch.JK flip-flop 对于verilog的学习,这里推荐一个比较好的实践网站HDLBits: https://hdlbits.01xz.net/wiki/Main_Page ...

  2. verilog异步复位jk触发器_异步复位同步释放原理

    关键词:同步释放,recovery,removal 在数字IC设计中肯定会涉及到异步复位的问题,因为需要对电路进行复位操作.这种复位设计主要依靠前端设计以及工具来检查,从数字IC后端的角度上讲,只要在 ...

  3. verilog异步复位jk触发器_同步复位和异步复位常见问题总结

    总结同步和异步复位使用中的常见问题. 同步复位 问题1: 综合工具并不能轻易区分出同步复位信号和其他数据信号,综合出来的电路不唯一,某些电路结构在网表仿真时可能出现x态. 该段代码可能综合出两种电路结 ...

  4. verilog异步复位jk触发器_以不变应万变的异步FIFO面试宝典(二)

    异步FIFO面试宝典(二) 上一期为童鞋们带来了FIFO工作的基本原理,本期将继续与各位童鞋探讨FIFO类面试相关问题.首先让我们回顾一下上一期的课后思考题: 如果读时钟域速度较快.写时钟域速度较慢( ...

  5. verilog异步复位jk触发器_JK触发器(异步复位置位)

    LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jkff IS PORT(clk,j,k,clr,pset:IN STD_LOGIC; q,qb:O ...

  6. verilog 计数器_HDLBits: 在线学习 Verilog ()

    本系列文章将向大家推荐一个学习 Verilog 的好去处:HDLBits. HDLBits 在提供 Verilog 基础语法教程的同时,还能够在线仿真你的 Verilog 模块,将你的输出与正确的时序 ...

  7. (33)VHDL实现异步复位D触发器

    (33)VHDL实现异步复位D触发器 1.1 目录 1)目录 2)FPGA简介 3)VHDL简介 4)VHDL实现异步复位D触发器 5)结语 1.2 FPGA简介 FPGA(Field Program ...

  8. verilog for循环_HDLBits:在线学习 Verilog (二十四 · Problem 115-119)

    本系列文章将和读者一起巡礼数字逻辑在线学习网站 HDLBits 的教程与习题,并附上解答和一些作者个人的理解,相信无论是想 7 分钟精通 Verilog,还是对 Verilog 和数电知识查漏补缺的同 ...

  9. verilog 简单module_HDLBits:在线学习 Verilog (二十九 · Problem 140-144)

    本系列文章将和读者一起巡礼数字逻辑在线学习网站 HDLBits 的教程与习题,并附上解答和一些作者个人的理解,相信无论是想 7 分钟精通 Verilog,还是对 Verilog 和数电知识查漏补缺的同 ...

最新文章

  1. mysql 表字段大小写敏感_各种数据库大小写敏感问题总结
  2. 重绘(repaint)与渲染(reflow)
  3. iView 实现可编辑表格
  4. ACM输入输出--多组测试用例--C、C++、Java
  5. 2021-07-21新技术赋能数智财会,用友YonBIP财务云激活企业创新能力
  6. C语言实现折半插入排序(Binary Insertion Sort)算法(附完整源码)
  7. C语言变长数组 struct中char data[0]的用法
  8. hashmap 存取原理图_HashMap底层实现原理
  9. 15原型模式(Prototype)
  10. [极客大挑战 2019]Havefun
  11. 【汇编语言】指令寻址
  12. GridView固定表头
  13. richtextbox 调用 selectAll() 之后执行Ctrl+C抛异常
  14. SAP FI 系列 (022) - 货币和汇率的配置
  15. matlab uigetfile函数
  16. 升级IOS15.4出现更新验证失败如何解决
  17. win10 ipv4无网络连接
  18. 怎么更换vscode背景图,放入自己喜欢的图片
  19. 具名插槽 非具名插槽
  20. 如何把一个字符串的大小写取反?(大写转小写/小写转大写)

热门文章

  1. 命令行编译和运行java
  2. Java中12个原子操作类
  3. 并发编程的目的和挑战
  4. poi 设置word表格颜色_POI工具练习
  5. 数学建模学习笔记(十一)——预测模型
  6. LINUX无法运行navixat,关于RX5700XT的驱动方法以及bug解决方案
  7. html文件打开是搜索导航,GitHub - bituplink/OneHtmlNav: 单文件html的网络导航页面,简约并不简单...
  8. linux cat cd,linux 文件系统命令 cat cd chmod
  9. highscore软件_软件|标准物质PDF卡片查找HighScore
  10. Python正则表达式re.sub使用