我正在搜索一个宏、常量或属性,不管它是什么,都会替换"(x到y)“。为了详细解释,例如复数,
有一个泛型值宽度,
signal num : std_logic_vector(2*WIDTH downto 0);
**pseudo** re = 2*WIDTH-1 downto WIDTH; im = WIDTH-1 downto 0; **pseudo**
x <= num(re); y <= num(im); etc
而且,它也可能是一些属性,如范围。例如
x <= num(num're); y <= num(num'im);
我经常使用它,对于更好的可读性和编写干净的代码应该是很好的。
发布于 2014-12-30 15:36:15
subtype可用于声明整数范围如下:
-- **pseudo** re = 2*WIDTH-1 downto WIDTH; im = WIDTH-1 downto 0; **pseudo**
subtype re is natural range 2*WIDTH-1 downto WIDTH;
subtype im is natural range WIDTH-1 downto 0;这样就有可能做到:
x <= num(re);
y <= num(im);x和y声明为std_logic_vector(WIDTH-1 downto 0),或std_logic_vector(re)和std_logic_vector(im)。
顺便说一句。num可能应该有最高的索引作为2*WIDTH-1,而不是2*WIDTH (逐个错误)。
发布于 2014-12-30 15:46:42
也许不完全是你想要的,但是VHDL记录似乎很适合你想要做的事情。
定义记录类型:
type mycomplex_t is record
re : std_logic_vector(WIDTH-1 downto 0);
im : std_logic_vector(WIDTH-1 downto 0);
end record;然后,您声明您的信号属于这种类型:
signal num : mycomplex_t;你用它是这样的:
x <= num.re;
y <= num.im;您还可以这样分配它:
num <= (re => x2, im => y2);或者,像这样:
num.re <= x2;
num.im <= y2;或同一类型的另一种信号同时发出:
signal other_complex : mycomplex_t;
-- (...)
num <= other_complex;https://stackoverflow.com/questions/27707945
复制相似问题