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状态机
评论已关闭