Verilog中向量的位截取、拼接

本文介绍了Verilog语言中关于位操作的重要概念,包括位截取(正向和反向切片)、位向量的切片与拼接,以及大端模式和小端模式的区别,帮助读者理解这些基础概念在实际编程中的应用。
摘要由CSDN通过智能技术生成

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_vector

bit [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、大端模式和小端模式

  • 大端模式:

是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中;

  • 小端模式:

是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值