首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成循环中的Verilog端口

生成循环中的Verilog端口
EN

Stack Overflow用户
提问于 2016-02-14 02:41:16
回答 1查看 2.1K关注 0票数 0

由于无法避免的原因(Qsys的要求),我有几个Verilog模块,它们最终会有许多端口,如果它们被打包,这些端口将更容易处理。为了解释我的意思,这里有一个例子:

代码语言:javascript
复制
module foo #(
    COUNT = 4
) (
    //Interface 0
    input  bar_0,
    output deadbeef_0,

    //Interface 1
    input  bar_1,
    output deadbeef_1,

    //Interface 2
    input  bar_2,
    output deadbeef_2,

    //Interface 3
    input  bar_3,
    output deadbeef_3,
);
...
endmodule

现在,我们通常只需要创建两个矢量端口(例如input [COUNT-1:0] bar,),但是,如果需要将信号传送到不同的接口,那么Qsys就无法处理这个问题--您只能选择一个完整的端口,而不仅仅是一个端口。

正如您可以想象的那样,如果在内部需要访问类似于generate循环的端口,这会非常令人恼火,尤其是如果您有一个具有接口的模块,而这些接口必须被写入16次才能完成!

到目前为止,我一直在做的是手动将映射添加到模块中。继续上面的例子,我会在模块的正文中看到这样的内容:

代码语言:javascript
复制
wire [COUNT-1:0] bar;
wire [COUNT-1:0] deadbeef;
generate
if (COUNT > 0) begin
    assign bar[0] = bar_0;
    assign deadbeef_0 = deafbeef[0];
end else begin
    assign deadbeef_0 = 1'b0; //Terminate!
end
if (COUNT > 1) begin
    assign bar[1] = bar_1;
    assign deadbeef_1 = deafbeef[1];
end else begin
    assign deadbeef_1 = 1'b0; //Terminate!
end
...
endgenerate

// deadbeef[] and bar[] can now be used as arrays, woop.

在这个例子中,即使只为两个信号写出几个接口也是令人难以置信的乏味!

我内心的每一个部分都在尖叫着停止这样做,而且必须有一个更好的方法。这就引出了我的问题:

有什么简单的方法吗?

理想情况下,我应该有某种形式的循环,为我生成这些映射,从循环变量生成信号名。但我不确定这在Verilog是否可能发生。

此外,为了使事情变得有趣,我一直在使用十六进制作为端口,以便在编写它时更容易,例如:

代码语言:javascript
复制
input bar_0,
input bar_1,
...
input bar_9,
input bar_a,
input bar_b,
...

理想情况下,这一问题的解决方案也可以处理类似的名称,但老实说,如果简化了操作,我可以轻松地将名称转换为十进制(bar_10)。

如果您想知道,这在Qsys中很容易将接口链接到端口,因为Qsys使用TCL文件进行映射。在TCL中,我可以简单地使用for循环并连接循环变量来创建名称。

EN

回答 1

Stack Overflow用户

发布于 2016-02-14 15:35:02

我想,在您的例子中,可以使用来解决问题。因此,在代码中的任何地方,您都可以使用bar作为向量,尽管它不是。

定义如下宏:

代码语言:javascript
复制
`define bar(n) bar_``n``
`define deadbeef(n) deadbeef_``n``

您可以使用now bar作为向量,如下所示:

代码语言:javascript
复制
`bar(0)
`deadbeef(0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35387776

复制
相关文章

相似问题

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