gpt4 book ai didi

vhdl - 如何在 VHDL 中将 8 位转换为 16 位?

转载 作者:行者123 更新时间:2023-12-03 22:53:42 24 4
gpt4 key购买 nike

我有一个来自 ADC 转换器的 8 位输入信号( std_logic_vector(7 downto 0) )。我必须将它们转换为 16 位信号( std_logic_vector(15 downto 0 )),以便将 16 位信号处理到 16 位系统。

最佳答案

如果将 8 位值解释为有符号(2 的补码),那么通用和标准的 VHDL 转换方法是使用 IEEE numeric_std 库:

library ieee;
use ieee.numeric_std.all;

architecture sim of tb is
signal slv_8 : std_logic_vector( 8 - 1 downto 0);
signal slv_16 : std_logic_vector(16 - 1 downto 0);
begin
slv_16 <= std_logic_vector(resize(signed(slv_8), slv_16'length));
end architecture;

所以首先将 std_logic_vector 转换为有符号值,然后应用调整大小,这将对有符号值进行符号扩展,最后将结果转换回 std_logic_vector。

转换相当冗长,但具有通用性的优点,即使稍后更改目标长度也能正常工作。

属性 'length 只返回 slv_16 std_logic_vector 的长度,即 16。

对于无符号表示而不是有符号,可以使用 unsigned 来完成。而不是 signed ,因此使用此代码:
    slv_16 <= std_logic_vector(resize(unsigned(slv_8), slv_16'length));

关于vhdl - 如何在 VHDL 中将 8 位转换为 16 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17451492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com