Memory 将位向量存储在触发器中,而不是内存-凿子

Memory 将位向量存储在触发器中,而不是内存-凿子,memory,fpga,chisel,flip-flop,digital-design,Memory,Fpga,Chisel,Flip Flop,Digital Design,我想知道在凿子中使用Reg和Mem的区别,以及我如何决定在常见场景中选择哪一种。我认为Mem是存储大量数据的最佳方法,因为它将数据存储到SRAM,而不是在FPGa片内使用触发器,对吗 如果我想实现一个大的寄存器文件(通常大小的10倍),最好使用Mem,然后使用Reg?有几个不同之处。使用SRAM和触发器的区别在于表面的不同。事实上,大多数FPGA供应商都支持将内存实现为块内存或触发器的想法。在功能上,它们是相同的 由于大多数FPGA供应商实现其技术的方式,如果您使用一小块单块RAM,那么基本上使

我想知道在凿子中使用
Reg
Mem
的区别,以及我如何决定在常见场景中选择哪一种。我认为
Mem
是存储大量数据的最佳方法,因为它将数据存储到SRAM,而不是在FPGa片内使用触发器,对吗


如果我想实现一个大的寄存器文件(通常大小的10倍),最好使用
Mem
,然后使用
Reg

有几个不同之处。使用SRAM和触发器的区别在于表面的不同。事实上,大多数FPGA供应商都支持将内存实现为块内存或触发器的想法。在功能上,它们是相同的

由于大多数FPGA供应商实现其技术的方式,如果您使用一小块单块RAM,那么基本上使用所有单块RAM。假设您的设备中有10个10块RAM。你实现了10个小内存,每个只有字节宽,比如说。。。您将使用所有10块RAM!那不好。如果您拥有的内存表很小,则将它们实现为触发器,并将块RAM保存为大内存。对于您自己的问题,您认为mem更适合大数据,这就是为什么这是正确的

下一个问题是时机。事实证明,与触发器相比,FPGA内存的定时有时可能较慢。换句话说,如果您在内存中实现了一个缓冲区,并且发现无法使设计以300Mhz运行,那么您可以将缓冲区更改为使用触发器,并且您可能会挤出使其达到300Mhz所需的额外速度

也存在路由差异。根据您的设计,您可能会发现芯片的一个象限中的所有内存都被利用了,因此现在该设计正试图进入另一个象限以获得更多的块RAM,从而导致逻辑扩展。这也可能表现为时间安排不当。如果您允许一些内存作为触发器进行实例,那么您可能会看到您的设计在象限中重新成形,因为它不需要为了额外的资源而拉伸

这些是我在选择RAM而不是触发器作为内存时考虑的一些事情