FPGA - 231115 - 第五章 - Verilog 有限状态机

本文详细介绍了如何使用Verilog语言在FPGA中设计Moore和Mealy型状态机,以及在饮料售货机应用中的具体实现,涉及状态转移、输出逻辑和错误处理等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • TAG - F P G A 、 V e r i l o g 、有限状态机 FPGA、Verilog、有限状态机 FPGAVerilog、有限状态机

  • Moore 莫尔型:输出只依赖于状态而不依赖于其输入信号

  • Mealy 米里型:输出不仅依赖状态而且依赖于它的输入

  • //

  • 竞争冒险

  • //

  • 二进制码

  • BCD码(Binary-Coded Decimal): 用4位二进制表示一个十进制数,直观但浪费空间。

  • 格雷码(Gray Code): 相邻数仅有一个位不同,用于减少数字转换时的误差。

  • 独热码(One-Hot Code): N位二进制中只有一个位为1,用于表示N个状态,具备容错性。

  • //

  • 序列 10010 检测器

// Moore
module Check_10010_Moore(
	input CLK,CLR_,in,
	output reg out
);

parameter s0 = 4'b 0000;
parameter s1 = 4'b 0001;
parameter s2 = 4'b 0010;
parameter s3 = 4'b 0011;
parameter s4 = 4'b 0100;
parameter s5 = 4'b 0101;

reg [3:0] now,next;

// now
always @(posedge CLK or negedge CLR_) begin
	if (!CLR_) 	now = s0;
	else		now = next;
end

// next
always @(now or in or CLR_) begin
	if (!CLR_) next = s0;
	else begin
		case (now) // next 只取决于输入 in,常量 s 仅表示当前处在的阶段/状态
			s0: next = in==1 ? s1 : s0 ; // 0 -> 1 : 0
			s1: next = in==0 ? s2 : s1 ; // 1 -> 10 : 1
			s2: next = in==0 ? s3 : s1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值