首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量索引的VHDL宏

向量索引的VHDL宏
EN

Stack Overflow用户
提问于 2014-12-30 15:15:28
回答 2查看 835关注 0票数 1

我正在搜索一个宏、常量或属性,不管它是什么,都会替换"(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);

我经常使用它,对于更好的可读性和编写干净的代码应该是很好的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-30 15:36:15

subtype可用于声明整数范围如下:

代码语言:javascript
复制
-- **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;

这样就有可能做到:

代码语言:javascript
复制
x <= num(re);
y <= num(im);

xy声明为std_logic_vector(WIDTH-1 downto 0),或std_logic_vector(re)std_logic_vector(im)

顺便说一句。num可能应该有最高的索引作为2*WIDTH-1,而不是2*WIDTH (逐个错误)。

票数 3
EN

Stack Overflow用户

发布于 2014-12-30 15:46:42

也许不完全是你想要的,但是VHDL记录似乎很适合你想要做的事情。

定义记录类型:

代码语言:javascript
复制
type mycomplex_t is record
    re : std_logic_vector(WIDTH-1 downto 0);
    im : std_logic_vector(WIDTH-1 downto 0);
end record;

然后,您声明您的信号属于这种类型:

代码语言:javascript
复制
signal num : mycomplex_t;

你用它是这样的:

代码语言:javascript
复制
x <= num.re;
y <= num.im;

您还可以这样分配它:

代码语言:javascript
复制
num <= (re => x2, im => y2);

或者,像这样:

代码语言:javascript
复制
num.re  <= x2;
num.im  <= y2;

或同一类型的另一种信号同时发出:

代码语言:javascript
复制
signal other_complex : mycomplex_t;
-- (...)
num <= other_complex;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27707945

复制
相关文章

相似问题

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