Материалы к выполнению курсовой работы по дисциплине «Вычислительные машины, системы и сети » Титульный лист расчетно-пояснительной записки Саратовский государственный технический университет Кафедра технической кибернетики и информатики Пояснительная записка к курсовой работе по дисциплине «Вычислительные машины, системы и сети » на тему « » Выполнил: Проверил: 2008 Примерное содержание расчетно-пояснительной записки Реферат Техническое задание Календарный план Введение Разработка VHDL модели проектируемого устройства Обзор литературы по теме курсовой работы, подбор материалов. Разработка автоматной модели проектируемого устройства. Оптимизация модели. Разработка VHDL модели проектируемого устройства. Разработка VHDL модели системы диагностирования проектируемого устройства. Разработка автоматной модели системы диагностирования. Оптимизация модели. Разработка VHDL модели СД. Верификация проекта. Разработка кросс - платы СД-ДУ. Конфигурирование ПЛИС. Временной анализ проектируемого устройства Валидация проекта. Выходных данные устройства при реализации работы на лабораторном макете Заключение Список литературы Графические материалы к защите курсовой работы. Для защиты курсовой работы необходимо подготовить графический материал общим форматом А1 (594х840), включающим в себя: - структурную (иерархическую) схему разрабатываемого устройства; - функциональные схемы модулей системы; - граф-схемы переходов устройства управления; - результаты временного анализа; - другие материалы, необходимые для защиты. *Разработчик имеет право на изменение названий разделов пояснительной записки, добавление новых разделов с сохранением логической целостности документа. Порядок защиты курсовой работы 1. 2. 3. 4. 5 Защита проводится публично с комиссией, назначаемой на заседании кафедры. Материалы к курсовой работе за неделю до защиты направляются на рецензию. Курсовые работы, допущенные к защите направляются на защиту. Продолжительность доклада 5-7 минут Общая продолжительность защиты 15 минут. Утверждаю Зав каф. ТКИ проф. ______________ __________________ 15.02.08 Календарный план к курсовой работе на тему «________» начало проектирования 29.01.08 № 1 Наименование этапа Календарный план 2 Техническое задание 3 Разработка VHDL модели проектируемого устройства. 4 5 Разработка VHDL модели системы диагностирования проектируемого устройства. Верификация проекта. 6 Валидация проекта защита курсовой работы 15.06.08 Содержание этапа Получение задания на курсовую работу. Составление календарного плана. Обзор литературы, подбор материалов по теме курсовой работы. Разработка технического задания. Разработка автоматной модели проектируемого устройства. Оптимизация модели. Разработка VHDL модели проектируемого устройства Разработка автоматной модели системы диагностирования. Оптимизация модели. Разработка VHDL модели СД. Разработка кросс- платы СД-ДУ. Конфигурирование ПЛИС. Временной анализ проектируемого устройства Корректировка технического задания. Подготовка к защите.. Исполнитель ____________________________ Руководитель работы Примечание 15.02.2008 1.03.2008 1.04.08 1.05.08 1.06.08 10.06.08 Содержание Титульный лист расчетно-пояснительной записки ......................................................................... 2 Примерное содержание расчетно-пояснительной записки ............................................................ 3 Порядок защиты курсовой работы ................................................................................................... 4 Календарный план .............................................................................................................................. 5 Содержание ......................................................................................................................................... 6 Введение .............................................................................................................................................. 8 Архитектурные возможности ПЛИС при реализации комбинационных схем .......................... 9 Методы синтеза комбинационных схем....................................................................................... 9 Ресурсы ПЛИС при синтезе комбинационных схем ................................................................. 12 Ресурсы "классических" PAL .................................................................................................. 12 Ресурсы универсальных PAL .................................................................................................. 13 Ресурсы CPLD ........................................................................................................................... 15 Краткая характеристика методов синтеза .............................................................................. 17 Синтез с использованием VHDL................................................................................................. 18 Рекомендации для синтеза ........................................................................................................... 21 Применение граф-схем и графов переходов при описании схем логического управления...... 24 Классификация автоматных граф-схем ...................................................................................... 25 Классификация графов переходов .............................................................................................. 31 Верификация курсовой работы ....................................................................................................... 39 Функциональная верификация .................................................................................................... 41 Временная верификации логических схем ................................................................................ 42 Валидация курсовой работы ............................................................................................................ 44 Библиотека VHDL моделей ............................................................................................................. 45 1. D – триггер с входом разрешения (DFFE).............................................................................. 45 2. 8 D – триггеров с общими входами синхронизации и управления ..................................... 46 3. Мультплексор ........................................................................................................................... 46 4. Реверсивный счетчик с параллельной загрузкой .................................................................. 47 5. Счетчик с параллельной загрузкой ......................................................................................... 48 6. 4-х разрядный счетчик на уменьшение .................................................................................. 49 7. 8- разрядный двунаправленный (bidirectional) регистр с тремя состояниями................... 50 8. 8 разрядный регистр с тремя состояниями ............................................................................ 51 9. Массив из 64 8 разрядных регистров с перезаписью ............................................................ 51 10. 8 –ми разрядный полный сумматор ...................................................................................... 52 11. 8 –ми разрядный умножитель со знаком .............................................................................. 54 12. 8 –ми разрядный MAC (умножение с накоплением) .......................................................... 54 13. 8 –ми разрядный умножитель без знака ............................................................................... 55 14. 8 –ми разрядный умножитель без знака с накоплением (MAC) ........................................ 56 15. Последовательный 8 –ми разрядный сумматор .................................................................. 57 16. Двухпортовая память объемом 16х4 с общим циклом ....................................................... 58 17. Пример иерархического проекта .......................................................................................... 59 18. Преобразователь HEX > STD_LOGIC .................................................................................. 61 19. Сумматор - вычитатель .......................................................................................................... 61 Литература ........................................................................................................................................ 63 Варианты заданий курсовой работы (з.о.) ..................................................................................... 65 Приложение 1. ГОСТ Р ИСО 9001-2001 ........................................................................................ 67 Приложение 2. Аудит ГОСТ Р ИСО 9001-2001 ............................................................................ 77 Приложение 3. Комментарии к ГОСТ Р ИСО 9001-2001 ............................................................. 78 Терминология.................................................................................................................................... 81 Введение В сентябре 1979 г. в лаборатории спец-ЭВМ кафедры вычислительной техники КПИ под руководством Ю.С.Каневского приступили к системной отладке самого скоростного в стране опытного образца процессора БПФ, собранного из 2000 микросхем серии К155. Отладка шла, в целом, успешно. Но процессор упорно отказывался работать стабильно. Как ни меняли конструкцию системы синхронизации, как не варьировали период и скважность синхросерии - данные нет-нет, да проскакивали лишний уровень регистров. Было принято кардинальное решение - заменить все асинхронные регистры ТМ5 на синхронные ИР1. Т.е. заменить двухтактную синхронизацию на однотактную. Второе решение - никогда больше в лаборатории Ю.С.Каневского не применять двухтактную синхронизацию… А отлаженный и испытанный процессор еще несколько лет надежно работал где-то на Дальнем Востоке. Проектирование микросхем и в частности, систем на кристалле (СНК) характеризуется тем, что ошибка в проекте обходится слишком дорого, а ее локализация в микросхеме и выяснение ее причин очень затруднительны. Поэтому основным правилом проектирования является то, что поведение ВУ в кристалле должно быть предсказуемым. В курсовой работе по дисциплине «Вычислительные машины, системы и сети» разрабатывается IP ядро модуля вычислительной машины с использованием программируемых логических интегральных схем (ПЛИС). Для валидации курсовой работы (см. ГОСТ Р ИСО 9001-2001) используется лабораторный макет на базе ПЛИС фирмы Altera FLEX8000. Архитектурные возможности ПЛИС при реализации комбинационных схем Вводятся три архитектурные модели ПЛИС со структурой двух программируемых матриц: "классические" PAL, универсальные PAL и CPLD. При разработке различных цифровых систем проектировщики часто сталкиваются с необходимостью синтеза комбинационных схем. Кроме комбинационных частей конечных автоматов, комбинац ионные схемы широко используются в качестве оригинальны х функциональных узлов, функционирование которых не совпадает с работой ста ндартных функциональных узлов комбинационного типа. Под комбинационной схемой понимается логическая схема, зн ачения выходных сигналов которой в каждый момент времени полн остью определяются значениями сигналов на её входах. Иногда гов орят, что комбинационная схема — это конечный автомат с одним состоянием или последовательностная схема без памяти. Однако методы синтеза конечных автоматов и комбинационных схем значительно ра зличаются между собой. Определим комбинационную схему системой булевых функций (СБФ), представленных в дизъюнктивной нормальной форме (ДНФ) [1]. СБФ будем характеризовать числом N выходных функций (выходных переменных) множества Y = {y1,...,yN} и числом L аргументов функций (входных переменных) множества X = {x1,...,xL}. Кроме того, каждая функция yi характеризуется числом Q(yi) слагаемых в ДНФ функции yi, yi € Y. Если функция yi представлена кратчайшей ДНФ, содержащей минимальное число слагаемых, то значение Q(yi) совпадает с числом промежуточных шин ПЛИС, требуемых для её реализации. Методы синтеза комбинационных схем Методы синтеза комбинационных схем принято делить на два больших класса: двухуровневый и многоуровневый синтез. Двухуровневый синтез предполагает прохождение сигнала со входа на выход комбинационной схемы через два уровня логических элементов, обычно это вентили И и ИЛИ, и соответствует синтезу комбинационных схем на ПЛИС со структурой двух программируемых матриц. Многоуровневый синтез обычно сводится к синтезу логической сети, узлами которой являются логические эле- менты, и соответствует синтезу комбинационных схем на FPGA (Field Programmable Gate Array). Главной задачей двухуровневого синтеза является минимизация булевых функций в классе ДНФ. Первые решения этой задачи [10,17] принято считать классическими. Целью минимизации булевых функций является сокращение числа слагаемых и литералов в представлении булевых функций. Напомним, что при синтезе комбинационных схем на ПЛИС достаточно минимизировать число слагаемых булевой функции, то есть найти кратчайшую ДНФ [1]. Основными направлениями задачи минимизации булевых функций являются: точные алгоритмы, эвристические алгоритмы, минимизация частично определённых булевых функций, минимизация слабо определённых булевых функций, совместная минимизация СБФ и др. Развитие двухуровневого синтеза связано с использованием концепции многозначных функций. В соответствии с этой концепцией СБФ рассматривается как одна функция с одним многозначным входом и одним многозначным выходом, а одна булева функция нескольких аргументов - как многозначная функция с бинарным выходом. Минимизация СБФ в этом случае сводится к минимизации одной бинарной функции с многозначными аргументами В процедуре символьной минимизации при синтезе конечных автоматов минимизация комбинационной части конечного автомата может быть выполнена до этапа кодирования внутренних состояний, а внутренние состояния, входные и выходные наборы представлены в символьной форме Таким образом, минимизация комбинационной части конечного автомата сводится к минимизации многозначной функции. Поскольку частично определённые булевы функции можно рассматривать как многозначную функцию, а доопределение значений частично определённых булевых функций - как аналог кодирования внутренних состояний конечного автомата, то методы символьной минимизации могут также применяться и для синтеза комбинационных схем. Классические методы синтеза СБФ принято называть булевыми методами, а методы синтеза многозначных и символьных функций - алгебраическими методами синтеза комбинационных схем. Наиболее известной программной реализацией двухуровневого синтеза комбинационных схем является программа ESPRESSO [7], разработанная в лаборатории электронных исследований Калифорнийского университета в Беркли (США). Приближенные методы многозначной минимизации реализованы в программе ESPRESSO-MV [19,20], а точные - в ES-PRESSO-EXACT [20]. Целью многоуровневого синтеза является синтез комбинационной схемы в виде логической сети, удовлетворяющей заданным ограничениям. Ограничения на синтез логической сети, в основном, касаются типов логических элементов, выступающих в качестве узлов сети, их параметров и коэффициентов разветвления по входам и выходам. Главными критериями оптимизации при мно- гоуровневом синтезе являются длина критического пути прохождения сигнала со входа на выход (время максимальной задержки) и площадь (стоимость), занимаемая логической сетью. Причём при определении площади сети часто учитывается не только площадь логических элементов, но и площадь межсоединений. Многоуровневый синтез обычно применяется при реализации комбинационных схем на заказных и полузаказных СБИС, а также на FPGA. В основе методов многоуровневого синтеза лежат классические методы декомпозиции и факторизации булевых функций [6,8,11,18]. Классические методы были развиты в работе [12], где предложены точные и приближенные алгоритмы минимизации многовыходной логической сети при ограничениях на число уровней сети и на коэффициенты расширения выходов вентилей. Классические методы, хотя и позволяют получать точные решения, однако не пригодны для решения задач большой размерности. Поэтому для практического применения были разработаны приближенные методы многоуровневого синтеза, основанные на локальных преобразованиях логических сетей. Следующее направление развития логических методов многоуровневого синтеза связано с широким использованием программируемых логических матриц (ПЛМ - Programmable Logic Array - PLA) для построения комбинационных схем. Первые методы решения задач многоуровневого синтеза были основаны на дизъюнктивном разложении Шеннона. Однако ввиду своей малой эффективности, данный подход не получил широкого распространения. Недостатком традиционных методов декомпозиции является необходимость в разбиении множества X на два непересекающихся подмножества X1 и X2. В отдельных работах предлагаются подходы, в которых допускается пересечение множеств X1 и X2. В ряде случаев это позволяет более качественно решать задачу декомпозиции с точки зрения минимизации числа входов ПЛМ нижнего уровня и числа используемых промежуточных шин ПЛМ. Большинство современных методов многоуровневого синтеза реализовано в программе MIS [9] и её модификациях, которая была разработана в лаборатории электронных исследований Калифорнийского университета в Беркли. В программе MIS реализованы как быстрые, так и медленные алгоритмы, а также алгебраические и булевы методы, основанные на операциях деления, выделения ядра и подстановки. В подсистеме MIS-MV [13] реализованы методы многозначной минимизации многоуровневого синтеза. Ввиду широкого распространения FPGA на основе функциональных генераторов (Look-Up Table - LUT) специально была разработана программа MIS-PGA [16], ориентированная на узлы логической сети данного типа. Ресурсы ПЛИС при синтезе комбинационных схем Ограничимся рассмотрением архитектур ПЛИС, в основе структуры которых лежат две программируемые матрицы: "классических" PAL (Programmable Array Logic), универсальных PAL и CPLD (Complex Programmable Logic Device). Ресурсы "классических" PAL Структура "классических" PAL изображена на рис. 1. Она включает n входов, программируемую матрицу AND и m выходных макроячеек, связанных с двунаправленными выводами. Выходы матрицы AND называются промежуточными шинами или термами. Архитектура выходных макроячеек "классических" PAL достаточно проста, для комбинационных выходов она включает вентиль ИЛИ, объединяющий q промежуточных шин, выходной буфер с тремя состояниями и обратную связь со входом матрицы AND. Все входы матрицы AND являются парафазными. Для управления третьим состоянием выходного буфера служит отдельная промежуточная шина. Рис.1 Структурная схема PAL Опишем возможности, которые предоставляет архитектура "классических" PAL при реализации СБФ. Прежде всего, поскольку все входы матрицы AND являются парафазными, отпадает необходимость специально инвертировать входные переменные. Таким образом, на промежуточных шинах можно реализовать любую конъюнкцию входных переменных и их инверсий, а также переменных обратных связей, максимальный ранг (число литералов) которой не превышает значение n+m-1 (один выход необходим для реализации функции). С каждой выходной макроячейкой PAL связано отдельное множество промежуточных шин. Это позволяет применять раздельную минимизацию булевых функций, что значительно упрощает задачу, поскольку минимизация од- ной булевой функции решается намного проще и качество её решения лучше, чем совместная минимизация СБФ [1]. Кроме того, нет необходимости применять классические методы минимизации, рассчитанные на реализацию булевых функций из отдельных вентилей, а достаточно найти кратчайшую ДНФ. "Классические" PAL также позволяют программировать высокоимпедансное (третье) состояние выходного буфера, что делает возможным двунаправленный вывод использовать как вход. Кроме того, индивидуальное управление с помощью отдельного терма третьим состоянием выходного буфера позволяет двунаправленный вывод в один момент времени использовать как выход, а в другой момент - как вход или отключать от внешней шины, например, для уменьшения нагрузки. Возможность PAL передачи значения выходного сигнала по цепи обратной связи на вход матрицы AND позволяет в одном устройстве строить многоуровневые каскадные схемы. Однако следует избегать случаев, когда значение некоторой функции является аргументом этой же функции, так как в подобной ситуации схема перестаёт быть комбинационной и переходит в класс последовательностных схем, а отсутствие в циклах элементов задержки приводит к непредсказуемости поведения схемы. Классическая PAL допускает реализацию любой СБФ (тривиальная реализация), если выполняются условия: N <= m; L <= n + m – N; (1) Q(yi) <= q; для всех yi € Y. Первое неравенство в условии (1) накладывает ограничение на число реализуемых функций, второе - на число аргументов функций, а третье - на число слагаемых в ДНФ каждой функции. Нарушение первых двух неравенств в (1) делает реализацию СБФ на одной классической PAL невозможной. Если в (1) для некоторой функции yi, yi € Y, нарушено третье неравенство, то прежде всего необходимо выполнить минимизацию функции yi одним из известных методов. Ресурсы универсальных PAL Обобщенная структура универсальных PAL (рис. 2) включает n входов, программируемую матрицу AND, m выходных макроячеек с одной обратной связью и m2 макроячеек с двумя обратными связями. Архитектура макроячейки с двумя обратными связями показана на рис. 3. В макроячейках с одной обратной связью отсутствует цепь от входа выходного буфера к входу матрицы AND. С каждой макроячейкой универсальных PAL связано различное число промежуточных шин. При этом рекомендуется: простые функции назначать для реализации на выходы, связанные с небольшим числом промежуточных шин, а сложные - назначать на выходы, связанные с большим числом промежуточных шин. Кроме того, каждая макроячейка допускает программирование логического уровня выходного сигнала благодаря наличию в архитектуре макроячейки вентиля Исключающее ИЛИ с программируемой связью одного входа с "землёй". Поэтому из двух функций yi или (not yi) для реализации можно выбрать наиболее подходящую (например, которая требует для реализации меньше промежуточных шин), а необходимый вид функции на выходе PAL образуется путём программирования логического уровня выходного сигнала. Макроячейки с двумя обратными связями допускают одновременное использование в двух целях: для реализации промежуточных функций и для приёма входных переменных. Рис. 2. Обобщённая структура универсальных PAL Рис.3 Обобщённая структура выходной макроячейки универсальных PAL с двумя обратными связями Универсальную PAL будем характеризовать параметрами n, m и m2, а также множеством Q = {q1,...,qk}, где qj - число промежуточных шин, подсоединяемых к макроячейке MCj, qj € Q, j = 1,k, k = m + m2. СБФ допускает тривиальную реализацию на универсальной PAL при выполнении условий: N <= k; (2) L <= n + k – N; а также, если для каждой функции yi, yi € Y, найдётся значение qj, qj € Q, такое, что Q(ymi) <= qj; (3) где Q(ymi) = min(Q(yi),Q(ymi)), причём разным функциям yi, yi € Y, должны соответствовать различные значения qj, qj € Q. Ресурсы CPLD Структура CPLD представляет собой совокупность функциональных блоков, объединяемых матрицей переключений SM. Архитектура функциональных блоков (рис. 4) во многом подобна архитектуре универсальных PAL. Отличия заключаются в том, что все выходные макроячейки имеют две обратные связи, а промежуточные шины макроячейкам назначаются с помощью распределителя (allocator). Некоторые макроячейки CPLD не имеют связи с внешним выводом. Такие макроячейки называются скрытыми. Скрытые макроячейки имеют только одну обратную связь. Рис.4 Обобщённая структура функционального блока CPLD и его взаимодействие с матрицей переключений Каждый функциональный блок CPLD будем характеризовать числом входов n; выходных макроячеек m; общим числом макроячеек r, из которых r-m являются скрытыми; суммарным числом промежуточных шин функционального блока qs и максимальным числом промежуточных шин qmax, которые могут быть подсоединены к одной макроячейке. Кроме того, общая структура CPLD характеризуется числом E функциональных блоков и числом dI "чистых" входов. Отметим некоторые особенности синтеза комбинационных схем на CPLD, обусловленные их архитектурными свойствами: число подсоединяемых к макроячейке промежуточных шин не фиксировано, как для PAL, а определяется для каждой макроячейки индивидуально, при этом ограничениями являются значения параметров qmax и qs; в некоторых CPLD промежуточные шины между макроячейками распределяются кластерами и для реализации любой функции (даже очень простой) необходимо не менее qCL промежуточных шин, где qCL - число промежуточных шин в одном кластере; для реализации промежуточных функций могут использоваться ресурсы скрытых макроячеек, а также выходных макроячеек, выводы которых используются в качестве входов; каждый функциональный блок имеет фиксированное число входов n, по которым могут поступать значения аргументов (в PAL число входов может изменяться за счёт использования двунаправленных выводов в качестве входов); общее число аргументов СБФ, реализуемой на CPLD, может быть достаточно большим (dI + m·E – N), в то время как число аргументов СБФ, реализуемой одним функциональным блоком, ограничено параметром n, имеющим значение от 16 до 36; все значения аргументов и промежуточных функций поступают на входы функциональных блоков только через матрицу переключений, поэтому при частом дублировании входных переменных различных функциональных блоков возникает опасность быстрого истощения ресурсов матрицы переключений. Пусть Yt - подмножество функций, реализуемых t-м функциональным блоком CPLD, Yt Y, t = 1,T, T <= E. СБФ Y допускает тривиальную реализацию на одном CPLD, если выполняются условия: N <= m·E; L <= dI + m·E – N; (4) Q(yi) <= qmax, для всех yi, yi € Y; а также, если для каждого подмножества Yt, t = 1,T, имеет место: |Xt| <= n; |Yt| <=m; nbsp (5) Qt , <= qs; где X t X Yi Yt Yi , Qt ` Q(Y ) X(yi) - множество аргументов функции yi, yi € Y. Yi Yt i Условия (4) и (5) остаются справедливыми и для случая, когда промежуточные шины между макроячейками CPLD распределяются кластерами. Для этого достаточно положить: | Q(y~i) := ]Q(y~i)/qCL[; qmax := ]qmax/qCL[; qs := ]q/qCL[, где ]A[ - наименьшее целое, большее или равное A. Краткая характеристика методов синтеза Традиционно методы синтеза комбинационных схем на ПЛИС включают следующие последовательно выполняемые этапы: строится достаточно общая модель ПЛИС, допускающая применение классических методов синтеза; для данной модели решаются классические задачи синтеза (минимизации, декомпозиции, факторизации и др.), причём таких задач может быть несколько; выполняется отображение полученной логической схемы на структуру реальной ПЛИС. Недостатки традиционного подхода заключаются в следующем: слишком общая модель ПЛИС, которая не позволяет учитывать все архитектурные особенности реальной ПЛИС; классические задачи синтеза не позволяют учитывать большинство архитектурных особенностей ПЛИС, поэтому даже получение точных решений приводит к результатам синтеза, далёким от оптимальных; достаточно трудно решаются задачи отображения логической схемы на структуру ПЛИС, поэтому часто на этом этапе необходимо заново решать задачи минимизации, декомпозиции и другие. Основные отличия предлагаемого подхода к синтезу комбинационных схем на ПЛИС от традиционного заключаются в следующем: определяется не одна, а три модели ПЛИС: универсальные PAL, "классические" PAL и CPLD, причём каждая модель позволяет наиболее полно учитывать архитектурные особенности соответствующего класса ПЛИС; осуществляется предварительное преобразование исходной системы булевых функций для наиболее эффективного применения соответствующего метода синтеза; задача отображения синтезируемой комбинационной схемы на структуру ПЛИС частично или полностью решается в процессе синтеза. Снижение стоимости реализации комбинационных схем в предлагаемых методах синтеза достигается за счёт эффективного использования: возможности программирования логического уровня выходных сигналов ПЛИС, что позволяет реализовать одно из наиболее простых представлений каждой функции: прямое или инверсное; внутренних цепей обратных связей ПЛИС, при этом значения уже реализованных функций, а также их инверсий могут использоваться в качестве факторов для реализации других функций; макроячеек ПЛИС с двумя обратными связями - для одновременного приёма значений входных переменных и реализации промежуточных функций; возможности подсоединения различного числа промежуточных шин к различным макроячейкам ПЛИС и др. Синтез с использованием VHDL Этап синтеза представляет собой процесс трансформации исходного HDLописания проектируемого устройства в список цепей, выполненный на низком логическом уровне. Элементы низкоуровневого описания, формируемого в процессе синтеза, должны соответствовать архитектуре семейства ПЛИС, выбранного для реализации проекта. Синтезированный список цепей должен быть максимально адаптирован к ресурсам используемого кристалла, что обеспечивает его наиболее эффективное отображение средствами размещения и трассировки на физическом уровне. Поэтому результаты синтеза одного и того же проекта отличаются при использовании ПЛИС семейств CPLD и FPGA. Процесс синтеза начинается с анализа исходного HDL-описания проектируемого устройства, в ходе которого делаются попытки выделения блоков кода, представимых в виде соответствующих макросов. Использование макросов часто позволяет повысить производительность разрабатываемого устройства, поэтому средства синтеза пытаются идентифицировать как можно большее их количество. Выделенные макросы в процессе последующей оптимизации, выполняемой на этапе синтеза, могут сохраняться в виде отдельных блоков или оптимизироваться совместно с окружающей логикой. Выбор одного из этих способов представления с целью достижения наилучших результатов оптимизации определяется типом и размером макроса. Управление процессом идентификации макросов различного типа (например, ПЗУ, ОЗУ, мультиплексоров, дешифраторов, приоритетных шифраторов, регистров сдвига) осуществляется с помощью соответствующих ограничений или параметров синтеза HDL options, которые детально будут рассмотрены ниже. Выделенные макросы впоследствии могут быть реализованы с помощью макрогенераторов, входящих в состав средств синтеза, размещения и трассировки. Следующим шагом в процессе синтеза является оптимизация, которая выполняется в два захода. Вначале выполняется оптимизация каждого отдельного объекта или модуля HDL-описания. Затем производится их объединение и создается полный список соединений (netlist) проекта. Завершающим шагом является оптимизация полученного списка цепей. Основным результатом этапа синтеза, выполняемого, например, средствами Xilinx Synthesis Technology (XST), является формирования файла NGC, который представляет собой описание проекта на низком логическом уровне в двоичном формате. Параметры синтеза в случае использования кристаллов семейств CPLD и семейств FPGA различаются, что отражается в предоставлении разработчикам обширного набора параметров управления, позволяющих оптимизировать результаты синтеза. Отчет о результатах синтеза может содержать шесть основных разделов. В первом разделе сведения об исходных данных, при которых выполнялся процесс синтеза. Здесь указаны установленные значения параметров синтеза и некоторых общих параметров проекта (семейство и тип ПЛИС), а также форматы входных и выходных файлов. Второй раздел представляет информацию о компиляции и анализе объектов исходных HDL-описаний, которые производятся в соответствии с иерархической структурой проекта. В третьем разделе отображается последовательность синтеза этих объектов, располагаются данные о макросах, идентифицированных средствами синтеза. Четвертый раздел отображает основные фазы оптимизации, выполняемой в процессе логического синтеза. Вначале производится оптимизация каждого иерархического модуля, после чего формируется общее описание проекта. Далее выполняется глобальная оптимизация проекта в целом. В зависимости от полученных результатов рассматриваемая секция отчета также может содержать предупреждения (WARNING), указывающие пути повышения уровня оптимизации проекта в процессе синтеза. В пятой части отчета приведены данные о выходных параметрах процесса синтеза и статистические характеристики полученных результатов (количество примитивов каждого типа, использованных в синтезированном описании проектируемого устройства). Может существовать восемь типов примитивов: BELS — базовые элементы, к которым относятся таблицы преобразований (LUT) и мультиплексоры (MUXCY, MUXF5, MUXF6, MUXF7, MUXF8); Flip-flops/Latches — триггеры с динамическим и потенциальным управлением (защелки) (например, элементы FDR, FDRE, LD); RAMS — элементы ОЗУ; SHIFTERS — регистры сдвига (например, элементы SRL16, SRL16_1, SRL16E, RL16E_1); Tri-States — элементы с тристабильными выходами (например, BUFT); Clock Buffers — глобальные буферные элементы, используемые в цепях синхронизации (например, элементы BUFG, BUFGP, BUFGDLL); IO Buffers — стандартные буферные элементы, подключаемые к выводам кристалла (например, элементы IBUF, OBUF, IOBUF, OBUFT, IBUF_GTL); LOGICAL — стандартные логические элементы, не вошедшие в группу базовых, (например, AND2, OR2); OTHER — элементы, не включенные ни в одну из предыдущих групп. Заключительная часть отчета содержит информацию о временных параметрах синтезированного проекта Все временные характеристики, приведенные в этом разделе, носят предварительный характер. Более достоверная информация может быть получена только после выполнения этапа размещения и трассировки проекта в кристалл. Раздел временных характеристик включает в себя три секции: Clock Information, Timing Summary, Timing Detail. В первой секции (Clock Information) перечисляются сигналы синхронизации и типы буферных элементов, использованных для их формирования. Секция Timing Summary представляет предельные значения основных временных характеристик: максимальное значение тактовой частоты, минимальное время установления входных сигналов по отношению к сигналу синхронизации, максимальная задержка выходных сигналов по отношению к сигналу синхронизации, максимальная задержка распространения сигнала от входа до выхода через комбинационную логику. В секции Timing Detail дается детальное описание временных характеристик критических путей. Если полученные результаты синтеза не соответствуют исходным требованиям проекта (например, значения временных характеристик), следует повторить этот этап, изменив значения его параметров. При достижении успешных результатов синтеза следует перейти к этапу реализации (implementation) проектируемого устройства. Рекомендации для синтеза Исходя из вышеизложенных особенностей проектирования микросхем, разработчики фирм – производителей микросхем предлагают следующие рекомендации : Применять только однотактную синхронизацию и желательно, только один синхросигнал. Если в ВУ используется несколько синхросигналов, в том числе один сигнал, но со срабатыванием по фронту и спаду, то минимизировать их число, а их распространение ограничить отдельными модулями – по одному синхросигналу на модуль; синхросигналы генерировать в одном, предназначенном для этого модуле. Не допускать существенных перекосов фаз. Минимизировать количество проверяемых маршрутов, в частности, выделением множества многоцикловых маршрутов и конвейеризацией ВУ. Отделять быстродействующие блоки от медленных блоков и оптимизировать их раздельно. Обеспечить запоминание в регистрах модулей ВУ выходных сигналов, а еще лучше – и входных сигналов. Благодаря этому, не только ускоряется временной анализ, повышается максимальная тактовая частота, но и упрощается стыковка модулей между собой, упрощаются условия повторного использования модулей (вычислительных заготовок). Реализовать преимущественно синхронные начальные установку или сброс триггеров, особенно в схемах управления. При реализации в ПЛИС желательно все триггеры выполнить с асинхронным сбросом или установкой по одному сигналу. Синтез КС, свободных от состязаний Если в каждый момент времени допускается изменение только одного входного сигнала КС, то ее синтез можно выполнить так, что при изменении любого входного сигнала выходные сигналы при переходном процессе не будут иметь ложных значений. Такие КС называются свободными от состязаний. Методика синтеза КС свободных от состязаний с использованием диаграмм Вейча заключается в том, что все соседние 1-е клетки должны быть покрыты хотя бы одним m – кубом. Применение граф-схем и графов переходов при описании схем логического управления В разделе приводится анализ недостатков, затрудняющих понимание граф-схем алгоритмов и программ, построенных на их основе; приведена классификация граф-схем алгоритмов; показывается, что основные трудности их понимания возникают из-за умолчаний и не использования в них такого понятия как «состояние». В настоящее время при программной реализации алгоритмов логического управления (firmware) средствами ПЛИС большое внимание уделяется проблемам однозначного понимания Заказчиком, Разработчиком, Программистом, Контролером решаемой задачи. Назовем язык общения указанных сторон языком спецификаций [1]. Несмотря на наличие для задач логического управления большого числа таких языков [2-26] на практике, видимо, в связи с традициями в области вычислительной техники [5], наиболее широкое использование в этом качестве получили блок-схемы, называемые также граф-схемами или просто схемами [27, 28], что закреплено соответствующими стандартами [29, 30]. Однако в этих стандартах определяются лишь правила изображения графсхем и отсутствуют требования (кроме изобразительных) к их построению для обеспечения возможности легкого их понимания. Необходимо отметить, что и в литературе недостаточно рассматривались свойства граф-схемам алгоритмов, упрощающие их применение в качестве языка общения для указанного класса задач. Так в [31, 32] были предложены методы построения граф-схем, структурная организация которых улучшает их понимание. При этом авторы этих работ считали, что если граф-схемы построены только из вложенных базовых управляющих конструкций без использования операторов go to, то это решает проблему их легкого понимания и не учитывали ряда других факторов, затрудняющих чтение, и, в частности, умолчания значений переменных. Однако в последнее время специалисты по проектированию программ [33] обратили внимание на то, что только структурное проектирование указанной проблемы не решает и предложили объектно- ориентированный подход к проектированию программ, в рамках которого было введено понятия «объекта» и его «состояния» и рекомендовано использовать графы переходов для описания динамики реализуемых процессов. Классификация автоматных граф-схем Будем рассматривать автоматные граф-схемы, в которых в операторных вершинах формируются или сохраняются только единичные и нулевые значения переменных. Автоматные граф-схемы разобьем на два класса: граф-схемы алгоритмов и граф-схемы программ. При этом будем различать граф-схемы алгоритмов (ГСА) по следующим основным признакам: наличию внутренних обратных связей; используемым типам переменных; наличию дешифратора состояний; наличию умолчаний и неоднозначно задаваемых переменных; наличию переменных, которые могут неоднократно изменяться за один проход граф-схемы; месту выдачи значений выходных переменных. Используя некоторые из этих признаков и не претендуя на полноту классификации, выделим пять подклассов граф-схем алгоритмов: − граф-схемы алгоритмов с внутренними обратными связями и выдачей значений выходных переменных в любой операторной вершине, обозначаемые ГСА1; граф-схемы алгоритмов без внутренних обратных связей и дешифратора состояний, в которых выдача значений выходных переменных выполняется в конце «тела» граф-схемы, обозначаемые ГСА2; граф-схемы алгоритмов без внутренних обратных связей, учитывающие особенности используемых управляющих конструкций языка программирования, обозначаемые ГСА3; граф-схемы алгоритмов без внутренних обратных связей, но с дешифратором состояний и выдачей значений выходных переменных в конце «тела» граф-схемы, которые не содержат выходных переменных, неоднократно изменяющихся за один проход граф-схемы, обозначаемые ГСА4; граф-схемы алгоритмов без внутренних обратных связей, но с дешифратором состояний и выдачей значений выходных переменных в конце «тела» граф-схемы, содержащие выходные переменные, которые могут неоднократно изменяться за один проход граф-схемы, обозначаемые ГСА5. При этом отметим, что внешняя обратная связь в управляющих алгоритмах и программах существует всегда (режим сканирования в программируемых логических контроллерах). Отметим также, что если в вычислительном устройстве реализуется алгоритм управления в виде одной компоненты (задачи), то ГСА1, используя ГСА3, могут при наличии соответствующих управляющих конструкций изоморфно отражаться в граф-схемы программ. Если же алгоритм управления реализуется в вычислительном устройстве в виде нескольких компонент, то для ГСА1 отсутствует возможность изоморфного отражения в граф-схему программы. Это объясняется тем, что в задачах логического управления при использовании ГСА1 при определенных условиях на длительное время может наступать зацикливание по внутренним обратным связям, что исключает возможность перехода к реализации других компонент алгоритма управления до выхода из цикла. Предположение о том, что значение переменной, которая отсутствует в операторной вершине, равно нулю, справедливо далеко не всегда, так как более часто при использовании граф-схем считают, что умалчиваемые переменные сохраняют предыдущее значение. Такие граф-схемы также могут быть использованы для вычислений, так как вычислительное устройство помнит предыдущие значения всех переменных, сохраняющиеся во внешней по отношению к графсхемам памяти, но они весьма трудно понимаются человеком, которому сложно помнить предысторию, особенно по нескольким переменным одновременно. При этом отметим, что граф-схемы предназначены в основном для отображения связей по управлению и в существенно меньшей степени - по данным [28, 35]. Таким образом, граф-схемы с умалчиваемыми значениями переменных нецелесообразно применять в качестве языка общения. Поэтому качественной можно считать только такую спецификацию, в которой кроме связей по управлению в максимальной степени отражены также и данные [35]. Отсутствие в явном виде некоторых данных в граф-схемах не позволяет использовать ее также и в качестве теста для проверки программы, реализующей эту граф-схему. Более того, если программа строится по граф-схеме эвристически, то даже при отсутствии умолчаний с помощью граф-схемы можно проверить лишь то, что программа реализует граф-схему, но невозможно установить, что программа не делает ничего дополнительно. Возвращаясь к описанию особенностей различных подклассов граф-схем алгоритмов, отметим, что для ГСА1 характерно, что в них выдача значений выходных переменных осуществляется не в конце граф-схемы, а в любых операторных вершинах. ГСА1 могут быть построены так, что в условных вершинах применяются только входные переменные типов X и T, а в операторных вершинах — выходные переменные типов Z и t, где T — переменные, фиксирующие факт срабатывания функциональные элементы задержки. Наличие в ГСА1 только тех переменных, которые упоминаются в алгоритме управления, является важным достоинством этого подкласса граф-схем алгоритмов. В ГСА2 крайне редко используются только те переменные, которые указаны в алгоритме управления и не применяются «лишние» переменные. В качестве такого примера на рис.3 приведена ГСА2, реализующая Rтриггер, в которой используются только переменные, определенные алгоритмом управления: x1 — переменная установки триггера; x2 — переменная сброса триггера; z —выходная переменная. Как видно эта граф-схема алгоритма (без дополнительных переменных) весьма труднопонимается, так как выдача результатов в ней происходит в конце тела программы и поэтому при x1 = x2 = 1 значения z вычисляются дважды (пересчитываются), а кроме того в ней при x1 = x2 = 0 имеется «пустой» от операторных вершин путь, при прохождении которого сохраняется предыдущее значение z, что осуществляется за счет запоминания во внешней относительно граф-схемы алгоритма ячейке памяти значений z, указанных в операторных вершинах. Из рассмотренного примера следует, что если в ГСА2 существует хотя бы один путь, при прохождении которого не устанавливается ни нулевое, ни единичное значение хотя бы одной выходной переменной, то такая граф-схема реализует последовательностный автомат и однотактный - в противном случае. Как отмечалось выше, ГСА2 без «лишних» переменных встречаются крайне редко. В общем случае в этом подклассе граф-схем алгоритмов в условных вершинах наряду с входными переменными типов X и T, проверяются также и значения выходных переменных Z и отсутствующие в алгоритме управления промежуточные (внутренние) переменные Y, которые устанавливаются и сбрасываются наряду с выходными используются битовые переменные Y, то ГСА2 в этом случае весьма громоздки. Кроме того они обычно неупорядочены по структуре, так как порядок расположения вершин и их пометка в граф-схемах алгоритмов стандартами не оговаривается. ГСА2 весьма трудно понимаются и по причине применения умолчаний сохраняющихся значений переменных Y и Z. ГСА2 также трудно понимать в случаях, если значения переменных зависят от предыстории (значений соответствующих переменных, указанных в ранее расположенных операторных вершинах), но их особенно трудно читать, если значения переменных не только зависят, но и изменяются в соответствии с предысторией – зависят от путей, по которым можно попасть в рассматриваемую опе- раторную вершину. В последнем случае возникают также большие проблемы с безошибочным внесением изменений в граф-схемы. Необходимо отметить, что, если для Программиста проверки переменных Y и Z вполне естественны, а для Разработчика объяснимы, то для Заказчика и Контролера их наличие неприемлемо, так как, например, Заказчик в техническом задании обычно не просит устанавливать какую-либо внутреннюю переменную в единицу. Особые сложности могут возникнуть при чтении в тех случаях, когда проверяемые переменные Y и Z одной ГСА2 могут изменяться из других компонент алгоритма управления, реализуемых в том же вычислительном устройстве. Из изложенного следует, что если ГСА1 и ГСА2 без проверки переменных Y и Z в условных вершинах отражают только семантику реализуемого алгоритма управления, то ГСА2 с такими проверками представляют собой алгоритм реализации заданного алгоритма управления в вычислительном устройстве, что делает нецелесообразным использование таких граф-схем в качестве языка общения. Проблемы с построением ГСА1 и ГСА2 на изложенном не заканчиваются, так как для безошибочного перехода к граф-схеме программы и возможности проведения экспертизы (для ответственных объектов управления) желательно по исходной граф-схеме алгоритма построить ГСА3, учитывающую основные свойства управляющих конструкций используемого языка программирования. Например, в большинстве программируемых логических контроллеров для команд IF допустимы переходы только вперед и запрещены возвраты назад. Другая принципиальная особенность команд IF многих логических контроллеров состоит в том, что, во-первых, они одноадресные, а, во-вторых, обладают тем свойством, что если некоторая команда IF при невыполнении условия передает управление на команду (метку) CONT, то тогда и все размещаемые между этими командами другие команды IF при невыполнении условий также должны передавать управление на использованную метку CONT [34]. При этом необходимо отметить, что команда безусловного перехода STOP позволяет реализовать только внешнюю обратную связь. В этих условиях ГСА3 должна быть линеаризованной и структурированной только с помощью управляющих конструкций «последовательное соединение» и «неполный выбор». В тех случаях, когда ГСА2 в исходном виде обладает такой структурой (например, рис.3), необходимость в построении ГСА3 отпадает. Однако, если, например, ГСА2, реализующая однотактный автомат, описываемый булевой формулой z = !x1x2 v x1!x2, имеет «плоскостную» (рис.4), а не «линейную» структуру, то для перехода к граф-схеме программы и тексту программы по ней целесообразно предварительно построить ГСА3 (рис.5). Из рассмотрения последней граф-схемы следует, что сложность ее понимания по сравнению с ГСА2 (рис.4) увеличилась (даже несмотря на то, что в этих граф-схемах не используются проверки переменных Y и Z), так как при прохождении любого пути в ГСА3 входные переменные приходится проверять неоднократно. При этом отметим, что если программирование булевых формул проводить не в бинарной, а в операторной форме (непосредственно по формуле), то ГСА2 всегда будет иметь линейную структуру, что, правда, в общем случае приводит к снижению быстродействия и требует применения промежуточных переменных. В вычислительных устройствах, в которых ввод входных переменных может осуществляться по мере необходимости (как это имеет место в некоторых типах программируемых логических контроллеров), эти переменные за один проход граф-схемы алгоритмов могут не только неоднократно проверяться, но и изменять свои значения, что может приводить к нарушению функционального соответствия, задаваемого спецификацией (таблицей истинности), которое по аналогии с аппаратной реализацией может быть названо риском программной реализации. Для уменьшения степени риска для таких контроллеров должна использоваться буферизация или применяться максимально бесповторная реализация. Таким образом, если в ГСА1 отражается только семантика реализуемого алгоритма управления, в ГСА2 кроме семантики учитывается возможность реализации алгоритма управления, состоящего из нескольких компонент, в одном вычислительном устройстве, то в ГСА3 отражается также специфика используемых управляющих конструкций применяемого языка программирования. Однако ГСА3 еще значительно отличаются от граф-схем программ, так как в последних должна отражаться также и семантика всех используемых команд или операторов применяемого языка программирования. При этом в графсхемах программ появляются упоминания о таких архитектурных особенностях вычислительных устройств, которые в исходной граф-схеме алгоритма не используются. При этом возникает проблема с выбором тестов и доказательством правильности программы, так как при таком подходе из-за отсутствия «ясной» спецификации не удается обсудить с заинтересованными специалистами правильно ли понята поставленная задача и проблема «правильности» перекладывается на испытания, при которых можно обнаружить, что что-то делается неправильно, но весьма трудно обнаружить, что программа, в случае ошибок в ней, может делать что-либо не заданное спецификацией. Эта проблема усугубляется тем, что на практике обычно методика проверки функционирования представляет собой таблицу, содержащую два столбца, в первом из которых указываются значения входных переменных, а во втором — значения выходов. Однако такая проверка, естественная для однотактных автоматов, некорректна для последовательностных задач. Создание же методики, учитывающей также значения всех внутренних, а в ряде случаев и предшествующие значения выходных переменных, при неупорядоченной структуре граф-схем алгоритмов проблематично из-за большой размерности. Проблемы во многом связаны с тем, что в граф-схемах алгоритмов и программ и в собственно программах обычно не используется понятие «внутреннее состояние» компоненты в целом, называемое в дальнейшем «состояние», а применяются лишь отдельные битовые переменные, косвенно его характеризующие. Введение этого понятия позволяет переходить от граф-схем алгоритмов к графам переходов и обратно и использовать графы переходов в качестве языка общения и спецификации. Классификация графов переходов Определение 1. Граф переходов, в котором в каждой вершине явно указаны значения каждой выходной переменной, назовем графом переходов автомата Мура с явным заданием значений всех выходных переменных. В этом случае значения выходов соответствуют номеру вершины и не зависят от предыстории. По этой причине такой граф переходов просто понимается и в него легко вносятся изменения. Определение 2. Граф переходов, в котором в вершинах, кроме явно определенных значений одних переменных, применяются также неявно, но однозначно определенные значения других переменных, назовем графом переходов автомата Мура с неявным заданием значений выходных переменных. Неявное задание переменной в вершине отображается прочерком, который в данном случае может быть заменен только одним значением булевой переменной. Эта переменная в рассматриваемой вершине сохраняет то значение, которое присваивается ей во всех «смежных» с ней вершинах. Связь между двумя вершинами может быть непосредственной с помощью заходящей в вершину дуги или транзитной через другие вершины, в которых вместо значений этой переменной используются проверки. Графы переходов этого типа читаются несколько хуже, чем графы переходов автоматов Мура первого типа, однако их целесообразно использовать для сокращения объема памяти программ, изоморфно отражающих графы переходов автоматов Мура. Графы переходов этого класса могут быть изображены таким образом, что в нем в каждой вершине в явном виде указаны значения каждой выходной переменной, а неизменяющиеся относительно «смежных» вершин значения этих переменных отмечаются перечеркиванием. Определение 3. Граф переходов, в котором в вершинах, кроме явно определенных значений одних переменных, используются также неявно и неоднозначно заданные значения других переменных, назовем графом переходов автомата Мура с неоднозначным заданием значений выходных переменных. Графы переходов этого класса могут содержать для одной и той же задачи меньшее число вершин, чем графы переходов автоматов Мура двух других указанных выше разновидностей, так как в этом случае в вершине вместо одного значения умалчиваемой переменной могут формироваться различные значения той же переменной, что порождает в этой вершине различные наборы значений выходных переменных и обеспечивает эквивалентность одной такой вершины нескольким, полностью определенным. Это преимущество с точки зрения компактности описания и сокращения длины программы порождает одновременно и главный недостаток графов переходов этого типа — трудность их чтения и понимания. Именно по этой причине такие графы переходов не рекомендуется использовать в качестве языка общения. Спецификацию задач рассматриваемого класса целесообразно производить с помощью двух первых моделей графов переходов автоматов Мура, а в случае использования для спецификации ГСА1 последнюю целесообразно преобразовать к одной из этих моделей графов переходов. Это, естественно, не исключает применение графов переходов для других классов автоматов. Аналогичная классификация может быть предложена для графов переходов автоматов Мили, в которых значения выходных переменных формируются не в вершинах графов переходов, а на дугах [36]. Во многих задачах логического управления переход от модели автомата Мура к модели автомата Мили не уменьшает числа состояний (вершин графа переходов). На рис.1 в качестве примера приведен граф переходов автомата Мура, реализующий счетный триггер, а на рис.2 эта же задача описана с помощью графа переходов автомата Мили. Рис.1 Граф переходов счетного триггера (автомат Мура) Рис.2 Граф переходов счетного триггера (автомат Мили) Рис.3 Граф переходов последовательностного одноразрядного сумматора Рис.4 Граф переходов автомата Мили с двумя вершинами для сумматора В других случаях переход от графа переходов автомата Мура или графа переходов автомата без выходного преобразователя к графу переходов автомата Мили позволяет сократить число вершин. На рис.3 приведен граф переходов автомата без выходного преобразователя с четырьмя вершинами, реализующий последовательностный одноразрядный сумматор, а на рис.4 этот алгоритм описан графом переходов автомата Мили с двумя вершинами. При этом необходимо отметить, что если для автоматов Мура и автоматов без выходного преобразователя с однозначным заданием значений выходов число состояний равно числу комбинаций этих значений (среди которых учитываются повторяющиеся), а для автоматов, в которых все комбинации различны, равно числу различных комбинаций, то уже для автоматов этих классов с неоднозначным их заданием понятие «состояние» становится менее связанным со значениями выходов и поэтому становится более абстрактным и менее понятным. Это положение усугубляется для автоматов Мили, а для автоматов этого класса с неоднозначными значениями выходов в [37] вместо понятия «состояние» было введено понятие «ситуация», а вместо термина «граф переходов» — термин «граф переключений». Однако несмотря на то, что граф переключений может содержать меньшее число вершин, чем эквивалентный граф переходов, применение графов переключений в качестве языка общения нецелесообразно ввиду сложности их понимания. Аналогичная ситуация с числом состояний из-за умолчаний значений регистров может иметь место и для такого типа автоматов как смешанные автоматы — «автоматы без выходного преобразователя-Мили (СА1)» и «автоматы Мура-Мили (СА2)», а также для автоматов всех перечисленных классов с флагами, в которых один и тот же регистр может использоваться в одном графе переходов как в качестве входного, так и выходного. В качестве флага в ряде случаев могут использоваться регистры, значения которых проверяются автоматом и могут быть изменены не только внешним относительно рассматриваемого автомата источником информации, например изменением уровня сигнала на линии ввода, но и собственно автоматом. В графе переходов СА2 (рис.5) в качестве флага используется регистр x1, значение которого могут быть изменены в устойчивых состояниях автомата внешним сигналом или собственно автоматом на переходе 0-2, инициируемом входным сигналом x0. Значения сигнала x1 не только формируются автоматом, но и проверяются им на переходах 0-1 и 2-3. Более типично использование флагов как дополнительно введенных регистров, которые воздействуют на ячейки памяти, содержимое которых не может быть изменено от других источников информации. В случае, когда флаги вводятся в автомат без выходного преобразователя, то эти ячейки могут рассматри- ваться как принадлежность автомата наряду с ячейками, сохраняющими значения регистров, различающих состояния. Рис.5 Граф переходов с флагом x0 Для автоматов Мура, Мили и смешанных автоматов флагами являются дополнительно вводимые регистры F, значения которых запоминаются в ячейках памяти, внешних относительно рассматриваемого автомата. Если при использовании многозначного кодирования состояний автомата любой сложности, принадлежащих этим классам, достаточно иметь в автомате только один промежуточный регистр, то при введении флагов во внешней относительно автомата среде появляются дополнительные ячейки памяти, в том числе и многозначные. При этом номер следующего состояния определяется не только номером рассматриваемого состояния и входным воздействием, как это имеет место в автоматах без флагов, но зависит от предыстории. Таким образом, для таких автоматов не только значения выходов, но и значения состояний могут зависеть и изменяться от предыстории, что, естественно, резко усложняет их чтение. На рис.6 приведен не содержащий ни одной устойчивой вершины граф переходов автомата Мура с десятью вершинами. Число вершин в графе переходов автомата Мура удается сократить до семи за счет введения двоичного флага F1, формируемого и проверяемого автоматом, и неоднозначности значений флага в некоторых вершинах графа переходов (рис.13). Дальнейшее сокращение числа вершин в графе переходов автомата Рис.6 Граф переходов счетного триггера (автомат Мура) Рис.7 Граф переходов счетного триггера (автомат Мура) Рис.8 Граф переходов счетного триггера (автомат Мура) Мура обеспечивается введением дополнительного многозначного флага F2 и использованием умолчаний его значений (рис.14). Методы построения понимаемых графов переходов по граф-схемам алгоритмов и понимаемых граф-схем алгоритмов по графам переходов, а также методы программирования рассматриваемых моделей в базисе языков различных уровней рассматриваются во второй части работы. Верификация курсовой работы Целью верификации является контроль правильности работы устройства, который может осуществляться как с использование математической модели устройства, так и с использованием логического моделирования. Различают функциональную и временную верификацию устройств. Временная верификация проводится с целью временного согласования сигналов в устройстве. При временной верификации оценив ается скорость распространения сигналов в устройстве и проверяю тся их временные соотношения. Например, это могут быть задержки распространения сигнала в различных узлах схемы или быстродействие устройства в целом. Предсказание правильности поведения ВУ с однотактной синхронизацией во всех САПР микросхем основано, прежде всего, на временном анализе задержек схемы ВУ, который выполняет программа временного анализа. Эта программа по известным задержкам между всеми элементами проекта ВУ, включая задержки в проводниках, выполняет проверку условия max(TTi+TDi,j + TПj ) < TC . где TTi – задержка от фронта синхросигнала до выхода i-го триггера, TDi,j – задержка сигнала в логических схемах и линиях связи между i –м и j – м триггером, TПj – время предустановки сигнала на входе j-го триггера относительно фронта синхросигнала, ΔTCi,j - относительная задержка между синхросигналами, приходящими на эти триггеры, называемая перекосом фазы (clock skew), TC – заданный период синхросигнала, при условии, что время удержания сигнала на входе триггера ТУ удовлетворяет заданным ограничениям. Также вычисляются задержки от входных выводов микросхемы до входов триггеров и от выходов триггеров до выходных выводов микросхем. Задержки определяются как маршруты между вершинами графа схемы ВУ, дуги которого нагружены соответствующими задержками вентилей или проводников. Во многих ВУ используются сложные логические схемы, которые можно представить многовершинными двудольными графами с большим числом ребер. В этом случае количество маршрутов, по которым определяются задержки, представленных ребрами в двудольном графе, может достигать многих миллионов. Из-за перебора всех маршрутов временной анализ ВУ может длиться довольно долго. Если в ВУ существует перекос фаз, то временной анализ усложняется, так как он выполняется по более сложному алгоритму. Во многих САПР автоматический учет перекоса фаз не выполняется или проводится только для отдельно выбранных маршрутов. Если ВУ состоит из нескольких связанных между собой модулей, в пределах которых действуют разные синхросерии, то дополнительно проверяется условие max(TTi+TDi,j + TПj ± ΔTCi,j) < TC , в котором ΔTCi,j - относительная задержка между фронтами двух синхро- серий, а задержки определяются по маршрутам сигналов между парами блоков. Часто, операнд записывается в триггер i и хранится в нем несколько тактов, в течение которых сигнал операнда распространяется через логическую схему до триггера j, в который операнд записывается также через несколько тактов. Очевидно, что такой маршрут желательно удалить из временного анализа или анализировать отдельно, так как через него практически никогда не проходит критическая задержка. Такие маршруты выделяют в виде множества многотактовых маршрутов (multicycle paths), называемых также ложными маршрутами (false paths). В результате временного анализа подтверждается, что схема ВУ работает с однотактной синхронизацией, что в ней отсутствуют критические перекосы фаз, а также фиксируются критический путь и его задержка, которые характеризуют быстродействие ВУ. Это быстродействие обычно выражается величиной минимального тактового периода TCmin, определяемого левой частью формулы (1) или максимальной тактовой частотой fmax = 1/TCmin. Стадия размещения вентилей логической схемы по площади кр исталла и трассировки межсоединений является ответственным эт апом проектирования микросхемы и прошивки ПЛИС, так как от нее зависят все основные характеристики СНК. В то же время, это одна из самых трудоемких стадий. Она сводится к серии последовател ьных приближений к эффективному варианту размещения в плоскости микросхемы графа соединения вентилей Одним из критериев оптимизации размещения и трассировки является минимум задержки критического пути. На основе временного анализа выполняется автоматическая оптимизация быстродействия схемы ВУ путем сокращения длины найденных критических путей. Поэтому для ускорения и улучшения оптимизации желательно минимизировать количество проверяемых маршрутов, например, отмечая многоцикловые маршруты и выделяя критические маршруты, требующие оптимизации. Конвейеризация вычислений, которая сводится к "расщеплению" сложных логических схем промежуточными конвейерными регистрами, существенно (от десятков до тысяч раз) сокращает число проверяемых маршрутов. Поэтому в конвейерных ВУ достигается прирост производительности не только благодаря укорачиванию маршрутов, но и за счет улучшения работы программы, оптимизирующей проект ВУ. В ходе функциональной верификации проекта проверяется правильность его логического функционирования (на основе, например, таблицы истинности или заданного а лгоритма). Функциональная верификация При проведении функциональной верификации следует учит ывать следующее. Если функция, выполняемая схемой, зависит от n переменных, то проверка (моделирование) должна проводиться для всех m = 2 n входных наборов. При большом количестве переменных (входов) моделирование для удобства анализа результатов может проводит ься в несколько приемов. Необходимо правильно определить временные параметры входных импульсов, т.к. неверно заданные параметры могут пр ивести к сбою схемы. Критическими параметрами яв ляются: Ти – длительность (или время) импульса; Тпа – длительность (или время) паузы; Тп – период. Длительность импульса (или, в общем случае, такта) для одного входного набора определяется как функция критического пути. Критический путь – это цепочка связанных друг с другом логических элементов (ЛЭ) схемы от её входа до выхода, которые вносят наибольшую задержку в распространении сигнала. В частности, критический путь – это максимальное количество элементов, через которые проходит сигнал от одного входа до одного выхода. Если логические элементы обладают задержками tdi, то длительность импульса определяется следующим образом: Tи> td1+td2+…+tdk где к – количество ЛЭ на критическом пути. Если tdmax=max{tdi }, то длительность импульса можно определить так: Ти > кtdmax. Например, если критический путь в схеме составляют 5 ЛЭ, а время задержки каждого из них колеблется в пределах от 3 до 5 нс, то длительность импульса для сигналов одного набора входных воздействий для проведения функциональной верификации желательно выбирать не менее 30 нс: Ти = 5 эл * 5 нс = 25 нс. При описании проекта на языке VHDL такая информация отсутствует, поэтому необходимо воспользоваться либо специальным программным обеспечением, или, проведя несколько экспериментов, опытным путем определить длину критического пути. Например, при функциональной верификации полусумматора на 4 входа получено, что общая длительность входных воздействий, для этого примера, составляет Ти*4. При Ти=50 нс эта величина составляет 200 нс. С учетом задержки распространения сигнала, общее время моделирования должно быть больше; например, его можно задать равным 250 нс. Если результаты моделирования совпадают с таблицей истинности, то выбор длительности сигнала можно закончить. В противном случае следует сделать вторую итерацию маршрута и попытаться установить: на каком из этапов допущена ошибка. Если безошибочность выполнения всех этапов для заданной схемы не вызывает сомнения, а совпадения с таблицей истинности нет, то - схема синтезирована неверно. Аналогично проводится функциональная верификация для последовательностных схем. Основой ее также является проверка таблицы истинности или, соответственно, режимов работы устройства (например, режимов: установки, приема информации, хранения информации, запрещенных состояний). По результатам функциональной верификации делаются выводы о временных ресурсах схемы: определяется время задержки td (время распространения сигналов) для всех выходов устройства (среднее арифметическое время tdm tdm=(td01 +td10)/2. td01 - время между началом (считается по уровню 0.5 от перепада напряжения) переключающего импульса и началом выходного импульса – реакции схемы - (вход и выход лежат на критическом пути) td10 - время между окончанием действия входного переключающего импульса и окончанием реакции схемы на импульс. Временная верификации логических схем В ходе временной верификации определяются следующие параметры входного сигнала: Т i min - минимальное время импульса (это время при котором схема еще сохраняет правильное функционирование), Tpmin - минимальное время паузы, Тtmin - минимальный период, Fmax - максимальная частота, на которой может работать схема. В качестве исходных параметров входных сигналов можно взять параметры, используемые для функциональной верификации. У комбинационных схем вход и выход, для которых проводится временная верификация, должны лежать на критическом пути. Значения сигналов на остальных входах постоянны и задаются таким образом, чтобы изменения сигнала на выбранном для эксперимента входе вызывали изменения состояния выхода. Например, для схемы полусумматора имеются два критических пути: от входа х а до выхода S и от входа x b до выхода S. И тот и другой включают в себя пять ЛЭ. В подобных случаях выбирается любой вариант. Выберем путь от x а до S. Сравним результаты моделирования со значениями в таблице истинности. Для синхронных последовательностных схем эксперимент пр оводится для синхровхода и выхода, лежащего на критическом пути. Например, для синхронного RS – триггера входные воздействия для проведения временной верификации могут иметь вид, когда сигналы синхронизации совпадают с сигналами R и S соответственно (кроме запрещенных комбинаций). При этом время Т i для синхровхода (С) не должно превышать Т i установочных входов (S и R). Для асинхронных последовательностных схем период измер яется не по одном входу, а по входам, импульсы которых ведут к п ереключению выходов. Определение минимального времени импульса Т i mi n . Время паузы фиксируется постоянным Т p =const, а время импульса Т i дискретно уменьшается (например на 5 или 10 нс). Для каждого нового значения Т i проводится моделирование и анализируются результаты. Уменьшение Т i проводится до тех пор, пока не появятся признаки нарушения правильного функциониров ания устройства. Такими признаками могут быть: уменьшение а мплитуды выходного сигнала или нарушения переключений в схеме. Значение Т i , при котором схема была еще работоспособна, и считается Т imin . Определение минимального времени паузы T pmi n . Определяется так же как и Т imin при том, что Т i = T imin Определение минимального периода Т t min T t min определяется как сумма двух ранее найденных вел ичин T t min =Т i min + T p min Определение максимальной частоты. F ma Валидация курсовой работы Валидация курсовой работы – подтверждение путем изучения, предоставление свидетельств того, что выполнены треб ования ТЗ для специфического применения результатов курсовой работы на лабор аторном макете FLEX8000 и др. устройствах, где возможно применение IP ядер. Другими словами, процесс валидации должен быть способен по дтвердить то, что конечный продукт и/или услуга будет способен (сп особна) удовлетворить требования технического задания . Библиотека VHDL моделей 1. D – триггер с входом разрешения (DFFE) simpsig.vhd ENTITY simpsig IS PORT( enable : IN BIT; d, clk : IN BIT; q : OUT BIT ); END simpsig; ARCHITECTURE maxpld OF simpsig IS BEGIN PROCESS(clk) BEGIN IF (enable = '0' ) then null; ELSIF (clk'event and clk = '1') then q <= d; END IF; END PROCESS; END maxpld; -- The following implementation is incorrect. -- PROCESS(clk) -- BEGIN -IF (clk'event AND clk = '1') THEN -IF (enable = '1' ) THEN -q <= d; -END IF; -END IF; -- END PROCESS; -- END maxpld; 2. 8 D – триггеров с общими входами синхронизации и управления testdff.vhd LIBRARY ieee, lpm; USE ieee.std_logic_1164.ALL; USE lpm.lpm_components.ALL; ENTITY testdff IS PORT (inputs : IN STD_LOGIC_VECTOR(7 DOWNTO 0); clk : IN STD_LOGIC; aset : IN STD_LOGIC ; aclr : IN STD_LOGIC ; sset : IN STD_LOGIC ; sclr : IN STD_LOGIC ; en : IN STD_LOGIC ; outputs : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END testdff; ARCHITECTURE dff8 OF testdff IS BEGIN U1 : lpm_ff GENERIC MAP(lpm_width => 8) PORT MAP(data => inputs, clock => clk,q => outputs, aclr => aclr, enable => en, aset => aset, sset => sset, sclr => sclr); END; 3. Мультплексор LIBRARY ieee; USE IEEE.std_logic_1164.all; ENTITY nolatch IS PORT (a,b,c : IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR (4 DOWNTO 0); oput: OUT STD_LOGIC); END nolatch; ARCHITECTURE rtl OF nolatch IS BEGIN PROCESS (a,b,c,sel) BEGIN IF sel = "00000" THEN oput <= a; ELSIF sel = "00001" THEN oput <= b; ELSIF sel = "00010" THEN oput <= c; ELSE --- Prevents latch inference oput <= 'X'; --/ END IF; END PROCESS; END rtl; 4. Реверсивный счетчик с параллельной загрузкой counters.vhd ENTITY counters IS PORT( d : IN INTEGER RANGE 0 TO 255; clk : IN BIT; clear : IN BIT; load : IN BIT; up_down : IN BIT; qd : OUT INTEGER RANGE 0 TO 255); END counters; ARCHITECTURE a OF counters IS BEGIN -- An up/down counter PROCESS (clk) VARIABLE cnt : INTEGER RANGE 0 TO 255; VARIABLE direction : INTEGER; BEGIN IF (up_down = '1') THEN --Generate up/down counter direction := 1; ELSE direction := -1; END IF; IF (clk'EVENT AND clk = '1') THEN IF (load = '1') THEN --Generate loadable cnt := d; --counter. Take these ELSE --lines out to increase performance. cnt := cnt + direction; END IF; --The following lines will produce a synchronous --clear on the counter IF (clear = '0') THEN cnt := 0; END IF; END IF; qd <= cnt; --Generate outputs END PROCESS; END a; 5. Счетчик с параллельной загрузкой LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY count IS PORT ( clock: sload: data: result: ); END count; IN STD_LOGIC; IN STD_LOGIC; IN integer RANGE 0 TO 31; OUT integer RANGE 0 TO 31 ARCHITECTURE rtl OF count IS SIGNAL result_reg : integer RANGE 0 TO 31; BEGIN PROCESS (clock) BEGIN IF (clock'event AND clock = '1') THEN IF (sload = '1') THEN result_reg <= data; ELSE result_reg <= result_reg + 1; END IF; END IF; END PROCESS; result <= result_reg; END rtl; 6. 4-х разрядный счетчик на уменьшение cnt_3.vhd LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY lpm; --Allows use of all Altera LPM USE lpm.lpm_components.all; --functions ENTITY cnt_3 IS PORT (clock : IN STD_LOGIC; sset : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END cnt_3; ARCHITECTURE lpm OF cnt_3 IS BEGIN -- Port map 1 U1: lpm_counter GENERIC MAP (lpm_width => 4, lpm_direction => "down") PORT MAP (clock => clock, sset => sset, q => q); -- Port map 2 --- PORT MAP (data => "0000", clock => clock, clk_en => '1', -cnt_en => '1', updown => '0', sload => '0', -sset => SSET, sclr => '0', aload => '0', -aset => '0', aclr => '0', q => q); -- These portmaps will produce the same results. -- The second portmap has more connections but -- the extraneous connections will be synthesized out. END; 7. 8- разрядный двунаправленный (bidirectional) регистр с тремя состояниями LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY bidir IS PORT( bidir : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0); oe, clk : IN STD_LOGIC; inp : IN STD_LOGIC_VECTOR (7 DOWNTO 0); outp : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END bidir; ARCHITECTURE maxpld OF bidir IS SIGNAL a : STD_LOGIC_VECTOR (7 DOWNTO 0); -- DFF that stores -- value from input. SIGNAL b : STD_LOGIC_VECTOR (7 DOWNTO 0); -- DFF that stores BEGIN -- feedback value. PROCESS(clk) BEGIN IF clk = '1' AND clk'EVENT THEN -- Creates the flipflops a <= inp; outp <= b; END IF; END PROCESS; PROCESS (oe, bidir) -- Behavioral representation BEGIN -- of tri-states. IF( oe = '0') THEN bidir <= "ZZZZZZZZ"; b <= bidir; ELSE bidir <= a; b <= bidir; END IF; END PROCESS; END maxpld; 8. 8 разрядный регистр с тремя состояниями prebus.vhd LIBRARY IEEE; USE ieee.std_logic_1164.ALL; ENTITY prebus IS PORT( my_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); sel : IN STD_LOGIC; my_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END prebus; ARCHITECTURE maxpld OF prebus IS BEGIN my_out <= "ZZZZZZZZ" WHEN (sel = '1') ELSE my_in; END maxpld; 9. Массив из 64 8 разрядных регистров с перезаписью LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY shift_8x64_taps IS PORT ( clk : IN STD_LOGIC; shift : IN STD_LOGIC; sr_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); sr_tap_one : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); sr_tap_two : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); sr_tap_three : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); sr_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END shift_8x64_taps; ARCHITECTURE arch OF shift_8x64_taps IS SUBTYPE sr_width IS STD_LOGIC_VECTOR(7 DOWNTO 0); TYPE sr_length IS ARRAY (63 DOWNTO 0) OF sr_width; SIGNAL sr : sr_length; BEGIN PROCESS (clk) BEGIN IF (clk'EVENT and clk = '1') THEN IF (shift = '1') THEN sr(63 DOWNTO 1) <= sr(62 DOWNTO 0); sr(0) <= sr_in; END IF; END IF; END PROCESS; sr_tap_one <= sr(15); sr_tap_two <= sr(31); sr_tap_three <= sr(47); sr_out <= sr(63); END arch; 10. 8 –ми разрядный полный сумматор LIBRARY altera; USE altera.maxplus2.carry; LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY WORK; USE WORK.usr_def.ALL; ENTITY f_add8 IS PORT( x_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); c_in : IN STD_LOGIC; sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); c_out : OUT STD_LOGIC); END f_add8; ARCHITECTURE struct OF f_add8 IS SIGNAL im : STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL imi : STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN c0 : full_add PORT MAP (x_in(0),y_in(0),c_in,sum(0),im(0)); c01 : carry PORT MAP (im(0),imi(0)); c : FOR i IN 1 TO 6 GENERATE c1to6: full_add PORT MAP (x_in(i),y_in(i), imi(i-1),sum(i),im(i)); c11to16: carry PORT MAP (im(i),imi(i)); END GENERATE; c7 : full_add PORT MAP (x_in(7),y_in(7), imi(6),sum(7),c_out); END struct; usr_def.vhd LIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE usr_def IS COMPONENT full_add PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; c_in : IN STD_LOGIC; sum : OUT STD_LOGIC; c_out : OUT STD_LOGIC); END COMPONENT; END usr_def; full_add.vhd LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY full_add IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; c_in : IN STD_LOGIC; sum : OUT STD_LOGIC; c_out : OUT STD_LOGIC); END full_add; ARCHITECTURE behv OF full_add IS BEGIN sum <= a XOR b XOR c_in; c_out <= (a AND b) OR (c_in AND (a OR b)); END behv; 11. 8 –ми разрядный умножитель со знаком LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; USE ieee.std_logic_signed.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY signed_mult IS PORT ( a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); result: OUT STD_LOGIC_VECTOR (15 DOWNTO 0) ); END signed_mult; ARCHITECTURE rtl OF signed_mult IS SIGNAL a_int, b_int: SIGNAL pdt_int: SIGNED (7 downto 0); SIGNED (15 downto 0); BEGIN a_int <= SIGNED (a); b_int <= SIGNED (b); pdt_int <= a_int * b_int; result <= STD_LOGIC_VECTOR(pdt_int); END rtl; 12. 8 –ми разрядный MAC (умножение с накоплением) LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; USE ieee.std_logic_signed.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY sig_altmult_accum IS PORT ( a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); clk: IN STD_LOGIC; accum_out: OUT STD_LOGIC_VECTOR (15 DOWNTO 0) ); END sig_altmult_accum; ARCHITECTURE rtl OF sig_altmult_accum IS SIGNAL a_reg, b_reg : signed (7 DOWNTO 0); SIGNAL pdt_reg : signed (15 DOWNTO 0); SIGNAL adder_out : signed (15 DOWNTO 0); BEGIN PROCESS (clk) BEGIN IF (clk'event and clk = '1') THEN a_reg <= SIGNED (a); b_reg <= SIGNED (b); pdt_reg <= a_reg * b_reg; adder_out <= adder_out + pdt_reg ; END IF; END process; accum_out <= std_logic_vector(adder_out); END rtl; 13. 8 –ми разрядный умножитель без знака LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY unsigned_mult IS PORT ( a: IN b: IN clk: IN aclr: IN result: ); END unsigned_mult; STD_LOGIC_VECTOR (7 DOWNTO 0); STD_LOGIC_VECTOR (7 DOWNTO 0); STD_LOGIC; STD_LOGIC; OUT STD_LOGIC_VECTOR (15 DOWNTO 0) ARCHITECTURE rtl OF unsigned_mult IS SIGNAL a_reg, b_reg: std_logic_vector (7 DOWNTO 0); BEGIN PROCESS (clk, aclr) BEGIN IF (aclr ='1') THEN a_reg <= (OTHERS => '0'); b_reg <= (OTHERS => '0'); result <= (OTHERS => '0'); ELSIF (clk'event AND clk = '1') THEN a_reg <= a; b_reg <= b; result <= unsigned(a_reg) * unsigned(b_reg); END IF; END PROCESS; END rtl; 14. 8 –ми разрядный умножитель без знака с накоплением (MAC) LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; USE ieee.std_logic_signed.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY unsignedmult_add IS PORT ( a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); c: IN STD_LOGIC_VECTOR (7 DOWNTO 0); d: IN STD_LOGIC_VECTOR (7 DOWNTO 0); clk : IN STD_LOGIC; aclr : IN STD_LOGIC; result: OUT STD_LOGIC_VECTOR (15 DOWNTO 0) ); END unsignedmult_add; ARCHITECTURE rtl OF unsignedmult_add IS SIGNAL a_int, b_int, c_int, d_int : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL pdt_int, pdt2_int: unsigned (15 DOWNTO 0); SIGNAL result_int: unsigned (15 DOWNTO 0); BEGIN PROCESS (clk, aclr) BEGIN IF (aclr = '1') THEN a_int <= (OTHERS => '0'); b_int <= (OTHERS => '0'); c_int <= (OTHERS => '0'); d_int <= (OTHERS => '0'); pdt_int <= (OTHERS => '0'); pdt2_int <= (OTHERS => '0'); result_int <= (OTHERS => '0'); ELSIF (clk'event AND clk = '1') THEN a_int <= a; b_int <= b; c_int <= c; d_int <= d; pdt_int <= unsigned(a_int) * unsigned(b_int); pdt2_int <= unsigned(c_int) * unsigned(d_int); result_int <= pdt_int + pdt2_int; END IF; END PROCESS; result <= STD_LOGIC_VECTOR(result_int); END rtl; 15. Последовательный 8 –ми разрядный сумматор c_l_addr.vhd LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY c_l_addr IS PORT ( x_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); carry_in : IN STD_LOGIC; sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); carry_out : OUT STD_LOGIC ); END c_l_addr; ARCHITECTURE behavioral OF c_l_addr IS SIGNAL SIGNAL SIGNAL SIGNAL h_sum : carry_generate carry_propagate carry_in_internal STD_LOGIC_VECTOR(7 DOWNTO 0); : STD_LOGIC_VECTOR(7 DOWNTO 0); : STD_LOGIC_VECTOR(7 DOWNTO 0); : STD_LOGIC_VECTOR(7 DOWNTO 1); BEGIN h_sum <= x_in XOR y_in; carry_generate <= x_in AND y_in; carry_propagate <= x_in OR y_in; PROCESS (carry_generate,carry_propagate,carry_in_internal) BEGIN carry_in_internal(1) <= carry_generate(0) OR (carry_propagate(0) AND carry_in); inst: FOR i IN 1 TO 6 LOOP carry_in_internal(i+1) <= carry_generate(i) OR (carry_propagate(i) AND carry_in_internal(i)); END LOOP; carry_out <= carry_generate(7) OR (carry_propagate(7) AND carry_in_internal(7)); END PROCESS; sum(0) <= h_sum(0) XOR carry_in; sum(7 DOWNTO 1) <= h_sum(7 DOWNTO 1) XOR carry_in_internal(7 DOWNTO 1); END behavioral; 16. Двухпортовая память объемом 16х4 с общим циклом cycle.vhd LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY altera; USE altera.maxplus2.ALL; ENTITY cycle IS PORT (dataa : IN STD_LOGIC_VECTOR(3 DOWNTO 0); datab : IN STD_LOGIC_VECTOR(3 DOWNTO 0); addressa : IN STD_LOGIC_VECTOR(3 DOWNTO 0); addressb : IN STD_LOGIC_VECTOR(3 DOWNTO 0); wea,web : IN STD_LOGIC; clock : IN STD_LOGIC; clockx2 : IN STD_LOGIC; qa : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); qb : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END cycle; ARCHITECTURE lpm OF cycle IS BEGIN U1: csdpram GENERIC MAP (LPM_WIDTH => 4, LPM_WIDTHAD => 4, LPM_NUMWORDS => 16) PORT MAP (dataa => dataa, datab => datab, addressa => addressa, addressb => addressb, wea => wea, web => web, clock => clock, clockx2 => clockx2, qa => qa, qb => qb); END; 17. Пример иерархического проекта top.vhd (Top-level file) LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY top IS PORT(w_in, x_in, y_in :IN std_logic; clock z_out END top; :IN std_logic; :OUT std_logic); ARCHITECTURE a OF top IS COMPONENT logic PORT(a,b,c :IN std_logic; x :OUT std_logic); END COMPONENT; SIGNAL w_reg, x_reg, y_reg, z_reg BEGIN low_logic :std_logic; : logic PORT MAP (a => w_reg, b => x_reg, c => y_reg, x => z_reg); PROCESS(clock) BEGIN IF (clock'event AND clock='1') THEN w_reg<=w_in; x_reg<=x_in; y_reg<=y_in; z_out<=z_reg; END IF; END PROCESS; END a; logic.vhd LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY logic IS PORT(a,b,c : IN std_logic; x : OUT std_logic); END logic; ARCHITECTURE a OF logic IS BEGIN PROCESS (a,b,c) BEGIN x<=(a and b) or c; END PROCESS; END; 18. Преобразователь HEX > STD_LOGIC hex.vhd LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; ENTITY hex IS PORT( D : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END hex; ARCHITECTURE a OF hex IS BEGIN -- The following line will convert the hex value -- to a STD_LOGIC_VECTOR in VHDL '87. D(7 DOWNTO 0) <= to_stdlogicvector(x"FC"); -- The following line will work in VHDL '93 (the standard allows -- this conversion implicitly). -- D <= x"FC"; END a; 19. Сумматор - вычитатель LIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE my_package IS CONSTANT ADDER_WIDTH : integer := 5; CONSTANT RESULT_WIDTH : integer := 6; SUBTYPE ADDER_VALUE IS integer RANGE 0 TO 2 ** ADDER_WIDTH - 1; SUBTYPE RESULT_VALUE IS integer RANGE 0 TO 2 ** RESULT_WIDTH - 1; END my_package; LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE work.my_package.ALL; ENTITY addsub IS PORT ( a: b: addnsub: result: ); END addsub; IN ADDER_VALUE; IN ADDER_VALUE; IN STD_LOGIC; OUT RESULT_VALUE ARCHITECTURE rtl OF addsub IS BEGIN PROCESS (a, b, addnsub) BEGIN IF (addnsub = '1') THEN result <= a + b; ELSE result <= a - b; END IF; END PROCESS; END rtl; Литература 1. Закревский А.Д. Логический синтез каскадных схем. Москва: Наука. 1981. 416 с. 2. Соловьев В.В. Структурные модели конечных автоматов при их реализации на ПЛИС // Chip News. Инженерная микроэлектроника. 2002. № 9. С. 4– 14. 3. Соловьев В.В. Проектирование конечных автоматов на ПЛИС со структурой двух программируемых матриц // Chip News. Инженерная микроэлектроника. 2002. № 10. С. 20–24. 4. Соловьев В.В. Использование выходных макроячеек ПЛИС в качестве элементов памяти конечных автоматов // Chip News. Инженерная микроэлектроника. 2003. № 1. С. 17–23. 5. Соловьев В.В., Климович А. Использование входных буферов ПЛИС в качестве элементов памяти конечных автоматов // Chip News. Инженерная микроэлектроника. 2003. № 2. С. 30–34. 6. Ashenhurst R.L. The Decomposition of Switching Functions // Proc. of the Int. Symposium on Theory of Switching Functions, 1957. P. 74–116. Brayton R.K., Hachtel G., McMullen C., Sangiovanni-Vincentelli A. Logic Minimization Algorithms for VLSI Synthesis. Kluwer Academic Publishers, Boston, 1984. 7. Brayton R.K. Factoring logic functions // IBM Journal of Research and Development. Vol. 31. № 2. March 1987. P. 187–198. Brayton R.K., Rudell R., Sangiovanni-Vincentelli A. Wang A. MIS: A multiple-level logic optimization system // IEEE Trans. on CAD. November 1987. Vol. CAD-6. № 6. P. 1062–1081. 8. McCluskey E. Minimization of Boolean Functions. The Bell System Technical Journal, November 1956. Vol. 35. P. 1417–1444. Curtis H.A. A New Approach to Design of Switching Circuits. Princeton, NJ, Van Nostrand, 1962. 9. Davidson E. An Algoristhm for NAND Decomposition under Network Constraints // IEEE Trans. on Computers. 1969. Vol. C-18. № 12. P. 1098–1109. 10. Lavagno L., Malik S., Brayton R., Sangiovanni-Vincentelli A. MIS-MV: Optimization of Multi-Level Logic with Multiple Valued Inputs // Proc. of the 27th Design Automation Conference (DAC). 1990. P. 560–563. 11. DeMicheli G., Brayton R.K., Sangiovanni-Vincentelli A. Optimal state assignment for finite state machines // IEEE Trans. on CAD. July 1985. Vol. CAD-4. P. 269–284. 12. DeMicheli G. Symbolic design of combinational and sequentional logic circuits implemented by tow-level logic macros // IEEE Trans. on CAD. October 1986. Vol. CAD-5. P. 597–616. 13. Murgai R., Shenoy N., Brayton R., Sangiovanni-Vincentelli A. Improved Logic Synthesis Algorithm for Table Look Up Architectures // Proc. of the Int. Conf. on Computer-Aided Design (ICCAD). 1991. P. 564–567. 14. Quine W. The Problem of Simplifying Truth Functions // American Mathematical Monthly. 1952. Vol. 59. P. 521–531. 15. Roth P.J., Karp R.M. Minimization Over Boolean Graphs // IBM Journal of Research and Development. 1962. Vol. 6. № 2. P. 227–238. 16. Rudell R., Sangiovanni-Vincentelli A. ESPRESSO-MV: Algorithms for Multiple-Valued Logic Minimization // Proc. of the Custom Integrated Circuits Conference (Portland, USA). 1985. P. 230–234. 17. Rudell R., Sangiovanni-Vincentelli A. Multiple-Valued Minimization for PLA Optimization // IEEE Trans. on CAD. September 1987. Vol. CAD-6. № 5. P. 727–750. 18. Sasao T. An Application of Multiple-Valued Logic to a Design of Programmable Logic Arrays // Proc. of the 8th Int. Symp. Multiple Valued Logic. 1978. 19. Su Y., Cheung P. Computer Minimization of Multi-Valued Switching Functions // IEEE Trans. on Computers. September 1972. Vol. C-21. № 9. P. 995–100 20. А.А.Шалыто Использование граф-схем и графов переходов при программной реализации алгоритмов логического управления// Автоматика и телемеханика, 1996. N6, C.148-158; N7, С.144-169. 21. ГОСТ Р ИСО 9001-2001 22. Микропроцессорные комплекты БИС на основе интегральной инжекционной логики / В.С. Борисов, Ф.С. Власов и др; Под ред Э.П. Калошкина.- М.: Радио и связь, 1984 .- 248 с. 23. Архитектура компьютера.- 4-е изд. / Э.Таненбаум.- СПб.: Питер, 2003.704 с. 24. Цилькер Б.Я., Орлов С.А.: Учебник для вузов.- СПб.: Питер, 2004.- 668 с. Варианты заданий курсовой работы (з.о.) Общая тематика курсовых работ: Разработка IP ядер вычислительных машин и систем (прототип БИС МПК К583, К584 /22/) Вариант 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Тема курсовой работы Разработка IP ядра универсального микропроцессора (адресация памяти) Разработка IP ядра универсального микропроцессора (арифметические операции) Разработка IP ядра универсального микропроцессора (логические операции) Разработка IP ядра универсального микропроцессора (операции сдвигов) Разработка IP ядра универсального микропроцессора (устройство управления) Разработка IP ядра универсального микропроцессора (формирование признаков) Разработка IP ядра коммутационного микропроцессора (операции передачи) Разработка IP ядра коммутационного микропроцессора (операции логической обработки) Разработка IP ядра коммутационного микропроцессора (мажоритирование данных) Разработка IP ядра инкрементного микропроцессора (формирование адреса) Разработка IP ядра инкрементного микропроцессора (синхронизация) Разработка IP ядра инкрементного микропроцессора (операции регистра состояний) Разработка IP ядра логического микропроцессора (адресация внутренних регистров данных) Разработка IP ядра логического микропроцессора (адресация битов в битовых операциях) Разработка IP ядра адресного микропроцессора (арифметические операции) Разработка IP ядра адресного микропроцессора (операции сдвига) Разработка IP ядра универсального магистрального коммутатора (логическая обработка байтовой информации) Разработка IP ядра универсального магистрального коммутатора (восстановления и буферизации информации) Разработка IP ядра магистрального приемо- Исполнитель 20 21 22 23 24 25 26 27 28 29 передатчика с памятью Разработка IP ядра 8- разрядной секции умножителя Разработка IP ядра контроллера синхронизатора Разработка IP ядра контроллера предварительной обработки информации Разработка программной модели устройства управления дисплеем (т1.с.100-111) Разработка программной модели устройства управления ( последовательность выполнения микрокоманд)( т1.с.30) Разработка программной модели системы прерываний Приложение 1. ГОСТ Р ИСО 9001-2001 ГОСТ Р ИСО 9001-2001 Группа Т59 ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ Системы менеджмента качества ТРЕБОВАНИЯ Quality management systems. Requirements ОКС 03.120.10 ОКСТУ 0025 Дата введения 2001-08-31 Предисловие 1 РАЗРАБОТАН Всероссийским научно-исследовательским институтом сертификации (ВНИИС) ВНЕСЕН Управлением сертификации Госстандарта России 2 ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 15 августа 2001 г. N 333-ст 3 Настоящий стандарт представляет собой аутентичный текст стандарта ИСО 9001-2000 "Системы менеджмента качества. Требования" 4 ВВЕДЕН ВПЕРВЫЕ Введение* ____________ * Раздел приводится в редакции, отличной от ИСО 9001-2000. Общие положения Для создания системы менеджмента качества требуется стратегическое решение организации. На разработку и внедрение системы менеджмента качества организации влияют изменяющиеся потребности, конкретные цели, выпускаемая продукция, применяемые процессы, размер и структура организации. Настоящий стандарт не предполагает единообразия в структуре систем менеджмента качества или документации. Требования к системе менеджмента качества, установленные в настоящем стандарте, являются дополняющими по отношению к требованиям к продукции. Информация, обозначенная как "Примечание", является методическим указанием по пониманию или разъяснению соответствующего требования. Настоящий стандарт может использоваться внутренними и внешними сторонами, включая органы по сертификации, с целью оценки способности организации выполнять требования потребителей, регламентов и собственные требования. При разработке настоящего стандарта были учтены принципы менеджмента качества, установленные в ГОСТ Р ИСО 9000-2001 и ГОСТ Р ИСО 9004-2001. Процессный подход Настоящий стандарт направлен на применение "процессного подхода" при разработке, внедрении и улучшении результативности системы менеджмента качества с целью повышения удовлетворенности потребителей путем выполнения их требований. Для успешного функционирования организация должна определить и осуществлять менеджмент многочисленных взаимосвязанных видов деятельности. Деятельность, использующая ресурсы и управляемая с целью преобразования входов в выходы, может рассматриваться как процесс. Часто выход одного процесса образует непосредственно вход следующего. Применение в организации системы процессов наряду с их идентификацией и взаимодействием, а также менеджмент процессов могут считаться "процессным подходом". Преимущество процессного подхода состоит в непрерывности управления, которое он обеспечивает на стыке отдельных процессов в рамках их системы, а также при их комбинации и взаимодействии. При применении в системе менеджмента качества такой подход подчеркивает важность: а) понимания и выполнения требований; б) необходимости рассмотрения процессов с точки зрения добавленной ценности; в) достижения результатов выполнения процессов и их результативности; г) постоянного улучшения процессов, основанного на объективном измерении. Приведенная на рисунке 1 модель системы менеджмента качества, основанная на процессном подходе, иллюстрирует связи между процессами, представленными в разделах 4-8. Эта модель показывает, что потребители играют существенную роль при определении входных данных. Мониторинг удовлетворенности потребителей требует оценки информации о восприятии потребителями выполнения их требований. Приведенная на рисунке 1 модель охватывает все основные требования настоящего стандарта, не детализируя их. Примечание - Кроме того, ко всем процессам может применяться цикл "Plan Do - Check - Act" (PDCA). Цикл PDCA можно кратко описать так: планирование (plan) - разработайте цели и процессы, необходимые для достижения результатов в соответствии с требованиями потребителей и политикой организации; осуществление (do) - внедрите процессы; проверка (check) - постоянно контролируйте и измеряйте процессы и продукцию в сравнении с политикой, целями и требованиями на продукцию и сообщайте о результатах; действие (act) - предпринимайте действия по постоянному улучшению показателей процессов. Связь с ГОСТ Р ИСО 9004-2001 ГОСТ Р ИСО 9001-2001 и ГОСТ Р ИСО 9004-2001 были разработаны как согласованная пара стандартов на системы менеджмента качества для дополнения друг друга, но их можно применять также независимо. Несмотря на то, что у стандартов различные области применения, они имеют аналогичную структуру в целях создания условий для их использования как согласованной пары. ГОСТ Р ИСО 9001-2001 устанавливает требования к системе менеджмента качества, которые могут использоваться для внутреннего применения организациями, в целях сертификации или заключения контрактов. Он направлен на результативность системы менеджмента качества при выполнении требований потребителей. ГОСТ Р ИСО 9004-2001 содержит рекомендации по более широкому спектру целей системы менеджмента качества, чем ГОСТ Р ИСО 9001-2001, особенно по постоянному улучшению деятельности организации, а также ее эффективности и результативности. ГОСТ Р ИСО 9004-2001 рекомендуется как руководство для организаций, высшее руководство которых, преследуя цель постоянного улучшения деятельности, желает выйти за рамки требований ГОСТ Р ИСО 9001-2001. Однако он не предназначен для целей сертификации или заключения контрактов. Совместимость с другими системами менеджмента Настоящий стандарт согласован с ГОСТ Р ИСО 14001-98 для улучшения совместимости этих двух стандартов в интересах сообщества пользователей. Настоящий стандарт не содержит конкретных требований к другим системам менеджмента, таких, как менеджмент охраны окружающей среды, менеджмент профессионального здоровья и безопасности, финансовый менеджмент или менеджмент рисков. Однако он позволяет организации согласовать или интегрировать свою собственную систему менеджмента качества с другими системами менеджмента с соответствующими требованиями. Организация может адаптировать действующую систему(ы) менеджмента для создания системы менеджмента качества, соответствующей требованиям настоящего стандарта. Кроме того, термин "поставщик" заменяет термин "субподрядчик". В тексте настоящего стандарта термин "продукция" может означать также "услугу". Примечание - Ниже приведены два термина, содержащиеся в ГОСТ Р ИСО 9000, эквиваленты которым отсутствуют в русском языке. верификация: Подтверждение на основе представления объективных свидетельств того, что установленные требования были выполнены (ГОСТ Р ИСО 9000, 3.8.4). валидация: Подтверждение на основе представления объективных свидетельств того, что требования, предназначенные для конкретного использования или применения, выполнены (ГОСТ Р ИСО 9000, 3.8.5). 7 Процессы жизненного цикла продукции 7.1 Планирование процессов жизненного цикла продукции Организация должна планировать и разрабатывать процессы, необходимые для обеспечения жизненного цикла продукции. Планирование процессов жизненного цикла продукции должно быть согласовано с требованиями к другим процессам системы менеджмента качества (4.1). При планировании процессов жизненного цикла продукции организация должна установить, если это целесообразно: а) цели в области качества и требования к продукции; б) потребность в разработке процессов, документов, а также в обеспечении ресурсами для конкретной продукции; в) необходимую деятельность по верификации и валидации, мониторингу, контролю и испытаниям для конкретной продукции, а также критерии приемки продукции; г) записи, необходимые для обеспечения свидетельства того, что процессы жизненного цикла продукции и произведенная продукция соответствуют требованиям (4.2.4). Результат этого планирования должен быть в форме, соответствующей практике организации. Примечания 1 Документ, определяющий процессы системы менеджмента качества (включая процессы жизненного цикла продукции) и ресурсы, которые предстоит применять к конкретной продукции, проекту или контракту, может рассматриваться как план качества. 2 При разработке процессов жизненного цикла продукции организация может также применять требования 7.3. 7.2 Процессы, связанные с потребителями 7.2.1 Определение требований, относящихся к продукции Организация должна определить: а) требования, установленные потребителями, включая требования к поставке и деятельности после поставки; б) требования, не определенные потребителем, но необходимые для конкретного или предполагаемого использования, когда оно известно; в) законодательные и другие обязательные требования, относящиеся к продукции; г) любые дополнительные требования, определенные организацией. 7.2.2 Анализ требований, относящихся к продукции Организация должна анализировать требования, относящиеся к продукции. Этот анализ должен проводиться до принятия организацией обязательства поставлять продукцию потребителю (например, участия в тендерах, принятие контрактов или заказов, принятие изменений к контрактам или заказам) и должен обеспечивать: а) определение требований к продукции; б) согласование требований контракта или заказа, отличающихся от ранее сформулированных; в) способность организации выполнять определенные требования. Записи результатов анализа и последующих действий, вытекающих из анализа, должны поддерживаться в рабочем состоянии (4.2.4). Если потребители не выдвигают документированных требований, организация должна подтвердить их у потребителя до принятия к исполнению. Если требования к продукции изменены, организация должна обеспечить, чтобы соответствующие документы были исправлены, а заинтересованный персонал был поставлен в известность об изменившихся требованиях. Примечание - В некоторых ситуациях, таких, как продажи, осуществляемые через Интернет, практически нецелесообразно проводить официальный анализ каждого заказа. Вместо этого анализ может распространяться на соответствующую информацию о продукции, такую, как каталоги или рекламные материалы. 7.2.3 Связь с потребителями Организация должна определять и осуществлять эффективные меры по поддержанию связи с потребителями, касающиеся: а) информации о продукции; б) прохождения запросов, контракта или заказа, включая поправки; в) обратной связи от потребителей, включая жалобы потребителей. 7.3 Проектирование и разработка 7.3.1 Планирование проектирования и разработки Организация должна планировать и управлять проектированием и разработкой продукции. В ходе планирования проектирования и разработки организация должна устанавливать: а) стадии проектирования и разработки; б) проведение анализа, верификацию и валидацию, соответствующие каждой стадии проектирования и разработки; в) ответственность и полномочия в области проектирования и разработки. Организация должна управлять взаимодействием различных групп, занятых проектированием и разработкой, с целью обеспечения эффективной связи и четкого распределения ответственности. Результаты планирования должны актуализироваться, если это целесообразно, по ходу проектирования и разработки. 7.3.2 Входные данные для проектирования и разработки Входные данные, относящиеся к требованиям к продукции, должны быть определены, а записи должны поддерживаться в рабочем состоянии (4.2.4). Входные данные должны включать: а) функциональные и эксплуатационные требования; б) соответствующие законодательные и другие обязательные требования; в) там, где это целесообразно, информацию, взятую из предыдущих аналогичных проектов; г) другие требования, важные для проектирования и разработки. Входные данные должны анализироваться на достаточность. Требования должны быть полными, недвусмысленными и непротиворечивыми. 7.3.3 Выходные данные проектирования и разработки Выходные данные проектирования и разработки должны быть представлены в форме, позволяющей провести верификацию относительно входных требований к проектированию и разработке, а также должны быть утверждены до их последующего использования. Выходные данные проектирования и разработки должны: а) соответствовать входным требованиям к проектированию и разработке; б) обеспечивать соответствующей информацией по закупкам, производству и обслуживанию; в) содержать критерии приемки продукции или ссылки на них; г) определять характеристики продукции, существенные для ее безопасного и правильного использования. 7.3.4 Анализ проекта и разработки На тех стадиях, где это целесообразно, должен проводиться систематический анализ проекта и разработки в соответствии с запланированными мероприятиями (7.3.1) с целью: а) оценивания способности результатов проектирования и разработки удовлетворять требованиям; б) выявления любых проблем и внесения предложений по необходимым действиям. В состав участников такого анализа должны включаться представители подразделений, имеющих отношение к анализируемой(ым) стадии(ям) проектирования и разработки. Записи результатов анализа и всех необходимых действий должны поддерживаться в рабочем состоянии (4.2.4). 7.3.5 Верификация проекта и разработки Верификация должна осуществляться в соответствии с запланированными мероприятиями (7.3.1), чтобы удостовериться, что выходные данные проектирования и разработки соответствуют входным требованиям. Записи результатов верификации и всех необходимых действий должны поддерживаться в рабочем состоянии (4.2.4). 7.3.6 Валидация проекта и разработки Валидация проекта и разработки должна осуществляться в соответствии с запланированными мероприятиями (7.3.1), чтобы удостовериться, что полученная в результате продукция соответствует требованиям к установленному или предполагаемому использованию, если оно известно. Где это практически целесообразно, валидация должна быть завершена до поставки или применения продукции. Записи результатов валидации и всех необходимых действий должны поддерживаться в рабочем состоянии (4.2.4). 7.3.7 Управление изменениями проекта и разработки Изменения проекта и разработки должны быть идентифицированы, а записи должны поддерживаться в рабочем состоянии. Изменения должны быть про- анализированы, верифицированы и подтверждены соответствующим образом, а также согласованы до внесения. Анализ изменений проекта и разработки должен включать оценку влияния изменений на составные части и уже поставленную продукцию. Записи результатов анализа изменений и любых необходимых действий должны поддерживаться в рабочем состоянии (4.2.4). Приложение 2. Аудит ГОСТ Р ИСО 9001-2001 Из Руководства по аудиту процесса проектирования разработки ISO 9001 Auditing Practices Group: По п.7.3.5: Верификация процесса проектирования и разработки направлена на обеспечения уверенности в том, что выходы процесса проектиров ания и разработки соответствуют входным требованиям этого процесса. Верификация может представлять собой следующее: - выполнение альтернативных вычислений; - сравнение новой разработанной спецификации с такой же, уже пр оверенной, спецификацией; - демонстрации, включая прототипы, симуляцию, тесты; - анализ документов до выпуска. По п.7.3.6: Валидация процесса проектирования и разработки – подтверждение путем изучения, предоставление свидетельств того, что выполн ены особые требования для специфического применения. Другими словами, процесс валидации должен быть способен подтвердить то, что конечный продукт и/или услуга будет способен (способен) удовлетв орить требования потребителей. Для многих продуктов и/или услуг, в алидация – относительно простой процесс. Примером может служить новый дизайн офисной мебели, который может быть валидирован тестирование прототипов и последующим тестирование пробных обра зцов конечного продукта. Приложение 3. Комментарии к ГОСТ Р ИСО 9001-2001 1. Цитировать формулировки можно бесконечно, я сности это не внесет. Говоря по-русски, верификация - это подтверждение того, что работы ведутся в соответствии с заданными Заказчиком требованиями, как правило проводится исполнителями внутри самой компании. А вал идация - окончательная перепроверка этих самых изначально заданных требований непосредсвенно у Заказчика. Для конкретном примере: Заказчик хочет нечто. Согласовывается ТЗ, из которого вы пон имаете что должны сделать "синий автомобиль". Вы начинаете процесс производства, и в процессе проверяете то, что получается - а автомобиль ли это, а синий ли он у вас? Это - верификация. А потом вы приходите к заказчику и говорите - вот смотрите, получился синий автомобиль, принимаете работу? А он говорит - ребята, вы не так поняли, я хотел розовый тр актор, переделать быстро. Или наоборот говорит - о, это именно то, что я видел мысленным взором, скорее подписывайте акт сдачи-приемки. Это - валидация Однако во многих других ситуациях утверждение проектирования может быть более сложным. Например, мож ет потребоваться соответствие продуктов или компонентов, используемых в электрических или электронных системах, с требованиями к р абочим характеристикам, установленными организациями с другой системой проект ирования. В такой ситуации утверждение проекта мо жет быть завершено только путем получения информации о рабочих х арактеристиках продуктов или компонентов (предпочтительно в виде официальных результатов тестов) от организаций с такой системой проектирования или при п омощи пользователей таких продуктов или компонентов. Другой пример трудной ситуации - это когда утверждение проектирования проводится клиентом или какой -либо другой внешней организацией (например, для подтверждения архитектурного проектиров ания). В таких сложных ситуациях организации придет ся искать договоренности с соответствующими внешними сторонами по способу пр оведения утверждения проектирования и доведения до них результатов. В такой ситуации для завершения утверждения проектирования в пл анирование проектирования и разработки необходимо включить снабжение. 2. Разработка ПО - специфичекое применение стандарта 9001, для интерпритации которого разработан стандарт ISO/IEC 90003:2004 Software engineering -- Guidelines for the application of ISO 9001:2000 to computer software. Применительно профилю деятельности разработкчиков ПО, это обеспечивается: - верификация - тестирование ПО и рецензирование докуметации; - валидация - санкционирование поставки продукции + приемка пр одукции заказчиком (опять тесты) 3. Валидацией принято называть комплекс экспериментов по изучению технологических процессов с целью получения документальных доказательств того, что результат этих процессов при (определенных условиях) всегда будет отвечать поставленным требованиям. Это сложная и кропотливая работа для многих отраслей, которая включает использование статаппарата. Верификация же - это просто проверка все ли делается (сделано) так, как планировалось? В основном - в отношении документации, т.к. проверка продукции - это уже контроль качественных и количественных показателей... 4. Деятельность по подтверждению может включать: (верификация) - осуществление альтернативных расчетов; - сравнение научной и технической документации по новому проекту с аналогичной документацией по апробированному пр оекту; - проведение испытаний и демонстраций; - анализ документов до их выпуска. (валидация) Условия применения могут быть реальными или смоделирова нными. 5. Под верификацией можно понимать: проверку соответствия комплекта проектной документации требованиям технического задания. Под валидацией можно понимать: 1. Испытание макета подводной лодки в бассейне, имитирующем реальные условия; 2. "Развал" самолёта в аэродинамической трубе; 3. Комплексное апробирование (или был ещё такой термин межведомственные испытания) комплекта аппаратуры с последующей приёмкой комиссией Терминология Термин Алгоритм Буфер Граф (graph) Пояснение набор конечного числа правил, задающих последовательность выполнения операций, для решения задачи определенного типа. Свойства алгоритма: 1. конечность – алгоритм всегда должен заканчиваться после выполнения конечного числа шагов. Процедура, обладающая всеми характеристиками алгоритма, за исключением, возможно, конечности, называется методом вычислений. Реализуемый на практике алгоритм должен иметь не просто конечное, а достаточно ограниченное, разумное число шагов. 2. определенность – каждый шаг алгоритма должен быть точно определен. Действия, которые нужно выполнить, должны быть строго и недвусмысленно определены для каждого возможного случая. При описании алгоритмов обычным языком существует возможность неточного понимания идеи автора. Для преодоления этого затруднения для описания алгоритмов были разработаны формально определенные языки программирования, или машинные языки, в которых оператор имеет строго определенное значение. Метод вычислений, выраженный на языке программирования, называется программой. 3. ввод – величины которые задаются до начала его работы или определяются динамически во время его работы. Входные данные берутся из определенного набора объектов. 4. вывод – величины, имеющие определенную связь с входными данными. эффективность – способность точного выполнения с использованием простых операторов в течение конечного промежутка времени. 1. область памяти, используемая программистом для хранения данных в/в. 2. часть устройства в/в в которой сохраняется информация во время ее передачи; 3. любой человек или предмет, который служит для смягчения удара; Множество точек (называемых вершинами (vertices)) вместе с набором линий (называемых ребрами (edgws)), которые соединяют определенные пары вершин. Две вершины называются смежными (adjacent) если их соединяет ребро. Граф называется связным (connected), если существует путь между любыми двумя его вершинами. Циклом называется простой путь длиной, большей или равной трем, от некоторой вершины к ней самой. Или дерево без корня определяется как связный граф без циклов. Свободное дерево (free tree) Путь максимальной длины в ориентированном ациклическом графе. Критический Его длина является минимальной из всех возможных высот у яруснопуть графа Путь критический параллельной формы данного ациклического графа. При аналитическом задании графа нахождение длины его критического пути как функции внешних параметров задачи является одной из важных задач при распараллеливании алгоритмов. При этом даже в случае, когда алгоритм относится к простому, например, линейному классу, заранее нельзя предугадать, к какому классу функций будет относиться длина критического пути. Скажем, существуют простые примеры, опровергающие гипотезу принадлежности этой функции к классу полиномов. Один из способов определения длины критического пути предполагает движение от конечной вершины к начальной с определением в процессе движения наиболее раннего времени наступления события. Непрерывная последовательность работ и событий от начального до конечного события, требующая наибольшего времени для ее выполнения.(Управление организацией: Энциклопедический словарь.-М., 2001) Центральное понятие методов сетевого планирования и управления. Работы критического пути не имеют резервов времени. Знание критического пути позволяет сосредоточить на соответствующих работах дополнительные силы и средства и, сократив этот путь, ускорить достижение общей цели всего комплекса мероприятий.(Управление организацией: Энциклопедический словарь.-М., 2001 Critical Path Критический путь Совокупность операций, определяющих продолжительность проекта. В детерминированной модели критический путь обычно определяется операциями, временной резерв которых меньше либо равен заданной величине (как правило, нулю). Критический путь – самый продолжительный путь в проекте. См. Метод критического пути. Оглавление