zoukankan      html  css  js  c++  java
  • Verilog学习笔记设计和验证篇(四)...............状态机的置位与复位

    1)状态机的异步置位和复位

     异步置位与复位是于时钟无关的。当异步置位或复位信号来临时,他们立即分别置触发器的输出为1或0,不需要等待时钟沿的到来。要将他们列入always块的事件控制信号内就能触发always的执行。

    沿关键词包括posedge(信号上升沿)和negedge(下降沿触发)的时钟,信号可以按照任意顺序列出。

    1)异步高电平有效置位: @(posedge clk or posedge set)

    2)异步低电平有效复位: @(posedge clk or negedge set)

    2)异步。高电平置位 低电平有效复位: @(posedge clk or posedge set or negedge set)

    带异步高电平有效的置位/复位的D触发器示例:

     1 module dff(data,set,reset,q,clk,qb);
     2   input data;
     3   input set,reset,clk;
     4   output q,qb;
     5   reg q,qb;
     6   always @(posedge clk or posedge reset or posedge set )
     7    begin
     8    if(reset) begin q<=0;qb<=1; end
     9    else if(set) begin q<=1;qb<=0;end
    10    else begin q<=data; qb<=~data;end
    11    end
    12  endmodule

    2)状态机的同步置位和复位

    同步置位与复位时钟只有在时钟的有效跳变沿时刻置位或复位,信号才能使触发器置位或者复位。因此不能把set和reset信号名列入always块中,因为他们的变化不能触发always快执行。

    1)同步正跳变沿触发: @(posedge clk )

    2)同步负跳变沿触发: @(negedge clk)

    具有同步高电平有效的置位/复位的D触发器:

     1 module dff(data,set,reset,q,clk,qb);
     2   input data;
     3   input set,reset,clk;
     4   output q,qb;
     5   reg q,qb;
     6   always @(posedge clk )
     7    begin
     8    if(reset) begin q<=0;qb<=1; end
     9    else if(set) begin q<=1;qb<=0;end
    10    else begin q<=data; qb<=~data;end
    11    end
    12  endmodule

    可见同步D触发器和异步D触发器的区别仅仅差别在always块的敏感列表是否包含置位信号。

  • 相关阅读:
    Q12:app在iPhone上执行正常,iPad上出现黑边问题解决方式
    SPOJ 104 Highways 最小生成树计数
    微信支付 常见报错
    oracle创建表空间、用户、和权限配置
    Android Matrix图像变换处理
    java项目部署到weblogic上后,某些浏览器无法取得session值
    简介redis以及ubuntu和windows下怎样安装redis和配置文件具体解释
    Melo作为程序猿的2016年
    软件架构,WEB
    软件架构,WEB
  • 原文地址:https://www.cnblogs.com/SYoong/p/5949375.html
Copyright © 2011-2022 走看看