串行信号检测器.docx

上传人:b****6 文档编号:7563999 上传时间:2023-01-25 格式:DOCX 页数:7 大小:342.49KB
下载 相关 举报
串行信号检测器.docx_第1页
第1页 / 共7页
串行信号检测器.docx_第2页
第2页 / 共7页
串行信号检测器.docx_第3页
第3页 / 共7页
串行信号检测器.docx_第4页
第4页 / 共7页
串行信号检测器.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

串行信号检测器.docx

《串行信号检测器.docx》由会员分享,可在线阅读,更多相关《串行信号检测器.docx(7页珍藏版)》请在冰豆网上搜索。

串行信号检测器.docx

串行信号检测器

串行数据检测器

 

 

一、实验目的

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

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

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

二、实验要求

1.设计一个串行数据检测器。

要求:

连续4个或4个以上为1时输出为1,

其他输入情况为0 。

编写测试模块对设计的模块进行各层次的仿真,并观察波形,编写实验报告。

 

2.实验设备(环境)及要求 

实验设备:

PC机一台 

环境要求:

安装Modelsim仿真软件以及Synplify Pro综合工具  

三、实验内容与步骤 

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

2.序列检测器源代码serial_detected.v如下

/* 

* @file  serial_detected.v 

* @Synopsis   这是一个利用有限状态机实现的串行数据检测器, *   

连续4个或4个以上为1时输出为1,其他输入情况为0 。

*/

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 这是串口序列检测器的测试文件  

`timescale 1ns/1ns 

module test_serial_detected; 

reg din;

reg clk,reset;  

wire out; 

 

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

initial  

begin   din = 0;   

reset = 1;  //给复位信号变量赋初值  

clk = 0;  //给时钟变量赋初值 

#22 reset = 0; //使复位信号有效 

#133 reset = 1;  //经过一个多周期以后是复位信号无效 

end 

 //--------产生信号和控制

always #50 clk = ~clk;  //产生周期性时钟 

always @(posedge clk) //在每次时钟正跳变沿时刻产生不同的din 

 begin   

#50 din <= {$random}%2; //din的值是随机产生的   

#(3*50+12); 

//din的值维持一段时间 

 end  

initial  

//暂停仿真以便观察仿真波形 

begin   

#100000 $stop; 

end 

 //----------------调用被测试模块--------

serial_detected 

tsd(.clk(clk),.reset(reset),.out(out),.din(din)); 

endmodule 

4.利用Modelsim编译纠错和仿真

5.利用Synplify Pro进行综合 

6.利用Quartus2进行布局布线 

四、实验结果与数据处理 

1.Modelsim仿真波形如下,自上向下信号依次为reset、clk、din、out。

2.选择Altera STRATIX器件库综合产生的RTL级电路如下:

3.使用Modelsim进行后仿真波形如下:

五.分析与讨论

用有限状态机编写的该序列检测器成功的通过了综合和布局布线,分析前仿真和后仿真波形发现,该电路功能完全正确,实现了预定任务。

六.心得体会

通过本次课程设计,我认为,在这学期的课设中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我通过查找大量资料,请教老师和同学,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。

更重要的是,在课设过程中,我们学会了很多学习的方法。

而这是日后最实用的,真的是受益匪浅。

要面对社会的挑战,只有不断的学习、实践,再学习、再实践。

 

我们采用Verilog语言作为执行核心,通过了种从无到有,从不会到自由运用的过程。

在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。

完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。

很少有人会一步登天吧。

永不言弃才是最重要的。

 

   而且,这对于我们的将来也有很大的帮助。

以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。

就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。

 

    课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。

”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。

今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1