1、数字逻辑设计及应用课程设计报告姓 名: 雷 蕾 学 号:2010012030036 选课号: 设计题号: 5 1一设计题目:设计 101 序列检测器二设计要求要求使用状态机设计一个序列检测器,检测输入数据,当输入中出现 101 时,输出 1,否则输出为0。不进行重复判断,即当出现 10101时,输出为 00100判断的具体流程如下:1. 电路复位,进入状态 S0,等待输入2. S0 状态下:如果输入为 0,则停留在 S0,如果输入为 1,则跳转到 S13. S1 状态下:如果输入为 0,则跳转到 S2,如果输入为 1,则停留在 S14. S2 状态下:如果输入为 1,则输出 1,并跳转到 S0
2、,如果输入为 0,则输出 0,并跳转到 S0检测器电路实现:时钟信号,1 bit 输入待判断信号,1bit 输出判断结果。三设计过程1.设计方案:通过使用 ISE 编写 verilog 语言,实现以下过程:10 1s0 s100/1s3 只有当 s3 接收到的输入信号为 1 的时候,输出才会为 1,其余时候输出都为 0.2.设计程序:模块文件:timescale 10ns/1ns/ Company: / Engineer: / / Create Date: 21:02:40 06/06/2012 / Design Name: / Module Name: abcd / Project Name
3、: / Target Devices: 00 01102/ Tool versions: / Description: / Dependencies: / Revision: / Revision 0.01 - File Created/ Additional Comments: /module abcd(input reset,input clk,input ipt,output reg result);parameter 1:0 s0 = 2b00, s1 = 2b01, s2 = 2b10;reg1:0 state;always (posedge clk)beginif(reset)be
4、ginstate=s0;result=0;endelsebegincase(state)s0:beginif(ipt=0)beginstate=s0;result=0;endelsebeginstate=s1;result=0;endends1:begin3if(ipt=0)beginstate=s2;result=0;endelsebeginstate=s1;result=0;endends2:beginif(ipt=0)beginstate=s0;result=0;endelsebeginstate=s0;result=1;endenddefault:beginstate=s0;resul
5、t=0;endendcaseendendendmodule测试文件:timescale 10ns / 1ps/ Company: / Engineer:/ Create Date: 23:05:50 06/06/20124/ Design Name: test_detector/ Module Name: D:/TDDOWNLOAD/fortwo2/haha.v/ Project Name: fortwo2/ Target Device: / Tool versions: / Description: / Verilog Test Fixture created by ISE for modu
6、le: test_detector/ Dependencies:/ / Revision:/ Revision 0.01 - File Created/ Additional Comments:/ /module haha;module test_detector();reg clk;reg reset;reg ipt;wire result;reg20:0 indata=20b101001110011011110110;integer i;initial clk=1;always #1 clk=clk;initialbeginreset=1;ipt=0;#4reset=0;for(i=0;i
7、21;i=i+1)beginipt=indatai;#2;end#10$stop;end5abcd detector_instance(.clk(clk),.reset(reset),.ipt(ipt),.result(result);endmodule3.仿真结果4设计结论(包括:设计结果分析、设计中遇到的问题、设计心得和体会等)1.设计结果分析:以时钟信号的一个周期为基准,有仿真结果可看出,当输入(ipt )为连续的一个周期高一个周期的低一个周期的高(即 101)时,输出(result)为高。与设计要求一致,达到了检测 101 的目的。2.设计中遇到的问题:(1).由于之前没有接触过 verilog,所以就算明白原理也感觉无从下手。(2).在 verilog 语言写好了之后,做不到仿真。结果将程序模块化了之后,又分别放在了两个文件里面,便能够做仿真了。3.设计心得和体会:(1).从一点都不懂 verilog 开始,经过这么一次课程设计,和不断的讨教中,verilog 已经有了一点小小入门。(2).在使用软件设计的时候,必须懂得需要设计的东西的原理,才能使软件设计更加如鱼得水。(3).进一步学习理解到了序列检测器的原理。