加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

vhdl – 用前导零填充std_logic_vector

发布时间:2020-12-14 05:55:37 所属栏目:Java 来源:网络整理
导读:好吧,我想做的是将一个较小的std_vector分配给一个较大的std_vector,用零填充高位.但是,我想要一些通用且简单的东西,而不需要知道每个第一个的大小. 例如,如果我有: signal smaller_vec: std_logic_vector(15 downto 0);signal larger_vec: std_logic_vecto
好吧,我想做的是将一个较小的std_vector分配给一个较大的std_vector,用零填充高位.但是,我想要一些通用且简单的东西,而不需要知道每个第一个的大小.

例如,如果我有:

signal smaller_vec: std_logic_vector(15 downto 0);
signal larger_vec: std_logic_vector(31 downto 0);

我可以:

larger_vec <= X"0000" & smaller_vec;

但是,如果我不知道较小的矢量的大小,该怎么办?是否指定所有高位都为零.

我知道其他条款,但由于我需要几行,这会变得混乱:

larger_vec(smaller_vec'high downto 0) <= smaller_vec;
larger_vec(31 downto smaller_vec'length) <= (others => '0');

我以为我可以用:

larger_vec <= "" & smaller_vec;

但这没用.有任何想法吗?

解决方法

你有没有尝试过:
larger_vec <= (31 downto smaller_vec'length => '0') & smaller_vec;

在过去,我有像这样的代码的综合工具问题,所以我用过:

constant ZERO : std_logic_vector(larger_vec'range) := (others => '0');
. . .
larger_vec <= ZERO(31 downto smaller_vec'length) & smaller_vec;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读