MAX233ECWP 控制单元判断是否开锁
发布时间:2019/10/25 21:32:23 访问次数:2047
MAX233ECWP较器输出M为1,由控制单元判断是否开锁。第二个always语句说明选择器的工作。当选择器的输出与所输入的密码相同时B为1,否则为0。
例10.4.3
∥数字密码锁的RTL描述
【nodule Lock~RTL(0PEN,ERROR,nRESET,TRY,READ,BIT,CLK);
/*=====定义输人/输出端口,参见图10.2.14=====*/
input nRESET,TRY,READ,BIT,CLK;
output OPEN,ERROR;
reg OPEN,ERROR;
wire nREsET,TRY,READ,BIT,CLK;
∥对状态进行编码
paran△eter SO =6’ b000001,s1 =61 b000010,s2 =.61 b000100,S3 =
6i b001000,S4=6i b010000,S5=6’b100000;
paran△eter P.ass・word=8’bO1011001;
∥定义系统内部的信号变量及其类型,见图10.2.14
reg [5:0]Currentstate,Nextstate; ∥控制寄存器
reg nCLR,CNT; ∥CNT=1,计数器工作;CNT=0,暂停计数
wire B,M; ∥数据处理器输出
reg [2:0]Q; ∥计数器输出
wire A2,A1,A0; ∥数据选择器控制信号
Wire [7:0]D; ∥数据选择器输入信号
reg Mux~out; ∥数据选择器输出信号
/*=====控制单元状态转换的描述,参见图10.2.16=====*/
always@(posedge CLK or negedge nRESET)
begin~:statereg
if(~nRESET)
begin Currentstate <=SO; nCLR (=1i bO;end
else
begin Currentstate (=Nextstate;nCLFt <=1i b1;end
end∥statereg
anways@(BIT or READ or TRY or B or M or Currentstate)
begin:fsm
oPEN=11 bO;
ERROR=1t bO;
CNT=1i bO;
在Quartus Ⅱ 5.0软件中建立一个新的工程项目,输人上述HDL文件,对设计项目进行编译。然后建立一个仿真波形文件,给出输入、输出信号的激励波形,对设计项目进行时序仿真,得到如图10.4.3所示的波形。
若系统内设置的密码为01011001。分析波形图可知,nREsET信号使系统首先进入初始状态。BIT开关用于产生1位数码,READ开关将BIT产生的当前数码读入系统,并与系统内所设置密码的相应位进行比较,比较的顺序是从低位到高位。当读人8位数码与开锁密码一致时,按下开锁的TRY信号,系统将产生高电平开锁信号0PEN,如图10.4.3(a)所示。如果开锁过程中任何一次送人的数码与设置的密码数值不一致,例如图10,4,3(b)中输入的第2位数码为1,与设置的0不符,系统发出错误信息ERROR。或者TRY信号使用不当,也会产生ERROR信号。
为便于分析开锁过程中,系统状态之间的转换,图10.4.3中给出了中间变量的波形图,具体含义这里不再赘述,读者可自行分析。
MAX233ECWP较器输出M为1,由控制单元判断是否开锁。第二个always语句说明选择器的工作。当选择器的输出与所输入的密码相同时B为1,否则为0。
例10.4.3
∥数字密码锁的RTL描述
【nodule Lock~RTL(0PEN,ERROR,nRESET,TRY,READ,BIT,CLK);
/*=====定义输人/输出端口,参见图10.2.14=====*/
input nRESET,TRY,READ,BIT,CLK;
output OPEN,ERROR;
reg OPEN,ERROR;
wire nREsET,TRY,READ,BIT,CLK;
∥对状态进行编码
paran△eter SO =6’ b000001,s1 =61 b000010,s2 =.61 b000100,S3 =
6i b001000,S4=6i b010000,S5=6’b100000;
paran△eter P.ass・word=8’bO1011001;
∥定义系统内部的信号变量及其类型,见图10.2.14
reg [5:0]Currentstate,Nextstate; ∥控制寄存器
reg nCLR,CNT; ∥CNT=1,计数器工作;CNT=0,暂停计数
wire B,M; ∥数据处理器输出
reg [2:0]Q; ∥计数器输出
wire A2,A1,A0; ∥数据选择器控制信号
Wire [7:0]D; ∥数据选择器输入信号
reg Mux~out; ∥数据选择器输出信号
/*=====控制单元状态转换的描述,参见图10.2.16=====*/
always@(posedge CLK or negedge nRESET)
begin~:statereg
if(~nRESET)
begin Currentstate <=SO; nCLR (=1i bO;end
else
begin Currentstate (=Nextstate;nCLFt <=1i b1;end
end∥statereg
anways@(BIT or READ or TRY or B or M or Currentstate)
begin:fsm
oPEN=11 bO;
ERROR=1t bO;
CNT=1i bO;
在Quartus Ⅱ 5.0软件中建立一个新的工程项目,输人上述HDL文件,对设计项目进行编译。然后建立一个仿真波形文件,给出输入、输出信号的激励波形,对设计项目进行时序仿真,得到如图10.4.3所示的波形。
若系统内设置的密码为01011001。分析波形图可知,nREsET信号使系统首先进入初始状态。BIT开关用于产生1位数码,READ开关将BIT产生的当前数码读入系统,并与系统内所设置密码的相应位进行比较,比较的顺序是从低位到高位。当读人8位数码与开锁密码一致时,按下开锁的TRY信号,系统将产生高电平开锁信号0PEN,如图10.4.3(a)所示。如果开锁过程中任何一次送人的数码与设置的密码数值不一致,例如图10,4,3(b)中输入的第2位数码为1,与设置的0不符,系统发出错误信息ERROR。或者TRY信号使用不当,也会产生ERROR信号。
为便于分析开锁过程中,系统状态之间的转换,图10.4.3中给出了中间变量的波形图,具体含义这里不再赘述,读者可自行分析。