当前位置: 首页 > news >正文

system verilog的流操作符

流操作符,有分为操作对象是一整个数组和单独的数据两种,例如bit [7:0] a[4]和bit [31:0] b,前者操作对象是数组,后者是单独一个较大位宽的数。
流操作符有<<和>>,代表从右向左打包和从左向右打包。
打包的整体格式为

{>>block_size {变量或表达式}} ;  
或
{<<block_size {变量或表达式}} ;  

数组打包成一个大位宽数据的场景,指定分割尺寸是8bit,按照<<,将数据从索引0开始,从右往左摆放

module test;
  function void pack_array_int(const ref bit[7:0] array[4], 	output int a);
    a = {<<byte{array}};
  endfunction

  bit[7:0] array[4] = '{ 8'h8C, 8'h00, 8'hA4, 8'hFF };
  int pack_result;  
  
  initial begin
    pack_array_int(array, pack_result);
    
    $display("The result is 0x%h", pack_result);
  end     
endmodule

打印出的结果如下
在这里插入图片描述
再有一个用于大小端转换的场景,将大位宽数据,按byte分块,按照<<符号,从右向左摆放,则将大位宽数据分割为’h11、'h22、'h33、…'h11、'h22,从右往左摆放数据,形成一个新的数据,'h2211ffeeddccbbaa_8877665544332211

module test;
  function void unpack(bit[127:0] big_endian_data, output bit[63:0] little_endian_array[2]);
    bit[127:0] temp;
    temp = {<<byte{big_endian_data}};
    for(int i=0; i<2; i++) begin
      little_endian_array[i] = temp[63:0];
      temp = temp >> 64;
    end
  endfunction

  bit[127:0] big_endian_data = 128'h1122334455667788_aabbccddeeff1122;
  bit[63:0] little_endian_array[2]; 
  
  initial begin
    unpack(big_endian_data, little_endian_array);
    
    foreach(little_endian_array[i]) begin
    $display("The result is 0x%h",little_endian_array[i]);
    end
    
  end     
endmodule

验证结果如下
在这里插入图片描述

相关文章:

  • 使用 DeepSeek 和 Google Gemini 算命
  • Python的子线程与主线程之间的通信并通知主线程更新UI
  • LabVIEW齿轮箱故障分析系统
  • 基于WOA鲸鱼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
  • 一篇docker从入门到精通
  • deepseek本地部署,ragflow,docker
  • 【对话推荐系统】Towards Topic-Guided Conversational Recommender System 论文阅读
  • (五)趣学设计模式 之 建造者模式!
  • TileGenie_v1.3.0.1安装包
  • 【Transformer架构】
  • leetcode 119. 杨辉三角 II
  • 【EB-03】 AUTOSAR builder与EB RTE集成
  • 【框架】参考 Spring Security 安全框架设计出,轻量化高可扩展的身份认证与授权架构
  • MySQL要点总结二
  • LangChain大模型应用开发:构建Agent智能体
  • Ubuntu:wvp-GB28181-pro安装、运行
  • 单入单出队列性能优化(Lock-Free)
  • 异常处理在 Promptic 中怎么实现?
  • 基于Springboot医院预约挂号小程序系统【附源码】
  • 【工作流】Spring Boot 项目与 Camunda 的整合
  • 网站建设公司哪家好智搜宝/网络推广的公司更可靠
  • 做网站的软件叫code/推广软件赚钱的平台
  • 京东网站建设流程/查收录
  • 网站底部版权html代码/新产品的推广销售方法
  • 网站建设如何报价/全网营销推广软件
  • 电商设备网站怎么做/东莞百度搜索优化