Verilog的序列信号检测器实现及其testbench仿真

本文介绍了使用Verilog实现序列信号检测器的过程,该检测器在检测到连续的1001序列时输出1,否则输出0。通过两段式状态机设计,遇到并解决了包括输出始终为0、初始状态不定等问题。同时,文章解释了状态机如何根据时钟沿和输入数据的延迟进行状态转换,以帮助理解testbench仿真中的延迟现象。
摘要由CSDN通过智能技术生成

  终于迈向了testbench的学习,第一个就拿简单的练练手,没想这都遇到了好几个问题,在一番折腾下,终于把问题调试完毕,趁热乎过来写下本人的第一篇博客。。序列信号检测器对串行输出进行检测,如果检测到连续的1001,则输出1,否则输出0。

  程序采用两段式状态机写法。两段式状态机即:用两个always模块来描述状态机,其中一个always模块采用同步时序描述状态转移,另外一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出。状态机编码方式采用独热码方式,《Verilog数字系统设计与FPGA应用》【赵倩、林丽萍】一书中说:“CPLD器件更多地提供组合逻辑资源,而FPGA器件更多的提供触发器资源,所以对于CPLD的数字系统设计多使用格雷码编码,而基于FPGA的数字系统设计多使用独热码编码。”代码如下:

  Detected_1001.v

 1 module Detected_1001(Data_in,Clock,Reset,Detected);
 2 
 3 input Data_in,Clock,Reset;
 4 output Detected;
 5 reg Detected;
 6 reg [4:0]state;
 7 parameter s0=5'b10000,
 8           s1=5'b01000,
 9           s2=5'b00100,
10           s3=5'b00010,
11           s4=5'b00001;
12 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值