文档详情

EDA序列检测器状态机.doc

发布:2017-01-03约字共9页下载文档
文本预览下载声明
电子信息学院 实验报告书 课程名:《电子综合设计EDA》 题 目: 实验4 状态机控制电路设计1 实验类别 【设计】 班 级: 学 号: 姓 名: 实验目的 通过实验掌握状态机设计技术 掌握利用状态机设计序列检测器的方法 实验内容、要求 序列检测器也称为串行数据检测器,是一种能够检测输入的一串二进制编码,当该二进制码与事先设定的码一致时,检测电路输出高电平,否则输出低电平。它在数据通讯,雷达和遥测等领域中用于检测同步识别标志,是一种用来检测一组或多组序列信号的电路。 以设计“01101”这个序列的检测器为例:设X为数字码流输入,Z为检出标记输出,高电平表示“发现指定序列”,低电平表示“没有发现指定的序列”。设输入的码流为“001101101111011111...”,在时钟2~6中,码流X里出现指定序列“01101”,对应输出Z在第6个时钟变为高电平“1”,表示发现指定01101”,Z输出“1”。同理在第9个时钟对应输出Z也为“1”。根据这个逻辑功能描述,可以分析得出状态转换图。 要求: 完成一个序列检测器,用状态机设计,能从输入的码流中对特定数行检测的电路设计(要求画出状态转换图),并且设计一个仿真测试用的Verilog程序(输入的码流要包括至少两个特定数据,如...1011001011001010110110010...),从时序上验证检测电路模块的正确性。 课后讨论如果不用状态机而用其他方法(如移位寄存器)应该怎样设计序列检测器。 实验步骤和程序 `timescale 1ns / 1ps module seqdet ( input wire x, input wire clk, input wire rst, output wire z ); reg[3:0] state; localparam IDLE = 4d0, A = 4d1, B = 4d2, C = 4d3, D = 4d4, E = 4d5, F = 4d6, G = 4d7, H = 4d8, I = 4d9; assign z = (state == G x==0)?1b1:1b0;//状态为G时又收到输入0,表明10010已经收到,输出为1 always@ (posedge clk,negedge rst) if(!rst) begin state = IDLE; end else casex(state) IDLE: if(x==1) state = A; //状态A记住第一位正确高电平1来过 else state = IDLE; A: if(x==0) state = B; //状态B记住第二位正确低电平0来过 else state = A; B: if(x==1) state = C; //状态C记住第三位正确低电平1来过 else state = I;//输入高电平,不符合要求,I记?∶挥?位曾经?怨? C: if(x==1) state = D; //状态D记住第四位正确高电?来过 else state = B; D: if(x==0) state = E; //状态E记住第五位正确低电平0来过 else state = A;
显示全部
相似文档