如何在 VHDL 中模拟堆栈或队列的行为?任何指针?
我曾想过使用诸如位的逻辑移位操作之类的东西,但是如何检查堆栈为空的约束或堆栈溢出的情况?
您可以从阅读 Peter Ashenden 的书“The Designer's Guide to VHDL”开始。在第 19 章中,他实现了一个排队网络,并详细解释了如何在 VHDL 上实现队列。您可以在以下网址获取该书的 VHDL 文件:http ://www.csee.umbc.edu/help/VHDL/ashenden/ch_19/
如果您使用 VHDL/Verilog 工作,您将需要实现 FIFO。如果这要在实际的 FPGA 中实例化,您将使用 FPGA 中的块 ram 的读写指针对 FIFO 建模。在 OpenCores 上查看一个完善的实现...
不要实现堆栈。使用 FPGA 供应商的内核。
您可以制作一个 RAM 组件并将其用作 FIFO、LIFO 或您想要的各种数据结构。
如果你需要一个堆栈,在制作 RAM 组件后不要使用地址总线,制作一个包含堆栈顶部地址的变量。然后用 POP 减少它(首先将输出发送到数据总线)并用 PUSH 增加它(然后将输入保存到 TOS[栈顶] 变量)。
如果你需要更多,我可以告诉你更多...