Как реализовать структуры данных, такие как стек / очередь, в VHDL?

Как я могу смоделировать поведение стека или очереди в VHDL? Есть указатели?

Я думал об использовании чего-то вроде операции логического сдвига битов, но как проверить ограничения стека, пустого или переполнения стека?

Ответов (4)

Решение

Вы можете начать с чтения книги Питера Эшендена «Руководство разработчика по VHDL». В главе 19 он реализует сеть очередей и подробно объясняет, как реализовать очереди на VHDL. Вы можете получить файлы VHDL для этой книги по адресу: http://www.csee.umbc.edu/help/VHDL/ashenden/ch_19/

Не реализуйте стек. Используйте ядро ​​производителя FPGA.

вы можете создать компонент RAM и использовать его как FIFO, LIFO или любую структуру данных, которую вы хотите.

если вам нужен стек, после создания компонента RAM не использовать для него шину адреса, создайте переменную, содержащую адрес вершины стека. затем с помощью POP уменьшите его (сначала отправьте вывод на шину данных) и с помощью PUSH увеличьте его (затем сохраните ввод в переменную TOS [верх стека]).

если вам нужно больше, я могу рассказать вам больше ...

Вы захотите реализовать FIFO, если вы работаете в VHDL / Verilog. Если это будет реализовано в реальной FPGA, вы смоделируете FIFO с указателями чтения и записи, чтобы блокировать RAM в FPGA. Посмотрите на хорошо разработанную реализацию на OpenCores ...

http://opencores.org/project,versatile_fifo