verilog +: / -:语法

这个是在uart总线协议中遇到的,下面对它简单了解一下
在Verilog2001以后,Verilog支持在范围中是用变量,并且引入心得语法如下:
语法定义:
变量的定义可以分为大端和小端,由于实际使用中变量常定义成大端,所以这里对小端不进行分析了

		reg [31:0] big_vect; 大端
		reg [0:31] little_vect;小端

对大端变量进行分析:

(+:) 升序将开始位放在右侧,(-:)降序将开始位放在左侧
big_vect [31:0]
big_vect [0 + : 8]0开始升序,位宽为8 
-> big_vect [7:0]
big_vect [15 -: 8]15开始降序,位宽为8
-> big_vect [15:8]

在实际项目中遇到的:

for(int i=0;i<3;i++) begin
					calc_parity[i] = ev_odd?(^( payld_func[i*(5) +: 5] )) : (~^( payld_func[i*(5) +: 5] ));
					if(bad_parity && bad_parity_frame[i])
						calc_parity[i] = ~calc_parity[i];
				end
当i=0时,payld_func[i*(5) +: 5]  -> payld_func[4:0]
当i=1时,payld_func[i*(5) +: 5]  -> payld_func[9:5]
当i=2时,payld_func[i*(5) +: 5]  -> payld_func[14:10]

你可能感兴趣的:(Verilog,fpga开发)