ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:323KB ,
资源ID:3116142      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3116142.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(状态机实现序列检测器.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

状态机实现序列检测器.doc

1、EDA 专用周实验报告课题名称: 用状态机实现序列检测器 班 级: 通信技术 091 姓 名: 指导老师: 日 期: 2011.2.213.5 四川工程学院 通信技术16 目录一、实验目的3二、实验内容3三、实验原理3四、实验步骤4五、实验程序及现象5六、实训总结16七、参考资料19四川工程学院 通信技术16 一、 实验目的掌握利用有限状态机实现一般时序逻辑分析的方法,了解一般状态机的设计与应用。二、 实验内容设计一序列检测器并在 SmartSOPC 实验箱上进行硬件测试。利用Quartus |软件进行设计、仿真验证,最后进行引脚锁定并完成硬件测试。用 KEY5 控制复位,KEY6 控制状态机

2、的时钟,KEY1KEY4控制输入待检预置数和检测预置数(检测密码) ,并在数码管 12 和45 上显示。三、 实验原理(1)序列检测器可用于检测由二进制码组成的脉冲序列信号。当序列检测器连续收到一组串行二进制码后,如果这组序列码与检测器中预先设置的序列码相同,则输出 1,否则输出 0.这种检测的关键是必须收到连续的正确码,所以要求检测器必须对前一次接受到的序列码做记忆分析,直到在连续检测中所收到的每一位二进制码都与预置序列码对应相同。在检测过程中,只要有一位不相等都将回到初始状态重新开始检测。不考虑重叠的可能。(2)为了配合硬件测试,本实验提供了一个测试模块(schk_test),该模块主要产

3、生序列检测器所需的时钟、复位、串行输入序列码及预置数等信号。四川工程学院 通信技术16 对莫模块的各端口说明如下:Clock 系统时钟输入(48MHz)key5.0 按键输入disp3.0 序列检测器检测结果输入(显示于数码管 8)sda 串行序列码输出clkout 序列检测器状态机时钟输出rstout 序列检测器复位信号输出dat7.0 检测预置数输出led7.0 LED 输出seg7.0 数码管段输出dig7.0 数码管位输出四、实验步骤(1)启动 Quartus|建立一个空白工程,然后命名为 schk_top.qpf。(2)新建 VerilogHDL 源程序文件 schk_v,输入程序代

4、码并保存,进行综合编译。若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。(3)将光盘中的 EDA_Component 目录下的 schk_test.bsf,schk_test.v拷贝到工程目录。 (原理图形式需此步骤)(4)新建图形设计文件命名为 schk_top.bdf 并保存,其模块原理图如下:四川工程学院 通信技术16 (5)选择目标器件并对相应的引脚进行定义锁定,在这里所选择的器件为 EPIC6Q240C8 芯片,将未使用的引脚设置为三态输入。(6)将 schk_top.bdf 设置为顶层实体,对该工程进行全程编译处理,若在编译过程中发现错误,则找出错误并更正错误,直至编译

5、成功为止。(7)硬件连接、下载程序。五、实验程序(一)原理图形式的实验参考程序如下:模块 1 为:module schk(sda,clk,rst,dat,disp); /序列检测器模块input sda; /串行序列码输入input clk; /时钟信号输入input rst; /复位信号输入input 7:0 dat; /输入待检测预置数output 3:0 disp; /检测结果输出reg 3:0 disp_r; /检测结果输出寄存器reg 3:0 state; /状态机寄存器四川工程学院 通信技术16 parameter s0=4d0,s1=4d1, /状态机参数s2=4d2,s3=4d

6、3,s4=4d4,s5=4d5,s6=4d6,s7=4d7,s8=4d8;assign disp=disp_r; /输出检测结果always (posedge clk or negedge rst)beginif(rst)state=s0; /复位elsebegincase(state)s0:if(sda=dat7)state=s1;else state=s0; /状态 s0s1:if(sda=dat6)state=s2;else state=s0; /状态 s1s2:if(sda=dat5)state=s3;else state=s0; /状态 s2s3:if(sda=dat4)state=

7、s4;else state=s0; /状态 s3s4:if(sda=dat3)state=s5;else state=s0; /状态 s4s5:if(sda=dat2)state=s6;else state=s0; /状态 s5s6:if(sda=dat1)state=s7;else state=s0; /状态 s6s7:if(sda=dat0)state=s8;else state=s0; /状态 s7default:state=s0;endcaseendendalways (state)beginif(state=s8)disp_r=4hf; /序列码检测正确,输出“F”elsedisp_

8、r=4h0; /序列码检测错误,输出“0”endendmodule模块 2 为:module schk_test(clock,key,sda,clkout,rstout,dat,disp,led,seg,dig); /外接 I/O 口 input clock; /系统时钟 input5:0key; /按键输入 output7:0led; /输出接 LED output7:0seg; /输出接数码管段码 output7:0dig; /输出接数码管位码 /序列码检测模块 I/O 口 output sda; /串行序列码输出 四川工程学院 通信技术16 output clkout; /产生时钟信号输

9、出 output rstout; /产生复位信号输出 output7:0dat; /8 位预置数输出 input3:0disp; /输入检测结果 reg7:0dat_r; /输出寄存器 reg7:0led_r; reg7:0seg_r; reg7:0dig_r; reg16:0count; /时钟分频计数器 reg7:0data; /内部寄存器 reg8:0data_shift; reg5:0dout1,dout2,dout3,buff; /消抖寄存器 reg2:0cnt3; /数码管扫描计数器 reg3:0disp_dat; /数码管扫描显存 reg div_clk; /分频时钟,用于消抖和

10、扫描 wire5:0key_edge; /按键消抖输出 assign dat = dat_r; assign led = led_r; assign seg = seg_r; assign dig = dig_r; /时钟分频部分 always (posedge clock) begin if (count 17d120000) begin count = count + 1b1; div_clk = 1b0; end else begin count = 17d0; div_clk = 1b1; end end /按键消抖部分 always (posedge clock) begin if(

11、div_clk) begin 四川工程学院 通信技术16 dout1 = key; dout2 = dout1; dout3 = dout2; end end /按键边沿检测部分 always (posedge clock) begin buff = dout1 | dout2 | dout3; end assign key_edge = (dout1 | dout2 | dout3) /按键控制处理部分 always (posedge clock) /按键 1 序列码高 4 位 begin if(key_edge0) /下降沿检测 data7:4 = data7:4 + 1b1; end a

12、lways (posedge clock) /按键 2 序列码低 4 位 begin if(key_edge1) /下降沿检测 data3:0 = data3:0 + 1b1; end always (posedge clock) /按键 3 预置数高 4 位 begin if(key_edge2) /下降沿检测 dat_r7:4 = dat_r7:4 + 1b1; end always (posedge clock) /按键 4 预置数低 4 位 begin if(key_edge3) /下降沿检测 dat_r3:0 = dat_r3:0 + 1b1; end assign rstout =

13、 buff4; /按键 5 复位 assign clkout = buff5; /按键 6 时钟 always (posedge clock) begin 四川工程学院 通信技术16 if(key_edge4) /按键 5 复位 begin data_shift = 1b0,data; /重新装载数据 led_r = 8d0; end else if(key_edge5) /按键 6 begin data_shift = data_shift 1; led_r = data_shift8,led_r7:1; /LED 左移显示 end end assign sda = data_shift8;

14、 /串行序列码输出 /数码管扫描显示部分 always (posedge clock) /定义上升沿触发进程 begin if(div_clk) cnt3 = cnt3 + 1b1; end always (posedge clock) begin if(div_clk) begin case(cnt3) /选择扫描显示数据 3d0:disp_dat = data7:4; /第一个数码管 3d1:disp_dat = data3:0; /第二个数码管 3d3:disp_dat = dat7:4; /第四个数码管 3d4:disp_dat = dat3:0; /第五个数码管 3d7:disp_d

15、at = disp; /第八个数码管 default:disp_dat = 4h0; endcase case(cnt3) /选择数码管显示位 3d0:dig_r = 8b01111111; /选择第一个数码管显示 3d1:dig_r = 8b10111111; /选择第二个数码管显示 3d3:dig_r = 8b11101111; /选择第四个数码管显示 3d4:dig_r = 8b11110111; /选择第五个数码管显示 3d7:dig_r = 8b11111110; /选择第八个数码管显示 default:dig_r = 8b11111111; endcase end end 四川工程

16、学院 通信技术16 always (disp_dat) begin case(disp_dat) /七段译码 4h0:seg_r = 8hc0; /显示 0 4h1:seg_r = 8hf9; /显示 1 4h2:seg_r = 8ha4; /显示 2 4h3:seg_r = 8hb0; /显示 3 4h4:seg_r = 8h99; /显示 4 4h5:seg_r = 8h92; /显示 5 4h6:seg_r = 8h82; /显示 6 4h7:seg_r = 8hf8; /显示 7 4h8:seg_r = 8h80; /显示 8 4h9:seg_r = 8h90; /显示 9 4ha:s

17、eg_r = 8h88; /显示 a 4hb:seg_r = 8h83; /显示 b 4hc:seg_r = 8hc6; /显示 c 4hd:seg_r = 8ha1; /显示 d 4he:seg_r = 8h86; /显示 e 4hf:seg_r = 8h8e; /显示 f endcase end endmodule(二)用程序形式做的程序如下;module schk(clock,key,sda,clkout,dat,disp,led,seg,dig); /外接 I/O 口 input clock; /系统时钟 input5:0key; /按键输入 /input sda; /串行序列码输入wire rst; /复位信号输入/input3:0disp; /输入检测结果 /input 7:0 dat; /输入待检测预置数output7:0led; /输出接 LED output7:0seg; /输出接数码管段码 output7:0dig; /输出接数码管位码 output sda; /串行序列码输出 output clkout; /产生时钟信号输出 output7:0dat; /8 位预置数输出 output 3:0 disp; /检测结果输出reg7:0dat_r; /输出寄存器 reg7:0led_r;

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。