gpt4 book ai didi

vhdl - 如何使用 VHDL 中的整数引用从记录中提取元素?

转载 作者:行者123 更新时间:2023-12-01 12:40:44 28 4
gpt4 key购买 nike

首先,这是我的目标,使用虚构的 VHDL 语法...

type type_johns_record is
first_element : std_logic;
second_element: std_logic_vector(3 downto 0);
third_element : boolean;
end record;
....
....

for ii in johns_record'range loop
if johns_record.type_johns_record'val(ii) = .... then
exit;
end if;
end loop;

希望您能看到我正在尝试使用与可用于引用枚举类型的语法类似的语法来引用记录的元素。然而,这(当然)不起作用。是否有类似的语法可以工作?我目前的解决方案是使用 record_info 字段并使用 std_logic_vectors 工作,如下所示....

type type_johns_record is record
first_element : std_logic;
second_element : std_logic_vector(3 downto 0);
third_element : boolean;
record_info : type_integer_array(2 downto 0);
end record;

function type_johns_record2slv(d : type_johns_record) return std_logic_vector is
begin
return (d.first_element & d.second_element & bool2sl(d.third_element));
end function;

constant johns_record_zero : type_johns_record := (first_element => '0',
second_element => "0000",
third_element => false,
record_info => (1, 4, 1));

-- can be used with any type for which a record_info is known
function get_record_element(input : std_logic_vector; element_number : integer; record_info : type_integer_array) return std_logic_vector is
variable r : type_slv32_array(record_info'length-1 downto 0);
variable pos : integer := 0;
begin
for ii in record_info'range loop
r(ii)(record_info(ii)-1 downto 0) := input(pos+record_info(ii)-1 downto pos);
end loop;
return r(element_number)(record_info(element_number)-1 downto 0);
end function;

然后我可以按如下方式使用这些函数(在一个包中)...

 for ii in johns_record.record_info'range loop
if get_record_element(type_johns_record2slv(johns_record), ii, johns_record.record_info) = conv_std_logic_vector(4, johns_record.record_info(ii)) then
exit;
end if;
end loop;

这真的很糟糕,指定 record_info 很容易出错,而且只比逐行写出单个元素比较所花费的时间少一点。请提供更好的解决方案!!!

最佳答案

在 IEEE VHDL 标准组中,实际上有两个提案与此相关: http://www.eda.org/twiki/bin/view.cgi/P1076/RecordMemberAttributehttp://www.eda.org/twiki/bin/view.cgi/P1076/RecordIntrospection

这并不意味着放松,其他人会解决这个问题。相反,我们需要您对其发表评论和/或提出其他使用模型(以帮助证明理由)。我们所有的工作都是由志愿者完成的——就像你一样——基本参与不需要成员(member)资格。我们的大部分工作都是在 TWIKI 和电子邮件反射器上完成的,欢迎所有具有 VHDL 背景的人参与。给我发一封电子邮件,我会帮你设置 - 有关详细信息,请参阅我的 Stack Exchange 个人资料。

要参与,请从这里开始:http://www.eda.org/twiki/bin/view.cgi/P1076/

当前提案: http://www.eda.org/twiki/bin/view.cgi/P1076/CollectedRequirements

session 信息: http://www.eda.org/twiki/bin/view.cgi/P1076/MeetingMinutes

关于vhdl - 如何使用 VHDL 中的整数引用从记录中提取元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25056531/

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