赞
踩
模块定义:
- module 模块名 (输入, 输出)
-
- endmodule;
信号声明:
wire/reg 信号名;
输入声明:
input 信号名;
输出声明:
output 信号名;
内部寄存器声明:
reg 信号名;
连接声明:
assign 信号名 = 表达式;
注释:
// 注释内容
多行注释:
/* 注释内容 */
位宽指定:
[位宽-1:0] 信号名;
立即赋值:
信号名 = 值;
常量定义:
parameter 常量名 = 值;
时钟信号:
always @(posedge 时钟信号)
信号延迟:
#时间单位 延迟时间;
选择结构:
- if (条件)
- begin ... end
选择结构(多条件):
- if (条件1)
- begin ... end
- else if (条件2)
- begin ... end
分支结构:
- case (信号)
- ...
- endcase
循环结构:
- for (变量声明; 条件; 迭代)
- begin
- ...
- end
延迟循环:
- repeat (次数)
- begin
- ...
- end
条件循环:
- while (条件)
- begin
- ...
- end
无限循环:
- forever
- begin
- ...
- end
运算符:
- 算术运算符:
- +:加法运算或者正值运算,a+b、+a
- — :减法运算或者负值运算:a—b、—a
- * :乘法运算:a*b
- / :除法运算:a/b
- % :求余运算:a%b,%两侧的数据必须为整型数据;
-
- 位运算符:
- ~ :按位取反 a=1001 ~a=0110
- & :按位与 a=1001 b=0001 a&b=0001
- | :按位或 a=1001 b=0001 a|b=1001
- ^ :按位异或 a=1001 b=0001 a^b=1000
- ^~ :按位同或(异或非) a=1001 b=0001 a^~b=0111
-
- 逻辑运算符:
- &&:逻辑与:a&&b,a和b同时为真时才为真,否则为假
- ||:逻辑或:a||b,a和b同时为假时才为假,否则为真
- ! :a为真时,!a为假
-
- 条件运算符:
- assign a = (b)?4'b1:4'b0; 如果b为真,那么a = 4'b1,否则a = 4'b0
-
- 关系运算符:
- a < b :a小于b
- a > b :a大于b
- a == b :a等于b
- a != b :a不等于b
- a <= b :a小于或等于b
- a >= b :a大于或等于b
-
- 移位运算符:
- reg [3:0] a,c;
- reg [5:0] b;
- a = 4'h1001;
- b = a<<2; 此时b=6'h100100
- c = a>>2; 此时c=4'h0010
- 左移位数增加,右移位数不变
- 位拼接运算符:
- a = 4'h1101;
- b = 6'h111000;
- c = 2'h11;
- d = {a[3],b[2:0],c};此时d = 100011
- e = {2{b}}; 此时e = {b,b} = 111000111000
- f = {a,b,2{a,c}} 此时f = {a,b,a,c,a,c} = 111111000110111110111
-
数字赋值:
- 'b 二进制值
- 'h 十六进制值
- 'd 十进制值
高阻态:
tri/wire 信号名;
模块实例化:
模块名 实例名 (.端口(信号));
延迟控制:
#时间单位 延迟时间 语句;
延迟设定:
`timescale 时间单位/时间精度
初始块:
- initial
- begin
- ...
- end
模块实例输入连接:
.端口名(信号名)
模块实例输出连接:
.端口名(信号名)
阻塞赋值:
信号名 = #时间单位 延迟时间 表达式;
非阻塞赋值:
信号名 <= 表达式;
初始化赋值:
reg 信号名 = 值;
分隔符:
\n ;
局部参数:
localparam 参数名 = 值;
模块实例数组:
模块名 #(参数值) 实例名 (端口连接);
模块端口声明:
(.端口名(信号名))
模块实例化数组:
模块名 #(参数值) 实例名 [数组大小] (.端口(信号));
任务声明:
task 任务名 (输入);
任务调用:
任务名 (参数);
函数声明:
function 返回类型 函数名 (输入);
函数调用:
函数名 (参数);
阻塞延迟:
#时间单位 延迟时间;
非阻塞延迟:
#时间单位 延迟时间;
拉高信号:
force 信号名 = 值;
拉低信号:
release 信号名;
引用库:
`include "文件名"
阻塞语句:
@(敏感信号) 语句;
无条件停止:
$stop;
显示变量值:
$display("文本 %d", 变量);
模块输入输出声明:
input/output/wire/reg [位宽-1:0] 信号名;
延迟块:
- #时间单位
- begin
- ...
- end
分号运算符:
表达式1; 表达式2;
空操作符:
;
等待信号改变:
wait (信号);
强制停止:
$finish;
阻塞式循环:
- for (变量声明; 条件; 迭代)
- begin
- ...
- end
随机数生成:
$random;
选择结构(优先级):
- unique case (信号)
- ...
- endcase
分支结构(不完全):
- casex (信号)
- ...
- endcase
分支结构(完全):
- casez (信号)
- ...
- endcase
常量宏定义:
`define 常量名 值
条件编译:
ifdef 宏名 ... endif
整数类型:
integer
实数类型:
real
字符类型:
byte
字符串类型:
string
扩展系统函数库:
`include "svlib.sv"
不可变信号:
input wire 信号名;
强制块:
force -drive/-load 信号名 = 值;
解除块:
release -drive/ -load 信号名;
分层模块实例:
模块名 模块实例名 (.端口名(模块实例名.端口名));
信号维持:
always @* 信号名 = 表达式;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。