对应教材为《Verilog HDL:A Guide to Digital Design and Synthesis》第二版 [美] Samir Palnitkar 著

层次建模

  • 设计方法:自顶向下
  • 模块

    • 设计块
    • 激励块(测试台test bench)

基本概念

  • 词法

    • 数字声明
  • 数据类型

    • reg和wire P21
    • 向量和数组
  • 字符串
  • 系统任务

    • $display
    • $monitor
    • $time
    • $stop
    • $finish

模块和端口

  • 端口连接规则 P35图

任务及函数

  • 任务

    • task
    • 自动任务automatic
  • 函数

    • 自动函数automatic
    • function
    • 常量函数
    • 带符号函数
  • 区别 P112

门级建模

  • 类型(逻辑图符P41)

    • 与门and
    • 或门or
    • 异或门xor
    • 与非门nand
    • 或非门nor
    • 同或门xnor
    • 非门not
    • 缓冲器buf
    • 控制端bufif01/notid01
  • 门实例数组
  • 门延迟

    • 上升 : 下降 : 关断
    •     最小   , 典型 , 最大

数据流建模

  • 连续赋值assign

    • 规则 P51
  • 延迟 #5
  • 操作符 P60-67

    • 优先级

行为级建模

  • initial always
  • 过程赋值(不加assign)

    • 阻塞 =
    • 非阻塞 <=
  • 时序控制

    • 延迟 #a

      • 内嵌延迟
    • 事件 @

      • posedge 上升沿
      • negedge 下降沿
      • or
  • 条件 if else
  • 多路分支

    • case endcase
    • casex casez
  • 循环

    • while()
    • for()
    • repeat(12)
    • forever
    • 顺序块

      • begin end
    • 并行块

      • fork join
    • 生成块

      • generate endgenerate

        • 循环 条件 case

实用建模技术

  • 过程连续赋值

    • assign deassign (寄存器)
    • force relase (寄存器/线网)
  • 改写(覆盖)参数

    • defparam
    • 模块调用参数赋值
  • 条件编译/条件执行

    • 条件编译 \`ifdef \`ifndef \`else \`elsif \`endif
    • 条件执行 $test$plusargs $value$plusargs
  • 时间尺度

    • \`timescale \<time_unit\>/\<time_precision\>
  • 常用的系统任务

    • 文件输出

      • 打开文件$fopen
      • 关闭文件$fclose
      • 写文件$fdisplay $fmonitor $fwrite $fstrobe
    • 显示层次%m

      • $display $write $monitor $strobe
      • 选通显示$strobe
    • 随机数生成$random P135
    • 用数据文件对存储器初始化 $readmemb $readmemh
    • 值变转储文件VCD P137

拓展内容

  • FPGA/CPLD
  • FSM状态机

 

思维导图下载

评论已关闭

Loading...
Fullscreen Image