zoukankan      html  css  js  c++  java
  • 门级建模

     

    学习目标

    学习Verilog提供的门级原语

    理解门的实例引用、门的符号以及and/or,buf/not类型的门的真值表

    学习如何根据电路的罗技图来生成Verilog描述

    讲述门级设计中的上升、下降和关断延迟

    解释门级设计中的最小、最大和典型延迟

     1.门的类型

    1.1与门(and)和或门(or)

    具有一个标量输出端和多个标量输入端。端口列表中的第一个端口必定是输出端口,其后为输入端

    可以使用的属于与/或门类的其他门的术语包括:

    and(与门) or(或门) xor(异或门) nand(与非门) nor(或非门) xnor(同或门)

    wire OUT,IN1,IN2;
    //基本门的实例引用
    and a1(OUT,IN1,IN2);
    nand na1(OUT,IN1,IN2);
    or or1(OUT,IN1,IN2);
    nor nor1(OUT,IN1,IN2);
    xnor nx1(OUT,IN1,IN2);
    
    //输入端超过两个,三输入端的与非门
    nand na1_3inp(OUT,IN1,IN2,IN3);
    
    //实例引用门时,不给实例命名
    and(OUT,IN1,IN2);//合法的门实例引用

    基本门的真值表

    and 0 1 x z
    0 0 0 0 0
    1 0 1 x x
    x 0 x x x
    z 0 x x x
    nand 0 1 x z
    0 1 1 1 1
    1 1 0 x x
    x 1 x x x
    z 1 x x x
    or 0 1 x z
    0 0 1 x x
    1 1 1 1 1
    x x 1 x x
    z x 1 x x
    nor 0 1 x z
    0 1 0 x x
    1 0 0 0 0
    x x 0 x x
    z x 0 x x
    xor 0 1 x z
    0 0 1 x x
    1 1 0 x x
    x x x x x
    z x x x x
    xnor 0 1 x z
    0 1 0 x x
    1 0 1 x x
    x x x x x
    z x x x x

    1.2缓冲器/非门

    buf/not门具有一个标量输入和多个标量输出。

     缓冲门(buf)/非门(not)

    输入端口必须是在实例端口列表的最后一个。

    //基本门的实例引用
    buf b1(OUT1,IN);
    not n1(OUT1,IN);
    
    //输出端多余两个
    buf b1_2out(OUT1,OUT2,IN);
    
    //实例引用门时,不给实例命名
    not (OUT1,IN );//合法的门实例引用
        

     真值表

    buf in out
      0 0
      1 1
      x x
      z z
    not in out
      0 1
      1 0
      x x
      z x

    带控制端的缓冲器/非门(bufif/notif)

    Verilog提供了其他4个带有控制信号端口的buf/not门

    bufif1 bufif0 notif1 notif0

    真值表

        ctrl
      bufif1 0 1 x z
    in 0 z 0 L L
    1 z 1 H H
    x z x x x
    z z x x x
        ctrl
      bufif0 0 1 x z
    in 0 0 z L L
    1 1 z H H
    x x z x x
    z x z x x
        ctrl


      notif1 0 1 x z
    in 0 z 1 H H
    1 z 0 L L
    x z x x x
    z z x x x
        ctrl

      notif0 0 1 x z
    in 0 1 z H H
    1 0 z L L
    x x z x x
    z x z x x

    2.门延迟

    2.1上升、下降、关断延迟

    上升延迟

    门的输出从0,x,z变化为1所需的时间称为上升延迟。

    下降延迟

    门的输出从1,x,z变化为0所需的时间

    关断延迟

    关断延迟是指门的输出从0,1,x变化为z所需的时间

    PS如果值变化到不确定值x,则所需的时间可以看成是以上三种延迟值中最小的那个。

    延迟值说明的类型

    //以下三种延迟都等于delay_time所表示的延迟时间
    and #(delay_time) a1(out,i1,i2);
    
    //说明上升延迟和下降延迟
    and #(rise_val,fall_val) a2(out,i1,i2);
    
    //说明上升延迟,下降延迟和关断延迟
    bufif0 #(rise_val,fall_val, turnoff_val) b1(out,in,control);

    2.2最小/典型/最大延迟

    //一个延迟
    //若最小延迟=4
    //若典型延迟=5
    //若最大延迟=6
    and #(4:5:6) a1(out,i1,i2);
    
    //两个延迟
    //若最小延迟,上升延迟=3,下降延迟=5,关断延迟=min(3,5)
    //若典型延迟,上升延迟=4,下降延迟=6,关断延迟=min(4,6)
    //若最小延迟,上升延迟=5,下降延迟=7,关断延迟=min(5,7)
    and #(3:4:5,5:6:7) a2(out,i1,i2);
    
    //三个延迟
    //若最小延迟,上升延迟=2,下降延迟=3,关断延迟=4
    //若最小延迟,上升延迟=3,下降延迟=4,关断延迟=5
    //若最小延迟,上升延迟=4,下降延迟=5,关断延迟=6
    and #(2:3:4,3:4:5,4:5:6) a3(out,i1,i2);
    
    //启动仿真器,使用最大延迟进行仿真
    >verilog test.v +maxdelays
    
    //启动仿真器,使用最小延迟进行仿真
    >verilog test.v +mindelays
    
    //启动仿真器,使用典型延迟进行仿真
    >verilog test.v +typedelays
  • 相关阅读:
    《JAVA多线程编程核心技术》 笔记:第四章、Lock的使用
    服务器负载粗略估算
    spring事务传播性理解
    BlockingQueue 阻塞队列2
    六大原则
    mycat之schema.xml理解
    mycat分库读写分离原理
    sqlservere连接问题
    java代码添加mysql存储过程,触发器
    Amoeba+Mysql实现读写分离+java连接amoeba
  • 原文地址:https://www.cnblogs.com/fxygrzb/p/5936782.html
Copyright © 2011-2022 走看看