自学Verilog(四)

Verilog基本概念

了解Verilog HDL程序的框架

刷题推荐

链接: Verilog刷题

常用Verilog语法(3)

条件语句

1、if_else语句
if(index > 0)
	begin
	for(scani = 0;scani < index;scani = scani+1)
		if(memory[scani] > 0)
			begin
				$display("...");
				memory[scani] = 0;
			end
	end
else
$display("error-indexiszero");
2、case语句
reg[15:0] rega;
reg[9:0]  result;
case(rega)
16'd0:	result = 10'b0111111111;
16'd1:	result = 10'b1011111111;
16'd2:	result = 10'b1101111111;
16'd3:	result = 10'b1110111111;
.
.
.
default:result = 10'bx;
endcase

Verilog HDL针对电路的特性提供了case语句的其他两种形式,即casez和casex,其中casez语句用来处理不考虑高阻值z的比较过程,casex语句不考虑高阻值z和不定值。

reg[7:0] ir;
casez(ir)
	8'b1???????:instructionl(ir);
	8'b01??????:instructionl(ir);
	8'b00001???:instructionl(ir);
	8'b000010??:instructionl(ir);
endcase
reg[7:0] r,mask;
mask = 8'bx0x0x0x0;
casex(r^mask)
	8'b001100xx:stat1;
	8'b1100xx00:stat2;
	8'b00xx0011:stat3;
	8'bxx001100:stat4;
endcase

循环语句

在Verilog HDL中存在4种类型的循环语句。
1)forever:连续的执行语句;
2)repeat:连续执行一条语句n次;
3)while
4)for

1、forever语句

格式:
forever 语句;
forever begin 多条语句 end
forever常用于产生周期性的波形,作为仿真测试信号,不能独立写在程序中,必须写在initial块中。

2、repeat语句
parameter size = 8,longsize = 16;
reg[size:1] opa,opb;
reg[longsize:1] result;

begin:mult
	reg[longsize:1] shift_opa,shift_opb;
	shift_opa = opa;
	shift_opb = opb;
	result = 0;
	repeat(size)
	begin
		if(shift_opb[1])
			result = result + shift_opa;
		shift_opa = shift_opa << 1;
		shift_opb = shift_opb >> 1;
	end
end
3、while语句
begin:countls
	reg[7:0] tempreg;
	count = 0;
	tempreg = rega;
	while(tempreg)
	begin
		if(tempreg[0])	count = count + 1;
		tempreg = tempreg >> 1;
	end
end
4、for语句
begin:init_mem
	reg[7:0] tempi;
		for(tempi = 0;tempi < memsize;tempi = tempi + 1)
		memory[tempi] = 0;

自学Verilog(五)链接: 常用Verilog语法(4)

这里是引用《Verilog数字系统设计教程》——夏宇闻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值