Lemmings 2
1.Decade counter2.Four-bit binary counter3.Decade counter again4.Slow decade counter5.Counter 1-126.Counter 10007.4-digit decimal counter8.12-hour clock9.Hdlbits博文分布10.4-bit shift register11.Left/right rotator12.Left/right arithmetic shift by 1 or 813.5-bit LFSR14.3-bit LFSR15.32-bit LFSR16.Shift register17.Shift register(2)18.3-input LUT19.Rule 9020.Rule 11021.Conway's Game of Life 16x1622.Simple FSM1(asynchronous reset)23.Simple FSM1(synchronous reset)24.Simple FSM2(asynchronous reset)25.Simple FSM2(synchronous reset)26.Simple state transition 327.Simple one-hot state transition 328.Simple FSM 3(asynchronous reset)29.Simple FSM 3(synchronous reset)30.Design a Moore FSM31.Lemmings 1
32.Lemmings 2
33.Lemmings 334.Lemmings 435.One-hot FSM36.PS/2 packet parser37.PS/2 packet parser and datapath38.Serial receiver39.Serial receiver and datapath40.Serial receiver with parity checking41.Sequence recognition42.Q8:Design a Mealy FSM43.Q5a:Serial two's complementer(Moore FSM)44.Q5b:Serial two's complementer(Moore FSM)45.Q3a:FSM46.Q3b:FSM47.Q3c:FSM logic48.Q6b:FSM next-state logic49.Q6c:FSM next-state logic50.Q6:FSM51.Q2a:FSM52.Q2:One-hot FSM equations53.Q2a: FSM54.Q2b:Another FSM55.Counter with period 100056.4-bit shift register and down counter57.FSM:Sequence 1101 recognizer58.FSM:Enable shift register59.FSM:The complete FSM60.The complete timer61.FSM:One-hot logic equations62.UARTSee also: Lemmings1.
In addition to walking left and right, Lemmings will fall (and presumably go "aaah!") if the ground disappears underneath them.
In addition to walking left and right and changing direction when bumped, when ground=0, the Lemming will fall and say "aaah!". When the ground reappears (ground=1), the Lemming will resume walking in the same direction as before the fall. Being bumped while falling does not affect the walking direction, and being bumped in the same cycle as ground disappears (but not yet falling), or when the ground reappears while still falling, also does not affect the walking direction.
Build a finite state machine that models this behaviour.
参见:旅鼠1。
除了向左和向右走之外,如果下面的地面消失,旅鼠还会摔倒(大概会“啊啊!”)。
除了左右行走和撞到时改变方向外,当地面=0时,旅鼠还会摔倒并说“啊!当地面重新出现(地面=1)时,旅鼠将恢复与坠落前相同的方向行走。跌倒时被撞不会影响行走方向,与地面消失(但尚未跌倒)相同的周期被撞,或者地面在跌倒时重新出现时,也不会影响行走方向。
构建一个有限状态机来模拟这种行为。
题目网站
module top_module(
input clk,
input areset, // Freshly brainwashed Lemmings walk left.
input bump_left,
input bump_right,
input ground,
output walk_left,
output walk_right,
output aaah );
parameter LEFT=2'b00,RIGHT=2'b01,LEFT_F=2'b10,RIGHT_F=2'b11;
reg [3:0]state,next_state;
wire [1:0]bump;
assign bump={bump_left,bump_right};
always@(*)begin
case(state)
LEFT:begin
if(ground==1'b0)begin
next_state=LEFT_F;
end
else if(ground==1'b1)begin
if(bump==2'b11||bump==2'b10)begin
next_state=RIGHT;
end
else begin
next_state=LEFT;
end
end
end
RIGHT:begin
if(ground==1'b0)begin
next_state=RIGHT_F;
end
else if(ground==1'b1)begin
if(bump==2'b11||bump==2'b01)begin
next_state=LEFT;
end
else begin
next_state=RIGHT;
end
end
end
LEFT_F:begin
if(ground==1'b0)begin
next_state=LEFT_F;
end
else if(ground==1'b1)begin
next_state=LEFT;
end
end
RIGHT_F:begin
if(ground==1'b0)begin
next_state=RIGHT_F;
end
else if(ground==1'b1)begin
next_state=RIGHT;
end
end
endcase
end
always@(posedge clk,posedge areset)begin
if(areset)begin
state<=LEFT;
end
else begin
state<=next_state;
end
end
assign walk_left = (state == LEFT);
assign walk_right = (state == RIGHT);
assign aaah=(state==LEFT_F||state==RIGHT_F);
endmodule
这个题目如果有状态机图,会好些很多,因为实现的方法有很多种。
自己的写法在波形图中总是有一条不匹配,所以借鉴了这个写法
CSDN写法
另外,开始逐渐复杂的状态转换图也让我想去找到一款高效的状态转换绘图软件,暂时找到了如下:
一款用于绘制状态机转换图和流程图的web在线绘图工具
有时间的话,会再做一次详细的介绍和尝试
合集:
Verilog学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理