Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
XilinxCourse_v2.0.doc
Скачиваний:
56
Добавлен:
22.04.2019
Размер:
3.26 Mб
Скачать

4.7.2 Стек

Стек представляет собой очередь типа LIFO (Last-In-First-Out), что означает, что данные, сохраненные в буфере последними будут выбраны первыми. Также можно сказать, что в любой момент времени только ячейка с данными, находящаяся на вершине стека, является доступной. Для доступа к остальным данным, находящимся ниже вершины стека, требуется последовательно удалить из стека все данные до нужной нам ячейки.

Любые манипуляции со стеком обычно происходят с использованием операций push и pop. Операция push добавляет новые данные на вершину стека, а операция pop служит для последовательного извлечение данных с вершины стека.

В данной реализации, стек будет иметь глубину, равную 8-ми и ширину, равную 4-м, т.е. будет содержать 8-мь 4-х битных ячеек памяти. Кроме стандартных операций push и pop, данный стек будет выполнять операцию синхронного сброса, переводящую его к известному начальному состоянию.

Что касается самой реализации аппаратной части, то стек может быть реализован несколькими способами. Одним из способов является перемещение данных между ячейками памяти и работа непосредственно с регистром, представляющим собой вершину стека. Более интересным примером, является стек со статической реализацией. При этом данные, находящиеся в стеке не перемещаются между регистрами, а вместо этого используется указатель SP (Stack Pointer). Для данного примера была выбрана реализация с использованием SP.

Для большей наглядности предлагается рассмотреть данный пример по частям. На рисунке 4.7.2 представлена часть описания стека на языке Verilog HDL, относящаяся к объявлению портов ввода-вывода и вспомогательных сигналов. Сигналы push, pop и reset представляют возможные операции над стеком. Сигнал err сигнализирует об ошибках, таких как: одновременное выполнение операций push и pop, выполнение операции pop над пустым стеком или выполнение операции push над полностью заполненным стеком.

Рисунок 4.7.2 — Объявление портов ввода-вывода и вспомогательных сигналов для модуля, реализующего стек

Далее, на рисунке 4.7.3 представлена часть описания модуля, содержащая поведение регистров. sp_reg представляет собой регистр, содержащий значение SP. При этом, по сигналу reset происходит сброс указателя, что приводит модуль в начальное состояние. Stack – представляет собой упрощенный вариант регистрового файла. Запись новых данных осуществляется при возникновении некоторого ряда условий, а именно: отсутствие ошибки, отсутствие заполненности стека и появление операции push.

Рисунок 4.7.3 — Описание поведения регистров модуля, реализующего стек

И, наконец, на рисунке 4.7.4 представлена заключительная часть модуля, описывающая его логику работы.

Рисунок 4.7.4 — Описание внутренней логики модуля, реализующего стек

4.8. Константы и параметры. Проектирование ip-блоков

В данном разделе описываются такие понятия как константы и параметры, являющиеся ключевыми при написании блоков класса «soft-core», являющихся полностью параметризированными, законченными и протестированными модулями, выполняющими некоторые законченные функции. Это могут быть сопроцессоры, контроллеры интерфейсов и т.д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]