在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2042|回复: 5

[求助] 设计一个类似“1011010”序列检测器

[复制链接]
发表于 2015-6-30 12:22:58 | 显示全部楼层 |阅读模式
50资产
本帖最后由 ld19940119 于 2015-6-30 13:16 编辑

QQ截图20150630122142.png

发表于 2015-6-30 13:04:09 | 显示全部楼层
回个帖就5信元,用1信元悬赏,好有才
发表于 2015-6-30 13:04:46 | 显示全部楼层
用状态机就可以了
发表于 2015-6-30 16:40:31 | 显示全部楼层
so easy !
发表于 2015-6-30 17:48:30 | 显示全部楼层




  1. module serial_check(
  2.                 clk                ,
  3.                 rst_n                ,
  4.                 serial_config        ,
  5.                 serial_config_en,
  6.                 enable                ,
  7.                 x_in                ,
  8.                 z_out                ,
  9.                 c_num               
  10.                 );

  11. input                clk;                        //clock signal
  12. input                rst_n;                        //rest_signal, low active
  13. input[6:0]        serial_config;                //serial which is for compare
  14. input                serial_config_en;        //serial enable
  15. input                enable;                        //enable signal, high active
  16. input                x_in;                        //x input
  17. output                z_out;                        //z output, high means find active serial
  18. output[7:0]        c_num;                        //serial number

  19. wire                z_out;
  20. reg[6:0]        serial_comp;
  21. reg[6:0]        serial_in;
  22. reg[7:0]        c_num;
  23. reg[2:0]        state;
  24. reg[2:0]        nxt_state;

  25. parameter        IDLE = 0;
  26. parameter        CHECK = 1;
  27. parameter        SUCCESS = 2;

  28. assign        z_out = (nxt_state == SUCCESS);

  29. always@(posedge clk or negedge rst_n)
  30.         if(!rst_n)
  31.                 serial_comp <= 0;
  32.         else if(serial_config_en)
  33.                 serial_comp <= serial_config;

  34. always@(posedge clk or negedge rst_n)
  35.         if(!rst_n)
  36.                 serial_in <= 0;
  37.         else if(enable)
  38.                 serial_in <= (serial_in << 1) | x_in;

  39. always@(posedge clk or negedge rst_n)
  40.         if(!rst_n)
  41.                 c_num <= 0;
  42.         else if(!enable || serial_config_en)
  43.                 c_num <= 0;
  44.         else if(state == SUCCESS)
  45.                 c_num <= c_num + 1;
  46.        
  47. always@(posedge clk or negedge rst_n)
  48.         if(!rst_n)
  49.                 state <= IDLE;
  50.         else
  51.                 state <= nxt_state;

  52.                
  53. always@(*) begin
  54.         if(!rst_n)
  55.                 nxt_state = IDLE;
  56.         else
  57.         case(state)
  58.         IDLE:        if(enable)
  59.                         nxt_state = CHECK;
  60.                 else
  61.                         nxt_state = IDLE;
  62.         CHECK:
  63.                 if(serial_in == serial_comp)
  64.                         nxt_state = SUCCESS;
  65.                 else if(enable)
  66.                         nxt_state = CHECK;
  67.                 else
  68.                         nxt_state = IDLE;
  69.         SUCCESS:
  70.                 if(serial_in == serial_comp)
  71.                         nxt_state = SUCCESS;
  72.                 else if(enable)
  73.                         nxt_state = CHECK;
  74.                 else
  75.                         nxt_state = IDLE;
  76.         default:
  77.                         nxt_state = IDLE;
  78.         endcase
  79. end
  80. endmodule





复制代码


随便写了一个,不符合要求自己修改一下吧
发表于 2015-6-30 20:21:27 | 显示全部楼层
用状态机运行就可以了,这个问题也so ease吧!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 19:51 , Processed in 0.024924 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表