fpga系列 HDL:verilog 常见错误 切片索引错误 Error (10734)_ __ is not a constant & 位选择语法(“加法切片”,+:)

错误代码&错误原因

错误代码:
  • encoded_data[start_bit*2+1:start_bit*2] <= encoded_bit;
    在这里插入图片描述
错误原因:
  • 传统的 范围选择语法,必须使用固定的起始和结束索引。
  • 例如:
    encoded_data[3*2+1:3*2] = encoded_bit;
    
    等价于:
    encoded_data[7:6] = encoded_bit;
    
  • 如下语法也会报错:
    start_bit <= 0;
    encoded_data[start_bit*2+1:start_bit*2] = encoded_bit;
    

解决方法

加法切片(Indexed Part-Select with Fixed Width)

 start_bit <= bit_cnt * 2;
 encoded_data[start_bit +: 2] <= encoded_bit;

语法解释:

  • 这是 Verilog-2001 引入的位选择语法,称为 “加法切片”(Indexed Part-Select with Fixed Width),适合需要动态计算起始索引的场景。
  • start_bit +: 2 表示从 start_bit 开始,连续选择 2 位。
    • start_bit 是起始索引。
    • +: 表示从起始索引开始向高位方向选择固定宽度的位。
    • 宽度为 2,(宽度必须为固定长度)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值