Some Cases-多位序列+时分秒计时+时钟切换

  • 请实现对二进制(1011001)的序列检测功能
  • 模块每拍并行输入2bit,且顺序为高位先输入
  • 当检测到序列,输出一拍高电平脉冲。
  • 请用Verilog描述该模块
// data[1:0]={
   data[1],data[0]
// data[1:0]=2'b10,则输出为01,data[0]为高位,data[1]为低位
// 考虑输入数据的复用情况,当高位满足,低位不满足时,可是可用状态

module seqdet2(
	input clk,
	input rst_n,
	input [1:0] data,
	output reg det);

//状态总数和单比特输入序列检查一致;状态转移分成1bit检测和2bit检测了;
parameter
s0=4'b000,
s1=4'b0001,
s2=4'b0010,
s3=4'b0011,
s4=4'b0100,
s5=4'b0101,
s6=4'b0110,
s7=4'b0111;

reg [3:0] state, nstate;
	
always@(posedge clk)
	if(!rst_n) state<=s0;
	else state<=nstate;

always@(*)
begin det=0; nstate=s0;
	case(state)
	s0: if(data==2'b10) nstate=s2; 
	else if(data[0]==1) nstate=s1; 
	else nstate=idle;
	s1: if(data==2'b01) nstate=s3; 
	else 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值