| 选项 | 作用 |
|---|---|
| Schematic | 将所写代码构成电路图展现出来。 |
| IP Catalog | 文件中所带的库函数 |
| RTL ANALYSIS | 得出RTL图 |
| SYNTHESIS | 对代码进行综合 |
| IMPLEMENTATION | 对代码进行综合实现电路图 |
- 0:逻辑0—“假”
- 1:逻辑1—“真”
- x 或X: 未知
- z或Z:高阻
现阶段常用的数据类型说明:x意味着信号数值的不确定;z意味着信号处于高阻状态,常见于( input ,reg )没有驱动时的逻辑结果。
线网 wire 由其连接的器件输出连续驱动,如果没有驱动元件连接到wire型变量,缺省值一般为 “Z”
寄存器 reg 表示存储单元,保持原有值直到被改写。可在任意时刻通过赋值操作进行改写。
向量 位宽大于1时,wire或reg可声明为向量的形式。有点像C语言中的数组。
定义向量时在中括号中给出了位数,定义位数时先写MSB的序号再写LSB的序号。当用向量表示数字时,术语MSB和LSB的意义是很直观的,在其余情况中,位选信号只是用来区分向量中不同位的.
示例:
reg [3:0] counter ; //声明4bit位宽的寄存器counter wire [32-1:0] gpio_data; //声明32bit位宽的线型变量gpio_data wire [8:2] addr ; //声明7bit位宽的线型变量addr,位宽范围为8:2 reg [0:31] data ; //声明32bit位宽的寄存器变量data, 最高有效位为0关键词
assign 对输出信号进行连续赋值
采用连续赋值描述电路:
module example3(x1,x2,s,f); input x1,x2,s; output f; assign f=(~s&x1)|(s&x2); endmodule
always@() 包含着过程语句
- ‘@’ 后面括号中的内容称为敏感事件列表,当用Verilog进行电路综合时,敏感事件列表直观告诉Verilog编译器哪些信号会直接影响 always 块产生的输出(可以用 * 代替所有信号 )
- 一个 always 块可以只包含一条语句,也可以包含多条语句。一个典型的Verilog模块中可以包含多个 always 块。
示例:
//Behavioral specification module example(x1,x2,s,f); input x1,x2,s; output f; reg f; always @(x1 or x2 or s) if(s==0) f=x1; else f=x2; endmodule
begin -and 相当于C语言里的大括号
Verilog 中的语句其实 Verilog 中的大部分语句和C语言中的语法差不多,但其中有些细节不一样:
if … else
示例:
module mux2to1(w0,w1,w2,S,f);//2悬疑 input w0,w1,w2; input [1:0]S; output reg f; always @* if(S==0) f=w0; else f=w1; endmodule
case
将控制表达式的值和每个选择语句的值按位进行比较,当有一个或多个选择匹配时,只执行第一个匹配的语句。当指定的选择不能包含控制表达式的所有可能值时,就必须包含default语句,否则Verilog编译器会综合存储器单元以处理未定义情况。
-
casex:
casex 语句将所有z和x值作为无关项。 -
casez:
casez 语句将所有z作为无关项对待。
简单的示例:
module dec2to4(W,En,Y); //二进制2-4译码器
input [1:0]W;
input En;
output reg [0:3]Y;
always @(W,En)
case({En,W}) // { , } 拼接向量
3'b100:Y=4'b1000;//四位二进制数字
3'b101:Y=4'b0100;
3'b110:Y=4'b0010;
3'b111:Y=4'b0001;
default:Y=4'b000;
endcase
endmodule
for
注意:写到条件的时候,不存在 ++ 运算符,只能写作x=x+1。
示例:
module priority(W,Y,z); input [3:0]W; output reg[1:0]Y; output reg z; integer k;//整数 always@(W) begin Y=2'bx; z=0; for(k=0;k<4;k=k+1) if(W[k]) begin Y=k; z=1; end end endmodule


![22/4/24始—— Vivado与Verilog学习有记[更新ing] 22/4/24始—— Vivado与Verilog学习有记[更新ing]](http://www.mshxw.com/aiimages/31/832565.png)
