verilog实现序列检测器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
//--------初始化信号和变量--------------------------