verilog 可变范围的bit选择

要完成16byte中byte的合并:

首先verilog 不支持可变范围的bit选择,所以下面两种写法,lint 都会报错:

复制代码
// write style 1
always (*)begin
  map_wdata ='b0;
  map_wdata[127:lower_byte_addr*8]= wdata[127:lower_byte_addr*8];
  map_wdata[(lower_byte_addr-1)*8+:8]= wone_size ? wone_data_store:wdata[(lower_byte_addr-1)*8+:8];
  map_wdata[(lower_byte_addr-1)*8-1:0]= wdata[(lower_byte_addr-1)*8-1:0];
end
// write style 2
assign map_wdata = wone_size ? {wdata[127:lower_byte_addr*8],wone_data_store,wdata[(lower_byte_addr-1)*8-1:0]}:wdata;

正确的写法是下面的,将可变范围变成按byte进行选择:

复制代码
// write style 3
always @(*)begin
  if(wone_size)
    for(i=0; i<STRB_WIDTH;i=i+1)begin 
      if(i==lower_byte_addr)
        map_wdata[i*8+:8]= wdata[i*8+:8];
      else
        map_wdata[i*8+:8]= wone_data_store;
  end
  else begin
    map_wdata = wdata;
  end
end
相关推荐
前端世界2 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮2 小时前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
海宇服务2 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化
上海云盾-小余2 小时前
BGP 高防底层原理:TCP 异常流量识别与清洗机制
运维·网络·tcp/ip
captain3762 小时前
▲网络原理(2)-TCP
java·服务器·网络·tcp/ip·java-ee
言乐63 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
蓝速科技6 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
H_oRIZoN_7 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
小马同学-8 小时前
OpenStack 使用实战:Web 界面与 CLI 命令行实验
运维·云计算·openstack
网安老伯9 小时前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型