数电课程设计_数电课程设计精品
数电课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数电课程设计精品”。
数电课程设计(序列检测器)
课程设计题目:设计一个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.