C_VerilogHDL基本知识点


对应教材为《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状态机

 

思维导图下载