如何在VHDL中实现堆栈/队列等数据结构?

如何在VHDL中实现堆栈/队列等数据结构?,vhdl,Vhdl,如何在VHDL中模拟堆栈或队列的行为?有什么建议吗 我曾想过使用一些东西,比如位的逻辑移位操作,但如何检查堆栈为空的约束或堆栈溢出的情况?您可以从阅读Peter Ashenden的书《VHDL设计指南》开始。 在第19章中,他实现了一个排队网络,并详细解释了如何在VHDL上实现队列。 您可以在以下位置获取该书的VHDL文件:如果您使用VHDL/Verilog,您将需要实现FIFO。如果这将在实际的FPGA中实例化,您将使用读写指针对FIFO进行建模,以在FPGA中阻塞ram。查看OpenCore

如何在VHDL中模拟堆栈或队列的行为?有什么建议吗


我曾想过使用一些东西,比如位的逻辑移位操作,但如何检查堆栈为空的约束或堆栈溢出的情况?

您可以从阅读Peter Ashenden的书《VHDL设计指南》开始。 在第19章中,他实现了一个排队网络,并详细解释了如何在VHDL上实现队列。
您可以在以下位置获取该书的VHDL文件:

如果您使用VHDL/Verilog,您将需要实现FIFO。如果这将在实际的FPGA中实例化,您将使用读写指针对FIFO进行建模,以在FPGA中阻塞ram。查看OpenCores上开发良好的实现


不要实现堆栈。使用FPGA供应商的核心。

您可以制作一个RAM组件,并将其用作FIFO、LIFO或任何您想要的数据结构

若你们需要一个堆栈,在制作RAM组件后不要使用地址总线,制作一个包含堆栈顶部地址的变量。然后用POP减小它(首先将输出发送到数据总线),用PUSH增加它(然后将输入保存到TOS[堆栈顶部]变量)


如果您需要更多,我可以告诉您更多…

您会问如何“模拟行为”。您是要编写可合成代码(用于硬件),还是要为模拟编写代码。这就决定了你们可以使用哪种VHDL结构。我反对使用厂商的内核。推断逻辑可能与供应商核心一样高效。它还允许使您的设计技术独立,让您可以选择切换FPGA供应商或针对不同的ASIC技术。