可以在 VHDL 中创建字典类型的数据结构吗?
Possible to create a dictionary type data structure in VHDL?
基本上我想做的是,我将有一个 std_logic_vector 进入我的子模块,并且基于该向量的前 8 位,我想做某些事情。
本质上这是一个操作码。然而,仅仅将它输入 ALU 是行不通的,因为我有可变长度的指令,还有循环。
例如,我必须将不同的字节作为跳转指令,一个需要 3 个周期,另一个需要 4 个。
我想要一种查看输入向量的第一个字节并准确查找指令的方法,以便我可以设置与所述指令一起使用的不同值。
本质上是一个字典,或者一个有多个答案的 LUT。
因此,例如,如果第一个字节是
0x54
我要查一下,这是一个跳转,需要4个周期,是一个直接地址,指令总长度是6个字节。
有没有办法使用字典类型结构或 LUT 来做到这一点?
我尝试合并的指令集是 65C816,如果有帮助的话。
当密钥很小的时候,比如这里只有8位,那么你可以直接使用密钥作为内存地址,然后用你需要的查找结果初始化内存。该查找只需要 1 个周期,并且实现起来非常简单。
对于无法映射到内存查找的长键,需要做一个复杂的查找机,例如基于键的哈希值和键匹配的最终验证。这是一个更大的设计,具有更长的延迟。
基本上我想做的是,我将有一个 std_logic_vector 进入我的子模块,并且基于该向量的前 8 位,我想做某些事情。
本质上这是一个操作码。然而,仅仅将它输入 ALU 是行不通的,因为我有可变长度的指令,还有循环。
例如,我必须将不同的字节作为跳转指令,一个需要 3 个周期,另一个需要 4 个。
我想要一种查看输入向量的第一个字节并准确查找指令的方法,以便我可以设置与所述指令一起使用的不同值。
本质上是一个字典,或者一个有多个答案的 LUT。
因此,例如,如果第一个字节是
0x54
我要查一下,这是一个跳转,需要4个周期,是一个直接地址,指令总长度是6个字节。
有没有办法使用字典类型结构或 LUT 来做到这一点?
我尝试合并的指令集是 65C816,如果有帮助的话。
当密钥很小的时候,比如这里只有8位,那么你可以直接使用密钥作为内存地址,然后用你需要的查找结果初始化内存。该查找只需要 1 个周期,并且实现起来非常简单。
对于无法映射到内存查找的长键,需要做一个复杂的查找机,例如基于键的哈希值和键匹配的最终验证。这是一个更大的设计,具有更长的延迟。