亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Verilog

Verilog 核心要点速览

所有行为代码写在 module 和 endmodule 内。无论打算创建什么数字设计,都放在 module 块中。可定义端口允许信号作为 input 进入或作为 output 离开。

模块

下面空模块叫 testbench。命名随意,但须字母数字且可含下划线 _。

module testbench;
endmodule

再看另一模块。有几个信号 (d, clk, rstb) 声明为输入,q 声明为输出。

module dff (input d, clk, rstb, output q);
endmodule

数据类型

看过模块样子,再看模块内可放什么,以 testbench 模块为例。Verilog 主要两种数据类型:

reg 数据类型用于保持值如变量,而 wire 类似电线,必须持续驱动。通常 wire 用于连接多个模块和其他信号。

module testbench;
reg d;
reg rst_b;
reg clk;
wire q;
endmodule

赋值

Verilog 有三大基本块:

always @ (condition)条件满足时总是执行
initial仿真开始时仅执行一次
assign [LHS] = [RHS]RHS 变化时 LHS 更新

编写 Verilog 需牢记几条规则:

module testbench;
reg d;
reg rst_b;
reg clk;
wire q;
initial begin
    d = 0;
    rst_b = 0;
    clk = 0;
    #100 $finish;
end
always begin
    #10 clk = ~clk;
end
endmodule

注意上例:

Verilog

  1. Verilog 入门:数字电路设计完整教程
  2. 掌握 Verilog 拼接操作:实用指南
  3. 深入理解 Verilog 赋值语句:类型、语法与最佳实践
  4. Verilog阻塞与非阻塞赋值:关键区别详解
  5. 掌握Verilog函数:高效RTL设计的复用利器
  6. 理解Verilog任务:函数vs任务、语法与用法全解析
  7. 掌握 Verilog 层次引用作用域:避免模块与块中的名称冲突
  8. Verilog 时钟发生器设计与实现指南
  9. 掌握 Verilog 数学函数:高效硬件设计的利器
  10. 掌握 Verilog $timeformat:精度控制与显示格式化
  11. 理解与打印 Verilog 任意作用域下的 Timescale
  12. 掌握 Verilog 文件 I/O:打开、读取、写入和关闭