题解 | #含有无关项的序列检测#

含有无关项的序列检测

https://www.nowcoder.com/practice/cba67d06d6834a5d9b93e1087b56c8d8

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input a,
	output reg match
	);

   reg [8:0] seq;

   // 数组位移
   always @(posedge clk or negedge rst_n) 
   begin
      if(~rst_n) begin
         seq <= 9'b0;
      end
      else begin
         seq <= {seq[6:0], a};
      end
   end

   // 判断数列的头部三位和末尾三位是否满足
   // 数列中间是无关项
   always @(posedge clk or negedge rst_n) 
   begin
      if(~rst_n)
         match<= 1'b0;
      else
         match <= (seq[8:6]==3'b011 && seq[2:0]==3'b110);
   end


   
   //========================================================
   // 引入casez 进行无关项判断
   // 这样用的不是最基本的逻辑门,且当判断的位数多了之后不方便
   //========================================================
   /*
   always @(posedge clk or negedge rst_n) 
   begin
      if(~rst_n) begin
         match <= 1'b0;
      end
      else begin

         casez (seq)

         9'b011_???_110: match <= 1'b1;
         default:
            match <= 1'b0;

         endcase

         // match <= (seq == 9'b011_???_110);
      end
   end
   */
  
endmodule

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务