2020-03-03 16:38:14 来源:范文大全收藏下载本文
数电课程设计(序列检测器)
课程设计题目:设计一个10010的序列检测器。
设计思路如下:
状态图
INIT=0,A1=1,A2=10,A3=100,A4=1001,A5=10010.图中,沿红线状态从INIT变到A5,即输入为正确的序列10010,黑线为每次输入错误时的状态转移。
状态转移表
设计程序如下
module xljcq(clk,A,unclk); input clk,A; output unclk; reg unclk; reg [4:0] Sreg,Snext; parameter INIT=1\'b0,
A1=1\'b1; parameter [1:0] A2=2\'b10; parameter [2:0] A3=3\'b100; parameter [3:0] A4=4\'b1001; parameter [4:0] A5=5\'b10010; always @(posedge clk)
Sreg
case(Sreg)
INIT: if(A==0) Snext=INIT;
else
Snext=A1;
A1:
if(A==0) Snext=A2;
else
Snext=A1;
A2:
if(A==0) Snext=A3;
else
Snext=A1;
A3:
if(A==0) Snext=INIT;
else
Snext=A4;
A4:
if(A==0) Snext=A5;
else
Snext=A1;
A5:
if(A==0) Snext=A3;
else
Snext=A1;
default Snext=INIT;
endcase end always @(Sreg)
case(Sreg)
INIT,A1,A2,A3,A4: unclk=0;
A5: unclk=1;
default unclk=0;
endcase endmodule
程序功能仿真图:
Figure1
从figure1中可以看出在连续的6个clk的posedge, 输入A为10010,所以在第六个clk的posedge,输出unclk由0变为1。
Figure2
Figure2是紧接figure1的功能仿真时序图,在此时序中,六个clk 的posedge输入A为101010,和设计的要求一样,unclk一直都为0.
人人范文网 m.inrrp.com.cn 手机版