11

我有一个表格,表格的每一行都包含状态(寄存器)。存在选择一个特定行的逻辑。只有一行接收“选择”信号。然后访问该选定行的状态。要么状态的一部分作为输出连接到模块的 IO,要么将 IO 的一部分用作更新状态的输入。

如果我用电路实现这个,我会使用通道门。选定的信号将打开一组传输门,它将行的寄存器连接到总线。然后将总线连接到 IO 包。这是快速、小面积和低能量的。

在 Chisel 中有一种直接的实现方式。它将所选行编码为二进制数,然后将该数字应用于传统多路复用器的选择输入。不幸的是,对于具有 20 到 50 行和数百位状态的表,这种实现可能非常缓慢,并且在面积和能源上都是浪费的。

这个问题有两个部分:1)有没有办法在 Chisel 中指定公共汽车,这样你就有通关门或传统的三州司机都挂在公共汽车上?

2)如果做不到这一点,在 Chisel 中是否有一种快速、小面积、低能耗的方法?

谢谢

4

1 回答 1

4

1)Chisel 不完全支持双向线,但通过实验模拟类型(参见示例),您至少可以通过 Verilog 黑盒之间的 Chisel 代码缝合总线。

2) 你在 chisel3.util 中尝试过 Mux1H吗?它基本上发出输入及其相应选择位的乘积之和。我不确定这与您提出的实施相比如何。我很想看看 QOR 比较。如果这个结构还不够,并且你不能用凿子准确地表达你想要的东西,你可以使用一个参数化的 BlackBox来实现你的 one-hot mux 并根据你的需要实例化它。

于 2017-05-03T21:37:29.687 回答