- •Методические указания
- •«Автоматизация проектирования микропроцессорных систем»
- •Введение
- •1 Вопросы для самостоятельной подготовки
- •Webpack ise - средство проектирования цифровых устройств
- •2.1 Начало работы с системой
- •1 Инструментальная панель («Toolbar»): 2 окно описания проекта («Source window»): 3 окно процессов («Process window»): 4 рабочий стол (« Workspace»): о окно отчётов («Transcript window»)
- •2.2 Создание нового проекта
- •2.3 Создание описания устройства
- •2.4 Тестовые модули и функциональное моделирование
- •2.5 Использование временных ограничений
- •2.6 Реализация устройства на базе плис
- •2.7 Переразмещение проекта и проверка соответствия выводов
- •2.8 Проверка проекта способом временного моделирования
- •Убедиться, что в выпадающем списке выбран пункт «Automatically connect to a cable and identify Boundary-Scan chain».
- •3 Цифровая схемотехника в системах на кристалле
- •Особенности реализации устройств с памятью
- •Особенности реализации подсистем реального времени
- •Проектирование простейших схем омбинационной логики
- •Порядок выполнения работы
- •Содержание отчёта
- •Контрольные вопросы
- •Проектирование устройства по заданной передаточной функции
- •Порядок выполнения работы
- •Содержание отчёта
- •Контрольные вопросы
- •Проектирование подсистемы реального времени
- •Порядок выполнения работы
- •Содержание отчёта
- •Контрольные вопросы
- •Проектирование контроллера последовательного порта
- •Порядок выполнения работы
- •Содержание отчёта
- •Контрольные вопросы
- •Проектирование арифметико-логического устройства
- •Содержание отчёта
- •Контрольные вопросы
- •Проектирование подсистемы памяти
- •Порядок выполнения работы
- •Содержание отчёта
- •Контрольные вопросы
Особенности реализации устройств с памятью
Все запоминающие устройства в зависимости от принципа хранения информации принято разделять на постоянные (ПЗУ, или ROM - ReadOnly Memory) и оперативные (ОЗУ, или RAM - Random Access Memory). ПЗУ является по сути устройством комбинационной логики, которое для каждого выхода данных реализует логическую функцию от адресных входов. В соответствии с этим они могут быть описаны так же, как и обычные декодеры или независимые блоки комбинационной логики.
ОЗУ могут быть реализованы в ПЛИС тремя способами:
на базе триггеров логических ячеек;
на базе распределённой памяти;
на базе блочной памяти.
Использование распределённой памяти значительно более выгодно, чем применение триггеров, уже потому, что на каждый триггер FPGA приходится один логический генератор, который для ПЛИС фирмы Xilinx может быть сконфигурирован как фрагмент распределённой памяти с организацией 16 х 1. Экономия ресурсов ПЛИС при этом очевидна.
VHDL предоставляет достаточно простой путь описания памяти. Пример реализации ОЗУ с организацией 32 х 4 приведён ниже:
-- Read-First Mode library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity rams_01 is
port (
elk : in std_logic;
we : in std_logic;
en : in std_logic;
addr : in std_logic_vector(4 downto 0);
di : in std_logic_vector(3 downto 0);
do : out std_logic_vector(3 downto 0)
);
end rams_01;
architecture syn of rams_01 is type ram_type is array (31 downto 0) of std_logic_vector (3 downto 0); signal RAM: ram_type; begin
process (elk) begin
if elk’event and elk = ’1’ then then = ’1’ then
if we = ’1’ then
RAM(conv_integer(addr)) <= di; end if;
do <= RAM(conv_integer(addr)) ; end if; end if; end process; end syn;
Данный пример, приведённый в справочной системе ISE, может быть синтезирован как в виде распределённой памяти, так и в виде блочной.
Тип синтезируемой памяти задаётся в свойствах процесса синтеза. Доступ к свойствам процесса синтеза можно получить, выполнив щелчок правой клавишей мыши по названию процесса « Synthesize-XST» в окне процессов и выбрав в выпадающем меню пункт «Properties». В открывшемся окне (рисунок 30) необходимо выбрать категорию «HDL Options», в правой части окна появится список свойств синтеза, относящихся к этой категории.
Рисунок 30 Настройка
типа синтезируемой памяти
В выпадающем меню свойства «RAM Style» (тип ОЗУ) есть три варианта: «Auto» (автоматический выбор типа ОЗУ). «Distributed» (распределённая память) и «Bloek» (блочная память). Результаты синтеза ОЗУ с различными настройками можно узнать по окончании работы соответствующего процесса в окне резюме проекта (таблицы 1 и 2).
Таблица 1 - Использование ресурсов (распределённая память)
Device Utilization Summary (estimated values) |
|||
Logic Utilization |
Used |
Available |
Utilization |
Number of Slices |
5 |
1920 |
0 % |
Number of Slice Flip Flops |
4 |
3840 |
0 % |
Number of 4 input LUTs |
9 |
3840 |
0 % |
Number of bonded IOBs |
16 |
173 |
9 % |
Number of GCLKs |
1 |
8 |
12 % |
Таблица 2 - Использование ресурсов (блочная память)
Device Utilization Summary (estimated values) |
|||
Logic Utilization |
Used |
Available |
Utilization |
Number of bonded IOBs |
16 |
173 |
9 % |
Number of BRAMs |
1 |
12 |
8 % |
Number of GCLKs |
1 |
8 |
12 % |
Xilinx ISE поддерживает использование метода «чёрного ящика», который можно применить при реализации ОЗУ на базе блочной памяти. Этот метод заключается во вставке в ДОЬ-описание или принципиальную схему готового компонента, реализующего те или иные функции. В общем случае вставка компонента реализуется аналогично тому, как показано ниже:
-- Black Box library ieee;
use ieee.std_logic_1164.all;
entity black_box_l is port (
DI_1, DI_2 : in std_logic;
DOUT : out std_logic
architecture archi of black_box_l is component my_block port (
I1 : in std_logic;
I2: in std_logic;
0 : out std_logic
);
end component; begin
inst: my_block port map (I1=>DI_1,I2=>DI_2,0=>D0UT); end archi;
Для ПЛИС семейства Spartan-3. компонентами, синтезирующимися в блочную память, являются RAMB16_S[w] (однопортовое ОЗУ) и RAMB16_ _S[wA]_S[wB] (двухпортовое ОЗУ) (рисунок 31).
Рисунок 31 Примитивы
ОЗУ для синтеза па базе блочной памяти
Подробное описание компонентов и принципов их настройки можно найти в [5].
