LS-Sb90197
.pdfсигналом на входе D, по фронту синхроимпульса на входе С. Переходы триггера приведены в табл. 1.7.
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.7 |
|||
Режим работы |
|
|
|
|
Входы |
|
Выходы |
||||||||
|
|
k |
|
|
k |
Ck |
Dk |
Qk + 1 |
|
|
k + 1 |
||||
|
S |
R |
Q |
||||||||||||
Асинхронная установка «1» |
0 |
|
1 |
|
– |
– |
1 |
0 |
|||||||
Асинхронная установка «0» |
1 |
|
0 |
|
– |
– |
0 |
1 |
|||||||
Неопределенность |
0 |
|
0 |
|
– |
– |
1 |
1 |
|||||||
Запись «1» |
1 |
|
1 |
|
|
|
|
1 |
1 |
0 |
|||||
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
Запись «0» |
1 |
|
1 |
|
|
|
|
0 |
0 |
1 |
|||||
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Символ означает фронт синхроимпульса
ИС К155ТВ1 (рис. 1.16, б) – универсальный JK-триггер со структурой M-S, тактируемый срезом синхроимпульса. Триггер имеет инверсные асинхронные входы S и R для установки начального состояния триггера. Каждый из информационных входов J и K снабжен трехвходовым ЛЭ «И» (входная логика), поэтому у ИС три входа J (J1–J3) и три входа K (K1–K3). Триггер устанавливается в состояние, определяемое сигналами на входах J1– J3, по срезу синхроимпульса на входе С. Переходы триггера приведены в табл. 1.8.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.8 |
|||||
Режим работы |
|
|
|
|
|
|
Входы |
|
|
|
|
Выходы |
||||||||||
|
|
k |
|
|
k |
|
Ck |
|
J k |
K k |
Qk + 1 |
|
|
|
k + 1 |
|||||||
|
S |
R |
Q |
|||||||||||||||||||
Асинхронная установка «1» |
0 |
|
1 |
|
|
– |
|
– |
– |
1 |
0 |
|||||||||||
Асинхронная установка «0» |
1 |
|
0 |
|
|
– |
|
– |
– |
0 |
1 |
|||||||||||
Неопределенность |
0 |
|
0 |
|
|
– |
|
– |
– |
1 |
1 |
|||||||||||
Переключение |
1 |
|
1 |
|
|
|
|
|
|
1 |
1 |
|
|
k |
|
Qk |
||||||
|
|
|
|
|
|
|
Q |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Запись «1» |
1 |
|
1 |
|
|
|
|
|
|
1 |
0 |
1 |
0 |
|||||||||
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Запись «0» |
1 |
|
1 |
|
|
|
|
|
|
0 |
1 |
0 |
1 |
|||||||||
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Хранение |
1 |
|
1 |
|
|
|
|
|
|
0 |
0 |
Qk |
|
|
|
k |
||||||
|
|
|
|
|
|
|
|
Q |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Символ означает cрез синхроимпульса
В современных сериях цифровых ИС триггеры представлены достаточно широко и разнообразно.
2.ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯ ПЛИС
Ссередины 1990-х гг. в электронной промышленности особенно бурно развиваются ПК, сотовая и мобильная связь, высокоскоростные ЦУ передачи данных. Разработчики стремятся производить продукцию на основе увеличения функциональных возможностей, повышения технических характе-
21
ристик, снижения стоимости, потребляемой мощности и уменьшения размеров. Для реализации этого создаются высокоинтегрированные, сложные системы с небольшим числом ИС, малой площадью печатных плат и в кратчайшие сроки. Современные субмикронные технологии, производство печатных плат и новые технологии при изготовлении корпусов ИС позволяют решать задачи повышения степени интеграции и минимизации размеров электронных устройств. Однако для производителей электронной техники часто быстрый выход на рынок с готовым изделием при высоких технических характеристиках является более важным, чем все остальные факторы. Современные средства САПР позволяют решать и эту проблему, а ПЛИС и стандартные языки описания аппаратуры (Hardware Description Languages – HDL) становятся ключевыми элементами в новых методологиях проектирования.
Полузаказные и заказные специализированные ИС (Application Specific Integrated Circuits – ASIC) также используются для обеспечения решаемых проблем, но ПЛИС обеспечивают дополнительную гибкость при проектировании и модификации аппаратуры, более быстрый выход на рынок и более низкие затраты.
Стандартные языки описания аппаратуры (VHDL и Verilog) очень удобны для проектирования электронных систем и ЦУ на основе ПЛИС, их популярность растет. При проектировании сложных (более 1000 затворов) ПЛИС инженеры уже не могут более использовать булевы уравнения или описания в виде логических схем, чтобы обеспечить быстрое и эффективное полное проектирование. Языки описания аппаратуры типа VHDL (Very high speed integrated circuit Hardware Description Language) обеспечивают высокоуровневое описание сложнейших ЦУ, позволяют выполнить проектирование значительно быстрее, поддерживают создание библиотек проектирования, в которых компоненты могут быть многократно использованы в последующих проектах. Кроме того, так как это стандартные языки, они обеспечивают совместимость кодов между средствами синтеза и моделирования, а также независимое от конкретного кристалла проектирование, с их помощью обеспечивается достаточно простое конвертирование проекта с ПЛИС в реализацию в виде полузаказной ИС или базового матричного кристалла (БМК).
Проектирование простейших ПЛИС (до 500 затворов) возможно с применением традиционных методологий проектирования на основе логического описания, синтеза на основе карт Карно и т. д., но для сложных проектов на основе ПЛИС или ASIC традиционные методологии проектирования уже
22
не применимы, так как требуют значительных затрат времени и сопровождаются большим числом ошибок. Схемные редакторы, используемые ранее и в настоящее время большинством проектировщиков, имеют много достоинств, например, они обеспечивают графический просмотр проекта, а если есть средства иерархического представления, то и модульность проекта. Однако для больших проектов они имеют много недостатков: управляющая логика функционирования схемы представлена с использованием традиционных подходов, схемное представление трудно хранить в формализованном виде и обслуживать, схемы сопровождаются описательной документацией на разных языках, трудно воспользоваться старыми проектами в новых разработках, так как схемные модели не предназначены для многоразового использования, сложна стыковка с другими системами САПР в процессе проектирования и верификации. Всегда считается, что более удобной методологией проектирования является та, которая увеличивает эффективность работы проектировщиков, имеет множество уровней представления проекта, наглядных и легко обслуживаемых, понятных или стандартных для промышленности и разных программных средств САПР, где модели могут быть многократно использованы и поддерживать иерархическое представление от схемного до системного уровня, могут быть использованы как для описания, так и для синтеза и моделирования. В настоящее время два языка удовлетворяют этим требованиям: VHDL и Verilog [6].
Теоретической базой при проектировании ЦУ являются: булева алгебра, двоичная арифметика и теория конечных автоматов. Функции в алгебре логики, как и их аргументы, могут принимать только два значения: 0 и 1. Функции могут быть представлены различными способами: словесным описанием (назначением, определением); таблицей истинности; аналитическим выражением с использованием базовых логических операций «И», «ИЛИ», «НЕ», определяемых аксиомами булевой алгебры; картой Карно; переключательной схемой; диаграммой Венна; геометрическим способом (гиперкубами); диаграммой двоичного решения.
2.1. Краткие сведения о языке описания аппаратуры
Язык VHDL является международным стандартом в области автоматизации проектирования ЦУ. Этот язык используется во многих современных САПР, ориентированных на разнообразную элементную базу (микросхемы малой и средней степеней интеграции, ПЛИС). В частности, он может быть использован в процессе работы с текстовыми редакторами САПР, такими как
Quartus II, Synplify, Active-HDL и др.
23
При описании аппаратуры на языке VHDL вводится понятие объект. Объектом называют проектируемое ЦУ. При использовании языка VHDL для проектирования ЦУ объект должен быть описан следующим образом:
–описывается интерфейс (entity) объекта;
–описывается архитектура (architecture) объекта.
Описание интерфейса представляет собой перечисление входов и выходов объекта (всего в целом, а не отдельных его составных частей), которые при этом называют портами объекта. Схема описания интерфейса на языке VHDL имеет следующий вид:
entity идентификатор_интерфейса is port(список портов с указанием их типов); end идентификатор_интерфейса;
Здесь (но не всегда) термин «идентификатор» обозначает имя, которое присваивается проектировщиком (пользователем САПР) данному описанию. Имена, присваиваемые проектировщиком, называют пользовательскими именами. Причем идентификатор интерфейса должен совпадать с именем проекта.
Имя проекта (как и упоминаемый далее идентификатор архитектуры, иные идентификаторы) может быть составлено из букв латинского алфавита, цифр и подчеркиваний (не допускаются два подчеркивания подряд, первым знаком идентификатора должна быть буква). За описанием интерфейса должно следовать описание архитектуры по схеме
architecture идентификатор_архитектуры of идентификатор_интерфейса is -- декларация портов архитектуры
begin
...; -- тело архитектуры
end идентификатор_архитектуры;
Двумя смежными дефисами в языке VHDL отделяются комментарии. «Декларация портов архитектуры» является условным названием того
раздела описания, в котором перечисляются, например, компоненты (составные части) проектируемого ЦУ с указанием входных и выходных сигналов (портов) компонентов – так называемых внутренних сигналов ЦУ, среди которых не должно быть входных и выходных сигналов объекта (портов, декларированных при описании интерфейса). Упомянутые компоненты могут представлять собой, в частности, примитивы (листья) либо ранее спроектированные ЦУ. Точнее говоря, в данном разделе может осуществляться декларация сигналов, переменных и констант, их типов и подтипов, декларация компонентов (в дальнейшем эти понятия будут уточнены).
24
Тело архитектуры должно представлять собой описание проектируемого ЦУ на поведенческом и/или структурном уровне. При структурном описании потребуется указать совокупность компонентов (элементов, подсхем) и связей между ними. Естественно, некоторые компоненты ЦУ в структурном описании, в свою очередь, могут состоять из нескольких частей – компонентов более низкого уровня иерархии описания. Об этом говорят как о вхождении подсхем в схемы. Представляя отношение вхождения подсхем в схемы в виде графа, можно получить дерево (граф) иерархии описания всего ЦУ. Некоторые из компонентов объектов могут представлять собой макро- и мегафункции из библиотек некоторых САПР (например, Quartus II), допускающих использование языка VHDL для работы с ПЛИС.
В последнее время развитие технологии ПЛИС идет настолько стремительно, что за несколько лет меняется полностью не только номенклатура семейств ПЛИС, но и открываются возможности реализации совершенно новых подходов к обработке информации, в том числе и видеоинформации.
2.2. Простейшие примеры описания схем КЦУ
Пример 1. Схему КЦУ на рис. 2.1, а можно описать следующим обра-
зом:
entity ANDOR is
--декларация входных портов и выходного порта,
--определение их типов как двоичных
port(e0, e1, e2: in bit; z: out bit); end ANDOR;
architecture EXAMPLE1 of ANDOR is begin
--назначение выходному сигналу (порту) z результата
--логического преобразования сигналов e0, e1, e2
z <= (not (e0 and e1) or e2); end EXAMPLE1;
В приведенном тексте тело архитектуры, очевидно, представляет собой поведенческое описание объекта – описание логического преобразования, составленного с использованием логических операций «И» (and), «ИЛИ» (or), «НЕ» (not).
Пример 2. Схему КЦУ на рис. 2.1, б можно описать следующим обра-
зом:
entity Cascade_Circuit is
port(x0, x1, x2, x3, x4: in bit; y: out bit); end Cascade_Circuit;
25
architecture example2 of Cascade_Circuit is
--декларация описанного ранее компонента,
--соответствующего схеме (рис. 2.1, а) component ANDOR
--декларация входных и выходного портов компонента,
--определение их типов как двоичных port(e0, e1, e2: in bit; z: out bit);
end component;
--декларация внутреннего сигнала f и определение его типа как двоичного signal f: bit;
begin
--метка (а1) и описание использования компонента ANDOR в качестве левой обведенной штриховой линией части схемы КЦУ (рис. 2.1, б), т. е. описание использования портов компонента ANDOR в качестве портов объекта (x0, x1, x2, x3, x4, y) и передачи внутреннего сигнала f между частями схемы КЦУ
a1 : ANDOR port map (x0, x1, x2, f);
--метка (а2) и описание использования компонента ANDOR в качестве правой обведенной штриховой линией части схемы КЦУ (рис. 2.1, б), т. е. описание использования портов компонента ANDOR в качестве портов объекта (x0, x1, x2, x3, x4, y) и передачи внутреннего сигнала f между частями схемы КЦУ
a2 : ANDOR port map (f, x3, x4, y); end example2;
Рис. 2.1. Схемы КЦУ на ЛЭ «И-НЕ», «ИЛИ» для примера 1 (а) и примера 2 (б)
Метки (здесь a1 и a2), являющиеся одним из частных случаев идентификаторов, в соответствии с синтаксисом VHDL отделяются двоеточиями. Причем отдельные версии языка VHDL предполагают обязательное использование меток, а для некоторых версий (в частности для версии, соответствующей текстовому редактору изучаемой САПР) использование меток возможно, но не обязательно. Метки тоже относят к пользовательским именам.
В приведенном тексте тело архитектуры, очевидно, представляет собой структурное описание объекта. Последний текст описания составлен с уче-
26
том того, что схема на рис. 2.1, б состоит из двух частей (обведенных штриховыми линиями), каждая из которых представляет собой схему на рис. 2.1, а, описанную ранее. При этом КЦУ на рис. 2.1, б описывается совокупностью двух приведенных ранее текстов, а не только последним из них. Заметим, что имя и декларация портов компонента (см. второй текст) должны полностью совпадать с соответствующими строками описания, сделанного ранее (см. первый текст).
В двух составленных текстах описаний идентификаторы интерфейса и архитектуры записаны по-разному (с использованием больших и малых букв). Это не является ошибкой: компилятор САПР воспримет одинаково большие и малые буквы в текстах VHDL.
2.3. Примеры разработки и исследования ПЦУ
Лабораторная работа по разработке и исследованию ЦУ должна включать в себя следующие основные этапы:
1)разработку кода программы описания работы требуемой схемы;
2)анализ временных диаграмм работы требуемой схемы с иллюстрацией всех возможных вариантов входных сигналов и взаимосвязи между входными и выходными сигналами;
3)разработку иерархического проекта с применением разработанной схемы (схема в виде «черного ящика») в текстовом редакторе;
4)разработку кода программы тестирования;
5)выводы о возможных вариантах реализации схемы с уменьшением сложности.
Ограничимся рассмотрением первых четырех этапов.
Пример 1. Рассмотрим D-триггер, тактируемый передним фронтом (Rising Edge Flip-Flop), без цепей асинхронного сброса (reset) или предустановки (preset).
1)Описание работы триггера на языке VHDL:
library IEEE;
use IEEE.std_logic_1164.all; entity dff_1 is
port(data, clk: in std_logic; q: out std_logic); end dff_1;
architecture behav of dff_1 is begin
process (clk) begin
if (clk'event and clk = '1') then
27
q <= data; end if;
end process; end behav;
2)Временные диаграммы работы триггера (рис. 2.2, а);
3)Схема в виде «черного ящика» (рис. 2.2, б);
Рис. 2.2. Временные диаграммы работы схемы (а) и схема в виде «черного ящика» (б)
4) код программы тестирования:
library ieee;
use ieee.std_logic_1164.all;
--подключение нужных библиотек entity dff_1_tb is
end dff_1_tb;
architecture TB_ARCHITECTURE of dff_1_tb is
--декларация компонентов тестируемой схемы component dff_1
port(data: in std_logic; clk: in std_logic; q: out std_logic); end component;
--подача всех входных сигналов на входы схемы signal data: std_logic;
signal clk: std_logic;
--получение выходного сигнала с выхода схемы signal q: std_logic;
--ввести нужный код
begin
--узел под тестирование схемы UUT : dff_1
port map (data => data, clk => clk, q => q);
end TB_ARCHITECTURE;
--ввести необходимые комбинации входных сигналов configuration TESTBENCH_FOR_dff_1 of dff_1_tb is for TB_ARCHITECTURE
for UUT : dff_1
use entity work.dff_1(behav);
28
end for;
end for;
end TESTBENCH_FOR_dff_1;
Пример 2. Рассмотрим триггер, тактируемый передним фронтом с асинхронной предустановкой (Rising Edge Flip-Flop with Asynchronous Preset).
1. Описание работы триггера на языке VHDL:
library IEEE;
use IEEE.std_logic_1164.all; entity dff_2 is
port(data, clk, preset: in std_logic; q: out std_logic); end dff_2;
architecture behav of dff_2 is begin
process (clk, preset) begin if (preset = '0') then
q <= '1';
elsif (clk'event and clk = '1') then q <= data;
end if;
end process; end behav;
2.Временные диаграммы работы триггера (рис. 2.3, а).
3.Схема в виде «черного ящика» (рис. 2.3, б).
Рис. 2.3. Временные диаграммы работы схемы (а) и схема в виде «черного ящика» (б)
4. Код программы тестирования:
library ieee;
use ieee.std_logic_1164.all; entity dff_2_tb is
end dff_2_tb;
architecture TB_ARCHITECTURE of dff_2_tb is component dff_2
port(data: in std_logic; clk: in std_logic; preset: in std_logic; q: out std_logic); end component;
signal data: std_logic;
29
signal clk: std_logic; signal preset: std_logic; signal q: std_logic; begin
UUT : dff_2
port map (data => data, clk => clk, preset => preset, q => q);
end TB_ARCHITECTURE;
configuration TESTBENCH_FOR_dff_2 of dff_2_tb is for TB_ARCHITECTURE
for UUT : dff_2
use entity work.dff_2(behav); end for;
end for;
end TESTBENCH_FOR_dff_2;
2.4.Порядок выполнения лабораторных работ
1.Разработать на языке VHDL/Verilog схему ЦУ, указанного преподава-
телем.
2.Исследовать работу и построить временные диаграммы (снять таблицу переходов) ЦУ.
3.Разработать схему подключения и выполнить анализ возможных вариантов реализации ЦУ с целью уменьшения сложности (числа вентилей).
2.5.Список лабораторных работ
1.Разработка и исследование логических элементов.
2.Разработка и исследование комбинационных устройств.
3.Разработка и исследование триггеров.
4.Разработка и исследование дешифраторов.
5.Разработка и исследование двоичных сумматоров.
6.Разработка и исследование цифровых компараторов.
7.Разработка и исследование мультиплексоров и демультиплексоров.
8.Разработка и исследование регистров.
9.Разработка и исследование счетчиков импульсов.
10.Разработка и исследование преобразователей сигналов.
11.Разработка и исследование программных блоков.
12.Разработка и исследование аппаратно-программных блоков.
30