首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将未封装数组的元素连接在一起

将未封装数组的元素连接在一起
EN

Stack Overflow用户
提问于 2017-09-08 10:13:25
回答 3查看 1.4K关注 0票数 0

我在系统Verilog代码中使用以下函数。我想知道是否有一种惯用的方式来达到同样的效果,也许不需要宽度硬连线。我尝试过流媒体运营商,但没能让他们开始工作。我需要使用未打包的数组。非常感谢。

代码语言:javascript
复制
function bit [64:0] cat8 (bit [7:0] a[8]);
   return { a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0] };
endfunction;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-08 13:30:51

由于您在concat中反转数组,所以没有很好的方法来表示它。你有:

代码语言:javascript
复制
bit [7:0] a[8];

这相当于

代码语言:javascript
复制
bit [7:0] a[0:7];

在您的接口中,您从a[7]开始,在最重要的位中,7是否是数组中最不重要的索引。

这就是为什么在您的情况下,流操作员没有工作的原因。

因此,如果您确实需要反转数组,而不是您所拥有的,那么您可以发现这两件事是等价的:

代码语言:javascript
复制
{ a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7] }

代码语言:javascript
复制
{ >> {a}}

当然,您可以将数组声明为bit [7:0] a[7:0],并将索引排序保持不变。但是,它将不会像上面的情况那样,再次反转数组。

票数 1
EN

Stack Overflow用户

发布于 2017-09-10 06:31:36

您可以通过typedef定义新的数据类型。

代码语言:javascript
复制
typedef bit[7:0] octet;
typedef octet upack[7:0];

function bit [64:0] cat8 (upack a);
  // your code
endfunction;
票数 0
EN

Stack Overflow用户

发布于 2017-09-12 10:45:23

下面的工作应该适合你

代码语言:javascript
复制
module top;
  function bit [63:0] cat8 (bit [7:0] a[8]);
   return { <<8{a}};
    endfunction;
    bit [7:0] arr[8];

    initial begin
    arr= '{1,2,3,4,5,6,7,8};
    foreach (arr[i])$display("%h", arr[i]);
        $display("%h", cat8(arr));
    end
endmodule
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46114075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档