FPGA用状态机实现序列检测器的设计Word格式文档下载.docx

上传人:b****4 文档编号:8064403 上传时间:2023-05-10 格式:DOCX 页数:16 大小:186.30KB
下载 相关 举报
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第1页
第1页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第2页
第2页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第3页
第3页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第4页
第4页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第5页
第5页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第6页
第6页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第7页
第7页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第8页
第8页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第9页
第9页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第10页
第10页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第11页
第11页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第12页
第12页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第13页
第13页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第14页
第14页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第15页
第15页 / 共16页
FPGA用状态机实现序列检测器的设计Word格式文档下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

FPGA用状态机实现序列检测器的设计Word格式文档下载.docx

《FPGA用状态机实现序列检测器的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《FPGA用状态机实现序列检测器的设计Word格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。

FPGA用状态机实现序列检测器的设计Word格式文档下载.docx

系统主要包括3个模块:

1)并行数据转串行数据模块(xulie.v)

2)串行检测模块(schk.v)

3)数码管显示模块(decled7s.v)

于需要用按键V16作为时钟输入,按键D18作为系统复位输入,所以需调用实验二中应用的消抖模块,对两个按键输入信号进行消抖。

•并行数据转串行数据模块(xulie.v),串行检测模块(schk.v)均采用有限状态机的描述方式。

•并行数据转串行数据模块(xulie.v)功能描述:

可以异步复位,可以在时钟控制下,将并行输入数据din[7:

0],按照din[7],din[6],din[5],din[4],din[3],din[2],din[1],din[0]的顺序输出至串行检测模块的输入端口din。

•根据设计要求,先画出并行数据转串行数据模块的状态转移图,并写出HDL代码。

•比较实验指导书提供并行数据转串行数据模块的参考代码,总结有限状态机的HDL设计方法。

•串行检测模块(schk.v)

输入信号:

DIN-----1bit的串行输入数据

CLK-----同步输入时钟

CLR------异步清零信号,当CLR=1,系统输出置0,否则,系统正常工作

输出信号:

AB--------4bits数据,如果系统检测到“01111000”这8bit的输入,AB=4’b1010,否则,AB=4’b1011.

•画出串行检测模块(schk.v)的状态转移图,并自行设计HDL源代码。

•用VerilogHDL设计数码管驱动电路、系统顶层电路。

3、数码管显示驱动模块(led.v)

输入:

AB[3:

0]-------待显示的数值

输出:

Q[6:

0]----------驱动数码管的七位数值

表2-1共阳极数码管驱动模块输入与输出关系表

输入(4bits)

输出(7bits)

显示内容

4’b1010

7’b1110111

a

4’b1011

7’b1111100

b

4’b0000

7’b1000000

0

4、消抖

(1)按键抖动的产生原因:

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

图2-3按键抖动波形图

(2)本次实验提供的消抖模块简介

图2-4消抖模块框图

电平检查模块:

检测输入的按键是否被按下或者释放,并分别将H2L_Sig,L2H_Sig拉高,并随后拉低,给出按键的操作信息。

延时模块:

对输入的信号变化时刻进行计时并观察信号的变换情况,对输出端口进行恰当地赋值。

二、实验步骤

1、建立工程:

file->

NewProject。

2、建立新VerilogHDL模块编辑窗口,按并行数据转串行数据模块(xulie.v),串行检测模块(schk.v),数码管显示模块(decled7s.v)的目标要求进行设计,模块在综合后,采用画波形的方式编辑测试激励波形,对相关模块进行功能仿真,实现模块的验证、修正。

3、L组合为一个模块,完成综合、功能仿真,分析波形,修正设计。

4、拷贝消抖模块代码:

debounce_module.v,delay_module.v,detect_module.v,组合完成消抖模块。

5、将消抖模块组合入系统综合,不仿真。

6、硬件测试平台设计。

7、顶层模块完成后,双击ImplementDesign,进行布局布线,双击GenerateProgrammingFile生成下载文件,双击ConfigureTargetDevice,按照提示完成下载。

8、下载后,改变拨动开关和按键,观察结果。

9、使用chipscope片内逻辑分析仪对设计进行硬件调试,验证设计是否正确。

掌握该调试方法和调试步骤。

三、实验结果及分析

1、数码管驱动模块(led.v)

moduledecled7s(AB,Q);

input[3:

0]AB;

output[6:

0]Q;

reg[6:

0]Q=7'

b1000000;

always@(AB)

begin

if(AB==4'

b1010)Q<

=7'

b1110111;

//输出A

elseQ<

b1111100;

//输出B

end

endmodule

1.1数码管驱动综合

1.2数码管驱动仿真

2、并行数据转串行数据模块(xulie.v)

modulexulie(DIN8,CLK,CLR,DIN);

inputCLK,CLR;

input[7:

0]DIN8;

outputDIN;

reg[2:

0]cur_state,next_state;

regDIN;

parameter

s0=3'

b000,

s1=3'

b001,

s2=3'

b010,

s3=3'

b011,

s4=3'

b100,

s5=3'

b101,

s6=3'

b110,

s7=3'

b111;

always@(posedgeCLKorposedgeCLR)

if(CLR)cur_state<

=s0;

elsecur_state<

=next_state;

always@(cur_stateorDIN8orDIN)

case(cur_state)

s0:

DIN<

=DIN8[7];

next_state<

=s1;

s1:

=DIN8[6];

=s2;

s2:

=DIN8[5];

=s3;

s3:

=DIN8[4];

=s4;

s4:

=DIN8[3];

=s5;

s5:

=DIN8[2];

=s6;

s6:

=DIN8[1];

=s7;

s7:

=DIN8[0];

default:

DIN<

=1'

b0;

next_state<

endcase

2.1并行数据转串行数据综合

2.2并行数据转串行数据仿真

3、串行检测模块(schk.v)

moduleschk(DIN,CLK,CLR,AB);

inputDIN,CLK,CLR;

output[3:

0]AB;

reg[3:

0]AB=4'

b0000;

idle=4'

b0000,

s1=4'

b0001,

s2=4'

b0010,

s3=4'

b0011,

s4=4'

b0100,

s5=4'

b0101,

s6=4'

b0110,

s7=4'

b0111,

s8=4'

b1000;

always@(posedgeCLKorposedgeCLR)

=idle;

always@(cur_stateorDIN)

case(cur_state)

idle:

AB<

=4'

b1011;

if(DIN==1'

b0)next_state<

elsenext_state<

end

s1:

AB<

b1)next_state<

end

s2:

s3:

s4:

s5:

s6:

s7:

b0)

begin

AB<

b1010;

next_state<

=s8;

elsebegin

next_state<

s8:

default:

endcase

3.1串行检测模块综合仿真

4、xulieqi组合模块

modulexulieqi(DIN8,CLK,CLR,Q);

0]DIN8;

0]Q;

wire[3:

xulieu1(.DIN8(DIN8),.CLK(CLK),.CLR(CLR),.DIN(DIN));

schku2(.CLR(CLR),.DIN(DIN),.AB(AB));

decled7su3(.AB(AB),.Q(Q));

4.1xulieqi组合模块综合仿真

5、加入消抖模块

moduleStaMachine(CLK_50,CLK,CLR,DIN8,Q);

inputCLK_50,CLK,CLR;

wireCLK_OUT;

debounce_moduleu1(CLK_50,CLR,CLK,CLK_OUT);

xulieqiu2(DIN8,CLK_OUT,CLR,Q);

5.1加入消抖模块后综合结果

四、实验思考题解答

1.说明代码表达的是什么类型的状态机,它的优点是什么?

详述其功能和对序列数检测的逻辑过程。

答:

由于状态机输出AB与输入DIN有关,有一定的延时,所以该状态机为Mealy状态机。

状态机在系统时钟的控制下,电路按照预先设定的状态运行,有良好的同步时序,较好的解决了竞争冒险和毛刺现象。

状态的的结构使其在一个时钟周期内可以完成许多并行的运算和控制操作。

五、体会

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2