串行信号检测器.docx
- 文档编号:7563999
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:7
- 大小:342.49KB
串行信号检测器.docx
《串行信号检测器.docx》由会员分享,可在线阅读,更多相关《串行信号检测器.docx(7页珍藏版)》请在冰豆网上搜索。
串行信号检测器
串行数据检测器
一、实验目的
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语言作为执行核心,通过了种从无到有,从不会到自由运用的过程。
在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。
完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。
很少有人会一步登天吧。
永不言弃才是最重要的。
而且,这对于我们的将来也有很大的帮助。
以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。
”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义。
今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行 信号 检测器