本篇文章主要介绍verilog里面常用的语句, 包括条件语句、循环语句块语句和生成语句。出了块语句和生成语句,其他的基本和c语言或者m语言一致。
1,if 语句,在需要判断逻辑的时候可以使用if语句,如 从输入a,b中找出最大值。
if (a>b)
max=a;
else
max=b;
这里使用方法和c语言一致。需要注意的一点是在有判断的时候服务器托管网,veri服务器托管网log 希望支路都有默认值。
比如
if (a>b)
c=2;
这里是不建议的写法,建议的写法为
if (a>b)
c=2;
else
c=1;
或者
c=1;
if (a>b)
c=2;
这两个建议的写法都保证了c有一个默认值,这样可以避免在无默认值的时候,实际电路中会出现一个锁存器
2.case 语句, 对于需要多分支选择的条件,可以使用case语句,避免使用大量的if else。
case(a)
2’d0:b=0;
2’d1: b=1;
2’d2: b=2;
default: b=1;
endcase;// 表明case语句的结尾
case(2)
A1:b=0;
A2: b=1;
A3: b=2;
default: b=1;
endcase;// 表明case语句的结尾
verilog中case 语句不用break。综合后的电路如下:
另外一个和c不同的是
case (1’b1)
sel[0]: b=0
sel[1]:begin …..end
default: b=1;
endcase
这里case后面跟得是一个常数,下面的选择则为变量,具体含义为sel[n]为1的时候则执行对应的回路,综合后的电路如下
3.循环语句包含for和while, 两者和c语言基本一样。
for(i=1;i
while(a) c=c+1;
此外verilog 还有repeat语句 可以直接定义执行几次;
repeat(8) a=a+1; //该语句执行8次
2. 块语句,有顺序块和并行块。
verilog 语句之间一般是并行关系,但是对于顺序块语句中的程序会顺序执行。
如
initial
#0
a=10;
#10// 本处延迟10个clock
a=20;
#30// 本处延迟30个clock
a=30;
这里a 发生变化 10 20 30
并行块关键词为fork -join
fork
#0
a=10;
#10// 本处相对起始时间延迟10个clock
a=20;
#30// 本处相对起始时间延迟30个clock
a=30;
join
敏感词检测
always @ (敏感词)
begin
检测到敏感词时候的执行工作
end
如:
always(posedge clk) // 当时钟上升沿的时候才触发这里
begin
if (a>10)
b
end
对于一个关键词后面跟的程序大于一行时,c语言是用{}来进行区分,verilog 则是用begin end 来进行区分,如
if (a>b)
begin
c=2;
d=c*8
end
else
begin
c=5;
d=c*2
end
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
注意事项: 1、阿里通义灵码不可以与其他AI助手(Amazon CodeWhisperer)同时使用,否则不生效,需要将其他助手禁用掉。 2、接受代码建议,要选择全代码块,在按Tab键,否则建议不会加入文件。 服务器托管网 通义灵码安装教程-阿里云 通义灵码使…