哈工大数电大作业三模式状态机.docx
- 文档编号:3417275
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:11
- 大小:98.57KB
哈工大数电大作业三模式状态机.docx
《哈工大数电大作业三模式状态机.docx》由会员分享,可在线阅读,更多相关《哈工大数电大作业三模式状态机.docx(11页珍藏版)》请在冰豆网上搜索。
哈工大数电大作业三模式状态机
HarbinInstituteofTechnology
三模式逻辑控制电路
课程名称:
数字电子技术基础
院系:
电气学院
班级:
姓名:
学号:
哈尔滨工业大学
1、设计要求
利用VerilogHDL设计一个逻辑控制电路,用于对某备进行模式切换控制,设备模式共三种,控制方式为:
a)直通模式:
高电平为直通有效,接地为直通无效;
b)跳频模式:
接地为跳频模式有效,高电平跳频无效;
c)调谐模式:
接地为调谐模式有效,高电平调谐无效。
设备的同一时刻只有且必须有一个模式有效,其他两个无效。
为防止同时个模式有效,模式切换之间应有较小的延时,利用按键作为三种模式切换输入(按键最好有消除抖动的措施)
2设计内容
设计方案
设计一个三状态的状态机,分别对应a、b、c三种模式,change作为模式切换变量,din作为输出控制变量。
考虑按键的抖动发生在change变化时,如果不采用按键消抖措施,change键按动时,由于发生电平跳动,输出状态可能会多次变化。
为了解决这个问题,可以设计一个采集时钟,用来检测change的变化,只要时钟的频率设计的合适,就能在每次change变化时,只使得状态机只变化一次。
状态转换图
图1状态转换图
所使用的软件
XilinxISE
源程序
modulethree(clk,din,op,change);
inputclk,din,change;
outputop;
reg[1:
0]current_state,next_state;
regop;
parameterS0=2'b00,S1=2'b01,S2=2'b10;
always@(posedgeclk)
begin
current_state<=next_state;
end
always@(current_stateorchangeordin)
begin
case(current_state)
S0:
begin
if(change)
begin
next_state=S1;
end
else
begin
next_state=S0;
end
begin
if(din)
op=1;
else
op=0;
end
end
S1:
begin
if(change)
begin
next_state=S2;
end
else
begin
next_state=S1;
end
begin
if(din)
op=0;
else
op=1;
end
end
S2:
begin
if(change)
begin
next_state=S0;
end
else
begin
next_state=S2;
end
begin
if(din)
op=0;
else
op=1;
end
end
default:
begin
op=0;
next_state=S0;
end
endcase
end
endmodule
仿真电路图
RTLViewer仿真电路如图2所示:
TechnologyMapViewer仿真电路如图3所示:
图4TechnologyMapViewer仿真电路图
TestBenches程序
modulethreetest;
lk(clk),
.din(din),
.op(op),
.change(change)
);
initial
begin
#1clk=0;
#1din=0;
#10
din=0;
change=0;
#10
din=1;
#5
change=0;
#10
din=0;
#5
change=0;
#10
din=1;
#5
change=0;
#10
din=0;
#5
change=1;
#5
change=0;
#10
din=0;
#5
change=0;
#10
din=1;
#5
change=0;
#10
din=0;
#5
change=0;
#10
din=1;
#5
change=0;
#10
din=0;
#5
change=1;
#5
change=0;
#10
din=0;
#5
change=0;
#10
din=1;
#5
change=0;
#10
din=0;
#5
change=0;
#10
din=1;
#5
change=0;
#10
din=0;
#5
change=1;
#5
change=0;
#10
din=1;
#5
change=1;
#5
change=0;
#10
din=0;
#5
change=1;
#5
change=0;
#10
din=1;
#5
change=1;
#5
change=0;
#10
din=0;
#5
change=1;
#5
change=0;
#10
din=0;
#5
change=1;
#5
change=0;
#10
din=1;
#5
change=1;
#5
change=0;
#10
din=1;
#
change=1;
#
change=0;
#
change=1;
#
change=0;
#
change=1;
#
change=0;
#
change=1;
#
change=0;
#
change=1;
#
change=0;
#
change=1;
#
change=0;
#
change=1;
$display("Runningtestbench");
end
always
begin
#5clk=~clk;
end
endmodule
仿真波形图
图4仿真波形图
图5仿真波形——消抖示例
开关状态为current_state。
从上面两个波形图可以看出,当时钟上升沿时,如果检测到change为1,则状态机发生转换,否则状态机维持原状态。
输出op=1时为有效,op=0为无效。
在370ns左右发生change连续跳变,但由于采用了采集时钟,状态只发生一次变化。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 电大 作业 模式 状态机
![提示](https://static.bdocx.com/images/bang_tan.gif)