6-1 Verilog Mealy状态机之序列检测器

使用工具:Xilinx ISE 14.7

序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中的预设值相同则输出1,否则输出0

问题描述:

6-1 Verilog Mealy状态机之序列检测器_第1张图片

状态转换图:

6-1 Verilog Mealy状态机之序列检测器_第2张图片

在这里需要注意的是,Mealy状态机和Moore状态机不同,他的输出是由输入与当前状态共同决定的因此有:

6-1 Verilog Mealy状态机之序列检测器_第3张图片

实现代码如下:

6-1 Verilog Mealy状态机之序列检测器_第4张图片

在设计时值得注意的是,因为目标序列中都存在子序列“10"因此可以有效序列中肯定存在子序列”10“所以可以通过控制状态机的输入输出情况来进行序列检测

测试文件:

initial begin
		// Initialize Inputs
		clk = 0;		check = 0;
		num = 1;		#20;		num = 1;		#20;
		num = 1;		#20;		num = 1;		#20;
		num = 0;		#20;		num = 1;		#20;
		num = 1;		#20;		num = 0;		#20;
		num = 1;		#20;		num = 1;		#20;
		num = 0;		#20;		num = 1;		#20;
		num = 1;		#20;		num = 1;		#20;
		num = 1;		#20;		num = 1;		#20;
		num = 0;		#20;		num = 1;		#20;		
	end
	
   always #1 clk = ~clk;
	always #10 check = ~check;
仿真结果:

6-1 Verilog Mealy状态机之序列检测器_第5张图片

你可能感兴趣的:(Verilog成长记)