Главная страница
Навигация по странице:

  • Рис. 1. Массив примитивов (вариант 1)

  • Рис. 2. Массив примитивов (вариант 2)

  • Рис. 3. Массив примитивов (вариант 3)

  • Библиотека параметризуемых функций (LPM)

  • Hierarchy Down

  • Таблица 9. Мегафункции логических вентилей

  • Таблица 10. Мегафункции арифметических компонентов

  • Таблица 12. Другие мегафункции

  • Таблица 13. Мегафункции мегаядра

  • Таблица 14. Порты входа Имя порта

  • Таблица 15. Порты выхода Имя порта

  • Параметр Тип Необходим Описание

  • Таблица 16. Функции вентилей "И" Входы

  • Учебник по языку ahdl оглавление Введение 2 Элементы языка ahdl 3 Структура описания проекта на языке ahdl 25


    Скачать 0.61 Mb.
    НазваниеУчебник по языку ahdl оглавление Введение 2 Элементы языка ahdl 3 Структура описания проекта на языке ahdl 25
    Дата28.04.2019
    Размер0.61 Mb.
    Формат файлаdoc
    Имя файлаahdl.doc
    ТипУчебник
    #75494
    страница6 из 18
    1   2   3   4   5   6   7   8   9   ...   18

    1.12.Прототипы логических функций

    1.12.1.Примитивы


    MAX+PLUS II обеспечивает большое многообразие примитивных функций для разработки схем. Так как AHDL и VHDL логические операторы, порты и некоторые операторы замещают примитивы в AHDL и VHDL файлах, то примитивы являются подмножеством их, доступных для GDF файлов, как показано ниже.

    Примитив - один из основных функциональных блоков, применяющийся для проектирования схем с помощью программы MAX+PLUS II. Примитивы используются в графических файлах (.gdf), текстовых файлах (.tdf), и VHDL файлах (.vhd).

    Символы примитивов для графического редактора поставляются в директории \maxplus2\max2lib\prim, созданной во время инсталляции.

    Прототипы функций встроены в программу MAX+PLUS II.

    1.12.2.Массивы примитивов


    Массив примитивов - это примитив, который представляет несколько идентичных примитивов. Вы можете использовать примитивные массивы для создания более компактных GDF или OrCAD Schematic файлов путем ввода единственного примитива, который экстрактор списков связей компилятора переведет в несколько примитивов.

    Вы можете создать примитивный массив двумя способами:

    • Если все порты символа (pinstub) примитива соединяются с шинами, состоящими из n членов, примитив переводится в массив n индивидуальных примитивов. Каждый индивидуальный узел шины соединяется с соответствующим портом символа каждого индивидуального примитива в массиве. Например



    Рис. 1. Массив примитивов (вариант 1)

    В этом примере примитивный массив создается при соединении трех шин A[0..2], B[0..2], и C[0..2] с двумя выводами INPUT, выводом OUTPUT и вентилем AND2.

    Во время обработки компилятор переводит этот примитивный массив в 6 выводов INPUT, 3 вывода OUTPUT и 3 вентиля AND2 следующим образом:
    Один AND2 вентиль соединяется с узлами A0, B0, и C0.

    Один AND2 вентиль соединяется с узлами A1, B1, и C1.

    Один AND2 вентиль соединяется с узлами A2, B2, и C2.

    Входные выводы A0, A1, и A2 соединяются с узлами A0, A1, и A2, соответственно.

    Входные выводы В0, В1, и В2 соединяются с узлами В0, В1, и В2, соответственно.

    Выходные выводы С0, С1, и С2 соединяются с узлами С0, С1, и С2, соответственно.

    Примитивы выводов INPUT, INPUTC, OUTPUT, OUTPUTC, BIDIR, или BIDIRC, которым даны шинные имена переводятся в массив примитивов. Вы не можете использовать перечислимое имя шины для обозначения примитива вывода.

    • Если некоторые порты символа примитива соединяются с шинами с n членами, а некоторые с одиночными узлами, примитив переводится в массив n примитивов. В этом случае каждый индивидуальный узел шины соединяется с соответствующим портов символа каждого примитива в массиве, а каждый узел, который не является частью шины, соединяется с тем же самым портом символа каждого примитива. Например



    Рис. 2. Массив примитивов (вариант 2)

    Для создания массива примитивов необходимо обозначить все используемые узлы и шины, за исключением тех случаев, где имена узлов и шин не обязательны:

    • Одиночный узел, который соединяется с примитивным массивом.

    • Шинный проводник, который соединяется с примитивным массивом, если не меньше одного сегмента сети, которая содержит этот проводник, явно обозначено перед любыми точками соединения или, если сеть соединяется с выводом с шинным именем. Например,



    Рис. 3. Массив примитивов (вариант 3)

    Вы не можете вводить присваивания для проб и ресурсов символов примитивов, которые используются для создания примитивных массивов. Обратитесь в раздел Принципы работы с присваиваниями.

    Проба - уникальное имя, связанное с любым узлом, например, вход или выход примитива, мегафункции или макрофункции, которое можно использовать вместо полного иерархического имени узла в любом месте MAX+PLUS II. Таким образом пробное имя обеспечивает быструю идентификацию узла.

    Примитивы буферов

    CARRY OPNDRN

    CASCADE SOFT

    EXP TRI

    GLOBAL (SCLK) WIRE (только GDF)

    LCELL (MCELL)

    Примитивы триггеров и защелок

    DFF SRFF

    DFFE SRFFE

    JKFF TFF

    JKFFE TFFE

    LATCH

    Примитивы/Порты входов и выходов

    BIDIR или INOUT BIDIRC (только GDF)

    INPUT или IN INPUTC (только GDF)

    OUTPUT или OUT OUTPUTC(толькоGDF)

    Логические примитивы

    AND NOR

    BAND (только GDF) NOT

    BNAND (только GDF) OR

    BNOR (только GDF) VCC (только GDF)

    BOR (только GDF) XNOR

    GND (только GDF) XOR

    NAND

    Другие примитивы (только GDF)

    CONSTANT

    PARAM

    Title Block

    Прототипы функций для примитивов в TDF файлах не нужны. Однако Вы можете переопределить порядок вызова входов примитива, вводя оператор Function Prototype в Ваш TDF.

    1.12.3.Макрофункции


    MAX+PLUS II предлагает свыше 300 макрофункций.

    Имена шинных макрофункций оканчиваются на букву В. Они функционально идентичны с соответствующими не шинными макрофункциями, но имеют сгруппированные входные и/или выходные выводы.

    Для просмотра схемы или AHDL файла содержащего макрофункцию, укажите символ макрофункции в графическом редакторе или имя макрофункции в текстовом редакторе и выберите Hierarchy Down (меню File).

    Категории макрофункций:

    Сумматоры Триггеры-защелки

    АЛУ Умножители

    Буферы Мультиплексоры

    Компараторы Генераторы четности

    Конвертеры Быстрые умножители

    Счетчики Регистры

    Декодеры Сдвиговые регистры

    Цифровые Регистры хранения

    фильтры

    EDAC SSI функции

    Шифраторы Элементы ввода/вывода

    Делители частоты

    1.12.4.Мегафункции и библиотеки параметризуемых модулей


    Параметризуемая функция - логическая функция, использующая параметры для достижения масштабируемости, адаптируемости и эффективной реализации в кремнии.

    Библиотека параметризуемых функций (LPM) - технологически-независимая библиотека логических функций, параметризуемая для достижения масштабируемости и адаптируемости. Altera реализовала параметризуемые модули (называемые также параметризуемые функции) из LPM в версии 2.1.0, которые предлагают архитектурно-независимый ввод проекта для всех, поддерживаемых MAX+PLUS II устройств. Компилятор включает встроенную поддержку компиляции LPM для функций, используемых во входных файлах (схемном, AHDL, VHDL, и EDIF).

    Мегафункция - сложный или высокоуровневый строительный блок, который можно использовать совместно с примитивами вентилей и триггеров и/или с макрофункциями старого типа в файлах проекта.

    Altera поставляет библиотеку мегафункций, включая функции из библиотеки параметризуемых модулей (LPM) версии 2.1.0, в директории \maxplus2\max2lib\mega_lpm, созданной во время инсталляции.

    Для просмотра файла, содержащего логику мегафункции, укажите символ мегафункции в графическом редакторе или ее имя в текстовом редакторе и выберите Hierarchy Down (меню File).

    Мегафункции Мегаядра - предварительно проверенные HDL файлы для сложных функций системного уровня, которые можно приобрести у Altera. Они оптимизированы под архитектуры FLEX 10K, FLEX 8000, FLEX 6000, MAX 9000, и MAX 7000 устройств. Мегафункции Мегаядра состоят из нескольких файлов. Файл для последующего синтеза используется для реализации проекта (подгонки) в заданном устройстве. Кроме этого прилагаются VHDL или Verilog HDL функциональные модели для проектирования и отладки со стандартными EDA средствами моделирования.

    Altera поставляет библиотеку мегафункций, включая любые приобретаемые мегафункции Мегаядра в директории \maxplus2\max2lib\mega_lpm, созданной во время инсталляции.

    Если Ваш код доступа для мегафункции Мегаядра содержит разрешение просмотра источника файла проекта, Вы можете просмотреть его, указывая символ мегафункции в графическом редакторе или имя в текстовом редакторе и выбирая Hierarchy Down (меню File).

    MAX+PLUS II предлагает большое разнообразие мегафункций, включая LPM функции а также параметризуемые функции.

    Ниже приводится список мегафункций.

    Таблица 9. Мегафункции логических вентилей

    lpm_and

    lpm_inv

    lpm_bustri

    lpm_mux

    lpm_clshift

    lpm_or

    lpm_constant

    lpm_xor

    lpm_decode

    mux

    busmux




    Таблица 10. Мегафункции арифметических компонентов

    lpm_abs

    lpm_counter

    lpm_add_sub

    lpm_mult

    lpm_compare




    Таблица 11. Мегафункции запоминающих компонентов

    csfifo

    lpm_ram_dq

    csdpram

    lpm_ram_io

    lpm_ff

    lpm_rom

    lpm_latch

    lpm_dff

    lpm_shiftreg

    lpm_tff

    Таблица 12. Другие мегафункции

    clklock

    pll

    ntsc




    Таблица 13. Мегафункции мегаядра

    a16450

    a8255

    a6402

    fft

    a6850

    rgb2ycrcb

    a8237

    ycrcb2rgb

    a8251




    Ниже приводится описание наиболее часто применяемых мегафункций. Полные сведения по всем мегафункциям можно найти в системе помощи (меню Help, команда Megafunctions/LPM).
    lpm_and (вентиль И)
    Altera рекомендует использовать примитивы вентилей И или их операторы вместо lpm_and для более легкой реализации и улучшения времени компиляции. Тем не менее lpm_and могут быть полезны при необходимости иметь параметризуемые входы.
    Прототип функции

    FUNCTION lpm_and

    (data[LPM_SIZE-1..0][LPM_WIDTH-1..0])

    WITH (LPM_WIDTH, LPM_SIZE)

    RETURNS (result[LPM_WIDTH-1..0])

    Порты :

    Таблица 14. Порты входа

    Имя порта

    Необходим

    Описание

    Комментарии

    data[][]

    Да

    Вход данных в вентиль И

    Размер порта LPM_SIZE x LPM_WIDTH

    Таблица 15. Порты выхода

    Имя порта

    Необходим

    Описание

    Комментарии

    result[]

    Да

    Побитовое И.

    Размер порта LPM_WIDTH.

    Параметры

    Параметр

    Тип

    Необходим

    Описание

    LPM_WIDTH

    Целый

    Да

    Ширина портов data[][] и result[]. Количество AND вентилей.

    LPM_SIZE

    Целый

    Да

    Количество входов в каждый AND вентиль. Количество входных шин.

    Таблица 16. Функции вентилей "И"

    Входы

    Выходы

    data[LPM_SIZE-1]_[LPM_WIDTH-1]

    result[LPM_WIDTH-1]

    0XXX...

    0

    X0XX...

    0

    XX0X...

    0

    ...

    ...

    1111...

    1

    Используемый ресурс:

    Простые вентили lpm_and используют приблизительно одну логическую ячейку на вентиль.

    1.12.5.Не используемые входы примитивов, мегафункций и макрофункций


    К не подсоединенным входным портам примитива, мегафункции, символов макрофункций и экземпляров применяются следующие правила.

    • Не используемые входы примитивов триггеров имеют следующие значения по умолчанию:


    CLRN: VCC (неактивный)

    PRN: VCC (неактивный)

    ENA: VCC (активный)


    • Требуются входы data и Clock в триггеры и входы data и ENA в защелки.

    • Неиспользуемый вход OE буфера TRI по умолчанию имеет значение VCC (активный).

    • В файлах графического редактора неиспользуемые входы логических примитивов должны соединяться с VCC или GND.

    • Логические уровни по умолчанию для неиспользуемых входов макрофункций документированы в Помощи для каждой макрофункции.

    • В отличии от макрофункций, мегафункции могут не иметь значений по умолчанию для входов в некоторые порты и неудачное соединение таких портов приведет к выдачи компилятором сообщений об ошибке.
    1   2   3   4   5   6   7   8   9   ...   18


    написать администратору сайта