VHDL将一个自定义的有符号的整数类型转换为一个std_logic_vector。

问题描述 投票:0回答:1

你好,我有一个信号,它在很多地方使用,并且可能会被修改。所以为了简化维护,我做了一个TYPE声明,叫做T_RowInt。

我做了两个信号 "typeed "和 "untyped",这两个信号都相当于一个整数范围-63到63,以证明这个问题。

代码如下。

type T_RowInt is range -63 to 63;
signal typed : T_RowInt;
signal untyped : integer range -63 to 63;

signal text_col : integer range 0 to 127 := 0;
signal bank : std_logic_vector(2 downto 0) := "111";
signal page : std_logic_vector(3 downto 0) := "0000";

我在下面的表达式中使用了上面的代码。

addr_r_dram(19 downto 0)<= bank & page & std_logic_vector(to_unsigned(typed,6)) & std_logic_vector(to_unsigned(text_col, 7));

语法检查失败 "to_unsigned在此上下文中不能有这样的操作数 "然而,这个表达式:

addr_r_dram(19 downto 0)<= bank & page & std_logic_vector(to_unsigned(untyped,6)) & std_logic_vector(to_unsigned(text_col, 7));

可以

有没有办法强制转换自定义TYPED信号?

谅谅

马克

types casting vhdl
1个回答
2
投票

如果你使用 type 那么你已经定义了一个完全 新的 类型,就VHDL而言。然而,如何使用一个 亚型譬如

subtype T_RowInt is integer range -63 to 63;

那么VHDL将不考虑 T_RowInt 作为一个完全不同的类型。你的信号 untyped 实际上是在使用一个子类型,一个所谓的_匿名子类型`。

signal untyped : integer range -63 to 63;

也许你能看出这两行代码的相似之处?

© www.soinside.com 2019 - 2024. All rights reserved.