日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDLBits答案(16)_Verilog有限状态机(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Verilog有限狀態機(3)

HDLBits鏈接


前言

今天繼續更新狀態機小節的習題,本章主要編寫Lemmings Game部分。


題庫

題目描述10:

Game Lemmings1:有個小人左右走,它只有兩種狀態:向左走和向右走;左邊碰到東西之后它就向右走,右邊碰到東西之后它就向左走,兩邊都碰到東西就跟當前方向的反方向走;復位時小人向左走

Solution10:

module top_module(input clk,input areset, // Freshly brainwashed Lemmings walk left.input bump_left,input bump_right,output walk_left,output walk_right); // parameter LEFT=1'b0, RIGHT=1'b1;reg state, next_state;wire [1:0] bump;assign bump = {bump_left,bump_right};always @(*) begincase(state)LEFT:beginif((bump == 2'b10) || (bump == 2'b11))beginnext_state <= RIGHT;endelse beginnext_state <= LEFT;endendRIGHT:beginif((bump == 2'b01) || (bump == 2'b11))beginnext_state <= LEFT;endelse beginnext_state <= RIGHT;endendendcaseendalways @(posedge clk, posedge areset) beginif(areset)beginstate <= LEFT;endelse beginstate <= next_state;endend// Output logicassign walk_left = (state == LEFT);assign walk_right = (state == RIGHT);endmodule

題目描述11:

Game Lemmings2:有個小人左右走,它只有兩種狀態:向左走和向右走;左邊碰到東西之后它就向右走,右邊碰到東西之后它就向左走,兩邊都碰到東西就跟當前方向的反方向走;復位時小人向左走;

添加ground信號,ground=1時規則與上述規則相同;ground=0時,記錄當前走的方向,并將aaah信號置1,直到ground=1時,走與掉落之前相同的方向。

Solution11:

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'b0;parameter RIGHT = 2'b1;parameter AH_LEFT = 2'b10;parameter AH_RIGHT = 2'b11;reg [1:0] state,next_state;wire [1:0] bump;assign bump = {bump_left,bump_right};always @(*)begincase(state)LEFT:beginif(ground == 1'b0)beginnext_state <= AH_LEFT;endelse if((bump == 2'b10) || (bump == 2'b11))beginnext_state <= RIGHT;endelse beginnext_state <= LEFT;endendRIGHT:beginif(ground == 1'b0)beginnext_state <= AH_RIGHT;endelse if((bump == 2'b01) || (bump == 2'b11))beginnext_state <= LEFT;endelse beginnext_state <= RIGHT;endendAH_LEFT:beginif(ground == 1'b0)beginnext_state <= AH_LEFT;endelse beginnext_state <= LEFT;endendAH_RIGHT:beginif(ground == 1'b0)beginnext_state <= AH_RIGHT;endelse beginnext_state <= RIGHT;endendendcaseendalways@(posedge clk,posedge areset)beginif(areset)beginstate <= LEFT;endelse beginstate <= next_state;endendassign walk_left = (state == LEFT);assign walk_right = (state == RIGHT);assign aaah = ((state == AH_LEFT) | (state == AH_RIGHT));endmodule

題目描述12:

Game Lemmings3:有個小人左右走,它只有兩種狀態:向左走和向右走;左邊碰到東西之后它就向右走,右邊碰到東西之后它就向左走,兩邊都碰到東西就跟當前方向的反方向走;復位時小人向左走;

添加ground信號,ground=1時規則與上述規則相同;ground=0時,記錄當前走的方向,并將aaah信號置1,直到ground=1時,走與掉落之前相同的方向。

添加dig信號,ground=1時一直挖,ground=0時,進入aaah狀態,直到ground再次為1,方向與dig開始的方向相同。

優先級:fall>dig>switch direction

手繪狀態轉移圖:

Solution12:

module top_module(input clk,input areset, // Freshly brainwashed Lemmings walk left.input bump_left,input bump_right,input ground,input dig,output walk_left,output walk_right,output aaah,output digging ); parameter LEFT = 3'b0;parameter RIGHT = 3'b1;parameter DIG_LEFT = 3'b10;parameter DIG_RIGHT = 3'b11;parameter FALL_LEFT = 3'b100;parameter FALL_RIGHT = 3'b101;reg [2:0] state,next_state;wire [1:0] bump;assign bump = {bump_left,bump_right};always @(*)begincase(state)LEFT:beginif(ground == 1'b0)beginnext_state <= FALL_LEFT;endelse if(dig == 1'b1)beginnext_state <= DIG_LEFT;endelse if((bump == 2'b10) || (bump == 2'b11))beginnext_state <= RIGHT;endelse beginnext_state <= LEFT;endendRIGHT:beginif(ground == 1'b0)beginnext_state <= FALL_RIGHT;endelse if(dig == 1'b1)beginnext_state <= DIG_RIGHT;endelse if((bump == 2'b01) || (bump == 2'b11))beginnext_state <= LEFT;endelse beginnext_state <= RIGHT;endendDIG_LEFT:beginif(ground == 1'b0)beginnext_state <= FALL_LEFT;endelse beginnext_state <= DIG_LEFT;endendDIG_RIGHT:beginif(ground == 1'b0)beginnext_state <= FALL_RIGHT;endelse beginnext_state <= DIG_RIGHT;endendFALL_LEFT:beginif(ground == 1'b0)beginnext_state <= FALL_LEFT;endelse beginnext_state <= LEFT;endendFALL_RIGHT:beginif(ground == 1'b0)beginnext_state <= FALL_RIGHT;endelse beginnext_state <= RIGHT;endendendcaseendalways @(posedge clk,posedge areset)beginif(areset)beginstate <= LEFT;endelse beginstate <= next_state;endendassign walk_left = (state == LEFT);assign walk_right = (state == RIGHT);assign digging = ((state == DIG_LEFT) | (state == DIG_RIGHT));assign aaah = ((state == FALL_LEFT) | (state == FALL_RIGHT));endmodule

題目描述13:

Game Lemmings4:小人行動規則與上述規則相同,添加小人會die的規則:

如果小人fall超過20cycles,則當其接觸地面時直接die(未接觸地面時不會die) dig,fall,left和right輸出全部置零,直到reset信號來臨。

手繪狀態轉移圖:(Dead狀態少個自己到自己的狀態)

Solution13:

module top_module(input clk,input areset, // Freshly brainwashed Lemmings walk left.input bump_left,input bump_right,input ground,input dig,output walk_left,output walk_right,output aaah,output digging ); parameter LEFT = 3'b0;parameter RIGHT = 3'b1;parameter DIG_LEFT = 3'b10;parameter DIG_RIGHT = 3'b11;parameter FALL_LEFT = 3'b100;parameter FALL_RIGHT = 3'b101;parameter DEAD = 3'b110;parameter SPLATTER = 3'b111;reg [2:0] state,next_state;reg [4:0] Cycle_Count;wire [1:0] bump;assign bump = {bump_left,bump_right};always @(*)begincase(state)LEFT:beginif(ground == 1'b0)beginnext_state <= FALL_LEFT;endelse if(dig == 1'b1)beginnext_state <= DIG_LEFT;endelse if((bump == 2'b10) || (bump == 2'b11))beginnext_state <= RIGHT;endelse beginnext_state <= LEFT;endendRIGHT:beginif(ground == 1'b0)beginnext_state <= FALL_RIGHT;endelse if(dig == 1'b1)beginnext_state <= DIG_RIGHT;endelse if((bump == 2'b01) || (bump == 2'b11))beginnext_state <= LEFT;endelse beginnext_state <= RIGHT;endendDIG_LEFT:beginif(ground == 1'b0)beginnext_state <= FALL_LEFT;endelse beginnext_state <= DIG_LEFT;endendDIG_RIGHT:beginif(ground == 1'b0)beginnext_state <= FALL_RIGHT;endelse beginnext_state <= DIG_RIGHT;endendFALL_LEFT:beginif((ground == 1'b0) && (Cycle_Count < 5'd20))beginnext_state <= FALL_LEFT;endelse if((ground == 1'b0) && (Cycle_Count >= 5'd20))beginnext_state <= SPLATTER;endelse beginnext_state <= LEFT;endendFALL_RIGHT:beginif((ground == 1'b0) && (Cycle_Count < 5'd20))beginnext_state <= FALL_RIGHT;endelse if((ground == 1'b0) && (Cycle_Count >= 5'd20))beginnext_state <= SPLATTER;endelse beginnext_state <= RIGHT;endendSPLATTER:beginif(ground == 1'b1)beginnext_state <= DEAD;endelse beginnext_state <= SPLATTER;endendDEAD:beginnext_state <= DEAD;endendcaseendalways @(posedge clk,posedge areset)beginif(areset)beginstate <= LEFT;endelse beginstate <= next_state;endendalways @(posedge clk,posedge areset)beginif(areset)beginCycle_Count <= 5'd0;endelse if((next_state == FALL_LEFT) || (next_state == FALL_RIGHT)) beginCycle_Count <= Cycle_Count + 1'b1;endelse beginCycle_Count <= 5'd0;endendassign walk_left = (state == LEFT);assign walk_right = (state == RIGHT);assign aaah = ((state == FALL_LEFT) || (state == FALL_RIGHT) || (state == SPLATTER));assign digging = ((state == DIG_LEFT) || (state == DIG_RIGHT));endmodule

結語

今天更新的幾道旅鼠題非常有意思,大家可以先自己嘗試。代碼若有問題的話可以與我交流。

總結

以上是生活随笔為你收集整理的HDLBits答案(16)_Verilog有限状态机(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜电影在线播放 | 欧美啪啪一区 | 国产不卡av在线播放 | 黄色大片国产 | 欧美啪啪一区二区 | 日韩综合久久 | 欧美图片一区二区 | 老司机午夜在线 | 日韩女优在线播放 | 91资源在线观看 | 国产精品午夜福利视频234区 | 亚洲一区二三区 | 噼里啪啦免费高清看 | 日韩免费观看视频 | 亚洲网站免费观看 | 老司机在线看片 | 色噜噜在线观看 | 亚洲日b视频 | 欧美成人h版在线观看 | 蜜桃av在线看 | 欧美性猛交一区二区三区精品 | 亚洲欧美网 | 欧美一二三区视频 | 亚洲欧美综合一区 | 国产清纯白嫩初高中在线观看性色 | 久热热 | 67194av| 叶爱在线 | 久久久精品视 | 亚洲欧洲久久 | 伊人丁香| 欲色av| 在线视频日韩欧美 | 日韩一级片中文字幕 | 葵司免费一区二区三区四区五区 | 免费成年人视频 | 国产手机看片 | 欧美一级特黄aaaaaa大片在线观看 | 国产精品免费一区二区三区在线观看 | 性开放的欧美大片 | 嫩草视频免费观看 | 国产乡下妇女做爰视频 | 亚洲欧美另类视频 | 色香蕉av| 一区二区三区视频免费在线观看 | 怡红院男人天堂 | 亚洲欧美另类一区 | 韩国三级在线 | 欧美精品一区二区免费 | 欧美日韩在线国产 | 亚洲视频在线观看网站 | 亚洲色图影院 | 中文字幕日韩欧美 | 一区二区在线观看av | www.夜夜爽| 成人免费毛片网 | 好大好爽好舒服 | 女人做爰全过程免费观看美女 | 国产成a人亚洲精v品在线观看 | 精品视频在线一区二区 | 国产亚洲成人av | 国产精品爽爽久久 | 日本黄色片免费看 | 一曲二曲三曲在线观看中文字幕动漫 | caoprom超碰 | av55 | 免费高清av在线看 | 欧美综合亚洲 | 久色影视 | 丝袜国产视频 | 日韩有码第一页 | 国产美女性生活 | 国产亚州av| 欧美精品999| a成人在线 | 99干99| 亚欧成人精品一区二区 | 青青草原国产在线观看 | 日本五十熟hd丰满 | 日韩亚洲欧美综合 | 国产黄色自拍 | 午夜快播 | 黄色小视频在线 | 国产无遮挡又黄又爽免费网站 | 亚洲一二三四区 | 在线国产精品一区 | 一级一级黄色片 | 午夜精品福利在线观看 | 成人深夜视频 | 国产丝袜久久 | 久久青青草原亚洲av无码麻豆 | 国产在线观看xxx | 外国av在线 | 亚洲一区二区三区免费看 | 观看毛片| 欧美精品色婷婷五月综合 | 黄瓜视频污在线观看 | 91九色porn| 丰满人妻熟妇乱偷人无码 | aa免费视频 |