verilog实现序列检测器

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

西北工业大学

《串行数据检测器》实验报告

学院:软件与微电子学院

学号:200830**** 姓名:陈昊

专业:微电子学

实验时间:2010年11月

实验地点:实验室及宿舍

指导教师:

西北工业大学

2010 年11 月

一、实验目的及要求

目的:

1、掌握利用有限状态机实现一般时序逻辑分析的方法;

2、掌握用verilog编写可综合的有限状态机的标准模板;

3、掌握用verilog编写状态机模块的测试文件的一般方法。

要求:

1.设计一个串行数据检测器。要求:连续4个或4个以上为1时输出为1,

其他输入情况为0 。编写测试模块对设计的模块进行各层次的仿真,

并观察波形,编写实验报告。

二、实验设备(环境)及要求

实验设备:PC机一台

环境要求:安装Modelsim仿真软件以及Synplify Pro综合工具

三、实验内容与步骤

1.分析序列检测器示意图

2.参照可综合有限状态机模板编写序列检测器源代码serial_detected.v如下

/*

* @file serial_detected.v

* @Synopsis 这是一个利用有限状态机实现的串行数据检测器,* 连续4个或4个以上为1时输出为1,其他输入情况为0 。* @Author 陈昊, @

* @Version 1

* @Date 2010-11-04

*/

/*

* Copyright(C) 2010-

* By 陈昊

* All right reserved

*

*/

module serial_detected(din,clk,reset,out);

input din; //串行数据输入

input clk; //时钟输入

input reset; //异步复位信号输入

output out; //结果输出

reg out;

reg [3:0] state,nextstate;

//状态编码

parameter

Idle = 3'b000,

First_bit = 3'b001,

Second_bit = 3'b010,

Third_bit = 3'b011,

Fourth_bit = 3'b100;

//----------------更新当前状态-------------------------- always @(posedge clk or negedge reset)

begin

if(!reset)

state <= Idle;

else

state <= nextstate;

end

//------------------------------------------------------ //-------------产生下一状态组合逻辑--------------------- always @(state or din)

begin

case(state)

Idle:

if(din)

nextstate = First_bit;

else

nextstate = Idle;

First_bit:

if(din)

nextstate = Second_bit;

else

nextstate = Idle;

Second_bit:

if(din)

nextstate = Third_bit;

else

nextstate = Idle;

Third_bit:

if(din)

nextstate = Fourth_bit;

else

nextstate = Idle;

Fourth_bit:

if(din)

nextstate = Fourth_bit;

else

nextstate = Idle;

default:

nextstate = 3'bxxx;

endcase

end

//------------------------------------------------------ //--------------产生输出的组合逻辑---------------------- always @(state or reset or din)

begin

if(!reset)

out <= 0;

else

if(state == Fourth_bit)

out <= 1;

else

out <= 0;

end

//------------------------------------------------------ endmodule

3.编写测试模块test_serial_detected.v如下

/*

* @File test_serial_detected.v

* @Synopsis 这是串口序列检测器的测试文件

* @Author 陈昊, @

* @Version 1

* @Date 2010-11-04

*/

/*

* Copyright(0C) 2010-

* By 陈昊

* All right reserved

*/

`timescale 1ns/1ns

module test_serial_detected;

reg din;

reg clk,reset;

wire out;

//--------初始化信号和变量--------------------------

相关文档
最新文档