时序电路设计-101序列检测器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字逻辑设计及应用课程设计报告
姓名:雷蕾
学号:2010012030036
选课号:
设计题号: 5
一.设计题目:设计101序列检测器
二.设计要求
要求使用状态机设计一个序列检测器,检测输入数据,当输入中出现101时,输出1,否则输出为0。

不进行重复判断,即当出现10101…时,输出为00100…
判断的具体流程如下:
1.电路复位,进入状态S0,等待输入
2.S0状态下:如果输入为0,则停留在S0,如果输入为1,则跳转到S1
3.S1状态下:如果输入为0,则跳转到S2,如果输入为1,则停留在S1
4.S2状态下:如果输入为1,则输出1,并跳转到S0,如果输入为0,则输出0,并跳转到S0
检测器电路实现:时钟信号,1 bit输入待判断信号,1bit输出判断结果。

三.设计过程
1.设计方案:
通过使用ISE编写verilog语言,实现以下过程:
1
s3
只有当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:
// Target Devices:
// 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 = 2'b00, s1 = 2'b01, s2 = 2'b10;
reg[1:0] state;
always @ (posedge clk)
begin
if(reset)
begin
state<=s0;
result<=0;
end
else
begin
case(state)
s0:
begin
if(ipt==0)
begin
state<=s0;
result<=0;
end
else
.
begin
state<=s1;
result<=0;
end
end
s1:
begin
if(ipt==0)
begin
state<=s2;
result<=0;
end
else
begin
state<=s1;
result<=0;
end
end
s2:
begin
if(ipt==0)
begin
state<=s0;
result<=0;
end
else
begin
state<=s0;
result<=1;
end
end
default:
begin
state<=s0;
result<=0;
end
endcase
end
end
endmodule
测试文件:
`timescale 10ns / 1ps
////////////////////////////////////////////////////////////////////////////// //
// Company:
// Engineer:
//
// Create Date: 23:05:50 06/06/2012
// 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 module: test_detector
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////// //
module haha;
module test_detector();
reg clk;
reg reset;
reg ipt;
wire result;
reg[20:0] indata=20'b101001110011011110110;
integer i;
initial clk=1;
always #1 clk=~clk;
initial
begin
reset=1;
ipt=0;
#4
reset=0;
for(i=0;i<21;i=i+1)
begin
ipt=indata[i];
#2;
end
#10
$stop;
end
abcd detector_instance(.clk(clk),.reset(reset),.ipt(ipt),.result(result));
endmodule
3.仿真结果
四.设计结论(包括:设计结果分析、设计中遇到的问题、设计心得和体会等) 1.设计结果分析:
以时钟信号的一个周期为基准,有仿真结果可看出,当输入(ipt)为连续的一个周期高一个周期的低一个周期的高(即101)时,输出(result)为高。

与设计要求一致,达到了检测101的目的。

2.设计中遇到的问题:
(1).由于之前没有接触过verilog,所以就算明白原理也感觉无从下手。

(2).在verilog语言写好了之后,做不到仿真。

结果将程序模块化了之后,又分别放在了两个文件里面,便能够做仿真了。

3.设计心得和体会:
(1).从一点都不懂verilog开始,经过这么一次课程设计,和不断的讨教中,verilog已经有了一点小小入门。

(2).在使用软件设计的时候,必须懂得需要设计的东西的原理,才能使软件设计更加如鱼得水。

(3).进一步学习理解到了序列检测器的原理。

如有侵权请联系告知删除,感谢你们的配合!。

相关文档
最新文档