数电大作业(二)1120410104周胜阳
f一、题目要求
题目:利用VerilogHDL设计一个逻辑控制电路,用于对某备进行模式切换控制,设备模式共三种,控制方式为:a直通模式:高电平为直通有效,接地为直通无效;
b跳频模式:接地为跳频模式有效,高电平跳频无效;c调谐模式:接地为调谐模式有效,高电平调谐无效。
设备的同一时刻只有且必须有一个模式有效,其他两个无效。为防止同时多个模式有效,模式切换之间应有较小的延时,利用按键作为三种模式切换输入(按键最好有消除抖动的措施)
二、设计思路
1、整体思路:本题可以视为一个Moore型状态机。通过op的位数控制直通、调谐、调频模式的转换。当选择直通模式时,op为100;选择调频模式时,op为001;选择调谐模式时,op为010。2、按键消抖:在检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。本题中,我们将延时设为3个时钟周期
三、程序设计
f1代码:
modulezsy2clka
jia
outi
putclka
jia
output20outreg20outreg20mode13b111mode03b111wirea
jia
_do
e按键触发parameterD3b010,Z3b100T3b001定义了三个模式Z为直通,T为跳频,D为调谐regshake1shake2shake3定义消抖用的三个变量alwaysposedgeclk上升沿触发begi
shake1a
jia
shake2shake1shake3shake2mode1mode0这个模块用于消抖,程序来源于百度outmode1e
dassig
a
jia
_do
eshake1shake2shake3alwaysa
jia
_do
ebegi
下面的部分就是一个状态机,和作业1一样。casemode1Difa
jia
_do
e0mode0Zelsemode0mode0Tifa
jia
_do
e0mode0Delsemode0mode0Zifa
jia
_do
e0mode0Telsemode0mode0e
dcasee
de
dmodule
2进行编译,仿真电路图如下:
fPostFitti
g
PostMappi
g
fRTL
3生成testbe
ch文件
timescale1
s1ps定义延时单位为1
s延时精度为1psmodulezsy2_vlg_tstregclkrega
jia
wire20outzsy2i1clkclka
jia
a
jia
outouti
itialbegi
clk0时钟赋初值a
jia
1模拟抖动2a
jia
02a
jia
12a
jia
02a
jia
12a
jia
02a
jia
12a
jia
02a
jia
12a
jia
08a
jia
1模拟按键已经稳定8a
jia
03stoutdisplay