名称:序列检测器设计Verilog代码Vivado仿真(文末获取)
软件:Vivado
语言:Verilog
代码功能:
1. 序列检测
1.1 重复判断
工程文件
程序文件
程序编译
Testbench
仿真图
1.2 不重复判断
工程文件
程序文件
程序编译
Testbench
仿真图
部分代码展示:
//带重复判断的序列检测器011 module sequence_detection( input clk,//时钟 input rst_n,//复位 input data_in,//序列输入 output detection_result//检测结果 ); reg [2:0] state=3'd0;//定义状态 parameter s_idle=3'd0; parameter s_d0=3'd1; parameter s_d01=3'd2; parameter s_d011=3'd3; always@(posedge clk or negedge rst_n) if(rst_n==0)//复位 state<=s_idle; else case(state) s_idle://初始状态 if(data_in==1'b0)//输入0 state<=s_d0; else state<=s_idle; s_d0://已检测到0 if(data_in==1'b1)//输入1 state<=s_d01; else//输入0 state<=s_d0; s_d01://已检测到01 if(data_in==1'b1)//输入1 state<=s_d011; else//输入0 state<=s_d0; s_d011://已检测到011 if(data_in==1'b1)//输入1 state<=s_idle; else//输入0 state<=s_d0; default: state<=s_idle; endcase reg detection_result_reg=0; always@(posedge clk) if(state==s_d011)//已检测到011 detection_result_reg<=1;//检测结果 else detection_result_reg<=0; assign detection_result=detection_result_reg;//输出 endmodule
源代码
扫描文章末尾的公众号二维码