在VHDL中能否通过依赖通用参数的条件设置端口位宽范围?
VHDL中能否基于通用参数的条件设置端口位宽?
可以,你给出的这种写法是符合VHDL标准规范的,从VHDL-2008版本开始,就支持在端口声明里用依赖通用参数(generic)的条件表达式来定义信号位宽。
具体说明
- 你代码里用的
(127 when IP_VERSION = 6 else 31) downto 0是VHDL的条件表达式语法,能根据通用参数IP_VERSION的取值动态确定ip_address端口的位宽:当参数设为6时,端口是128位(对应IPv6地址);默认或设为4时,端口是32位(对应IPv4地址)。 - 要注意的是,你的仿真或综合工具必须支持VHDL-2008及以上版本,部分老工具默认没开启该标准支持,需要手动在工具配置里切换到VHDL-2008模式。
示例代码验证
你提供的代码本身是合法的,只要工具配置正确就能正常编译:
entity example is generic ( IP_VERSION : integer := 4 ); port ( ip_address : in std_logic_vector((127 when IP_VERSION = 6 else 31) downto 0) ); end example;
内容的提问来源于stack exchange,提问作者Roy Meijer
相关产品推荐
相关产品推荐

