Arm 在HPS FPGA Avalon内存映射接口中写入第三个案例时出错

Arm 在HPS FPGA Avalon内存映射接口中写入第三个案例时出错,arm,vhdl,fpga,intel-fpga,soc,Arm,Vhdl,Fpga,Intel Fpga,Soc,我需要通过avalon内存映射接口将count_x32位数据获取到HPS。第一个和第二个病例处理得很好,我把数据交给了HPS。但在第三种情况下,当'2'=>avs_s0_readdata avs_s0_readdata avs_s0_readdataavs_s0_地址为STD_逻辑类型时。此类型不包括“2”作为可能的值,这就是为什么它说它没有声明。STD_逻辑通常仅用于描述一位的两个逻辑值,例如,使用is“0”和“1”,您可以找到所有选项 由于我没有与Avalon合作(我与Xilinx FPGA

我需要通过avalon内存映射接口将
count_x
32位数据获取到HPS。第一个和第二个病例处理得很好,我把数据交给了HPS。但在第三种情况下,
当'2'=>avs_s0_readdata avs_s0_readdata avs_s0_readdataavs_s0_地址为STD_逻辑类型时。此类型不包括“2”作为可能的值,这就是为什么它说它没有声明。STD_逻辑通常仅用于描述一位的两个逻辑值,例如,使用is“0”和“1”,您可以找到所有选项

由于我没有与Avalon合作(我与Xilinx FPGA合作),我不知道它是如何工作的,但您的地址总线似乎有点长。此输入的类型可能应该是std_logic_vector,这样您就有多个地址总线位。然后,您可以添加整数类型的信号:

signal avs_s0_address_int : integer;
在架构体中,您可以添加如下行:

avs_s0_address_int <= to_integer(unsigned(avs_s0_address));

欢迎来到SO。你可以帮助那些放弃时间来帮助你的人。您的代码不完整。我们不知道
avs\u s0\u address
是什么类型(
'2'
属于
字符类型
avs\u s0\u address
将不属于该类型)。请发布一个。在没有看到avs_s0_地址声明的情况下,“2”似乎不是其类型的枚举值。请提供一份报告。您的问题不能重复(或者更尖锐地说,有人可以围绕您的代码片段设计一个没有语法问题的示例)。如果该类型是std_逻辑(基类型std_逻辑),则其枚举值将由字符文本“U”、“X”、“0”、“1”、“Z”、“W”、“L”、“H”和“-”组成。注意if条件没有生成错误。另一个工具可能会给出更具描述性的错误消息-
编码器。vhdl:34:6:错误:无法将字符文字“2”与类型std_ulogic匹配。std_逻辑是std_逻辑的一个解析子类型-('U'、'X'、'0'、'1'、'Z'、'W'、'L'、'H'和'-')“2”在case语句中不是有效的选项,不代表std_逻辑的值。@user1155120谢谢我理解了你说的话,那么我如何才能得到第三个32位的数据?。你的代码仍然不是MCVE,但你不能用一个二进制位表示在3(或4个带有“3”的项目)之间进行选择。您可能期望更多的解码选择(例如avs_s0_地址),其中每个选择都有一个有用的状态。或者,选择两个以上项目之一的复合值。
avs_s0_address_int <= to_integer(unsigned(avs_s0_address));