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
相关推荐
碳基沙盒19 小时前
OpenClaw 多 Agent 配置实战指南
运维
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean4 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪4 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩4 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
海天鹰4 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅4 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒4 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
芝士雪豹只抽瑞克五4 天前
Nginx 高性能Web服务器笔记
服务器·nginx