首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在verilog中将inout数组拆分成多个inout信号

在verilog中将inout数组拆分成多个inout信号
EN

Stack Overflow用户
提问于 2020-08-28 11:37:39
回答 2查看 134关注 0票数 1

我需要做这样的事情。我需要把数组分成单独的信号。我没有指定方向的使能信号。而且,"assign“语句是行不通的。还有其他建议吗?

代码语言:javascript
复制
module conv (
  inout [1:0] array,
  inout       a,
  inout       b 
);

 assign {a, b} = array;

endmodule
EN

回答 2

Stack Overflow用户

发布于 2020-08-28 14:20:09

你想给一个信号的名字起别名。请参阅IEEE 1800-2017 LRM中的第10.11节净混叠。

代码语言:javascript
复制
module conv ( inout [1:0] array, inout a, inout b );

  alias {a,b} = array;

endmodule
票数 2
EN

Stack Overflow用户

发布于 2020-09-01 16:28:06

做同样事情的Verilog方法是:

代码语言:javascript
复制
module conv ( .array(io), .a(io[1]), .b(io[0]) );
  inout [1:0] io;
endmodule

这是IEEE 1364-2001及更高版本的投诉。(可能也是IEEE 1364-1995的问题,但LRM不是很清楚)。如果你需要一些绝对需要符合Verilog-95的东西,那么你可以使用bellow。我不认为下面的代码支持在模块实例化时通过名称连接。

代码语言:javascript
复制
module conv ( io, io[1], io[0] );
  inout [1:0] io;
endmodule

还有一个原语tran。我还没有使用过支持它的合成器,即使它是在IEEE1364-1995中。

代码语言:javascript
复制
module conv ( inout [1:0] array, inout a, b );
  tran t1(array[1],a);
  tran t0(array[0],b);
endmodule

如果您的工具支持SystemVerilog alias,那么这将是首选方法。我很少看到上面使用的样式,尽管LRM支持已经有几十年了。

如果您的合成器不喜欢alias或以上任何一种,请检查标准单元库。它可能有一个等效的特殊单元格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63627095

复制
相关文章

相似问题

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