Skip to content

Problem 06: ROM

Viktor Prutyanov edited this page Apr 12, 2019 · 7 revisions

ПЗУ

Введение

Обращаясь к иерархии компьютерной памяти, даже не вдаваясь в подробности, можно заметить, что память делится на быструю, но малую по объему (например, регистры микропроцессора) и большую по объему, но медленную (например, ОЗУ). Кроме того, как правило, чем быстрее память, тем выше её стоимость в пересчете на 1 бит. Таким образом, при создании любого вычислительного устройства будет правильно держать нужные в данный момент данные в быстрой памяти, а ненужные в медленной и подгружать их в быструю по мере необходимости. Именно поэтому в микропроцессоре есть набор регистров и кэши разных размеров с самыми нужными в конкретный момент данными, а остальное хранится в ОЗУ или даже в swap-разделе жёсткого диска.

FPGA Altera Cyclone IV (в данном случае EP4CE6E22C8) тоже соответствует этому принципу. Нам доступно 6272 бит регистров (один триггер на один логический элемент -- LE) и 276480 бит статической ОЗУ (SRAM).

В этом задании рассматривается создание ПЗУ разными способами: на основе встроенной RAM и на основе комбинационной логики.

Подготовка

Перейдите в каталог problems/06_rom в вашей локальной копии репозитория. Для синхронизации локального репозтория используется команда git pull.

Задача №1

Скомпилируйте проект с включенной опцией "Allow Any ROM Size For Recognition" (Assignments > Settings > Advanced Settings (Synthesis)). Выясните, сколько использовано регистров (registers), LUT и бит встроенной памяти (memory bits) по результатам компиляции (Compliation Report > Analysis & Synthesis > Resource Utilization by Entity) для модуля rom, а также посмотрите на схему этого модуля после её отображения на ресурсы FPGA (Tools > Netlist viewers > Technology Map (Post-Mapping)).

Вопрос (*): почему отсутствуют регистры на выходе q модуля rom, хотя модуль очевидно последовательностный и этот выход объявлен как output reg?

Задача №2

Скомпилируйте проект с выключенной опцией "Allow Any ROM Size For Recognition". Выясните, сколько использовано регистров, LUT и бит встроенной памяти для модуля rom, а также посмотрите на схему этого модуля после её отображения на ресурсы FPGA.

Замечание: хотя код в задаче №1 и задаче №2 одинаковый, схемы и использованные ресурсы оказываются сильно различными.

Задача №3

Замените модуль rom на rom_comb, скомпилируйте проект с выключенной опцией "Allow Any ROM Size For Recognition" и снова выясните статистику потребления различных ресурсов FPGA.

Замечание: о том, какие кодовые паттерны рассматриваются Quartus'ом как потенциально возможные для замены на ROM или RAM, можно в документе Intel Quartus Prime Standard Edition User Guide: Design Recommendations.

Вопрос: все ли заявленные для модуля rom/rom_comb в таблице Resource Utilization by Entity ресурсы присутствуют на схеме Technology Map (Post-Mapping) для всех 3 случаев?

Задача №4

Запустите на отладочной плате все описанные варианты создания ROM.

Вопрос: почему в 1-м и 2-м случае первое появившееся число на индикаторе это 0000 (которого нет в program.txt), а в 3-м случае индикатор сразу начинает отображать числа из program.txt?

Clone this wiki locally