yuedx的个人空间 https://blog.eetop.cn/317611 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

序列检测器

已有 1250 次阅读| 2009-3-30 19:47 |个人分类:FPGA设计

 序列检测器是时序数字电路中非常常见的设计之一。它的主要功能是:将一个指定的序列从数字码流中识别出来。接下来就以设计“01101”这个序列的检测器为例,说明Verilog HDL语言的具体应用。设X为数字码流输入,Z为检出标记输出,高电平表示“发现指定序列”,低电平表示“没有发现指定的序列”。设输入的码流为“001101101111011111...”,在时钟2~6中,码流X里出现指定序列“01101”,对应输出Z在第6个时钟变为高电平“1”,表示发现指定"01101”Z输出“1”。同理在第9个时钟对应输出Z也为“1”。根据这个逻辑功能描述,我们可以分析得出状态转换图。


    其中状态A~E表示5位序列“0110
按顺序正确地出现在码流中。因为输入码流X是随机的,因此可能会有很多重叠的情况发生。这样在转换图中相应的还要有状态F和G。设初始状态为IDLE,则有相应的Verilog HDL语言程序如下。


//file name:seridetec.v

//function: 序列检测器,检测序列为:"01101"

//利用状态机实现.

module seridetec(x,z,clk,rst);

input x,clk,rst;

output z;

reg[8:0] state;

wire z;

parameter   IDLE=8'd1,

            A=8'd2,

            B=8'd4,

            C=8'd8,

            D=8'd16,

            E=8'd32,

            F=8'd64,

            G=8'd128;

           

assign z=(state==D && x==1)?1:0;

 

always@(posedge clk or negedge rst)

if(!rst)

begin

    state<=IDLE;

end

else

    casex(state)

    IDLE:if(x==0)

            state<=A;

        else state<=IDLE;

    A:if(x==1)

            state<=B;

        else state<=A;

    B:if(x==1)

            state<=C;

        else state<=F;

    C:if(x==0)

            state<=D;

        else state<=G;

    D:if(x==1)

            state<=E;

        else state<=A;

    E:if(x==1)

            state<=C;

        else state<=A;

    F:if(x==0)

            state<=A;

        else state<=B;

    G:if(x==0)

            state<=F;

        else state<=G;

default: state<=IDLE;

endcase

endmodule
由上述这个程序可以看出:Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间实现特定的功能的。每个模块都由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。如程序中的sequdet(x,z,clk,rst)就是模块的端口,声明了模块的输入、输出口。接下来就是模块中最重要的部分逻辑功能的定义。
“assign”声明语句。这种方法很简单,只需写一个“assign”,后面再加一个方程式即可。这也是最常用的方法之一。如程序中的assign z==(state==D && x==1)?1:0;就表示状态为D时又收到了1,表明收到“01101”应使Z输出为高电平。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 13

    粉丝
  • 1

    好友
  • 35

    获赞
  • 156

    评论
  • 4698

    访问数
关闭

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

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

GMT+8, 2024-4-20 05:45 , Processed in 0.015026 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部