Verilog有限状态机(4)

HDLBits链接


前言

今天继续更新状态机小节的习题。


题库

题目描述1:

One-hot FSM

独热编码,根据状态转移图输出下一状态与结果。

Solution1:

module top_module(input in,input [9:0] state,output [9:0] next_state,output out1,output out2);parameter S0 = 4'd0;parameter S1 = 4'd1;parameter S2 = 4'd2;parameter S3 = 4'd3;parameter S4 = 4'd4;parameter S5 = 4'd5;parameter S6 = 4'd6;parameter S7 = 4'd7;parameter S8 = 4'd8;parameter S9 = 4'd9;assign next_state[0] = ~in & (state[S0] | state[S1] | state[S2] | state[S3] | state[S4] | state[S7] | state[S8] | state[S9]);assign next_state[1] = in & (state[S0] | state[S8] | state[S9]);assign next_state[2] = in & state[S1];assign next_state[3] = in & state[S2];assign next_state[4] = in & state[S3];assign next_state[5] = in & state[S4];assign next_state[6] = in & state[S5];assign next_state[7] = in & (state[S6] | state[S7]);assign next_state[8] = ~in & state[S5];assign next_state[9] = ~in & state[S6];assign out1 = (state[S8] | state[S9]);assign out2 = (state[S7] | state[S9]);endmodule

题目描述2:

PS/2 packet parser

首先,这道题目中作者表明in的第3位为1时,状态机启动,其他两位可能为1或0,注意,这里不允许重叠检测,根据作者给出的时序图,大家应该就可以写出状态机了。

Solution2:

module top_module(input clk,input [7:0] in,input reset,    // Synchronous resetoutput done); //parameter BYTE_FIRST = 2'd0;parameter BYTE_SECOND = 2'd1;parameter BYTE_THIRD = 2'd2;parameter WAIT = 2'd3;reg [1:0] state,next_state;// State transition logic (combinational)always @(*)begincase(state)BYTE_FIRST:beginnext_state <= BYTE_SECOND;endBYTE_SECOND:beginnext_state <= BYTE_THIRD;endBYTE_THIRD:beginif(in[3] == 1'b1)beginnext_state <= BYTE_FIRST;endelse beginnext_state <= WAIT;endendWAIT:beginif(in[3] == 1'b1)beginnext_state <= BYTE_FIRST;endelse beginnext_state <= WAIT;endendendcaseend// State flip-flops (sequential)always @(posedge clk)beginif(reset)beginstate <= WAIT;endelse beginstate <= next_state;endend// Output logicassign done = (state == BYTE_THIRD);endmodule

题目描述3:

PS/2 packet parser and datapath

这道题目相比上一道多了数据位输出,当done信号为1时,输出24bit的数据,这24bit的数据高8位,中8位,低8位分别从in[3]为1开始计起,依次输出。done信号为0的时候不关心数据信号。高8位输出仅当下一状态为BYTE_SECOND才开始,此处可以简化判断逻辑,大家可以注意一下。

Solution3:

module top_module(input clk,input [7:0] in,input reset,    // Synchronous resetoutput [23:0] out_bytes,output done); //parameter BYTE_FIRST = 2'd0;parameter BYTE_SECOND = 2'd1;parameter BYTE_THIRD = 2'd2;parameter DONE = 2'd3;reg [1:0] state,next_state;reg [23:0] out_bytes_reg;// FSM from fsm_ps2always @(posedge clk)beginif(reset)beginstate <= BYTE_FIRST;endelse beginstate <= next_state;endendalways @(*)begincase(state)BYTE_FIRST:beginif(in[3])beginnext_state <= BYTE_SECOND;endelse beginnext_state <= BYTE_FIRST;endendBYTE_SECOND:beginnext_state <= BYTE_THIRD;endBYTE_THIRD:beginnext_state <= DONE;endDONE:beginif(in[3])beginnext_state <= BYTE_SECOND;endelse beginnext_state <= BYTE_FIRST;endendendcaseendalways @(posedge clk)beginif(next_state == BYTE_SECOND)beginout_bytes_reg[23:16] <= in;endelse if(next_state == BYTE_THIRD)beginout_bytes_reg[15:8] <= in;endelse if(next_state == DONE)beginout_bytes_reg[7:0] <= in;endelse beginout_bytes_reg <= 24'd0;endend// New: Datapath to store incoming bytes.assign done = (state == DONE);assign out_bytes = out_bytes_reg;endmodule

结语

今天就先更新这三题吧,今天上了数分课发现拉下好多课程,希望自己期末能过吧,哈哈哈,之后要好好复习了。若代码有错误希望大家及时指出,我会尽快改正。

HDLBits答案(17)_Verilog有限状态机(4)相关推荐

  1. HDLBits答案(18)_Verilog有限状态机(5)

    Verilog有限状态机(5) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 题目描述1: 第一道题目比较容易,题目中的in信号包含了一个起始位(0),8个数据位和一个停止位(1), ...

  2. HDLBits答案(21)_Verilog有限状态机(8)

    Verilog有限状态机(8) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 Q2a:FSM 正宗的FSM题,没啥说的,看图写代码. Solution: module top_mod ...

  3. HDLBits答案(20)_Verilog有限状态机(7)

    Verilog有限状态机(7) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 Q3a:FSM 题目里说当s为0时,进入B状态,然后会检查w的值,如果在接下来的三个周期中w值恰好有两个 ...

  4. HDLBits答案(19)_Verilog有限状态机(6)

    Verilog有限状态机(6) HDLBits链接 前言 今天继续更新状态机小节的习题. 题库 Fsm hdlc 同步帧检测涉及对数据的连续位流进行解码,以寻找指示帧(数据包)开始和结束的位模式. 6 ...

  5. HDLBits答案(16)_Verilog有限状态机(3)

    Verilog有限状态机(3) HDLBits链接 前言 今天继续更新状态机小节的习题,本章主要编写Lemmings Game部分. 题库 题目描述10: Game Lemmings1:有个小人左右走 ...

  6. HDLBits答案(15)_Verilog有限状态机(2)

    Verilog有限状态机(2) HDLBits链接 前言 继续更新状态机小节的习题. 题库 题目描述6: Solution6: module top_module(input in,input [3: ...

  7. HDLBits答案(14)_Verilog有限状态机(1)

    Verilog有限状态机(1) HDLBits链接 前言 今天来到了重要的部分:状态机.对该部分内容,可能不会一次更新一个小节:一方面是题目难度,另一方面是代码量过大:所以该节会分批更新,大家见谅. ...

  8. HDLBits答案(13)_Verilog移位寄存器附加题

    Verilog移位寄存器 HDLBits链接 前言 今天更新一节内容,该小节题目不多,共三道,但技巧性挺强. 题库 题目描述1:各单元的下一状态是此时当前单元相邻两位的异或. 在这个电路中,创建一个5 ...

  9. HDLBits答案(12)_Verilog移位寄存器

    Verilog移位寄存器 HDLBits链接 前言 今天更新一节寄存器相关内容,其中涉及CRC校验的内容是用线性反馈移位寄存器搭建而成的. 题库 题目描述1: 构建一个4bit的移位寄存器(右移),含 ...

最新文章

  1. 潘建伟团队首次实现18个光量子比特纠缠,刷新世界记录
  2. js 对有“命名空间”的表单做深度解析
  3. python数字类型及运算_Python类型和运算--数字
  4. html 字幕飘动效果,html 滚动字幕 制作滚动字幕效果 参数
  5. 160 - 16 bjanes.2
  6. 从前端智能化看“低代码/无代码”
  7. Java多线程学习十四:Lock 有哪几个常用方法?分别有什么用?
  8. ScrollView的学习
  9. Python3.6+selenium2.53.6自动化测试_禅道新增BUG(一)(本地禅道)
  10. 简单快速的视觉里程计入门(Visual odometry)
  11. 蜂鸣器常见错误电路分析
  12. 这是我见过最秀的代码 。。。
  13. 精读《图解密码技术》--第一章 环游密码世界
  14. 快手光合计划完整版攻略
  15. Java-2学习之Eclipse简介
  16. 全球及中国二手车贷款行业运行分析及项目动态研究报告2021年版
  17. linux图片处理convert命令
  18. Xilinx 8B10B转换
  19. 基于python实现自动化办公学习笔记
  20. Zynq7000系列之芯片引脚功能合集以及引脚分配

热门文章

  1. SAP UI5列表的排序
  2. Angular sort interactively test
  3. ManagedObject this[oPropertyInfo._sMutator](oValue);
  4. SAP CRM Fiori reuse library的代码审查
  5. IBASE search
  6. why approver preview in Document builder is empty
  7. 在SAP Smart Business workspace里创建KPI tile的错误消息分析
  8. canvas 文字颜色_canvas 中普通动效与粒子动效的实现
  9. 计算机文献双语外文,中英文双语计算机专业毕业设计外文文献翻译成品:对Delphi的概述.docx...
  10. append有时加载不出来_关于艾拉浏览器看漫画,有时加载慢的解决方法,你知道了吗...