【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

2023-11-13

目录

写在前面

Finite State Manchines

2014 q3c

m2014 q6b

m2014 q6c

m2014 q6

2012 q2fsm

2012 q2b

2013 q2afsm

2013 q2bfsm


写在前面

HDLBits 刷题来到了最为重要的一部分---有限状态机,都说 Verilog 设计的精髓就是状态机的设计,可见状态机设计的重要性,通过三十多道的状态机的练习,可以更加熟悉状态机设计的要点,通常都设计为三段式,这样设计的状态机层次清晰且易于设计,时序上更为易懂。以下的解题方法不一定为最佳解决方案,有更好的方法欢迎提出,共同学习,共同进步!

Finite State Manchines

2014 q3c

给定如下所示的状态分配表,实现逻辑函数 Y[0] 和 z。

module top_module (
    input        clk,
    input [2:0]  y,
    input        x,
    output       Y0,
    output       z
);

//状态申明
parameter  A  =  3'b000;
parameter  B  =  3'b001;
parameter  C  =  3'b010;
parameter  D  =  3'b011;
parameter  E  =  3'b100;

reg  [2:0]   state;


always @(*) begin
	case(y)
		A: begin
			if (x) begin
				state = B;
			end
			else begin
				state = A;
			end
		end
		B: begin
			if (x) begin
				state = E;
			end
			else begin
				state = B;
			end
		end
		C: begin
			if (x) begin
				state = B;
			end
			else begin
				state = C;
			end
		end
		D: begin
			if (x) begin
				state = C;
			end
			else begin
				state = B;
			end
		end
		E: begin
			if (x) begin
				state = E;
			end
			else begin
				state = D;
			end
		end
		default: begin
			state = A;
		end
	endcase
end

//状态机第三段,结果输出,组合逻辑
assign Y0 = state[0];
assign z = (y==D) || (y==E);

endmodule

m2014 q6b

考虑下面显示的状态机,它有一个输入 w 和一个输出 z

希望使用三个触发器和状态代码 y[3:1] = 000, 001, ..., 101 分别用于状态 A、B、...、F 来实现 FSM。显示此 FSM 的状态分配表。推导触发器 y[2] 的下一个状态表达式。只实现 y[2] 的下一个状态逻辑。

module top_module (
    input  [3:1]   y,
    input          w,
    output         Y2
);

//状态定义
parameter   A  =  3'b000;
parameter   B  =  3'b001;
parameter   C  =  3'b010;
parameter   D  =  3'b011;
parameter   E  =  3'b100;
parameter   F  =  3'b101;

reg  [3:1]   next_state;

always @(*) begin
	case(y[3:1])
		A: begin
			if (w) begin
				next_state = A;
			end
			else begin
				next_state = B;
			end
		end
		B: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = C;
			end
		end
		C: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = E;
			end
		end
		D: begin
			if (w) begin
				next_state = A;
			end
			else begin
				next_state = F;
			end
		end
		E: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = E;
			end
		end
		F: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = C;
			end
		end
		default: begin
			next_state = A;
		end
	endcase
end

assign Y2 = next_state[2];

endmodule

m2014 q6c

考虑下面显示的状态机,它有一个输入 w 和一个输出 z

对于此部分,假设一个单热代码分别与状态赋值 'y[6:1] = 000001, 000010, 000100, 001000, 010000, 100000,...,, 100000 一起使用。

为下一状态信号 Y2 和 Y4 编写逻辑表达式。(通过假设独热编码的检查来推导逻辑方程。测试平台将使用非独热输入进行测试,以确保您不会尝试执行更复杂的操作)。

module top_module (
    input  [6:1]    y,
    input           w,
    output          Y2,
    output          Y4
);

assign Y2 = ~w & y[1];
assign Y4 = (w&y[2]) | (w&y[3]) | (w&y[5]) | (w&y[6]); 

endmodule

m2014 q6

考虑下面显示的状态机,它有一个输入 w 和一个输出 z

module top_module (
    input      clk,
    input      reset,     // synchronous reset
    input      w,
    output     z
);

//状态申明
parameter  A  =  6'b000001;
parameter  B  =  6'b000010;
parameter  C  =  6'b000100;
parameter  D  =  6'b001000;
parameter  E  =  6'b010000;
parameter  F  =  6'b100000;

//定义现态和次态
reg  [5:0]    state;
reg  [5:0]    next_state;

//状态机第一段,状态初始化,时序逻辑非阻塞赋值
always @(posedge clk) begin
	if (reset) begin
		state <= A;
	end
	else begin
		state <= next_state;
	end
end

//状态机第二段,状态跳转,阻塞赋值
always @(*) begin
	next_state = state;
	case(state)
		A: begin
			if (w) begin
				next_state = A;
			end
			else begin
				next_state = B;
			end
		end
		B: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = C;
			end
		end
		C: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = E;
			end
		end
		D: begin
			if (w) begin
				next_state = A;
			end
			else begin
				next_state = F;
			end
		end
		E: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = E;
			end
		end
		F: begin
			if (w) begin
				next_state = D;
			end
			else begin
				next_state = C;
			end
		end
	endcase
end

//状态机第三段,结果输出,组合逻辑
assign z = (state==E | state==F);

endmodule

2012 q2fsm

编写表示此 FSM 的完整 Verilog 代码。对状态表和状态触发器使用单独的 always 块。描述 FSM 输出,称为 z,使用连续赋值语句或 always 块。

module top_module (
    input      clk,
    input      reset,   // Synchronous active-high reset
    input      w,
    output     z
);

//状态申明
parameter  A  =  6'b000001;
parameter  B  =  6'b000010;
parameter  C  =  6'b000100;
parameter  D  =  6'b001000;
parameter  E  =  6'b010000;
parameter  F  =  6'b100000;

//定义现态和次态
reg  [5:0]    state;
reg  [5:0]    next_state;

//状态机第一段,状态初始化,时序逻辑非阻塞赋值
always @(posedge clk) begin
	if (reset) begin
		state <= A;
	end
	else begin
		state <= next_state;
	end
end

//状态机第二段,状态跳转,阻塞赋值
always @(*) begin
	next_state = state;
	case(state)
		A: begin
			if (w) begin
				next_state = B;
			end
			else begin
				next_state = A;
			end
		end
		B: begin
			if (w) begin
				next_state = C;
			end
			else begin
				next_state = D;
			end
		end
		C: begin
			if (w) begin
				next_state = E;
			end
			else begin
				next_state = D;
			end
		end
		D: begin
			if (w) begin
				next_state = F;
			end
			else begin
				next_state = A;
			end
		end
		E: begin
			if (w) begin
				next_state = E;
			end
			else begin
				next_state = D;
			end
		end
		F: begin
			if (w) begin
				next_state = C;
			end
			else begin
				next_state = D;
			end
		end
		default: begin
			next_state = A;
		end
	endcase
end

//状态机第三段,结果输出,组合逻辑
assign z = (state==E | state==F);

endmodule

2012 q2b

假设一个独热代码与状态赋值 y[5:0] = 000001(A)、 000010(B)、 000100(C)、 001000(D)、 010000(E)、 100000(F)

为信号Y1编写一个逻辑表达式,它是状态触发器y[1]的输入。

为信号Y3编写一个逻辑表达式,它是状态触发器y[3]的输入。

(通过假设一个热编码的检查来推导逻辑方程。测试平台将使用非一个热输入进行测试,以确保您不会尝试执行更复杂的操作)。

2013 q2afsm

此 FSM 充当仲裁器电路,通过三个请求设备控制对某种类型资源的访问。每个设备通过设置信号 r[i] = 1 来请求资源,其中 r[i] 为 r[1]r[2] 或 r[3]。每个 r[i] 是 FSM 的输入信号,代表三个器件之一。只要没有请求,FSM 就会保持在状态 A 中。当发生一个或多个请求时,FSM 决定哪个设备接收使用资源的授权,并更改为将该设备的 g[i] 信号设置为 1 的状态。每个 g[i] 都是 FSM 的一个输出。有一个优先级系统,因为设备 1 的优先级高于设备 2,设备 3 的优先级最低。因此,例如,仅当设备 3 是 FSM 处于状态 A 时发出请求的唯一设备时,它才会收到授权。一旦设备 i 被 FSM 授予授权,只要其请求 r[i] = 1,该设备就会继续接收授权。

编写表示此 FSM 的完整 Verilog 代码。对状态表和状态触发器使用单独的 always 块,就像在讲座中所做的那样。描述 FSM 输出 g[i],使用连续赋值语句或 always 块。

module top_module (
    input          clk,
    input          resetn,    // active-low synchronous reset
    input  [3:1]   r,         // request
    output [3:1]   g          // grant
); 

//状态定义
parameter  A  =  4'b0001;
parameter  B  =  4'b0010;
parameter  C  =  4'b0100;
parameter  D  =  4'b1000;

//定义现态和次态
reg  [3:0]   state;
reg  [3:0]   next_state;

//状态机第一段,状态初始化,时序逻辑非阻塞赋值
always @(posedge clk) begin
	if (!resetn) begin
		state <= A;
	end
	else begin
		state <= next_state;
	end
end

//状态机第二段,状态跳转,非阻塞赋值
always @(*) begin
	next_state = state;
	case(state)
		A: begin
			if (r[1]) begin
				next_state = B;
			end
			else if (~r[1] & r[2]) begin
				next_state = C;
			end
			else if (~r[1] & ~r[2] & r[3]) begin
				next_state = D;
			end
			else begin
				next_state = A;
			end
		end
		B: begin
			if (~r[1]) begin
				next_state = A;
			end
			else begin
				next_state = B;
			end
		end
		C: begin
			if (~r[2]) begin
				next_state = A;
			end
			else begin
				next_state = C;
			end
		end
		D: begin
			if (~r[3]) begin
				next_state = A;
			end
			else begin
				next_state = D;
			end
		end
		default: begin
			next_state = A;
		end
	endcase
end

//状态机第三段,结果输出,组合逻辑
assign g[1] = state==B;
assign g[2] = state==C;
assign g[3] = state==D;

endmodule

2013 q2bfsm

考虑一个用于控制某种类型电机的有限状态机。FSM具有来自电机的输入xy,并产生控制电机的输出fg。还有一个称为clk的时钟输入和一个称为resetn的复位输入。

密克罗尼西亚联邦必须按如下方式工作。只要置位复位输入,FSM 就会保持开始状态,称为状态 A。当复位信号被解除置位时,在下一个时钟边沿之后,FSM必须将输出f设置为1,持续一个时钟周期。然后,FSM 必须监视 x 输入。当 x 在三个连续的时钟周期中生成值 1, 0, 1 时,应在下一个时钟周期中将 g 设置为 1。在保持 g = 1 的同时,FSM 必须监视 y 输入。如果 y 在最多两个时钟周期内具有值 1,则 FSM 应永久保持 g = 1(即,直到重置)。但是,如果 y 在两个时钟周期内未变为 1,则 FSM 应永久设置 g = 0(直到重置)。

module top_module (
    input         clk,
    input         resetn,    // active-low synchronous reset
    input         x,
    input         y,
    output        f,
    output        g
); 

//状态定义

parameter   START  =  9'b000000001;
parameter   OUT_F  =  9'b000000010;
parameter   X_1    =  9'b000000100;
parameter   X_2    =  9'b000001000;
parameter   X_3    =  9'b000010000;
parameter   OUT_G  =  9'b000100000;
parameter   G_1    =  9'b001000000;
parameter   WAIT   =  9'b010000000;
parameter   G_0    =  9'b100000000;

//现态和次态
reg  [8:0]   state;
reg  [8:0]   next_state;

//状态机第一段,状态初始化,时序逻辑非阻塞赋值
always @(posedge clk) begin
	if (!resetn) begin
		state <= START;
	end
	else begin
		state <= next_state;
	end
end

//状态机第二段,状态跳转,阻塞赋值
always @(*) begin
	next_state = state;
	case(state)
		START: begin
			next_state = OUT_F;
		end
		OUT_F: begin
			next_state = X_1;
		end
		X_1: begin
			if (x) begin
				next_state = X_2;
			end
			else begin
				next_state = X_1;
			end
		end
		X_2: begin
			if (x) begin
				next_state = X_2;
			end
			else begin
				next_state = X_3;
			end
		end
		X_3: begin
			if (x) begin
				next_state = OUT_G;
			end
			else begin
				next_state = X_1;
			end
		end
		OUT_G: begin
			if (y) begin
				next_state = G_1;
			end
			else begin
				next_state = WAIT;
			end
		end
		WAIT: begin
			if (y) begin
				next_state = G_1;
			end
			else begin
				next_state = G_0;
			end
		end
		G_1: begin
			next_state = G_1;
		end
		G_0: begin
			next_state = G_0;
		end
		default: begin
			next_state = START;
		end
	endcase
end

//状态机第三段,结果输出,组合逻辑
assign f = state==OUT_F;
assign g = (state==OUT_G) | (state==G_1) | (state==WAIT);

endmodule
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34 的相关文章

  • 使用数据流模型的T触发器

    我正在尝试模拟 t flipflop 的工作 timescale 1ns 1ps module t flipflop input t input clk input clear output q output qbar wire sbar
  • 【ZYNQ学习】PL第一课

    这节课讲什么 这节课的名字本来是想写为LED 但这一课里除了LED也有按键 又想换为GPIO控制 但关于PL的GPIO控制 不应该这么草率和简单 而且这一课有很多和ZYNQ或者PL关联性不强的东西要说 所以我写了删删了写改了好几遍 终于定为
  • 「Verilog学习笔记」 Johnson Counter

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module JC counter input clk input rst n output reg 3 0
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • Verilog 中总是后面跟着 #(...) pound 是什么意思?

    在一个简单的时钟生成器示例中 我看到以下代码 always cycle 2 clk clk 我以前总是见过 但没见过井号 我试图在文档中找到它 但我所能找到的只是一些对 实值端口 的引用 没有进一步的阐述 这是一个延迟操作 它本质上只是读取
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Verilog 错误:必须连接到结构网络表达式

    我收到错误 output or inout port Qout must be connected to a structural net expression 我评论了下面代码中发生错误的行 代码被修剪 压缩 我搜索了答案 似乎我无法将输
  • 从测试台访问 uvm_config_db 的最佳方式?

    我想在我的顶级测试平台中创建一个时钟 其周期可以通过测试进行控制 我所做的是将周期设置到 uvm config db 中并将其返回到测试台中 我必须输入 1 以确保构建阶段已完成 否则 get 返回错误值 module testbench
  • 如何将时钟门映射到技术库单元

    我的设计中有以下时钟门 module my clkgate clko clki ena Clock gating latch triggered on the rising clki edge input clki input ena ou
  • 在 Verilog 中判断总线是否包含单个 x 的最佳方法是什么?

    我有一个监控总线的测试台 总线内的一些信号 位 可以是 1 bx 由于多种原因 我需要知道总线内是否有任何信号是 1 bx 如果总线包含任何 x 测试 不用于综合 仅用于模拟目的 的最佳方法是什么 我曾希望我可以使用减少或然后使用 但这似乎
  • 在 Verilog 设计中产生时钟故障

    我正在使用 Verilog 设计芯片 我有一个 3 位计数器 我希望当计数器处于第 8 次循环时 应该有一个时钟故障 之后就可以正常工作了 在 Verilog 设计中产生时钟故障的可能方法是什么 在时钟信号上注入毛刺的一种方法是使用forc
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • 如何在Verilog中将二维数组中的所有位设置为0?

    我构建了一个 8 2bits 数组来表示 Verilog 中的一块内存 reg 1 0 m 0 7 该存储器有一个复位信号 如果复位为1 则该存储器中的所有位都应重置为0 但是我不知道如何以简洁的方式设置m的所有位 因为如果有数百个内存中有
  • Verilog 中的大括号是什么意思?

    我很难理解 Verilog 中的以下语法 input 15 0 a 16 bit input output 31 0 result 32 bit output assign result 16 a 15 a 15 0 我知道assign语句
  • 在测试台中显示信号名称/文字

    是否可以在 Verilog 中引用 显示信号的名称 文字 对于在 Verilog 测试台中创建通用信号检查功能来说 这将是一个有用的功能 我知道使用 display 时 m 将打印信号的范围 是否有显示信号名称的等效项 在 Verilog
  • VIM 高亮匹配开始/结束

    我正在尝试找到一个插件 它将突出显示与 Verilog 匹配的开始 结束语句 VIM 可以使用花括号 方括号 但不能使用它的开始 结束 我希望 VIM 突出显示正确的开始到正确的结束 在我看来 最好的选择是使用 matchit 该脚本是 v
  • 如何修复实例上的错误:未定义的变量 B?

    我想编译此 Verilog 代码 但在实例中出现错误B模块中的MultiP module error 1 Undefined variable B error 2 near Adder1 syntax error unexpected ID
  • 为什么我们在FGPA / VHDL / VIVADO中使用REG?

    我正在使用 Xilinx 的 vivado 在 verilog 中进行编程 我想知道为什么我们使用某些输出reg 例如reg 3 0 encoder output我们使用它是因为我们的 16 到 4 编码器有 4 个输出 对吧 我假设我们使
  • Verilog:如何取绝对值

    在 verilog 中 我有一个二进制值数组 如何取减去值的绝对值 Verilog代码 module aaa clk input clk reg 7 0 a 1 9 reg 7 0 s 1 9 always posedge clk begi

随机推荐

  • 详解多线程中的互斥量;mutex头文件,lock与unlock ,lock_guard,unique_lock

    互斥量 假如你有一张水卡 要放在卡槽才能出水 现在你和小明都要热水 于是你接一下热水 用自己的水卡 他又接一下热水 巧了 两人都接到泡面的热水 互斥量是在Mutex的头文件中 并发的优点 可以极的减少时间 并且能够多个进程的运行东西 并发的
  • pca处理后建模 sklearn_汽油辛烷值建模

    题目来源 2020年研究生数学建模竞赛B题 小编第一次做研究生的竞赛题目 我的整体感受 首当其冲的是 关于题的描述很多 每一个题的页数都有好几页 说下关于B题 汽油辛烷值建模 的思考 就B题的难易程度来说 这个题太容易了 不论从数据量 还是
  • 26.kotlin的get和set方法

    1 kotlin类中的get和set方法 fun main args Array
  • 数据结构--二叉树进阶

    因为我们之前在学习数据结构的时候使用的是C语言 但是并不是所有的数据结构都适合使用C语言学习 如今我们了解了C 的基础语法 具备了学习这些稍微难一点的数据结构的前提 所以我们再次回顾数据结构 使用C 这一更加先进的武器 来解决更加复杂的问题
  • 线程池的几种常见的创建的方式

    每次启动一个线程都要创建一个新的浪费资源的 还有时候线程过多的时候回造成服务器崩溃 所以有了线程池的诞生 线程池是用来管理线程的 下面是常用的几种创建线程的方式 一 创建大小不固定的线程池 这是一个线程类 public class Thre
  • 2020-11-26【路灯】动态规划

    2020 11 26 路灯 动态规划 题目描述 一条长l的笔直的街道上有n个路灯 若这条街的起点为0 终点为l 第i个路灯坐标为ai 每盏灯可以覆盖到的最远距离为d 为了照明需求 所有灯的灯光必须覆盖整条街 但是为了省电 要使这个d最小 请
  • SpringCloud Ribbon客服端负载均衡

    Ribbon与Nginx区别 服务器端负载均衡Nginx nginx是客户端所有请求统一交给nginx 由nginx进行实现负载均衡请求转发 属于服务器端负载均衡 既请求有nginx服务器端进行转发 客户端负载均衡Ribbon Ribbon
  • 文件的读写基本操作

    一 文件是计算机中数据持久化存储的表现形式 读写文件标准操作格式1 1 打开文件 file1 open 文件名 读写模式 2 操作文件 3 关闭文件 file1 close 文件操作完毕后必须关闭 否则长期保持对文件的连接状态 造成内存溢出
  • 龙书笔记(13)

    chap 13 地形绘制基础 主要是创建一个 地形类 Terrain 1 高度图 其实是一个数组 每个元素都指定了地形方格中某一顶点的高度值 每个元素只分配了1个字节的存储空间 当加载到程序时 重新分配 浮点型 或 整型 数据来存储这些高度
  • CentOS7开机时的菜单选项及时间的修改

    转载记录 以防丢失 一 在CentOS更新后 并不会自动删除旧内核 所以在启动选项中会有多个内核选项 可以手动使用以下命令删除多余的内核 正常下 第一个选项正常启动 第二个选项急救模式启动 系统出项问题不能正常启动时使用并修复系统 1 查看
  • 记录一下树莓派打内核补丁cjktty的天坑

    首先cjktty的下载地址在此 大家根据自己的linux内核去选择 https github com zhmars cjktty patches 下载好了补丁文件之后 需要下载完整的linux内核 是的完整的 https github co
  • ahut 月赛1

    心得 一点一点理解 对于一段要学习的代码 跟着写下来 理解一点写一点 对于一道题目 用记事本 看题目 看一句题目 用自己的话概括一句 写在记事本上 并将自己的 想法一并写下来 这样做下来 心会很平静 你会发现 理解一段代码并不费力 解决一道
  • Cookie、cookie与session区别

    Cookie Cookie 有时也用其复数形式 Cookies 类型为 小型文本文件 是某些网站为了辨别用户身份 进行Session跟踪而储存在用户本地终端上的数据 通常经过加密 由用户客户端计算机暂时或永久保存的信息 Cookie有什么用
  • 一个字节造成的巨大性能差异——SQL Server存储结构

    今天同事问了我一个SQL的问题 关于SQL Server内部存储结构的 我觉得挺有意思 所以写下这篇博客讨论并归纳了一下 问题是这样的 首先我们创建两张表 一张表的列长度是4039字节 另一张表的长度是4040字节 他们就只有一个字节的差距
  • 阿里巴巴 cola设计架构

    https github com alibaba COLA
  • leetcode 21 合并两个有序链表 (c++和python)

    目录 题目描述 解题思路 C 代码 python代码 题目描述 将两个有序链表合并为一个新的有序链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 示例 输入 1 gt 2 gt 4 1 gt 3 gt 4 输出 1 gt 1 gt
  • golang的chan(管道)

    golang的chan翻译成中文就是管道 顾名思义 就是管道的一端用来读 另一端用来写 这与write和read函数的性质是非常相似的 比如说管道中没数据 就会发生读阻塞 管道中数据是满的 就会发生写阻塞 又类似生产者和消费者 也就是必须有
  • 大学生python实验心得体会_大学生实训心得体会3篇

    转眼间为期两个星期的实训就结束了 但是安利公司的物流配送 黄埔港 益邦物流公司 南沙港以及学校里面的航海模拟实验中心 轮机实训实验楼这些实训过程仍历历在目 以下是小编整理的大学生实训心得体会 欢迎阅读 大学生实训心得体会1 通过实训中心老师
  • 微信小程序-flex布局:垂直、水平方向-自动填充满剩余空间

    在微信小程序项目中经常需要将水平或垂直方向分成两大部分 一部分内容宽度或高度固定 剩余的一部分需填充满剩余空间 那么 该怎么快速解决这类布局 效果图如下 垂直方向 水平方向 我个人比较喜欢使用flex布局 面对此类布局 最先想到的也是fle
  • 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

    目录 写在前面 Finite State Manchines 2014 q3c m2014 q6b m2014 q6c m2014 q6 2012 q2fsm 2012 q2b 2013 q2afsm 2013 q2bfsm 写在前面 HD