zoukankan      html  css  js  c++  java
  • Verilog笔记.5.同步、异步

    在数字电路中经常有同步synchronism、异步asynchronism的概念。异步指输入信号和时钟无关;同步指输入信号和时钟信号有关,实际上就是输入信号和时钟信号进行了与运算或者与非运算。实际开发中,经常有同步清零、异步清零、同步复位、异步复位等概念,下面就给与相关代码演示。

    简单的异步复位

    1 always @ (posedge clk or negedge rst_n)
    2          if(!rst_n) b <= 1'b0;
    3          else b <= a;

    简单的同步复位

    1 always @ (posedge clk)
    2          if(!rst_n) b <= 1'b0;
    3          else b <= a;

    PS:同步复位信号RST必须至少长于一个时钟周期CLK,否则,这个复位信号引起的变化是不会被检测到的!

    异步复位、同步释放

     1 always @ (posedge clk)
     2          rst_nr <= rst_n;                 //现将异步复位信号用同步时钟打一拍
     3 
     4 always @ (posedge clk or negedge rst_nr)
     5          if(!rst_nr) b <= 1'b0;
     6          else b <= a;
     7 
     8 always @ (posedge clk or negedge rst_nr)
     9          if(!rst_nr) c <= 1'b0;
    10          else c <= b;

    同步复位和异步复位的区别就在于 前者的复何信号不能出现在always语句的敏感信号表中,无论是同步复位还是异步
    复位,always语句的结构都是if(Reset)...else... ,否则,综合工具将不能正确的综合

    所有always语句中的赋值最好采用非阻塞赋值语 ,否则,可能会导致仿真与综合的不一致”

  • 相关阅读:
    试题 历届试题 国王的烦恼
    试题 历届试题 九宫重排
    试题 历届试题 网络寻路
    试题 历届试题 危险系数
    试题 历届试题 横向打印二叉树
    试题 历届试题 幸运数
    试题 历届试题 大臣的旅费
    试题 历届试题 连号区间数
    Linux多进行之fork
    linux C语言getopt()函数的使用
  • 原文地址:https://www.cnblogs.com/protogenoi/p/8979110.html
Copyright © 2011-2022 走看看