实验三用状态机实现序列检测器的设计VerilogWord文档下载推荐.docx
《实验三用状态机实现序列检测器的设计VerilogWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验三用状态机实现序列检测器的设计VerilogWord文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
wire[3:
0]AB;
wire[17:
xulieu1(clk,din18,reset,din);
schku2(din,clk,reset,AB);
decl7su3(AB,LED7S);
endmodule
//串行检测:
moduleschk(DIN,CLK,CLR,AB);
inputDIN,CLK,CLR;
output[3:
reg[3:
reg[7:
0]Q;
parameter
idle=8'
b00000000,
a=8'
b00000001,
b=8'
b00000010,
c=8'
b00000100,
d=8'
b00001000,
e=8'
b00010000,
f=8'
b00100000,
g=8'
b01000000,
h=8'
b10000000;
parameterdata=8'
b11100101;
always@(posedgeCLKornegedgeCLR)
if(!
CLR)
begin
Q<
=idle;
end
else
case(Q)
idle:
if(DIN==data[7])Q<
=a;
elseQ<
=idle;
a:
if(DIN==data[6])Q<
=b;
b:
if(DIN==data[5])Q<
=c;
c:
if(DIN==data[4])Q<
=d;
d:
if(DIN==data[3])Q<
=e;
e:
if(DIN==data[2])Q<
=f;
f:
if(DIN==data[1])Q<
=g;
g:
if(DIN==data[0])Q<
=h;
h:
if(DIN==data[7])Q<
default:
Q<
endcase
always@(Q)
if(Q==h)AB<
=4'
b1010;
elseAB<
b1011;
//前端预置8位数据输入:
modulexulie(clk,din18,reset,din);
input[17:
outputdin;
regdin;
s0=5'
b00000,
s1=5'
b00001,
s2=5'
b00010,
s3=5'
b00011,
s4=5'
b00100,
s5=5'
b00101,
s6=5'
b00110,
s7=5'
b00111,
s8=5'
b01000,
s9=5'
b01001,
s10=5'
b01010,
s11=5'
b01011,
s12=5'
b01100,
s13=5'
b01101,
s14=5'
b01110,
s15=5'
b01111,
s16=5'
b10000,
s17=5'
b10001;
reg[4:
0]cur_state,next_state;
always@(posedgeclkornegedgereset)
reset)
cur_state<
=s17;
=next_state;
always@(cur_stateordin18ordin)
case(cur_state)
s17:
begin
din<
=din18[17];
next_state<
=s16;
s16:
=din18[16];
=s15;
s15:
=din18[15];
=s14;
s14:
=din18[14];
=s13;
s13:
=din18[13];
=s12;
s12:
=din18[12];
=s11;
s11:
=din18[11];
=s10;
s10:
=din18[10];
=s9;
s9:
=din18[9];
=s8;
s8:
=din18[8];
=s7;
s7:
=din18[7];
=s6;
s6:
=din18[6];
=s5;
s5:
=din18[5];
=s4;
s4:
=din18[4];
=s3;
s3:
=din18[3];
=s2;
s2:
=din18[2];
=s1;
s1:
=din18[1];
=s0;
s0:
=din18[0];
=1'
b0;
提示:
1.若对于D<
="
11100101"
,电路需记忆:
初始状态、1、11、111、1110、11100、111001、1110010、11100101共9种状态。
三、实验内容:
1.编写由两个主控进程构成的有限状态机。
画出状态图,并给出其仿真测试波形;
2.自己编写数码管显示程序(decl7s.v)来显示A或B状态。
已知数码管为共阳级连接。
输入(4bits)输出(7bits)显示内容
4’b10107’b0001000a
4’b10117’b0000011b
4’b00007’b10000000
可以在default分支选用显示“0”。
3.利用QuartusII对文本编辑输入、仿真测试并给出仿真波形,了解控制信号的时序。
最后进行引脚锁定并完成硬件测试实验。
建议用KEY3(PIN_W26)控制复位信号RESET;
KEY2(PIN_P23)控制状态机工作时钟
CLK;
指示输出AB接数码管HEX0(PIN_AF10,PIN_AB12,PIN_AC12,PIN_AD11,PIN_AE11,
PIN_V14,PIN_V13)。
5.下载后,按以下提示进行操作:
1)、按实验板“系统复位”键;
2)、用SW17-SW0键输入包含待测序列数"
的18位数据;
3)、按下RESET键;
4)、按KEY2键(时钟clk输入)18次,这时若串行输入的18位二进制序列码中包含有"
,则数码管HEX0应从原来的B变成A,表示序列检测正确,否则仍为B。
四、思考题:
说明代码表达的是什么类型的状态机,它的优点是什么,详述其功能和对序列数检
测的逻辑过程;
五、实验报告:
根据以上的实验内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。