VHDL:将字符串转换为Std_Logic_Vector

时间:2015-05-29 01:48:22

标签: string entity vhdl sha

我正在std_logic_vector写一个 sha-256 哈希函数,它接收String。我需要将此字符串转换为case位。所以,我必须以某种方式从{{1}}的字符中提取,但我不确定最好的方法。据我所知,在任何库中都没有内置函数来执行此操作。

我唯一的选择是循环遍历字符串的每个索引,并使用{{1}}块将字符映射到各自的8位ASCII字符串?或者有没有办法将字符转换为

1 个答案:

答案 0 :(得分:1)

您可以使用类似这样的函数(未经测试)将字符串转换为位:

function to_std_logic_vector(a : string) return std_logic_vector is
    variable ret : std_logic_vector(a'length*8-1 downto 0);
begin
    for i in a'range loop
        ret(i*8+7 downto i*8) := std_logic_vector(to_unsigned(character'pos(a(i)), 8));
    end loop;
    return ret;
end function to_std_logic_vector;

我不认为类型string是可合成的,因此该函数仅对模拟或静态初始化有用。