1、位截取:
-
当索引均为常数
例如:men[4:1]=men[4-:4]= men[1+:4]
-
索引是变量
语法为:men[base+:width] or men[base-:width] 例如:if cnt=8,
men[cnt+:4] 等于 men[11:8]; men[cnt-:4] 等于men[8:5].
其中,base可变,但是width必须为常量,否则会报错。
-
实用例子:
2、Verilog中的切片
-
正向切片:
以下都是正向切片方式;
bit [7:0] my_vector = 8'b11011010; // 定义一个8位宽的二进制位向量 my_vectorbit [3:0] sliced_part = my_vector[3:0]; // 将 my_vector 的位[3:0] 切片给 sliced_part
bit [7:4] sliced_part1 = my_vector[7:4]; // 将 my_vector 的位[7:4] 切片给 sliced_part1
bit [3:5] sliced_part2 = my_vector[3:5]; // 将 my_vector 的位[2:5] 切片给 sliced_part2结果为:
sliced_part 是 my_vector 的位[3:0],即二进制值 "1010"。
sliced_part1 是 my_vector 的位[7:4],即二进制值 "1101"。
sliced_part2 是 my_vector 的位[3:5],即二进制值 "110"。
-
反向切片:
很少用,暂不举例子
3、位拼接
-
直接拼接:
a[3:0]={b[1],c[2:0]};
-
复制后拼接:
a[3:0]={{2{b[1]}},c[2:1]};// {2{b[1]},表示复制两次b[1]
4、大端模式和小端模式
-
大端模式:
是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中;
-
小端模式:
是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中;