在程序运行中,其值不能改变的量称为常量。
parameter 参数名1=表达式,参数名2=表达式;
parameter Xiao=789,Ming=456;
parameter Xi=1.2;
parameter Gua=Xiao-Ming;
与常量相反,在程序运行中可以改变其值的量---------
Verilog HDL中有许多中的变量数据类型,这里只对常用的几种进行介绍
wire Xi; //定义了一个一位的wire型
wire [7:0]Xi; //定义了一个八位的wire型
wire [4:0]Xi,Wie; //定义二个四位的wire型
reg[3:0] rret;//定义了一个四位的reg
reg[4:1] Xi,Wie;//定义了两个四位的reg
reg[7:0] Xi[255:0]; //定义了256个8位存储器
reg[255:0] Wie[7:0]; //定义了8个256位存储器
Xi[127]=1; //对memory中的第127个存储器赋值位1
、
基础的算术运算符又称二进制运算符,共有一下几种
{a,b[3.0],w,3'b101} //该表达式为拼接运算 将a与b[3.0]与w与101拼接为一个数据
{3{Xi}} //表达为{Xi,Xi,Xi}的拼接
注意:在运算两个不同长度的数据时,系统会自动将数据右端对齐,位少的用零补齐。
,
赋值语句分为:阻塞赋值与非阻塞赋值
在该例中,赋值是在 always 运行完后进行的,所以 A 得到了 B 的初始值,C 得到了 A 的初始值。
相当于:A=B; C=A;
always@(posedge clk) //非阻塞赋值
begin
A<=B;
C<=A;
end
always@(posedge clk) //阻塞赋值
begin
a=b;
c=a;
end
,
begin_end 语句,通常用于表示顺序执行的语句。
begin
语句one;
#5 语句two;
#10 语句three; //延时10个时间单位后执行语句3
end
fork 通常用户需要并行运算的场合
fork
语句one;
#5 语句two;
#10 语句three; //10个时间单位后执行语句3
jojn
条件选择的语句类型有 if_else,case_endcase,前者多用户信号类型的判断,后者多用户信号的选择。
if(a>b)
语句one;
if(a>b)
语句two;
else
语句three;
if(a
case
reg[3:0] Xi;
reg[3:0] sum;
case(Xi)
4'b0 : sum=4'b111;
4'b1 : sum=4'b110;
4'b2 : sum=4'b101;
4'b3 : sum=4'b100;
default: sum=4'b111; //都未选中的情况下运行该语句
endcase
casez
reg[3:0] Xi;
reg[3:0] sum;
case(Xi)
4'b??0 : sum=4'b111;
4'b??1: sum=4'b110;
4'b?1?: sum=4'b101;
4'b?11: sum=4'b100;
default: sum=4'b111; //都未选中的情况下运行该语句
endcase
casex
需要连续运行,或者多次运行的语句
在这里插入代码片
repeat (loop_number)
begin
语句n;
end
// for 语句
integer J;
reg [3:0] number;
begin
number= 'b0 ;
for (J=0; J<=10; J=X+1)
begin
#10 ;
number= number+ 1'b1 ;
end
end
------------更新中----------------