利用Verilog HDL实现序列检测器,附上仿真程序。

这篇具有很好参考价值的文章主要介绍了利用Verilog HDL实现序列检测器,附上仿真程序。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、序列检测器

序列检测器的逻辑功能就是将一个指定的比特序列从一串较长的比特流中识别出来。
例如:针对一个较长的比特流010010010011110101010…,我们希望能将比特序列为“10010”的序列检测出来,并且每次检测到10010就将输出置“1”.

注意:如序列”100100100…",根据以上的介绍,会在第六个比特的时刻输出会置1,但是,在第9个比特时输出不会被置”1“,虽然第4-8比特也构成了”10010“,但是却与第一次的”10010“重叠,因此不能算作有效检测。


二、状态转移图

利用Verilog HDL实现序列检测器,附上仿真程序。

设:
S0表示初始态,代表检测到第一个比特为0,即”0“;
S1是第二个状态,代表检测到第一个比特为1,即”1“;
S2是第三个状态,代表检测到的序列为”10“;
S3是第四个状态,代表检测到的序列为”100“;
S4是第五个状态,代表检测到的序列为”1001“;

注意:该状态的设定已经化简掉多余状态。

三、序列检测器Verilog HDL程序

1、源程序

代码如下:

module SeqDetecter(
	clk,
	reset_n,
	bits,
	Det_Done
	);
	
	input	clk;
	input	reset_n;
	input	bits;
	output	reg Det_Done;
	
	parameter	S0 = 5'b00001;
	parameter	S1 = 5'b00010;
	parameter	S2 = 5'b00100;
	parameter	S3 = 5'b01000;
	parameter	S4 = 5'b10000;
	
	reg		[4:0] state;
	
	always @(posedge clk,negedge reset_n)
	if(!reset_n) 
	   state <= 5'b00001;
	else begin
	   case(state)
	       S0:     if(bits == 0) state<=S0; else  state<=S1;
	       S1:     if(bits == 0) state<=S2; else  state<=S1;  
	       S2:     if(bits == 0) state<=S3; else  state<=S1;
           S3:     if(bits == 0) state<=S0; else  state<=S4;
           S4:     if(bits == 0) state<=S0; else  state<=S1;
           default:              state<=S0;
       endcase
    end
    
	always @(posedge clk,negedge reset_n)
	if(!reset_n)
	   Det_Done<=0;
	else begin
	   case(state)
	       S0:     Det_Done <= 1'b0;
	       S1:     Det_Done <= 1'b0;  
	       S2:     Det_Done <= 1'b0;
           S3:     Det_Done <= 1'b0;
           S4:     if(bits == 0) Det_Done<=1'b1; else  Det_Done<=1'b0;
           default:Det_Done <= 1'b0;
       endcase
    end
endmodule

2、测试平台程序

代码如下(示例):

`timescale 1ns / 1ns

module seq_detecter_tb;
    reg     sclk;
    reg     sreset_n;
    wire    oDet_Done;
    
    wire    x;
    reg     [23:0]seqs;

SeqDetecter inst0(
	.clk(sclk),
	.reset_n(sreset_n),
	.bits(x),
	.Det_Done(oDet_Done)
	);
	
	initial sclk = 0;
	always #10 sclk = ~sclk;
	
	assign x = seqs[23];
	
	initial begin
	sreset_n   = 1;
	seqs       = 23'b0; 
	#200;
	sreset_n   = 0;
	#20;
	sreset_n   = 1;
	seqs       = 20'b1100_1001_0000_1001_0100;
	#1000;
	$stop;
	end
	
	always @(posedge sclk)
	seqs = {seqs[22:0],seqs[23]};
	
endmodule

该处使用的url网络请求的数据。


四、仿真结果

利用Verilog HDL实现序列检测器,附上仿真程序。

五、总结

本博文实现了一个简单的基于状态机的序列检测器,并给出了仿真结果,可以作为Verilog HDL学习中,时序电路设计的练习题目。文章来源地址https://www.toymoban.com/news/detail-461301.html

到了这里,关于利用Verilog HDL实现序列检测器,附上仿真程序。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 序列检测器(两种设计方法和四种检测模式|verilog代码|Testbench|仿真结果)

    目录 一、前言 二、状态机法和寄存器法 2.1状态机法 2.11 使用状态机检测“1001” 2.12 verilog代码 2.13 testbench 2.14仿真结果 2.2移位寄存器法 2.21 使用移位寄存器法检测1001 2.22 verilog代码 2.23 testbench 2.24仿真结果 三、重叠检测与非重叠检测(检测序列1001) 3.1重叠检测 3.11 重叠检测

    2024年02月04日
    浏览(45)
  • 【数字IC手撕代码】Verilog模三检测器(判断输入序列能否被三整除)|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区 联合力荐 !近500篇 数字IC精品文章收录 ! 【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍 本系列旨在提

    2024年02月16日
    浏览(38)
  • 实验四 用集成移位寄存器实现序列检测器

    一、实验要求 用移位寄存器和与非门设计一个 1101 序列检测器。电路连续不停地工作,对 串行输入的序列进行检测,当连续检测 4 个码元符合检测码 1101 时,检测器输出 为 1 ,指示灯亮,其他情况下输出为 0 ,指示灯灭。 二、实验设备 1 . Mini-FPGA 开发板( Cyclone IV 系列

    2024年02月03日
    浏览(43)
  • Verilog设计“111”检测器与“01110”检测器并测试所有情况

    使用Quartus+modelsim完成本次设计 分析 分析题目,得到其有限状态机为下图: 代码实现 Testbench 结果 Modelsim结果如下图所示,分析可知实现了题目要求。 逻辑综合出来的电路如下图所示:即只有S3状态才会输出OUT=1。 其中的state的状态机如下图所示(RLT viewer中所示),可见其与

    2024年02月08日
    浏览(56)
  • 1001序列检测器

    multisim仿真文件:1001序列检测器(mealy机)-单片机文档类资源-CSDN下载 modelsim仿真文件:1001序列检测器modelsim仿真和测试文件-单片机文档类资源-CSDN下载 实验报告:1001序列检测器实验报告-单片机文档类资源-CSDN下载 电 子 科 技 大 学 课程设计名称:           1001 序列检

    2024年02月06日
    浏览(45)
  • 简单的状态机设计——序列检测器

    1.序列检测器 序列检测器是时序数字电路中非常常见的设计之一。它的逻辑功能是将一个指定的序列从数字码流中识别出来。 2.例1:\\\"10010\\\"序列检测器 对串行输入的数据进行检测,检测“10010”。设X为数字码流输入,Z为检出标记输出,高电平表示“发现指定序列”,低电平表

    2024年02月11日
    浏览(42)
  • 【 FPGA 】序列检测器 11010 (mealy状态机,moore状态机)

            状态机是硬件电路设计的常用的描述工具,也是电路设计的重要思想。很早之前我就知道mealy状态机和moore状态机,但是对两者的差别不是非常的清楚,最近在学习系列检测器的设计时对这两种状态机和一段式、三段式状态机有了更深刻的了解,在这里分享自己的见解

    2024年02月05日
    浏览(40)
  • 用jk触发器设计一个011序列检测器的设计分析过程

       心得体会:经过此次设计,加深了对时序逻辑电路的理解,当要求对一个连续的一串信号进行输入输出处理时可以用到有记忆存储、反馈功能的jk触发器或者d触发器。

    2024年02月04日
    浏览(44)
  • 【opencv】传统目标检测:Haar检测器实现人脸检测

    传统目标分类器主要包括Viola Jones Detector、HOG Detector、DPM Detector,本文主要介绍VJ检测器,在VJ检测器基础上发展出了Haar检测器,Haar检测器也是更为全面、使用更为广泛的检测器。 Viola Jones Detector是作为人脸检测器被Viola和Jones提出来的,后来Rainer Lienhart和Jochen Maydt将这个检测

    2024年02月12日
    浏览(37)
  • OpenCV 如何实现边缘检测器

    返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何实现拉普拉斯算子的离散模拟 下一篇 :OpenCV系列文章目录(持续更新中......) 在本教程中,您将学习如何: 使用 OpenCV 函数 cv::Canny 实现 Canny 边缘检测器。 Canny Edge探测器 [48]由John F. Canny于1986年开发。Canny 算法

    2024年04月25日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包