ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【FPGA学习笔记】VL26 含有无关项的序列检测

2022-07-03 20:01:34  阅读:172  来源: 互联网

标签:nstate FPGA clk 笔记 信号 rst input VL26 match


描述

请编写一个序列检测模块,检测输入信号a是否满足011XXX110序列(长度为9位数据,前三位是011,后三位是110,中间三位不做要求),当信号满足该序列,给出指示信号match。

程序的接口信号图如下:

 

 

程序的功能时序图如下:


请使用Verilog HDL实现以上功能,并编写testbench验证模块的功能。 要求代码简洁,功能完整。

 

输入描述:

clk:系统时钟信号 rst_n:异步复位信号,低电平有效 a:单比特信号,待检测的数据  

输出描述:

match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0     答:

移位寄存器

 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 module sequence_detect(     input clk,     input rst_n,     input a,     output reg match     );     reg [8:0] a_r;           always@(posedge clk or negedge rst_n) begin         if(~rst_n)             match <= 1'b0;         else             match <= (a_r[2:0] == 3'b110) && (a_r[8:6] == 3'b011);     end           always@(posedge clk or negedge rst_n) begin         if(~rst_n)             a_r <= 9'b0;         else             a_r <= {a_r[7:0], a};     end endmodule

状态机

 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 module sequence_detect(     input clk,     input rst_n,     input a,     output reg match );     parameter ZERO=0, ONE=1, TWO=2, THREE=3, FOUR=4, FIVE=5, SIX=6, SEVEN=7, EIGHT=8, NINE=9;     reg [3:0] state, nstate;           always@(posedge clk or negedge rst_n) begin         if(~rst_n)             state <= ZERO;         else             state <= nstate;     end           always@(*) begin         case(state)             ZERO   : nstate = a? ZERO : ONE;             ONE    : nstate = a? TWO  : ONE;             TWO    : nstate = a? THREE: ONE;             THREE  : nstate = FOUR;             FOUR   : nstate = FIVE;             FIVE   : nstate = SIX;             SIX    : nstate = a? SEVEN: ONE;             SEVEN  : nstate = a? EIGHT: ONE;             EIGHT  : nstate = a? ZERO: NINE;             NINE   : nstate = a? TWO  : ONE;             default: nstate = ZERO;         endcase     end           always@(posedge clk or negedge rst_n) begin         if(~rst_n)             match = 0;         else             match = state==NINE;     end     endmodule

标签:nstate,FPGA,clk,笔记,信号,rst,input,VL26,match
来源: https://www.cnblogs.com/mahaidong/p/16440686.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有