HDLbits: Fsm ps2

2023-10-14 21:05
文章标签 hdlbits ps2 fsm

本文主要是介绍HDLbits: Fsm ps2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本题目理解起来有点难,要观察题目中给的三个时序图,通过时序图可以发现,状态有四个:byte1、byte2、byte3,还有一个“?”状态。其中,byte1的下一个状态一定是byte2,byte2的下一个状态一定是byte3,但是byte3的下一个状态可能是“?”,需要通过in[3]来确定。于是先写出下面的代码(运行错误):

module top_module(input clk,input [7:0] in,input reset,    // Synchronous resetoutput done); //parameter byte1=4'b0001, byte2=4'b0010, byte3=4'b0100, byte_fault=4'b1000;reg [3:0] state,next_state;// State transition logic (combinational)always@(*)begincase(state)byte1: next_state = byte2;byte2: next_state = byte3;byte3: next_state = in[3]?byte1:byte_fault;byte_fault: next_state = in[3]?byte1:byte_fault; default: next_state = byte1;endcaseend// State flip-flops (sequential)always@(posedge clk)beginif(reset)state <= byte1;elsestate <= next_state;endalways@(posedge clk)beginif(state == byte3)done <= 1;elsedone <= 0;end// Output logic//assign done = (state == byte3);endmodule

通过对比大神写的代码,发现两个问题:1、reset时,state不是byte1而是byte_fault,这一点题目没说明白。2、done判断条件为什么不能用我写的always块而是assign?

module top_module(input clk,input [7:0] in,input reset,    // Synchronous resetoutput done); //parameter byte1=4'b0001, byte2=4'b0010, byte3=4'b0100, byte_fault=4'b1000;reg [3:0] state,next_state;// State transition logic (combinational)always@(*)begincase(state)byte1: next_state = byte2;byte2: next_state = byte3;byte3: next_state = in[3]?byte1:byte_fault;byte_fault: next_state = in[3]?byte1:byte_fault; default: next_state = byte1;endcaseend// State flip-flops (sequential)always@(posedge clk)beginif(reset)state <= byte_fault;elsestate <= next_state;end// Output logicassign done = (state == byte3);endmodule

这篇关于HDLbits: Fsm ps2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/213153

相关文章

基于Verilog表达的FSM状态机

基于Verilog表达的FSM状态机 1 FSM1.1 Intro1.2 Why FSM?1.3 How to do 在这里聚焦基于Verilog的三段式状态机编程; 1 FSM 1.1 Intro 状态机是一种代码实现功能的范式;一切皆可状态机; 状态机编程四要素:– 1.状态State: 2.转态跳转Condition Jump: 3.行为Action: 4.次态–>现

有限状态机—— FSM(finite-state machine)

//有限状态机 finite-state machine #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #define TTY1 "/dev/tty1

HDLbits 刷题 -- Exams/m2014 q3

Consider the function f shown in the Karnaugh map below. Implement this function. d is don't-care, which means you may choose to output whatever value is convenient. 译:考虑下面卡诺图中显示的函数f。 实现这个函数。D是

[HDLBits] Simple wire

Create a module with one input and one output that behaves like a wire. module top_module( input in, output out );assign out = in; endmodule

[HDLBits] AND gate

Create a module that implements an AND gate. module top_module( input a, input b, output out );assign out=a&&b;endmodule

【STM32+HAL】三轴按键PS2摇杆

一、准备工作: 有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32+HAL】CUBEMX初始化配置 有关定时器触发ADC模式配置,详见【STM32+HAL】ADC采集波形实现 二、所用工具: 1、芯片: STM32F407VET6 2、CUBEMX 3、IDE: MDK-Keil软件 4、STM32F4xxHAL库 三、实现功能: 读取x,y轴的偏移量(

HDLbits 刷题 --Exams/m2014 q4i

Implement the following circuit: 实现以下电路: module top_module (output out);assign out = 1'b0;endmodule 运行结果:

HDLbits 刷题 --Always casez

学习: Build a priority encoder for 8-bit inputs. Given an 8-bit vector, the output should report the first (least significant) bit in the vector that is 1. Report zero if the input vector has no bits t

HDLbits 刷题 -- Alwaysblock2

学习: For hardware synthesis, there are two types of always blocks that are relevant: Combinational: always @(*)Clocked: always @(posedge clk) Clocked always blocks create a blob of combinational log

33---PS2-键盘鼠标电路设计

视频链接 PS2-键盘鼠标电路设计01_哔哩哔哩_bilibili PS2-键盘鼠标电路设计 1、PS/2简介 PS/2原是“personal 2”的意思,即“个人系统2”,是IBM公司在上个世纪80年代推出的一种个人电脑。 PS/2协议和接口最初由IBM公司开发并广泛使用的应用于键盘/鼠标的协议和接口。 PS/2是在较早之前,用于鼠标、键盘等设备。一般情况下,PS/2接口的鼠标为绿色