好文档 - 专业文书写作范文服务资料分享网站

FPGA用状态机实现序列检测器的设计

天下 分享 时间: 加入收藏 我要投稿 点赞

******大学 实验报告

课程名称: 基于FPGA的现代数字系统设计 实验名称: 用状态机实现序列检测器的设计 姓 名: ****** 学 号: ********** 班 级: 电子****** 指导教师: ******

*******信息工程学院

一、实验原理

1、 实验内容: 应用有限状态机设计思路,检测输入的串行数据是否是”01111000”。

拟用SW3---SW0,J4接口的E8,F8,C7,D7作为系统输入(系统由此需要设计一个8bits并行数据转串行的模块)

一个7段数码显示译码器作为检测结果的输出显示,如果串行序列为”11100101”,显示a,

否则显示b(系统需要设计一个7段数码显示译码器模块)

为了显示可控,清晰,拟用V16,D18实现时钟,复位信号的输入。 本实验由顶层文件、串行检测、并行数据转串行、数码管显示四个模块组成

2、要求:系统主要包括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)

? 画出串行检测模块(schk.v)的状态转移图,并自行设计HDL源代码。 ? 用Verilog HDL设计数码管驱动电路、系统顶层电路。

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

输入:AB[3:0] -------待显示的数值

输出:Q[6:0] ----------驱动数码管的七位数值

表2-1 共阳极数码管驱动模块输入与输出关系表 输入(4bits) 4’b1010 输出(7bits) 7’b 1110111 显示内容 a 4’b1011 7’b1111100 b 4’b0000 7’b1000000 0

4、消抖

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

通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

图2-3 按键抖动波形图

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

图2-4 消抖模块框图

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

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

二、实验步骤

1、建立工程:file->New Project。

2、建立新Verilog HDL模块编辑窗口,按并行数据转串行数据模块(xulie.v),串行检测模块(schk.v),数码管显示模块(decled7s .v)的目标要求进行设计,模块在综合后,采用画波形的方式编辑测试激励波形,对相关模块进行功能仿真,实现模块的验证、修正。 3、L组合为一个模块,完成综合、功能仿真,分析波形,修正设计。 4、拷贝消抖模块代码:debounce_module.v,delay_module.v,detect_module.v,组合完成消抖模块。

5、将消抖模块组合入系统综合,不仿真。 6、硬件测试平台设计。

7、顶层模块完成后,双击Implement Design,进行布局布线,双击Generate Programming File生成下载文件,双击Configure Target Device,按照提示完成下载。

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

9、使用chipscope片内逻辑分析仪对设计进行硬件调试,验证设计是否正确。掌握该调试方法和调试步骤。

三、实验结果及分析

1、数码管驱动模块(led.v) module decled7s(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 else Q <= 7'b1111100;//输出B end endmodule

1.1 数码管驱动综合

1.2 数码管驱动仿真

FPGA用状态机实现序列检测器的设计

******大学实验报告课程名称:基于FPGA的现代数字系统设计实验名称:用状态机实现序列检测器的设计姓名:******学号:**********班级:
推荐度:
点击下载文档文档为doc格式
7sxjn71mvi9ersa9r171
领取福利

微信扫码领取福利

微信扫码分享