8-900-374-94-44
[email protected]
Slide Image
Меню

Vhdl самоучитель: VHDL с нуля. / ПЛИС / Сообщество EasyElectronics.ru

Содержание

Краткий курс HDL. Часть 1. Введение

Все статьи цикла

Почему был написан этот материал?

Когда-то, в очень старые времена, в газетах журналисты применяли такую расхожую фразу — «письмо позвало в дорогу». Вот отрывки из письма Дмитрия, студента одного из российских университетов: «А книжку, которую Вы порекомендовали, в нашей библиотеке не нашел…», «…так как вижу, что спрос на литературу по ПЛИС (по крайней мере, здесь) очень велик… Спрос намного превышает предложение. Я считаю, что нужна книга с реализацией проекта от нуля до чего-то стоящего, и желательно для начинающих. В общем-то, Вы ближе всего подошли к решению данного вопроса».

Но для того чтобы автор смог решиться на такой шаг, как написание, пусть и небольшого, но все же учебного курса, понадобилось несколько лет общения с молодыми коллегами, студентами и преподавателями из различных университетов. Конечно, этот курс не заменит настоящего, полного изучения предмета, но все же автор надеется, что «Краткий курс HDL» (далее — КК) окажется полезным, в первую очередь тем, кто изучал цифровую схемотехнику по «безумно облегченным» университетским программам. Безусловно, есть хорошие книги и на русском языке, но, во-первых, большинство из них «про VHDL», а во-вторых, прочтите еще раз первую фразу из письма Дмитрия: эти книги почти недоступны студентам.

И еще надо добавить следующее. В отличие от многих изданий, выпущенных университетскими преподавателями, автор не ставил себе целью получить «учебник для изучения по программе ПЛИС за 4-й курс». Возможно, этот КК кому-то покажется сложным или избыточным. Может быть, кто-то из читателей захочет высказать свои замечания, предложения или прислать свои примеры. Пожалуйста, напишите об этом. Все ваши предложения будут учтены и размещены на сайте автора.

 

Несколько слов о студентах

Автор не берется судить обо всех предметах, изучаемых сегодня в вузах по различным направлениям «электронных специальностей». Но общение со студентами и преподавателями ведущих петербургских вузов и письма читателей, обучающихся в различных университетах страны, наводят на довольно грустные размышления. Подведем итог: студентов многих, даже приборостроительных специальностей, вообще не учат технологии проектирования с применением FPGA, либо учат только «картинкам» (схемное описание проекта), либо дают только некоторые и очень краткие теоретические сведения по отладке проектов, но без практики на реальных аппаратных платформах.

Автор надеется, что читатели все же имеют некоторый опыт работы с электронными приборами. По крайней мере умеют читать схемы и понимают то, как работают простейшие узлы цифровых схем: триггеры, счетчики, мультиплексоры и т. д. Поэтому данный КК строится так, чтобы облегчить переход от схемных описаний устройств к описаниям на HDL. Но для того чтобы объяснить некоторые базовые принципы, сделано довольно подробное введение в КК.

 

Как будет сформирован КК?

Обычно все авторы стараются сделать свои учебники всеобъемлющими. Они стараются как можно более полно изложить материал, предназначенный для изучения. Масса примеров и тонкостей, много сокращений и специальных терминов — это обычное дело для таких книг. Однако для реальной жизни нужно совсем другое. Когда-то, очень давно, в 1977 году, автору посчастливилось купить переводную книгу издательства «Мир». Она называлась «Справочник по нелинейным схемам». Стиль изложения материала в этой книге был выбран очень необычный и не походил на все то, что издавалось у нас в стране. Книга была разделена на три части. Первая часть, объем которой не превышал 15%, содержала небольшое введение и «готовые к употреблению» схемы логарифматоров и перемножителей. Нужен синусно-косинусный генератор — вот схема, перечень компонентов, небольшое описание к ней. Вторая часть книги, примерно 35% от ее объема, представляла подробные примеры расчета и синтеза тех же самых логарифматоров и перемножителей. Но в этом разделе книги можно было посмотреть и быстро пересчитать основные характеристики схемы.

А вот третья часть, она занимала почти половину книги, представляла собой очень подробное описание все тех же самых логарифматоров и перемножителей. Но только теперь были рассмотрены все параметры, влияющие на точность работы такого узла: и частотные, и температурные.

Почему потребовалось столь подробное описание структуры книги?

Да потому, что и «Краткий курс HDL» тоже хочется построить таким же образом. Если стоит задача сделать простой проект и довольно быстро, то 500–600 страниц англоязычного текста оказываются довольно серьезной преградой. Мало того, множество подробностей и тонкостей, возникающих при изучении языка, требуют много времени и сил. Именно поэтому автор стремился преследовать только одну цель: упростить разработку проектов с применением HDL-кодирования. Облегчить переход от проектирования в «картинках» к проектированию на языках HDL. Изучение такого «Краткого курса HDL» будет первым шагом на пути освоения методики проектирования на языках HDL. Тот, кто посчитает для себя необходимым сделать дальнейшие шаги по изучению HDL-кодирования, всегда сможет найти для себя «толстый» учебник и развить свои способности. Еще раз хочется подчеркнуть, что изучение языка — это не самоцель, это только средство для успешного выполнения проектов. И в данном контексте хочется привести лишь один пример. При создании тест-бенча можно делать поведенческое описание тестирования, а можно сделать подробное описание на уровне триггеров и вентилей, такое же, как описание самого тестируемого объекта. Безусловно, поведенческое описание гораздо легче создать. Но это надо уметь делать! И если стоит задача выполнить это быстро, а на изучение того, как это должно быть сделано, у вас нет времени, то структурное описание окажется создать легче, хотя и кода там будет больше, да и выглядит оно не так «красиво»…

И, наконец, еще одно замечание.

Первоначально «Краткий курс HDL» планировался только как очень краткое описание синтезируемых конструкций. Но в процессе работы над материалом автор пришел к твердому убеждению, что сегодня этого мало даже для краткого курса. Сейчас необходимо не только уметь быстро сформировать файл для микросхемы FPGA, содержащий пару счетчиков и дешифраторов. Разработчику необходимо уметь симулировать проект не на уровне отдельной микросхемы, а на уровне всей платы, содержащей FPGA, память и микроконтроллеры. А это подразумевает, что необходимо иметь очень четкое представление о том, как должна работать модель, как задать задержки и какие именно задержки в ней необходимы. Поэтому, сохранив первоначальное название, автор значительно расширил описание языковых конструкций и добавил большее количество примеров. Что же касается дополнительных разделов, то это, можно сказать, отдельные главы, и они более подробно описывают наиболее часто встречающиеся при проектировании проблемы.

Итак, вот что будет предложено читателям.

  • Часть 1 — введение.
  • Часть 2 — описание языка. Оно довольно подробное и занимает много места.
  • Часть 3 — о написании кода. Что и как надо делать для того, чтобы проект легко читался и сопровождался.
  • Часть 4 — шаблоны текстовых файлов. Где они находятся в программных инструментах.
  • Часть 5 — написание кода, независимого от аппаратной платформы. Примеры кода для наиболее распространенных цифровых узлов схем — триггеров, регистров, счетчиков. Этот раздел можно воспринимать как справочный.
  • Часть 6 — написание кода, зависимого от аппаратной платформы.
  • Часть 7 — несколько слов об отладке проекта. Что и как надо делать для симуляции и отладки.
  • Часть 8 — моделирование в ModelSim SE. Небольшой проект, представляющий собой пример кода, необходимый для тестирования устройства, содержащего FSM и программируемый таймер. Работа с файлами.
  • Часть 9 — более подробно о параметризируемых модулях.
  • Часть 10 — более подробно о сигнале «Сброс».
  • Часть 11 — более подробно об асинхронных частотах и о пересечении клоковых доменов.

 

Немного философии

Герой известного кинофильма объяснял стратегию при помощи картошки. Ну, а мы, чтобы не отстать от классического шедевра, попробуем начать с яблок. Яблоки, какие они? Круглые, сочные, красные, «на снегу», «эх, яблочко» и так далее. Все это характеристики объекта, причем, ни одна из этих характеристик не описывает предмет целиком, а дает только свою часть описания. Точно таким же образом инженеры описывают разрабатываемое изделие. И на каждое изделие существует определенное стандартом количество документов, которые все вместе полностью описывают конкретное изделие. И называются они комплект конструкторской документации (КД). Каждый из входящих в него документов описывает какую-то одну сторону изделия. И при разработке узла какого-либо устройства нас в первую очередь будет интересовать то, какую функцию он выполняет, из чего состоит, как связан с другими узлами разрабатываемого изделия и по какому алгоритму работает.

И еще немного философии. При описании объектов люди пользуются различными абстракциями. Чаще всего в качестве абстрактного образа используется уличный светофор. Наверное, нет необходимости объяснять, почему… Точно так же и в схемотехнике. Кружочек, три черточки, одна поперечная линия и одна стрелка — это не описание транзистора, а только его условное обозначение на схеме. Но оно связано с описанием работы транзистора, возможно, оно связано и с его конструкцией. Таким образом, рассматривая условное графическое обозначение, можно представить то, как именно этот компонент будет работать. Более того, обычно мы рассматриваем компонент в схеме, то есть во взаимосвязи с другими компонентами. И опытный специалист, глядя на схему, в подавляющем большинстве случаев сразу скажет вам, как работает тот или иной ее узел.

Теперь давайте вспомним, что бывают такие схемы, которые не помещаются на одном листе. Или, например, какой-то фрагмент схемы повторяется многократно. Что делается в этом случае? Фрагмент выделяется в отдельный чертеж. При этом весь проект становится иерархическим. То есть на самом верхнем уровне чертеж состоит из прямоугольников, которые представляют собой части схемы, выделенные в отдельные чертежи. Те, кто программировал на языке высокого уровня, тут же вспомнят вызов функций. Действительно, принцип тот же самый. На более высоком уровне описания объекта присутствуют только «главные» характеристики объекта, а все то, что не соответствует этому уровню, находится в низших уровнях описания. То есть в описании функций или в тех самых отдельных чертежах, о которых шла речь ранее. Для примера можно представить себе механизм от заводной детской игрушки (наверное, каждый читатель имел в детстве опыт по «изучению внутренностей» заводных игрушек…). Что есть у такого механизма? Есть место, куда вставляется ключ, для того чтобы эту игрушку заводить, а из механизма выходит ось, которая вращает колеса игрушки. Все остальное сейчас для нас не так интересно: оно скрыто в корпусе механизма. Так что же с точки зрения схемотехники представляют эти два «внешних» для игрушечного механизма момента? Это две «точки подключения» механизма к остальному устройству. Точно так же и в схемотехнике: при создании иерархического проекта нас будет интересовать только то, как функционируют «квадратики», то есть то, что выделено в отдельные блоки, и как они подключаются ко всем остальным цепям верхнего проекта.

Теперь надо рассмотреть еще один момент. Если мы выделяем из схемы только один фрагмент и представляем его в виде «квадратика» на верхнем уровне, то тут все понятно. Что же происходит, когда надо компактно изобразить на чертеже верхнего уровня несколько одинаковых фрагментов? Решение здесь точно такое же. Выделяется унифицированный фрагмент схемы и из него делается чертеж нижнего уровня. А на верхнем уровне помещается столько «квадратиков», сколько нам нужно этих унифицированных узлов. Но как же мы узнаем, где и какой фрагмент находится и куда он подключается? По именам, которые мы даем при установке компонента в схему. Чтобы представить себе эту ситуацию более наглядно, вспомним, что комплект КД — это тоже только описание изделия. А вот серийные изделия на конвейере — это как раз полный аналог нашего случая. Так чем же отличаются новенькие автомобили, сходящие с конвейера? Они отличаются только своим «именем» — серийным номером.

Или другой пример: берем Си++, смотрим описание какого-нибудь класса. А также на то, как производится работа с экземпляром данного класса. Вот теперь мы подошли к объяснению терминов “instance” и “instantiate”. Фрагмент схемы, выделенный в описание нижнего уровня, будем называть “instance” — компонент. Размещение на схеме верхнего уровня такого фрагмента в виде блока будем называть установкой компонента — “instantiate”.

Итак, мы выяснили, что обсудим только часть описания изделия. Мы не будем обсуждать физическую сущность, конструкцию и прочее, все то, что не относится к схемотехнике. Мало того, «за кадром» останутся вопросы, связанные с алгоритмом функционирования. Они должны быть описаны в отдельном документе. Здесь же мы будем рассматривать только вопросы схемотехники. И так же, как при рассмотрении классических схем, можно сказать о том, как работает тот или иной узел, точно так же это суждение можно составить из HDL-описания блока. Но еще раз хочется напомнить, что классическое описание алгоритма работы устройства всегда должно быть сделано.

 

Языки программирования и языки описания аппаратуры

В чем же разница и в чем сходство таких языков? Мы уже выяснили, что любой предмет можно и нужно описывать следующим образом:

  1. В какой предметной области данный предмет применяется?
  2. Цели/задачи, для которых он предназначен?
  3. Из чего состоит предмет?
  4. Как эти части взаимодействуют?
  5. Как предмет взаимодействует с внешней средой?

Начнем с языков программирования

Будем считать, что читатель уже имел дело, пусть хотя бы и поверхностно, с одним из таких языков. (Ну, а если вы еще не работали с языками программирования, то вспомните ваши действия по управлению телевизором или СВЧ-печкой…). Язык программирования задает последовательность действий в фиксированной среде. Представим, что мы программируем микроконтроллер. Сам микроконтроллер от наших действий не меняется. Меняется только порядок обработки данных, поступающих в микроконтроллер и выдаваемых из него. При этом программист знает, что структура микроконтроллера и описание его команд приводятся в его комплекте документации. Микроконтроллер под управлением потока команд обрабатывает данные последовательно. Да, конечно, существуют процессоры, которые за один такт «умеют» выполнять несколько команд, есть каналы DMA, которые пересылают данные на периферийные узлы микроконтроллера для дальнейшей автономной обработки, но все же, в целом, обработка данных идет последовательно. Представим, что мы хотим произвести инкремент 100 переменных. Тогда в тексте программы это будет выглядеть так:

Х0++;
Х1++;
….
Х99++;

Можно сказать так: если представить, что каждая команда выполняется за один такт, то такой фрагмент программы будет выполнен микроконтроллером за 100 тактов.

Язык описания аппаратуры

Язык описания аппаратуры, в противоположность языку программирования, описывает связи в устройстве. А функционирование устройства будет происходить в соответствии с теми внешними воздействиями, которые будут к нему приложены. То есть разработчик аппаратуры, в соответствии с заданием для разработки, выбирает состав устройства и описывает этот состав и все связи устройства, пользуясь тем, что алгоритм его работы описан в комплекте документации или, если говорить более точно, в техническом задании, входящем в этот комплект. Поскольку составные части устройства могут работать независимо друг от друга, то для примера с инкрементированием 100 переменных на аппаратном уровне нужен будет всего лишь 1 такт. Конечно, скажет читатель, это же аппаратные «штучки», так можно сделать все, что разработчику угодно… Действительно, это так, но речь сейчас о другом. Дело в том, что в тексте описания аппаратуры, так же как и в тексте описания программы, будут присутствовать 100 строк примерно такого вида:

Хn = Хn +1;

Таким образом, внешне все очень похоже. Но только внешне. А по сути это будут 100 одновременных процессов. Необходимо еще раз подчеркнуть, что все процессы, изложенные на языке описания аппаратуры, идут одновременно. Конечно, языки описания аппаратуры кроме возможностей, предоставляемых структурным описанием, имеют набор возможностей и для поведенческого описания. Да, можно описать то, как должно работать устройство. Но здесь необходимо отметить, что поведенческое описание не всегда можно превратить в загружаемый в микросхему FPGA файл. Только самые элементарные поведенческие описания компилируются в синтезируемые конструкции. И из этого описания компилятор синтезирует опять только связи внутри устройства. А алгоритм работы на все устройство, как в целом, так и в этом случае, будет зависеть от связей и от входных воздействий на данное устройство.

Чем еще отличаются эти языки?

Текст программы на языке программирования пишется для того, чтобы он исполнялся на процессоре. Конечно, программа может быть написана на языке высокого уровня, который сам по себе не зависит от аппаратной платформы. Но компилятор с языка высокого уровня переводит весь текст программы в исполняемый код для определенного целевого процессора, на котором он и выполняется. И в текст программы могут быть добавлены фрагменты, которые позволяют на этапе ее отладки совершать какие-либо дополнительные действия. Можно применить условную компиляцию и вставить дополнительно фрагменты программы, позволяющие гибко перестраивать текст под нужды программиста. Текст описания аппаратуры на HDL-языке пишется и для того, чтобы провести симуляцию работы устройства, и для того, чтобы получить «прошивку», то есть загружаемый в FPGA файл. Поэтому в этих языках есть часть языковых конструкций, которые применяются только для симуляции и не могут быть синтезированы в аппаратные узлы. Разработчик обязан следить за тем, чтобы при описании того узла, который должен быть загружен в FPGA, применялись только синтезируемые конструкции языка или библиотечные компоненты, поставляемые производителем FPGA.

Что же общего у этих языков?

Общее — это то, что проекты и в том, и в другом языке строятся иерархически. Часть кода выделяется в классы, и экземпляры классов инстанциируются в проект. Используются библиотеки.

Далее необходимо отметить тенденцию по объединению этих языков. Дело в том, что сейчас появились версии языков программирования SystemC, System Verilog, позволяющие выполнять проекты на языке Си, с последующей автоматической компиляцией этих проектов на языки HDL.

 

VHDL и Verilog

Когда автора на одной из встреч в университете спросили студенты: «Что же нам надо изучать: VHDL или Verilog?», то ответ был такой: «А вы готовы пренебречь половиной рабочих мест только потому, что вы не захотели выучить оба эти языка?»

Нет нужды объяснять, что, как минимум, надо понимать оба этих языка. А на каком языке специализироваться? Есть такое негласное правило: фирма должна делать разработки на том языке программирования, на котором пишет ее лучший программист. Но, поскольку в нашей стране большинство книг написано университетскими преподавателями, а не разработчиками аппаратуры, то есть явный перекос в сторону VHDL. В то время как довольно большая часть инженеров с успехом пользуется языком Verilog. Поэтому автор уделит значительно больше внимания именно этому языку программирования. Практически, это и будет учебник по языку Verilog, а небольшие вкрапления примеров на VHDL помогут сравнить эти два языка и при необходимости быстрее перейти с одного языка на другой.

 

Переход от «картинок» к HDL

Схемное описание проекта, или «картинки» — это наиболее простое и доступное решение для небольших проектов. Оно, несомненно, наглядно и просто. И на этом все преимущества схемного описания проекта заканчиваются. Можно лишь добавить, что при использовании библиотек компонентов, поставляемых фирмой-изготовителем, удается применять параметризированные компоненты. Недостатки также очевидны. При увеличении сложности и объема проекта объем файлов тоже растет, и отладка такого проекта становится сложной. Более подробно об этом можно будет прочитать в тех разделах КК, где будут описаны методики отладки пользовательских проектов.

 

Несколько слов о терминологии

В любом языке, как в обычном разговорном, так и в техническом, есть свои устоявшиеся нормы и критерии. Есть свои слова для определения объектов и событий, а есть слова заимствованные. Когда заимствованные слова теряют свою новизну, то они воспринимаются уже как свои, «родные». Более сотни лет тому назад в литературных кругах шли дискуссии о «мокроступах» — так предлагали называть калоши некоторые отечественные литераторы, но в обиход вошло «импортное» слово. А когда СССР был ведущей научной державой, то все народы ввели в свои словари и начали применять слово «спутник». То же самое происходит и в других областях знаний. Те термины, которые первыми входят в оборот, получают наиболее широкое употребление. К сожалению, в той области знаний, к которой относится данная книга, наша страна сегодня не является лидером. Поэтому здесь нам приходится пользоваться терминологией, базирующейся на принятых во всем мире англоязычных терминах. Естественно, часть из этих терминов имеет понятный и привычный перевод. Но некоторые из них могут показаться читателю непривычными. Однако поскольку подавляющее большинство литературы в этой области написано на английском языке, то читателю, рано или поздно, придется к такой литературе обратиться. Поэтому автор не считает нужным вводить какие-либо «более литературные термины», для того чтобы читатель мог подготовить себя к чтению англоязычной литературы.

Теперь несколько слов о том, «как это работает». Если вы увидите такое выражение:

2+2 = 4;

то это, конечно, равенство. И тут все должно быть понятно.

Выражение Y = X в математике называют уравнением. А вот в языках HDL смысл такого выражения будет зависеть от того места, где оно приведено. Если выражение используется как математическое, то тут все понятно. А вот в том случае, когда такое выражение применяется для описания передачи сигналов от одних компонентов схемы к другим, его смысл меняется. При описании схемы используются термины операция и операнд. Операнды различаются на те, которые находятся справа и слева от знака операции.

Теперь необходимо познакомиться с теми терминами, которыми пользователь оперирует при описании проекта на языке Verilog.

Термин «назначение на цепь»: assign — назначить; assignment — назначение.

В терминах HDL приведенный пример можно трактовать так. Есть цепи Y — это приемник данных и X — это источник данных. И этим выражением цепи Y назначаются те данные, которые ей передает цепь X. При моделировании под выражениями Y и X понимаются и переменные.

Утверждение. Еще раз обратимся к нашему примеру. Вот такие выражения:

Y = X или Y <= X.

Это не формула, не уравнение. Это нечто совсем другое. В англоязычной литературе для такого выражения применяется термин statement (утверждение).

Драйвер сигнала. Это тот компонент схемы, который управляет сигналом в какой-либо конкретной цепи. Одна цепь может иметь несколько драйверов.

Instance — установленный в проекте пользователя компонент, представляющий собой экземпляр того, что сделано в описании модуля. Аналогичен применяемому в С++ экземпляру класса.

Положительный фронт — переход сигнала из состояния низкого уровня в состояние высокого уровня.

Отрицательный фронт — переход сигнала из состояния высокого уровня в состояние низкого уровня.

Примечание. В данном описании оставлены некоторые термины на английском языке, для того чтобы читатель смог в дальнейшем легко узнать их в англоязычной литературе.

 

Предупреждение об ответственности

Все приведенные в книге примеры являются учебными и могут использоваться в том виде, в каком приведены. Автор не несет ответственности за применение этих примеров читателями в своих разработках.

Продолжение следует

Quartus II по-русски


Главная > Quartus II по-русски

&nbsp Работа в среде Quartus II помимо очевидных плюсов, заложенных инженерами Altera, таит некоторые нюансы, связанные с тонкостями настройки приложений программы и организации ведения проектов Quartus II. Неочевидным минусом является то, что программа и документация к ней написаны на родном языке её авторов, а значит на неродном для большинства русскоговорящего контингента инженеров. Нарастающая сложность проектов требует внимания к деталям, а значит научиться думать на двух языках одновременно. Избежать возможной неопределённости можно с помощью документов раздела «Quartus II по-русски».
Приятного чтения!


СОДЕРЖАНИЕ
«Вводный курс Quartus II для пользователей Verilog»
«Инкрементная компиляция в Quartus II для иерархических и командных проектов»
«Tcl скриптирование»
«Симуляция проекта с помощью инструментов EDA»
«Поддержка Mentor Graphics ModelSim/QuestaSim»
«Временной анализатор Quartus II TimeQuest»
«Лучшие примеры для временного анализатора Quartus II TimeQuest»
«Экосистема отладки в чипе»
«Быстрая отладка проекта с помощью SignalProbe»
«Отладка в системе с использованием встроенного логического анализатора SignalTap II»
«Отладка в системе с использованием внешних логических анализаторов»
«Обновление памяти и констант в системе»
«Отладка в системе с помощью исходников и пробников в системе»
«Отладка цепей приёмопередатчика с помощью System Console»
Вводный курс Quartus II для пользователей Verilog png» vspace=»0″ valign=»right»>
Это небольшой самоучитель по проектированию в программе Quartus II. Существуют две версии этого самоучителя: для разработчиков на языке VHDL и для разработчиков на языке Verilog HDL. Я «прикипел» именно к Verilog HDL, а между двумя этими файлами отличие только в синтаксисе языка HDL. Вводный курс очень полезен начинающим разработчикам.
Инкрементная компиляция в Quartus II для иерархических и командных проектов
Это мой перевод 2 главы 1 раздела 1 тома Quartus II Handbook. Volume 1: Design and Synthesis. 2.Quartus II Incremental Compilation for Hierarchical and Team-Based Design
Без средства «инкрементная компиляция» сложно представить современный проект на ПЛИС. Инкрементная компиляция позволяет зафиксировать уже разработанные части проекта, чтобы они не загружали компилятор, пока будут разрабатываться другие модули; позволяет обмениваться готовыми модулями между разработчиками; планировать размещение будущего проекта в чипе, резервируя место под модули. Облегчает достижение проектом временных ограничений. В общем, значительно экономит ваше время.
Титульный
Введение&nbsp 2-1
Решим, стоит ли использовать процесс инкрементной компиляции &nbsp 2-1
&nbsp Линейный процесс компиляции без создания разделов &nbsp 2-2
&nbsp &nbsp Интеллектуальная компиляция Quartus II &nbsp 2-3
&nbsp Процесс инкрементной компиляции с разделами проекта &nbsp 2-3
&nbsp Нисходящая версия процесса восходящей компиляции &nbsp 2-6
Руководству по быстрому старту – общий подход к процессу инкрементной компиляции &nbsp 2-7
&nbsp Подготовка проекта к нисходящей инкрементной компиляции &nbsp 2-8
&nbsp Компиляция проекта с использованием инкрементной компиляции &nbsp 2-9
Решим, какие блоки проекта будут его разделами &nbsp 2-9
&nbsp Влияние разделов проекта на оптимизацию проекта &nbsp 2-10
&nbsp Отчёты статистики разделов &nbsp 2-11
&nbsp Временные отчёты разделов &nbsp 2-13
&nbsp Советник по инкрементной компиляции &nbsp 2-13
&nbsp Использование разделов с помощью инструментов синтеза сторонних разработчиков &nbsp 2-15
&nbsp &nbsp Synplicity Synplify Pro/Premier и Mentor Graphics Precision RTL Plus &nbsp 2-15
&nbsp &nbsp Другие инструментарии синтеза &nbsp 2-15
&nbsp Сравнение Назначений разделов проекта и Назначений физического размещения &nbsp 2-15
Создание назначений разделов проекта &nbsp 2-16
&nbsp Создание разделов проекта с помощью Планировщика разделов проекта &nbsp 2-16
&nbsp Создание разделов проекта в Окне разделов проекта &nbsp 2-18
&nbsp Создание разделов проекта в Навигаторе проекта &nbsp 2-18
&nbsp Создание разделов проекта с помощью Tcl скриптов &nbsp 2-19
&nbsp Имя раздела &nbsp 2-19
Установка типа списка соединений для раздела проекта&nbsp 2-19
&nbsp Уровень сохранения компоновки &nbsp 2-21
&nbsp Пустые разделы &nbsp 2-22
&nbsp Где хранятся базы данных списков соединений? &nbsp 2-23
&nbsp Какие изменения перезапускают автоматический синтез раздела? &nbsp 2-23
&nbsp &nbsp Определим, когда в разделах перезапускается синтез при изменении исходного кода &nbsp 2-24
&nbsp &nbsp Форсированное использование списка соединений пост-компоновка после внесения изменений в раздел &nbsp 2-25
Создание архитектуры проекта с назначениями локализации LogicLock &nbsp 2-25
&nbsp Привлекательные преимущества Начальной Временной Оценки &nbsp 2-28
&nbsp Какие изменения в LogicLock перезапускают компоновку? &nbsp 2-28
Экспорт и импорт разделов &nbsp 2-29
&nbsp Файлы экспорта разделов Quartus II (. qxp) &nbsp 2-30
&nbsp Общие сведения об инкрементной компиляции в восходящем проектировании &nbsp 2-30
&nbsp &nbsp Подготовка проекта для инкрементной компиляции в восходящем проектировании &nbsp 2-31
&nbsp &nbsp Создание и компиляция проектов нижнего уровня &nbsp 2-31
&nbsp &nbsp Экспорт низкоуровневых проектов &nbsp 2-32
&nbsp &nbsp Включение или импорт низкоуровневых проектов в головной проект &nbsp 2-32
&nbsp &nbsp Выполнение инкрементной компиляции в головном проекте &nbsp 2-32
&nbsp Типы списков соединений для импортированных разделов &nbsp 2-33
&nbsp Экспорт низкоуровневого раздела для использования его в головном проекте &nbsp 2-34
&nbsp Экспорт низкоуровневого блока внутри проекта &nbsp 2-35
&nbsp Использование .qxp файла в качестве исходного файла в головном проекте &nbsp 2-36
&nbsp Импорт низкоуровневого раздела в головной проект &nbsp 2-36
&nbsp Импорт назначений и расширенные настройки импорта &nbsp 2-38
&nbsp &nbsp Свойства разделов проекта после импортирования &nbsp 2-38
&nbsp &nbsp Импортирование назначений раздела из подпроекта &nbsp 2-38
&nbsp &nbsp Файлы Ограничений Проекта Synopsys для временного анализатора Quartus II TimeQuest &nbsp 2-38
&nbsp &nbsp Импортирование назначений LogicLock &nbsp 2-38
&nbsp &nbsp Импорт других назначений для блоков &nbsp 2-39
&nbsp &nbsp Импорт глобальных назначений &nbsp 2-39
&nbsp &nbsp Расширенные настройки импорта &nbsp 2-39
&nbsp &nbsp &nbsp Позволить создавать новые назначения &nbsp 2-39
&nbsp &nbsp &nbsp Снабдить назначениями все модули в импортированном блоке &nbsp 2-39
&nbsp &nbsp &nbsp Назначение разрешения конфликтов: регионы LogicLock &nbsp 2-39
&nbsp &nbsp &nbsp Назначение разрешение конфликтов: прочие назначения &nbsp 2-40
&nbsp Генерация скриптов раздела восходящего проектирования для менеджера проекта&nbsp 2-40
&nbsp &nbsp Создание проекта &nbsp 2-41
&nbsp &nbsp Исключенные разделы &nbsp 2-41
&nbsp &nbsp Назначения из головного проекта &nbsp 2-41
&nbsp &nbsp Назначения виртуальных выводов &nbsp 2-42
&nbsp &nbsp &nbsp Временные и локальные назначения для виртуальных выводов &nbsp 2-42
&nbsp &nbsp &nbsp Назначения регионов LogicLock &nbsp 2-43
&nbsp &nbsp &nbsp Назначения продвижения глобальных сигналов &nbsp 2-43
&nbsp &nbsp &nbsp Генерация сборочного файла &nbsp 2-44
&nbsp Импорт SDC ограничений из низкоуровневого проекта &nbsp 2-45
&nbsp &nbsp Создание . sdc файла с общими ограничениями для проекта &nbsp 2-46
&nbsp &nbsp &nbsp Пример первого шага: Руководитель проекта создает файл .sdc с общими ограничениями проекта для проекта нижнего уровня &nbsp 2-47
&nbsp &nbsp Создание .sdc файла со специальными ограничениями для проекта &nbsp 2-47
&nbsp &nbsp &nbsp Пример второго шага: Разработчик проекта нижнего уровня создает файл .sdc со специальными ограничениями раздела &nbsp &nbsp Объединение SDC файлов в головном проекте &nbsp 2-48
&nbsp &nbsp &nbsp Пример третьего шага: Руководитель проекта выполняет окончательный временной анализ и заканчивает работу &nbsp 2-48
Рекомендованные процессы проектирования и примеры компиляции&nbsp 2-49
&nbsp Уменьшение времени компиляции при изменении исходного файла для одного раздела &nbsp 2-49
&nbsp Оптимизация размещения для критичных ко времени разделов для достижения временного завершения &nbsp 2-50
&nbsp Сохранение результатов для выбранных разделов перед добавлением других разделов &nbsp 2-51
&nbsp Инкрементная отладка с помощью Логического Анализатора SignalTap II &nbsp 2-52
&nbsp Выполнение командного проекта в восходящем проектировании &nbsp 2-53
&nbsp &nbsp Разрешение конфликтов назначений во время импорта &nbsp 2-55
&nbsp &nbsp Импортирование раздела для многократного использования &nbsp 2-55
&nbsp Выполнение итерации проекта в восходящем проектировании &nbsp 2-56
&nbsp Создание макроса на аппаратном уровне (или предкомпилированных блоков проекта) для повторного использования IP &nbsp 2-57
&nbsp Использование экспортированного раздела для передачи проекта без включения исходных файлов &nbsp 2-59
Ограничения в инкрементной компиляции&nbsp 2-60
&nbsp Сохранение точных временных характеристик &nbsp 2-61
&nbsp Когда размещение и разводка не могут быть в точности сохранены &nbsp 2-61
&nbsp Использование инкрементной компиляции с архивными файлами Quartus II &nbsp 2-61
&nbsp Поддержка формальной верификации &nbsp 2-61
&nbsp Импорт зашифрованного IP ядра в восходящем проектировании &nbsp 2-61
&nbsp Выводы SignalProbe и менеджер инженерных изменений в Планировщике Чипа &nbsp 2-62
&nbsp &nbsp Разделы, связанные с выводами SignalProbe или изменениями ЕСО &nbsp 2-62
&nbsp &nbsp Экспортируемые разделы &nbsp 2-63
&nbsp Встроенный логический анализатор SigalTap II в процессе восходящей компиляции &nbsp 2-64
&nbsp Интерфейс логического анализатора в процессе восходящей компиляции &nbsp 2-64
&nbsp Миграция проекта с разделами в различные чипы &nbsp 2-64
&nbsp Компиляция HardCopy и процесс миграции &nbsp 2-65
&nbsp &nbsp Чипы HardCopy APEX и HardCopy Stratix &nbsp 2-65
&nbsp &nbsp Процесс миграции HardCopy ASIC &nbsp 2-65
&nbsp &nbsp Автономные компиляции HardCopy ASIC &nbsp 2-65
&nbsp Назначения, сделанные в исходном коде HDL в восходящем проектировании &nbsp 2-65
&nbsp Ограничения в разделах мегафункций &nbsp 2-65
&nbsp Упаковка регистров и границы разделов &nbsp 2-66
&nbsp Упаковка I/O регистров &nbsp 2-66
&nbsp Ограничения в скриптах раздела восходящего проектирования &nbsp 2-66
&nbsp &nbsp Предупреждения о дополнительных тактах в отношении скриптов раздела восходящего проектирования &nbsp 2-67
&nbsp &nbsp Файл ограничения проекта Synopsys для временного анализатора TimeQuest в скриптах раздела восходящего проектирования &nbsp 2-67
&nbsp &nbsp Поддержка дикой карты в скриптах раздела восходящего проектирования &nbsp 2-67
&nbsp &nbsp Полученные такты и PLL в скриптах раздела восходящего проектирования &nbsp 2-67
&nbsp &nbsp Назначение выводов для блоков GXB и LVDS в скриптах раздела восходящего проектирования &nbsp 2-68
&nbsp &nbsp Временные назначения для виртуальных выводов в скриптах раздела восходящего проектирования &nbsp 2-68
&nbsp &nbsp Порты головного проекта, ведущие к множеству выводов проектов нижнего уровня в скриптах раздела восходящего проектирования &nbsp 2-68
Поддержка скриптов&nbsp 2-69
&nbsp Подготовка проекта для инкрементной компиляции &nbsp 2-69
&nbsp Создание разделов проекта &nbsp 2-69
&nbsp Настройка свойств разделов проекта &nbsp 2-70
&nbsp Создание назначений локализации архитектуры – исключение или фильтрация определенные элементов чипа (таких как блоки памяти и DSP) &nbsp 2-71
&nbsp Генерация скриптов раздела восходящего проектирования &nbsp 2-71
&nbsp &nbsp Поддержка командной строки &nbsp 2-72
&nbsp Экспорт раздела для использования в головном проекте &nbsp 2-73
&nbsp Импорт раздела нижнего уровня в головной проект &nbsp 2-74
&nbsp Создатель файлов &nbsp 2-74
&nbsp Рекомендуемый процесс разработки и примеры приложений компиляций – скриптирование и операции с командной строкой &nbsp 2-74
&nbsp &nbsp Уменьшение времени компиляции, когда изменяется исходный файл для одного раздела – пример с командной строкой &nbsp 2-75
&nbsp &nbsp Оптимизация размещения для критичных ко времени разделов &nbsp 2-75
Заключение &nbsp 2-76
Tcl скриптирование png» vspace=»0″ valign=»right»>
Это мой перевод 3 главы 1 раздела 2 тома Quartus II Handbook. Volume 2: Design Implementation and Optimization Chapter 3. Tcl Scripting
Скрипты представляют более детальный подход в организации и управлении проектом. Они позволяют значительно экономить время за счёт автоматизации некоторых процессов разработки. В этой главе описаны общие вопросы использования Tcl скриптов в проекте Quartus II, а также описаны основы языка TCL.
Введение &nbsp 3-1
&nbsp &nbsp Что такое Tcl? &nbsp 3-2
Quartus II Tcl пакеты &nbsp 3-2
&nbsp &nbsp Загрузка пакетов &nbsp 3-3
Quartus II Tcl API помощь &nbsp 3-3
&nbsp &nbsp Опции командной строки: -t, -s, и —tcl_eval &nbsp 3-6
&nbsp &nbsp &nbsp &nbsp Запуск Tcl скрипта &nbsp 3-6
&nbsp &nbsp &nbsp &nbsp Режим интерактивной оболочки &nbsp 3-6
&nbsp &nbsp &nbsp &nbsp Определение в качестве Tcl &nbsp 3-7
&nbsp &nbsp Использование окна Quartus II Tcl консоли &nbsp 3-7
Сквозной процесс проектирования &nbsp 3-7
Создание проектов и назначений &nbsp 3-8
&nbsp &nbsp Проекты в чипах HardCopy &nbsp 3-8
Компиляция проектов &nbsp 3-9
&nbsp &nbsp Пакет flow &nbsp 3-9
&nbsp &nbsp Компиляция всех версий &nbsp 3-9
Отчёты &nbsp 3-10
&nbsp &nbsp Создание .csv файлов для Excel &nbsp 3-11
Временной анализ &nbsp 3-12
Автоматическое исполнение скрипта &nbsp 3-12
&nbsp &nbsp Примеры исполняемых компонентов &nbsp 3-13
&nbsp &nbsp Контролирование процессов &nbsp 3-14
&nbsp &nbsp Отображение сообщений &nbsp 3-14
Другие средства скрипта &nbsp 3-14
&nbsp &nbsp Обычное наименование шины &nbsp 3-15
&nbsp &nbsp Опция сокращения имён &nbsp 3-15
&nbsp &nbsp Использование коллекции команд &nbsp 3-15
&nbsp &nbsp &nbsp &nbsp Команда foreach_in_collection &nbsp 3-16
&nbsp &nbsp &nbsp &nbsp Команда get_collection_size &nbsp 3-16
&nbsp &nbsp Использование команды post_message &nbsp 3-16
&nbsp &nbsp Доступ к аргументам командной строки &nbsp 3-17
&nbsp &nbsp &nbsp &nbsp Использование пакета cmdline &nbsp 3-17
Использование оболочки Quartus II Tcl в интерактивном режиме &nbsp 3-19
Использование оболочки tclsh &nbsp 3-20
Основы Tcl скриптов &nbsp 3-20
&nbsp &nbsp Пример “Hello world” &nbsp 3-20
&nbsp &nbsp Переменные &nbsp 3-20
&nbsp &nbsp Подстановка &nbsp 3-21
&nbsp &nbsp &nbsp &nbsp Подстановка значения переменной &nbsp 3-21
&nbsp &nbsp &nbsp &nbsp Подстановка вложенной команды &nbsp 3-21
&nbsp &nbsp &nbsp &nbsp Подстановка обратным слешем &nbsp 3-21
&nbsp &nbsp Арифметика &nbsp 3-21
&nbsp &nbsp Списки &nbsp 3-22
&nbsp &nbsp Массивы &nbsp 3-22
&nbsp &nbsp Контролирующие структуры &nbsp 3-23
&nbsp &nbsp Процедуры &nbsp 3-24
&nbsp &nbsp Входные/выходные файлы &nbsp 3-25
&nbsp &nbsp Синтаксис и комментарии &nbsp 3-25
Симуляция проекта с помощью инструментов EDA png» vspace=»0″ valign=»right»>
Это мой перевод 1 главы 1 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 1. Simulating Designs with EDA Tools
После того, как фирма Altera прекратила поддержку собственного встроенного симулятора, разработчики были вынуждены выбрать себе альтернативный симулятор: ModelSim, QuestaSim, Active-HDL, Riviera-PRO, VCS, VCS MX или NCSim. В этой главе рассказывается о настройках программы Quartus II в разделе симуляции, о том, какие библиотеки симуляции потребуются для выполнения функциональной симуляции, временной на уровне вентилей и симуляции списка соединений пост-синтез. А также о настройках и использовании средства NativeLink, которое позволяет автоматизировать процесс запуска симулятора в оболочке Quartus II.
Введение &nbsp 1-1
PLD процесс проектирования &nbsp 1-2
&nbsp &nbsp Процесс функциональной симуляции RTL &nbsp 1-3
&nbsp &nbsp Процесс временной симуляции на уровне вентилей &nbsp 1-4
&nbsp &nbsp Конвертирование формата BDF в формат HDL &nbsp 1-4
Библиотеки симуляции &nbsp 1-5
&nbsp &nbsp Функциональная симуляция RTL &nbsp 1-5
&nbsp &nbsp Временная симуляция на уровне вентилей &nbsp 1-6
&nbsp &nbsp Файлы симуляции списков соединений &nbsp 1-6
&nbsp &nbsp Генерация файлов списков соединений для пост-синтез симуляции &nbsp 1-7
&nbsp &nbsp Генерация файлов списков соединений для временной симуляции на уровне вентилей &nbsp 1-7
&nbsp &nbsp Генерация файлов списков соединений для временной симуляции в различных временных моделях &nbsp 1-8
EDA компилятор библиотек симуляции &nbsp 1-9
&nbsp &nbsp Запуск EDA компилятора библиотек симуляции в графической оболочке &nbsp 1-10
&nbsp &nbsp Запуск EDA компилятора библиотек симуляции из командной строки &nbsp 1-11
Использование средства NativeLink &nbsp 1-11
&nbsp &nbsp Установка пути к исполняемым файлам EDA симулятора &nbsp 1-11
&nbsp &nbsp Конфигурирование настоек NativeLink &nbsp 1-12
&nbsp &nbsp Запуск RTL функциональной симуляции с помощью средства NativeLink &nbsp 1-14
&nbsp &nbsp Запуск временной симуляции на уровне вентилей с помощью средства NativeLink &nbsp 1-14
&nbsp &nbsp Установка файлов тестовых стендов в средстве NativeLink &nbsp 1-14
Заключение &nbsp 1-16
Поддержка Mentor Graphics ModelSim/QuestaSim png» vspace=»0″ valign=»right»>
Это мой перевод 2 главы 1 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 2. Mentor Graphics ModelSim/QuestaSim Support
В этой главе содержатся подробные инструкции, как симулировать ваш проект в программах ModelSim-Altera®, Mentor Graphics® ModelSim и Mentor Graphics QuestaSim. Рассматривается три способа симуляции: функциональная, пост-синтез и временная на уровне вентилей. Подробно рассмотрены различные способы симуляции с чипами, имеющими встроенные передатчики. Изложены инструкции по выполнению симуляции: в графической оболочке, из командной строки и с помощью Tcl скриптов.
Программные требования &nbsp 2-1
Процесс проектирования с программой ModelSim-Altera или ModelSim/QuestaSim &nbsp 2-2
Библиотеки симуляции &nbsp 2-2
&nbsp &nbsp Предварительно скомпилированные библиотеки симуляции в программе ModelSim-Altera &nbsp 2-2
&nbsp &nbsp Файлы библиотек симуляции в программе Quartus II &nbsp 2-3
&nbsp &nbsp Запрещение временных нарушений в регистрах &nbsp 2-3
Выполнение симуляции в программе ModelSim-Altera &nbsp 2-3
&nbsp &nbsp Выполнение функциональной симуляции &nbsp 2-3
&nbsp &nbsp &nbsp &nbsp Установка проекта Quartus II для программы ModelSim-Altera &nbsp 2-4
&nbsp &nbsp &nbsp &nbsp Компиляция и загрузка проектов в программе ModelSim-Altera &nbsp 2-4
&nbsp &nbsp &nbsp &nbsp Выполнение симуляции &nbsp 2-4
&nbsp &nbsp Выполнение пост-синтез симуляции &nbsp 2-4
&nbsp &nbsp Выполнение временной симуляции на уровне вентилей &nbsp 2-4
Выполнение симуляции в программе ModelSim/QuestaSim &nbsp 2-5
&nbsp &nbsp Симуляция VHDL проектов в графической оболочке &nbsp 2-5
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции &nbsp 2-5
&nbsp &nbsp &nbsp &nbsp Выполнение пост-синтез симуляции &nbsp 2-6
&nbsp &nbsp &nbsp &nbsp Выполнение симуляции на уровне вентилей &nbsp 2-7
&nbsp &nbsp Симуляция Verilog HDL проектов в графической оболочке &nbsp 2-7
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции &nbsp 2-7
&nbsp &nbsp &nbsp &nbsp Выполнение пост-синтез симуляции &nbsp 2-8
&nbsp &nbsp &nbsp &nbsp Выполнение симуляции на уровне вентилей &nbsp 2-9
&nbsp &nbsp Симуляция VHDL проектов в командной строке &nbsp 2-9
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции &nbsp 2-9
&nbsp &nbsp &nbsp &nbsp Выполнение пост-синтез симуляции &nbsp 2-11
&nbsp &nbsp &nbsp &nbsp Выполнение симуляции на уровне вентилей &nbsp 2-12
&nbsp &nbsp Симуляция Verilog HDL проектов в командной строке &nbsp 2-13
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции &nbsp 2-13
&nbsp &nbsp &nbsp &nbsp Выполнение пост-синтез симуляции &nbsp 2-14
&nbsp &nbsp &nbsp &nbsp Выполнение симуляции на уровне вентилей &nbsp 2-15
&nbsp &nbsp Передача параметрической информации от Verilog HDL к VHDL &nbsp 2-15
&nbsp &nbsp Ускорение симуляции &nbsp 2-16
Симуляция проектов, имеющих передатчики &nbsp 2-16
&nbsp &nbsp Функциональная симуляция чипов Stratix GX &nbsp 2-17
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции VHDL (ModelSim-Altera) &nbsp 2-17
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции VHDL (ModelSim/QuestaSim) &nbsp 2-17
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim-Altera) &nbsp 2-17
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim/QuestaSim) &nbsp 2-17
&nbsp &nbsp Временная симуляция на уровне вентилей для чипов Stratix GX &nbsp 2-18
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей VHDL (ModelSim-Altera) &nbsp 2-18
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей VHDL (ModelSim/QuestaSim) &nbsp 2-18
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей Verilog HDL (ModelSim-Altera) &nbsp 2-18
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей Verilog HDL (ModelSim/QuestaSim) &nbsp 2-19
&nbsp &nbsp Функциональная симуляция чипов Stratix II GX &nbsp 2-19
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции VHDL (ModelSim-Altera) &nbsp 2-19
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции VHDL (ModelSim/QuestaSim) &nbsp 2-19
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim-Altera) &nbsp 2-20
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim/QuestaSim) &nbsp 2-20
&nbsp &nbsp Временная симуляция на уровне вентилей для чипов Stratix II GX &nbsp 2-20
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей VHDL (ModelSim-Altera) &nbsp 2-20
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей VHDL (ModelSim/QuestaSim) &nbsp 2-20
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей Verilog HDL (ModelSim-Altera) &nbsp 2-21
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей Verilog HDL (ModelSim/QuestaSim) &nbsp 2-21
&nbsp &nbsp Функциональная симуляция чипов Stratix IV GX &nbsp 2-21
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции VHDL (ModelSim-Altera) &nbsp 2-21
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции VHDL (ModelSim/QuestaSim) &nbsp 2-21
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim-Altera) &nbsp 2-22
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim/QuestaSim) &nbsp 2-22
&nbsp &nbsp Временная симуляция на уровне вентилей для чипов Stratix IV GX &nbsp 2-22
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей VHDL (ModelSim-Altera) &nbsp 2-22
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей VHDL (ModelSim/QuestaSim) &nbsp 2-22
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей Verilog HDL (ModelSim-Altera) &nbsp 2-23
&nbsp &nbsp &nbsp &nbsp Выполнение временной симуляции на уровне вентилей Verilog HDL (ModelSim/QuestaSim) &nbsp 2-23
&nbsp &nbsp Функциональная симуляция чипов Stratix V GX &nbsp 2-23
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции VHDL (ModelSim-Altera) &nbsp 2-24
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim-Altera) &nbsp 2-24
&nbsp &nbsp &nbsp &nbsp Выполнение функциональной симуляции Verilog HDL (ModelSim/QuestaSim) &nbsp 2-24
&nbsp &nbsp Транспортные задержки &nbsp 2-24
Использование средства NativeLink с программой ModelSim-Altera или ModelSim/QuestaSim &nbsp 2-24
Верификация сообщений об ошибке в ModelSim/QuestaSim &nbsp 2-25
Генерация файла дампа изменений временных значений (. vcd) для PowerPlay Power Analyzer &nbsp 2-25
Просмотр временных диаграмм из .wlf файла &nbsp 2-26
Поддержка скриптов &nbsp 2-26
&nbsp &nbsp Генерирование списка соединений для пост-синтез симуляции в ModelSim/QuestaSim &nbsp 2-27
&nbsp &nbsp &nbsp &nbsp Tcl команды &nbsp 2-27
&nbsp &nbsp &nbsp &nbsp Командная строка &nbsp 2-27
&nbsp &nbsp Генерирование списка соединений для временной симуляции на уровне вентилей в ModelSim/QuestaSim &nbsp 2-27
&nbsp &nbsp &nbsp &nbsp Tcl команды &nbsp 2-27
&nbsp &nbsp &nbsp &nbsp Командная строка &nbsp 2-28
Лицензирование программы и установка лицензии в ModelSim-Altera Subscription Edition &nbsp 2-28
&nbsp &nbsp Переменная LM_LICENSE_FILE &nbsp 2-29
Заключение &nbsp 2-29
Временной анализатор Quartus II TimeQuest
Это мой перевод 7 главы 2 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 7.The Quartus II TimeQuest Timing Analyser
Средство TimeQuest — обязательный инструмент разработки любого более-менее сложного проекта. Временной анализатор Quartus II TimeQuest – это следующее поколение инструментария временного анализа, который поддерживает формат промышленного стандарта SDC и позволяет разработчикам создавать, управлять и анализировать сложные временные ограничения, а также выполнять расширенную временную верификацию.
Титульный
Введение &nbsp 7-1
Начало работы с временным анализатором Quartus II TimeQuest &nbsp 7-2
&nbsp Установка временного анализатора Quartus II TimeQuest &nbsp 7-2
Процесс компиляции с указаниями временного анализатора Quartus II TimeQuest &nbsp 7-2
Запуск временного анализатора Quartus II TimeQuest &nbsp 7-4
&nbsp Непосредственно из программы Quartus II &nbsp 7-4
&nbsp В автономном режиме &nbsp 7-4
&nbsp В режиме командной строки &nbsp 7-4
Общий вид временного анализатора &nbsp 7-6
&nbsp Анализ тактов &nbsp 7-10
&nbsp &nbsp Контроль времени установки &nbsp 7-10
&nbsp &nbsp Контроль удержания тактов &nbsp 7-11
&nbsp &nbsp Восстановление и удаление &nbsp 7-12
&nbsp Мультицикловые пути &nbsp 7-14
&nbsp Метастабильность &nbsp 7-15
&nbsp Пессимизм общих тактовых путей &nbsp 7-16
&nbsp Такты в качестве данных &nbsp 7-18
Руководство по процессу временного анализа в Quartus II &nbsp 7-19
&nbsp Создание временного списка соединений &nbsp 7-20
&nbsp Прочитать файл ограничений проекта Synopsys &nbsp 7-20
&nbsp Обновление временного списка соединений &nbsp 7-20
&nbsp Генерация временных отчётов &nbsp 7-20
Коллекции &nbsp 7-21
&nbsp Примеры приложений &nbsp 7-22
Файл ограничения SDC &nbsp 7-22
&nbsp Компоновка и временной анализ с помощью файлов SDC &nbsp 7-22
&nbsp Определение SDC файлов для размещения и разводки &nbsp 7-23
&nbsp Определение SDC файлов для статического временного анализа &nbsp 7-23
&nbsp Первенство файла ограничений Synopsys &nbsp 7-23
Спецификация тактов &nbsp 7-24
&nbsp Такты &nbsp 7-24
&nbsp &nbsp Сгенерированные такты &nbsp 7-25
&nbsp Виртуальные такты &nbsp 7-28
&nbsp Мульти-частотные такты &nbsp 7-29
&nbsp Автоматическое детектирование тактов &nbsp 7-30
&nbsp Получение тактов PLL &nbsp 7-30
&nbsp Ограничения тактов по умолчанию &nbsp 7-33
&nbsp Тактовые группы &nbsp 7-33
&nbsp Эффективные характеристики тактов &nbsp 7-35
&nbsp &nbsp Задержка тактов &nbsp 7-35
&nbsp &nbsp Неопределённость тактов &nbsp 7-36
&nbsp Вычисление тактовой неопределённости &nbsp 7-37
&nbsp &nbsp Межтактовые переходы &nbsp 7-38
&nbsp &nbsp Внутритактовые переходы &nbsp 7-38
&nbsp &nbsp Тактовые переходы интерфейса I/O &nbsp 7-38
Спецификация I/O &nbsp 7-39
&nbsp Задержки входа и выхода &nbsp 7-39
&nbsp &nbsp Установка входной задержки &nbsp 7-39
&nbsp &nbsp Установка выходной задержки &nbsp 7-41
Спецификация задержки и расфазировки &nbsp 7-42
&nbsp set_net_delay &nbsp 7-42
&nbsp set_max_skew &nbsp 7-43
Временные исключения &nbsp 7-44
&nbsp Приоритеты &nbsp 7-44
&nbsp Ложный путь &nbsp 7-44
&nbsp Минимум задержки &nbsp 7-45
&nbsp Максимум задержки &nbsp 7-46
&nbsp Мультицикловый путь &nbsp 7-47
&nbsp Аннотированная задержка &nbsp 7-48
&nbsp Примеры применения &nbsp 7-50
Удаление ограничений и исключений &nbsp 7-51
Временные отчеты &nbsp 7-51
&nbsp report_timing &nbsp 7-52
&nbsp report_exceptions &nbsp 7-55
&nbsp report_metastability &nbsp 7-57
&nbsp report_clock_transfers &nbsp 7-57
&nbsp report_clocks &nbsp 7-58
&nbsp report_min_pulse_width &nbsp 7-59
&nbsp report_net_timing &nbsp 7-60
&nbsp report_sdc &nbsp 7-61
&nbsp report_ucp &nbsp 7-61
&nbsp report_bottleneck &nbsp 7-62
&nbsp report_datasheet &nbsp 7-64
&nbsp report_rskm &nbsp 7-64
&nbsp report_tccs &nbsp 7-65
&nbsp report_partitions &nbsp 7-66
&nbsp report_path &nbsp 7-66
&nbsp report_net_delay &nbsp 7-68
&nbsp report_max_skew &nbsp 7-69
&nbsp check_timing &nbsp 7-70
&nbsp report_clock_fmax_summary &nbsp 7-73
&nbsp create_timing_summary &nbsp 7-73
Средства временного анализа &nbsp 7-74
&nbsp Многоугольный анализ &nbsp 7-74
&nbsp Расширенные временные назначения I/O и модели трассировки платы &nbsp 7-76
&nbsp Назначение «дикой карты» и коллекции &nbsp 7-76
&nbsp Сброс проекта &nbsp 7-78
&nbsp Межпробник &nbsp 7-78
&nbsp &nbsp locate &nbsp 7-78
Графическая оболочка (GUI) временного анализатора TimeQuest &nbsp 7-79
&nbsp Интерфейс и опции программы Quartus II &nbsp 7-80
&nbsp Панель вида &nbsp 7-81
&nbsp &nbsp Панель вида: Дробление &nbsp 7-81
&nbsp &nbsp Панель вида: удаление разделённых окон &nbsp 7-82
&nbsp Панель задач &nbsp 7-83
&nbsp &nbsp Открытие проекта и запись файла ограничений проекта Synopsys &nbsp 7-83
&nbsp &nbsp Папка установки списка соединений &nbsp 7-83
&nbsp &nbsp Папка отчётов &nbsp 7-84
&nbsp &nbsp Папка макросов &nbsp 7-84
&nbsp Панель консоли &nbsp 7-85
&nbsp Панель отчётов &nbsp 7-85
&nbsp Ограничения &nbsp 7-85
&nbsp Поиск по имени &nbsp 7-87
&nbsp Панель объектов &nbsp 7-88
&nbsp Редактор SDC &nbsp 7-89
Заключение &nbsp 7-89
Лучшие примеры для временного анализатора Quartus II TimeQuest png» vspace=»0″ valign=»right»>
Это мой перевод 8 главы 2 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 8.Best practices for the Quartus II TimeQuest Timing Analyser
В этой главе в очень сжатом виде преподносится информация о применении временных ограничений в проекте. Рассматриваются примеры написания TCL скриптов различных временных ограничений. Определённый минимум навыков.
Экосистема отладки в чипе
Это мой перевод вводной главы 4 раздела 3 тома Quartus II Handbook. Volume 3: Verification. In system debugging
Даётся вводная информация о средствах отладки проекта в системе. Приводится методика выбора оптимального средства отладки с точки зрения использования доступных ресурсов и скорости получения данных. Приведено краткое сравнение таких средств: SignalProbe,встроенный логический анализатор SignalTap II, использование внешних логических анализаторов, редактор памяти и констант в системе, исходники и пробники в системе.
Введение &nbsp IV-1
&nbsp Экосистема отладки в чипе &nbsp IV-1
&nbsp &nbsp Инструменты анализа для RTL узлов &nbsp IV-3
&nbsp &nbsp Использование ресурсов &nbsp IV-4
&nbsp &nbsp Использование выводов &nbsp IV-5
&nbsp &nbsp Улучшенное удобство в применении &nbsp IV-6
&nbsp Инструменты, оказывающие воздействие &nbsp IV-8
&nbsp &nbsp Исходники и пробники в системе &nbsp IV-8
&nbsp &nbsp Редактор содержимого памяти в системе &nbsp IV-8
&nbsp &nbsp Мегафункция интерфейса виртуального JTAG &nbsp IV-9
&nbsp Заключение &nbsp IV-9
Быстрая отладка проекта с помощью SignalProbe png» vspace=»0″ valign=»right»>
Это мой перевод 13 главы 4 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 13. Quick Design Debugging Using SignalProbe
SignalProbe, или пробники сигналов, — это действительно быстрый способ «установить» щуп осциллографа на выход практически любого регистра в проекте. При этом отсутствует какое-либо влияние от размещения SignalProbe на внутреннюю логику проекта и использование сетей линий трассировки сигнала.
Введение &nbsp 13-1
&nbsp Отладка с использованием средства SignalProbe &nbsp 13-1
&nbsp &nbsp Резервирование выводов SignalProbe &nbsp 13-2
&nbsp &nbsp Выполнение полной компиляции &nbsp 13-3
&nbsp &nbsp Назначение исходников для выводов SignalProbe &nbsp 13-3
&nbsp &nbsp Добавление регистров линиям пути до вывода SignalProbe &nbsp 13-4
&nbsp &nbsp Выполнение SignalProbe компиляции &nbsp 13-5
&nbsp &nbsp Анализ результатов SignalProbe компиляции &nbsp 13-5
Процессы SignalProbe ECO &nbsp 13-6
&nbsp &nbsp Процесс SignalProbe ECO с инкрементной компиляцией Quartus II &nbsp 13-6
&nbsp &nbsp Процесс SignalProbe ECO без инкрементной компиляции Quartus II &nbsp 13-7
&nbsp Общие вопросы о средстве SignalProbe &nbsp 13-8
Поддержка скриптов &nbsp 13-11
&nbsp &nbsp Создание вывода SignalProbe &nbsp 13-11
&nbsp &nbsp Удаление вывода SignalProbe &nbsp 13-11
&nbsp &nbsp Разрешение вывода SignalProbe &nbsp 13-11
&nbsp &nbsp Запрещение вывода SignalProbe &nbsp 13-11
&nbsp &nbsp Выполнение SignalProbe компиляции &nbsp 13-11
&nbsp &nbsp Перемещение предыдущих выводов SignalProbe в версии программы Quartus II 6. 0 и старше &nbsp 13-12
&nbsp &nbsp Пример скрипта &nbsp 13-12
&nbsp &nbsp Использование SignalProbe для семейства чипов APEX™ &nbsp 13-12
&nbsp &nbsp Добавление исходников SignalProbe &nbsp 13-12
&nbsp &nbsp Выполнение SignalProbe компиляции &nbsp 13-13
&nbsp &nbsp Запуск SignalProbe в интеллектуальной компиляции &nbsp 13-13
&nbsp &nbsp Осмысление результатов SignalProbe компиляции &nbsp 13-14
&nbsp &nbsp Средства анализа разводки SignalProbe &nbsp 13-15
&nbsp &nbsp Поддержка скриптов SignalProbe для чипов APEX &nbsp 13-15
Резервирование выводов SignalProbe &nbsp 13-16
&nbsp &nbsp Добавление исходников SignalProbe &nbsp 13-16
&nbsp &nbsp Назначение стандартов I/O &nbsp 13-16
&nbsp &nbsp Добавление регистров к линиям пути &nbsp 13-16
&nbsp &nbsp Автоматический запуск SignalProbe &nbsp 13-17
&nbsp &nbsp Ручной запуск SignalProbe &nbsp 13-17
&nbsp &nbsp Разрешение или запрещение всей SignalProbe разводки &nbsp 13-17
&nbsp &nbsp Запуск SignalProbe в интеллектуальной компиляции &nbsp 13-17
&nbsp &nbsp Позволять SignalProbe модифицировать результаты предыдущей компоновки &nbsp 13-17
&nbsp Заключение &nbsp 13-18
Отладка в системе с использованием встроенного логического анализатора SignalTap II
Это мой перевод 14 главы 4 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 14. Design Debugging Using the SignalTap II Embedded Logic Analyzer
Этот логический анализатор помогает отлаживать проект FPGA путём пробирования состояний внутренних сигналов без использования внешней обвязки. Все захваченные сигналы данных легко сохраняются в памяти чипа, пока вы не будете готовы для чтения и анализа данных. Обладая достаточными ресурсами внутренней памяти и логических элементов FPGA, вы достаточно просто сможете построить любую схему события (или последовательности событий), по которому данные будут защёлкиваться в памяти встроенного анализатора. SignalTap II — это наиболее экономичный способ получения многофункционального логического анализатора для быстрой и эффективной отладки проектов любой сложности.
Введение &nbsp 14-1
&nbsp &nbsp Требования к программе и оборудованию &nbsp 14-2
Процесс разработки с использованием встроенного логического анализатора SignalTap® II &nbsp 14-4
Задачи процесса встроенного логического анализатора SignalTap® II &nbsp 14-4
&nbsp &nbsp Добавление встроенного логического анализатора SignalTap® II в ваш проект &nbsp 14-5
&nbsp &nbsp Конфигурирование встроенного логического анализатора SignalTap® II &nbsp 14-5
&nbsp &nbsp Определение состояний триггеров &nbsp 14-6
&nbsp &nbsp Компиляция проекта &nbsp 14-6
&nbsp &nbsp Программирование выбранного чипа или чипов &nbsp 14-6
&nbsp &nbsp Запуск встроенного логического анализатора SignalTap II &nbsp 14-6
&nbsp &nbsp Наблюдение, анализ и использование захваченных данных &nbsp 14-6
Добавление встроенного логического анализатора SignalTap® II в ваш проект &nbsp 14-6
&nbsp &nbsp Создание и разрешение файла SignalTap II &nbsp 14-7
&nbsp &nbsp &nbsp &nbsp Создание файла SignalTap II &nbsp 14-7
&nbsp &nbsp &nbsp &nbsp Разрешение или запрещение файла SignalTap II в текущем проекте &nbsp 14-8
&nbsp &nbsp Встраивание нескольких анализаторов в один FPGA &nbsp 14-9
&nbsp &nbsp Мониторинг ресурсов, используемых встроенным логическим анализатором SignalTap II &nbsp 14-9
&nbsp &nbsp Использование менеджера плагинов MegaWizard для создания вашего встроенного логического анализатора &nbsp 14-10
&nbsp &nbsp &nbsp &nbsp Создание HDL описания с использованием менеджера плагинов MegaWizard &nbsp 14-10
&nbsp &nbsp &nbsp &nbsp Порты мегафункции SignalTap II &nbsp 14-13
&nbsp &nbsp &nbsp &nbsp Размещение встроенного логического анализатора SignalTap II в вашем HDL коде &nbsp 14-14
Конфигурирование встроенного логического анализатора SignalTap® II &nbsp 14-14
&nbsp &nbsp Назначение такта захвата &nbsp 14-14
&nbsp &nbsp Добавление сигналов в файл SignalTap II &nbsp 14-15
&nbsp &nbsp &nbsp &nbsp Сохранение сигнала &nbsp 14-17
&nbsp &nbsp &nbsp &nbsp Назначение сигналов данных с помощью поиска узлов &nbsp 14-17
&nbsp &nbsp &nbsp &nbsp Назначение сигналов данных с помощью обозревателя технологической карты &nbsp 14-18
&nbsp &nbsp &nbsp &nbsp Использование опций для сигналов из списка узлов &nbsp 14-19
&nbsp &nbsp &nbsp &nbsp Защищённые от захвата сигналы &nbsp 14-19
&nbsp &nbsp Добавление сигналов с помощью плагина &nbsp 14-19
&nbsp &nbsp Добавление регистров состояний конечного автомата &nbsp 14-20
&nbsp &nbsp &nbsp &nbsp Изменение и восстановление мнемонических таблиц для конечных автоматов &nbsp 14-22
&nbsp &nbsp &nbsp &nbsp Дополнительные возможности анализа &nbsp 14-22
&nbsp &nbsp Определение глубины замеров &nbsp 14-23
&nbsp &nbsp Сбор данных в RAM определённого типа &nbsp 14-23
&nbsp &nbsp Выбор режима для буфера сбора данных &nbsp 14-23
&nbsp &nbsp &nbsp &nbsp Несегментный буфер &nbsp 14-24
&nbsp &nbsp &nbsp &nbsp Сегментный буфер &nbsp 14-24
&nbsp &nbsp Использование средства квалификации памяти &nbsp 14-25
&nbsp &nbsp &nbsp &nbsp Режим входной порт &nbsp 14-27
&nbsp &nbsp &nbsp &nbsp Переходный режим &nbsp 14-28
&nbsp &nbsp &nbsp &nbsp Условный режим &nbsp 14-29
&nbsp &nbsp &nbsp &nbsp Режим старт/стоп &nbsp 14-30
&nbsp &nbsp &nbsp &nbsp Базовое состояние &nbsp 14-31
&nbsp &nbsp &nbsp &nbsp Показ прерываний данных &nbsp 14-31
&nbsp &nbsp &nbsp &nbsp Запрещение квалификатора памяти &nbsp 14-31
&nbsp &nbsp Менеджер нескольких файлов SignalTap II и конфигураций &nbsp 14-32
Определение триггеров &nbsp 14-33
&nbsp &nbsp Создание базовых состояний триггера &nbsp 14-33
&nbsp &nbsp Создание расширенных состояний триггера &nbsp 14-34
&nbsp &nbsp &nbsp &nbsp Примеры выражений расширенных состояний триггера &nbsp 14-35
&nbsp &nbsp Контроль процесса состояний триггера &nbsp 14-36
&nbsp &nbsp &nbsp &nbsp Последовательный триггер &nbsp 14-36
&nbsp &nbsp &nbsp &nbsp Настраиваемые триггеры базовых состояний &nbsp 14-38
&nbsp &nbsp &nbsp &nbsp Язык описания процесса триггера SignalTap II &nbsp 14-42
&nbsp &nbsp &nbsp &nbsp Метки состояний &nbsp 14-42
&nbsp &nbsp &nbsp &nbsp Булевы соотношения &nbsp 14-43
&nbsp &nbsp &nbsp &nbsp Список действий &nbsp 14-43
&nbsp &nbsp &nbsp &nbsp Действия манипуляции с ресурсами &nbsp 14-43
&nbsp &nbsp &nbsp &nbsp Действия контроля буфера &nbsp 14-44
&nbsp &nbsp &nbsp &nbsp Действие перехода состояния &nbsp 14-44
&nbsp &nbsp &nbsp &nbsp Использование средства квалификатора памяти базовых состояний &nbsp 14-45
&nbsp &nbsp Определение позиции триггера &nbsp 14-48
&nbsp &nbsp Создание триггера включения &nbsp 14-49
&nbsp &nbsp &nbsp &nbsp Разрешение триггера включения &nbsp 14-49
&nbsp &nbsp &nbsp &nbsp Управление и конфигурирование состояний триггера включения и триггера в запущенном времени &nbsp 14-50
&nbsp &nbsp Использование внешних триггеров &nbsp 14-51
&nbsp &nbsp &nbsp &nbsp Входной триггер &nbsp 14-51
&nbsp &nbsp &nbsp &nbsp Выходной триггер &nbsp 14-51
&nbsp &nbsp &nbsp &nbsp Использование выхода триггера одного анализатора как входа триггера другого анализатора &nbsp 14-52
Компиляция проекта &nbsp 14-53
&nbsp &nbsp Быстрые компиляции с инкрементной компиляцией Quartus II &nbsp 14-53
&nbsp &nbsp &nbsp &nbsp Разрешение инкрементной компиляции в вашем проекте &nbsp 14-54
&nbsp &nbsp &nbsp &nbsp Использование инкрементной компиляции со встроенным логическим анализатором SignalTap II &nbsp 14-55
&nbsp &nbsp Предотвращение изменений вынужденной перекомпиляции &nbsp 14-57
&nbsp &nbsp Сохранение временных параметров во встроенном логическом анализаторе SignalTap II &nbsp 14-57
&nbsp &nbsp Анализ ресурсов и характеристик &nbsp 14-57
Программирование выбранного чипа или чипов &nbsp 14-59
&nbsp &nbsp Программирование одного чипа &nbsp 14-59
&nbsp &nbsp Программирование нескольких чипов для отладки нескольких проектов &nbsp 14-60
Запуск встроенного логического анализатора SignalTap II &nbsp 14-60
&nbsp &nbsp Запуск с триггером включения &nbsp 14-62
&nbsp &nbsp Запуск с триггером в запущенном времени &nbsp 14-62
&nbsp &nbsp Выполнение форсированного триггера &nbsp 14-62
&nbsp &nbsp Опции реконфигурации в запущенном времени &nbsp 14-63
&nbsp &nbsp Статусные сообщения SignalTap II &nbsp 14-65
Наблюдение, анализ и использование захваченных данных &nbsp 14-66
&nbsp &nbsp Наблюдение захваченных данных &nbsp 14-66
&nbsp &nbsp Захват данный с использованием сегментных буферов &nbsp 14-67
&nbsp &nbsp Создание мнемоники для последовательности битов &nbsp 14-69
&nbsp &nbsp Автоматическая мнемоника с плагином &nbsp 14-69
&nbsp &nbsp Локализация узлов в проекте &nbsp 14-69
&nbsp &nbsp Сохранение захваченных данных &nbsp 14-70
&nbsp &nbsp Конвертация захваченных данных в другие форматы файлов &nbsp 14-70
&nbsp &nbsp Создание файла списка SignalTap II &nbsp 14-71
Другие средства &nbsp 14-71
&nbsp &nbsp Использование функции SignalTap II MATLAB MEX для захвата данных &nbsp 14-71
&nbsp &nbsp Использование SignalTap II в лаборатории &nbsp 14-73
&nbsp &nbsp Удалённая отладка с использованием встроенного логического анализатора SignalTap II &nbsp 14-73
&nbsp &nbsp &nbsp &nbsp Установка оборудования &nbsp 14-73
&nbsp &nbsp &nbsp &nbsp Установка программы на удалённом ПК &nbsp 14-73
&nbsp &nbsp &nbsp &nbsp Установка программы на локальный ПК &nbsp 14-74
&nbsp &nbsp &nbsp &nbsp Установка SignalTap II на локальный ПК &nbsp 14-75
&nbsp &nbsp Использование встроенного логического анализатора SignalTap II в чипах с конфигурацией Bitstream Security &nbsp 14-75
&nbsp &nbsp Обратная совместимость с предыдущими версиями программы Quartus II &nbsp 14-76
Поддержка скриптов в SignalTap II &nbsp 14-76
&nbsp &nbsp Опции командной строки SignalTap II &nbsp 14-76
&nbsp &nbsp Опции Tcl команд SignalTap II &nbsp 14-78
Пример проекта: использование встроенного логического анализатора SignalTap II в системах разработки SOPC &nbsp 14-79
Примеры приложений процесса настраиваемого триггера &nbsp 14-79
&nbsp &nbsp Пример проекта 1: Определение позиции настраиваемого триггера &nbsp 14-80
&nbsp &nbsp Пример проекта 2: Захват, когда срабатывает triggercond1 ожидать десять тактов между triggercond2 и triggercond3 &nbsp 14-80
Заключение &nbsp 14-81
Отладка в системе с использованием внешних логических анализаторов png» vspace=»0″ valign=»right»>
Это мой перевод 15 главы 4 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 15. In-System Debugging Using External Logic Analyzers
Это средство отладки имеет ряд отличий от встроенного логического анализатора SignalTap II. Внешний логический анализатор использует минимум логики чипа FPGA для реализации управляемых мультиплексоров, на которые поступают пробники сигналов. Он использует внешний тактовый сигнал, позволяя асинхронно контролировать пробники. Глубина захвата данных не зависит от внутренних ресурсов FPGA (в отличии от SignalTap II). Однако скорость получения данных меньше, чем в SignalTap II. И для размещения выводов анализатора приходиться резервировать внешние выводы FPGA, тогда как SignalTap II использует для отладки стандартные выводы JTAG. В этой главе содержится полная информация по элементов LAI и подводу к ним пробников. А также описано использование LAI в инкрементной компиляции Quartus II.
Введение &nbsp 15-1
Выбор логического анализатора &nbsp 15-1
&nbsp &nbsp Необходимые компоненты &nbsp 15-2
&nbsp &nbsp Поддержка чипов FPGA &nbsp 15-3
Отладка вашего проекта с использованием интерфейса логического анализатора &nbsp 15-3
&nbsp &nbsp Создание LAI файла &nbsp 15-4
&nbsp &nbsp &nbsp &nbsp Создание нового файла логического анализатора &nbsp 15-5
&nbsp &nbsp &nbsp &nbsp Открытие существующего файла интерфейса внешнего анализатора &nbsp 15-5
&nbsp &nbsp &nbsp &nbsp Сохранение файла интерфейса внешнего анализатора &nbsp 15-5
&nbsp &nbsp Конфигурирование основных параметров файла интерфейса логического анализатора &nbsp 15-5
&nbsp &nbsp Разводка выводов файла интерфейса логического анализатора по доступным I/O выводам &nbsp 15-6
&nbsp &nbsp Разводка внутренних сигналов к банкам интерфейса логического анализатора &nbsp 15-7
&nbsp &nbsp Использование поиска узлов &nbsp 15-7
&nbsp &nbsp Разрешение интерфейса логического анализатора перед компиляцией вашего проекта Quartus II &nbsp 15-8
&nbsp &nbsp Компилирование вашего проекта Quartus &nbsp II 15-8
&nbsp &nbsp Программирование вашего FPGA, используя интерфейс логического анализатора &nbsp 15-9
&nbsp &nbsp Использование интерфейса логического анализатора с несколькими чипами &nbsp 15-10
&nbsp &nbsp Конфигурирование банков в файле интерфейса логического анализатора &nbsp 15-10
&nbsp &nbsp Получение данных в вашем логическом анализаторе &nbsp 15-10
Расширенные средства &nbsp 15-11
&nbsp &nbsp Использование интерфейса логического анализатора в инкрементной компиляции &nbsp 15-11
&nbsp &nbsp Создание различных элементов интерфейса логического анализатора в одном FPGA &nbsp 15-11
Выводы &nbsp 15-12
Обновление памяти и констант в системе
Это мой перевод 16 главы 4 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 16. In-System Updating of Memory and Constants
Это прекрасное средство отладки. С его помощью можно просматривать данные во внутренней памяти Altera, а также в реальном времени изменять их. Удобное средство для обновления программы встроенного процессора, а также для подбора коэффициентов цифрового фильтра.
Введение &nbsp 16-1
Общее представление &nbsp 16-1
Поддержка мегафункций чипом &nbsp 16-2
Использование обновления в системе памяти и констант в вашем проекте &nbsp 16-2
Создание модифицируемых в системе памяти и констант &nbsp 16-3
Запуск редактора содержимого памяти в системе &nbsp 16-3
&nbsp &nbsp Менеджер элемента &nbsp 16-4
&nbsp &nbsp Редактирование данных в редакторе Hex &nbsp 16-6
&nbsp &nbsp Импорт и экспорт файлов памяти &nbsp 16-6
&nbsp &nbsp Просмотр содержимого памяти и констант &nbsp 16-6
&nbsp &nbsp Поддержка скриптов &nbsp 16-8
&nbsp &nbsp Программирование чипа, используя редактор содержимого памяти в системе &nbsp 16-8
&nbsp &nbsp Пример использования редактора содержимого памяти в системе вместе с встроенным логическим анализатором SignalTap II &nbsp 16-9
Заключение &nbsp 16-9
Отладка в системе с помощью исходников и пробников в системе
Это мой перевод 17 главы 4 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 17. Design Debugging Using In-System Sources and Probes
Данное средство дополняет использование SignalTap II и SignalProbe. С его помощью вы можете создать исходные стимулы и проследить реакцию на их воздействие. Таким образом, оно позволяет создавать примитивное воздействие, например, нажатие на виртуальную кнопку или срабатывание виртуального датчика, с тем, чтобы уже в более мощных средствах отладки проследить реакцию на это воздействие.
Отладка цепей приёмопередатчика с помощью System Console
Это мой перевод 11 главы 3 раздела 3 тома Quartus II Handbook. Volume 3: Verification. 11. Transceiver Link Debugging Using the System Console
Средство Transceiver Toolkit появилось в 10 версии программы Quartus II. Оно предназначено для отладки и настройки цепей высокоскоростных приёмопередатчиков. Transceiver Toolkit позволяет проводить тестирование между платами, тестирование между чипами на одной отладочной плате, а также тестирование внутренней обратной связи в одном канале, без необходимости использования внешних обратных связей. Критерием тестирования является частота появления ошибочных битов (BER).
Введение в Transceiver Toolkit &nbsp 11-1
&nbsp &nbsp Интерфейс пользователя Transceiver Toolkit &nbsp 11-2
Примеры проектов отладки цепи приёмопередатчика &nbsp 11-3
&nbsp &nbsp Установки тестов для цепи отладки &nbsp 11-3
&nbsp &nbsp Компиляция примеров проектов &nbsp 11-8
&nbsp &nbsp Изменение назначений выводов &nbsp 11-8
Настройки тестовой цепи в Transceiver Toolkit &nbsp 11-9
&nbsp &nbsp Загрузка проекта в System Console &nbsp 11-9
&nbsp &nbsp Компоновка аппаратных ресурсов &nbsp 11-9
&nbsp &nbsp Создание каналов &nbsp 11-10
&nbsp &nbsp Запуск тестов цепи &nbsp 11-11
&nbsp &nbsp Просмотр результатов в средстве EyeQ &nbsp 11-12
Использование Tcl в System Console &nbsp 11-13
&nbsp &nbsp Запуск Tcl скриптов &nbsp 11-14
Использование сценариев &nbsp 11-14
&nbsp &nbsp Линковка одного проекта с одним чипом, подключение через один кабель USB-Blaster &nbsp 11-15
&nbsp &nbsp Линковка двух проектов с двумя отдельными чипами на одной плате (цепь JTAG), подключение через один кабель USB-Blaster &nbsp 11-15
&nbsp &nbsp Линковка двух проектов с двумя отдельными чипами на разных платах, подключение через отдельные кабели USB-Blaster &nbsp 11-15
&nbsp &nbsp Линковка одного проекта с двумя отдельными чипами &nbsp 11-15
&nbsp &nbsp Линковка несвязанных проектов &nbsp 11-16
&nbsp &nbsp Сохранение ваших установок в виде Tcl скриптов &nbsp 11-16
&nbsp &nbsp Проверка корректности каналов после создания цепи &nbsp 11-16
&nbsp &nbsp Использование рекомендованного DFE процесса &nbsp 11-17
&nbsp &nbsp Запуск синхронных тестов &nbsp 11-17
&nbsp &nbsp Разрешение внутренней последовательной обратной связи &nbsp 11-18
Быстрый проводник по использованию Transceiver Toolkit в программе Quartus II &nbsp 11-18
&nbsp &nbsp Подготовка к использованию Transceiver Toolkit &nbsp 11-18
&nbsp &nbsp Работа с примерами проектов &nbsp 11-19
&nbsp &nbsp Редактирование примеров проектов &nbsp 11-20
&nbsp &nbsp Задание цепи в Transceiver Toolkit для тестов высокоскоростных цепей &nbsp 11-21
&nbsp &nbsp Запуск тестов Auto Sweep &nbsp 11-22
&nbsp &nbsp Запуск тестов EyeQ &nbsp 11-22
&nbsp &nbsp Запуск ручных тестов &nbsp 11-23
&nbsp &nbsp Использование обычного процесса &nbsp 11-23
&nbsp &nbsp Посмотрите онлайн демонстрацию &nbsp 11-24
Заключение &nbsp 11-24

Учимся программировать под FPGA на SystemVerilog

ПЛИС (Программируемая Логическая Интегральная Схема) — это интегральная схема, предназначенная для построения цифровых цепей из описания на специальном языке программирования. Другими словами, ПЛИС представляет собой чип, как бы содержащий в себе кучу элементов наподобие 74HCxx. Какие именно это будут логические элементы, какие между ними будут связи, и какие связи будет иметь получившаяся схема с внешним миром, определяется на этапе программирования ПЛИС.

Примечание: Насколько я смог выяснить, в русском языке на сегодняшний день термины ПЛИС и FPGA (Field-Programmable Gate Array, Программируемая Пользователем Вентильная Матрица), принято считать взаимозаменяемыми, что будет использовано далее по тексту. Однако стоит знать о существовании и альтернативной точки зрения, согласно которой FPGA (ППВМ) является одной из разновидностей ПЛИС (PLD, Programmable Logic Device).

Основные сведения об FPGA

Для программирования FPGA используются языки описания аппаратуры (HDL, Hardware Description Language). Среди них наибольшей популярностью пользуются Verilog (и его диалекты, в частности SystemVerilog), а также VHDL. Языки во многом похожи, но имеют разный синтаксис и различаются в некоторых деталях. Если Verilog — это такой C мира описания аппаратуры, то VHDL — соответственно, Pascal. Насколько мне известно, VHDL несколько менее популярен, в частности, из-за его многословности по сравнению с Verilog. Из преимуществ VHDL (или недостатков, кому как) можно назвать строгую статическую типизацию. Verilog же иногда допускает неявное приведение типов. Если продолжать аналогию с C и Pascal, языки различаются не настолько сильно, чтобы не выучить их оба.

На данный момент лидирующими производителями FPGA являются компании Altera (сейчас принадлежит Intel) и Xilinx. По информации из разных источников, вместе они контролируют не менее 80% рынка. Из других игроков стоит отметить Actel (куплена Microsemi), Lattice Semiconductor, Quicklogic и SiliconBlue. С железом от Xilinx можно работать только из среды разработки от Xilinx (называется Vivado), а среда разработки от Altra (называетя Quartus) понимает только железо от Altera. То есть, полный вендор лок, и выбирая конкретную FPGA для своего проекта, вы автоматически выбираете и инструменты разработки соответствующего производителя, их техническую поддержку, документацию, условия лицензирования софта, политику касаемо прекращения поддержки железа, и так далее.

FPGA часто используются в задачах, где некие вычисления хочется существенно ускорить, реализовав их прямо в железе. Например, FPGA нашли широкое применение в области обработки сигналов, скажем, в осциллографах, анализаторах спектра, логических анализаторах, генераторах сигналов, Software Defined Radio и даже некоторых мониторах. В частности, в LimeSDR используется Altera Cyclone IV, а в осциллографе Rigol DS1054Z стоит Xilinx Spartan-6, а также ProASIC 3 от компании Actel. Еще из применений, о которых я слышал, могу назвать компьютерное зрение, распознавание речи и биоинформатику. Есть и другие проекты, в частности по разработке веб-серверов и СУБД, работающих на FPGA [PDF]. Но, насколько мне известно, это направление все еще остается сильно экспериментальным.

Xilinx или Altera?

Как говорится, лучший Linux тот, который использует ваш знакомый гуру по Linux.

Мой знакомый гуру по FPGA в лице Дмитрия Олексюка посоветовал начать с девборды Arty Artix-7 от компании Digilent. Используемой в ней FPGA является Artix-7 от Xilinx. Сам Digilent не производит доставку в Россию, но устройство доступно и на AliExpress, хотя и с заметной наценкой (официальная цена составляет 99$). Также его продают на eBay. Это довольно мощная плата, которая, тем не менее, стоит вполне адекватных денег.

Fun fact! Если вам просто хочется попрограммировать на Verilog или VHDL, строго говоря, покупать какую-либо плату с FPGA не требуется. Первое время можно ограничиться симулятором, работа с которым будет рассмотрена далее.

Из интересных особенностей платы можно назвать расположение гнезд совместимым с Arduino-шилдами способом. Также в комплекте с платой идет вкладыш, по которому можно получить лицензию на Vivado, открывающую все его возможности. Лицензия действует один год с момента активации, а также привязана к одному компьютеру по типу ОС и MAC-адресу.

По доставке. Я слышал, что устройства с FPGA на борту имеют большие шансы не пройти таможню. Магазин на AliExpress, ссылку на который я привел выше, доставляет платы в Россию через курьерскую службу СПСР. Для прохождения таможни потребовалось заполнить онлайн-форму с паспортными данными (только данные, без фото) и контактным телефоном, как этого требует текущее российское законодательство. После этого плата была доставлена курьером прямо до двери без каких-либо вопросов.

Установка Vivado

Среда разработки Vivado доступна для скачивания на сайте Xilinx. Будьте морально готовы к тому, что перед скачиванием вам придется пройти регистрацию и заполнить довольно подробную форму о себе. Скачиваем архив под названием «Vivado HLx 2017.2: All OS installer Single-File Download». Не перепутайте случайно с каким-нибудь «Vivado Lab Solutions», это совершенно не то, что нужно. Архив весит более 20 Гб, поэтому запасаемся терпением.

Распаковываем архив, запускаем инсталлятор. Ставим Vivado HL System Edition. Полная его версия займет на диске 47 Гб. Лично я снял галочку напротив Software Development Kit и оставил поддержку только 7 Series устройств, что уменьшило размер до 12 Гб. Забегая немного вперед отмечу, что такой конфигурации оказалось вполне достаточно.

Перед запуском Vivado нужно добавить в него поддержку Arty Artix-7, так как из коробки он ничего об этой плате не знает. Делается это как-то так:

cd ~/opt/xilinx/Vivado/2017.2/data/boards/board_files
wget https://github.com/Digilent/vivado-boards/archive/master.zip
unzip master.zip
mv vivado-boards-master/new/board_files/* ./
rm -r vivado-boards-master
rm master.zip

Также скачиваем отсюда и сохраняем куда-нибудь файл Arty_Master.xdc. Он понадобится нам далее. Файл содержит описание находящихся на плате светодиодов, переключателей и так далее. Без него поморгать светодиодами на Verilog будет непросто.

Первый проект на SystemVerilog

В Vivado говорим File → New Project… В качестве типа проекта выбираем RTL Project, ставим галочку Do not specify sources at this time. В диалоге выбора типа платы находим в списке Arty.

Первым делом добавляем к проекту скачанный ранее XDC файл. Копируем его в каталог с проектом. Затем говорим File → Add Sources… → Add or create constraints → Add Files, находим копию файла, жмем Finish. В дереве файлов проекта (Sources) в группе Constraints появится файл Arty_Master.xdc, или как вы там назвали копию. Открываем его и раскомментируем все строчки в группах Clock signal, Switches и LEDs.

Далее говорим File → Add Sources… → Add or create design sources → Create File. В типе файла выбираем SystemVerilog, в имени файла вводим что-нибудь вроде hello. Говорим Finish. Далее появится диалог Define Module, который предложит накликать интерфейс модуля. Диалог довольно бесполезный, потому что то же самое удобнее сделать прямо в коде, так что жмем Cancel.

В дереве исходников находим новый файл hello.sv, он будет в группе Design Sources. Открываем и пишем следующий код:

`timescale 1ns / 1ps

module hello(
    input logic CLK100MHZ,
    input logic [3:0] sw,
    output logic [3:0] led
);

always @(posedge CLK100MHZ)
begin
    if(sw[0] == 0)
    begin
        led <= 4’b0001;
    end
    else
    begin
        led <= 4’b0000;
    end
end

endmodule

Если все было сделано правильно, на этом этапе Vivado у вас будет выглядеть как-то так (кликабельно, PNG, 71 Кб):

Компиляция программы осуществляется в два этапа — синтез (synthesis) и имплементация (implementation). На этапе синтеза программа транслируется в абстрактную цепь из логических вентилей и прочих элементов. На этапе имплементации принимается решение о том, как прошить эту цепь в конкретную железку.

Запустим синтез, сказав Flow → Run Synthesis, или просто нажав F11. В правом верхнем углу вы увидите индикацию того, что процесс идет. Он может занимать довольно много времени, в зависимости от вашего компьютера и сложности программы. На моем ноутбуке синтез приведенной выше программы выполнился где-то секунд за 10. Если теперь сказать Flow → Open Synthesized Design, то можно увидеть красивую картинку вроде такой:

Настало время прошить нашу плату. Говорим Flow → Run Imlementation, затем Flow → Generate Bitstream. Подключаем плату к компьютеру по USB, в Vivado говорим Flow → Open Hardware Manager → Open target → Auto Connect → Program device. Потребуется указать путь к bit-файлу. У меня он был следующим:

./first-project.runs/impl_1/hello.bit

Говорим Program. Теперь на плате горит светодиод LD4, если переключатель SW0 опущен (см приведенную выше фотографию платы). Если же переключатель поднят, светодиод не горит. Простенько, конечно, но это же «hello, world», чего вы ожидали? 🙂

Симуляция

Симуляция — это виртуальное выполнение кода на Verilog или VHDL прямо на вашем компьютере, безо всяких там ПЛИС’ов. Это одновременно и отладочный инструмент, и своего рода фреймворк для покрытия кода тестами.

При знакомстве с симуляцией первое, что я обнаружил, было то, что она у меня не работает. В логах было просто:

ERROR: [XSIM 43-3409] Failed to compile generated C file […]xsim_1.c.

Google по этой ошибке находил только всякую ерунду в стиле «попробуйте отключить антивирус». В итоге решить проблему помогло добавление флага -v 2 в скрипт ~/opt/xilinx/Vivado/2017.2/bin/xelab. С его помощью я выяснил, что Clang, бинарник которого Vivado таскает за собой, падает со следующей ошибкой:

/a/long/path/to/clang: error while loading shared libraries:
  libncurses.so.5: cannot open shared object file: No such file or
  directory

А эта ошибка и ее решение уже описаны на Arch Wiki. Лично я просто скопировал уже существующий файл из каталога Vivado_HLS:

cp ~/opt/xilinx/Vivado_HLS/2017.2/lnx64/tools/gdb_v7_2/libncurses.so.5\
  ~/opt/xilinx/Vivado/2017.2/lib/lnx64.o/libncurses.so.5

… после чего все заработало. Итак, а теперь, собственно, пример симуляции.

По аналогии с тем, как ранее мы создавали hello.sv, создаем новый файл hello_sim.sv в группе Simulation Sources. В файле пишем следующий код:

`timescale 1ns / 1ps

module hello_sim();
    logic clck_t;
    logic [3:0] sw_t;
    logic [3:0] led_t;

    hello hello_t(clck_t, sw_t, led_t);

    initial begin
        clck_t <= 0;
        sw_t <= 4’b0000; #1; clck_t <= 1; #1; clck_t <= 0; #1;
        assert(led_t === 4’b0001);
       
        sw_t <= 4’b0001; #1; clck_t <= 1; #1; clck_t <= 0; #1;
        assert(led_t === 4’b0000);
    end

endmodule

В дереве исходников делаем правый клик по файлу, выбираем Source Node Properties. В секции Used In снимаем галочки Synthesis и Implementation. Мы же не хотим, чтобы какие-то там тесты засоряли нашу далеко не резиновую FPGA?

Теперь говорим Flow → Run Simulation → Run Behavioral Simulation. В итоге вы увидите что-то примерно такого плана:

Можно видеть, что когда sw[0] равен нулю, led[0] равен единице, и наоборот. При этом все изменения происходят по фронту тактового сигнала. Похоже, что программа работает корректно. Ну и на ассертах ничего не свалилось, что как бы намекает.

Заключение

Архив с описанным выше проектом можно скачать здесь. В качестве дополнительных источников информации я бы рекомендовал следующие:

  • Если вас интересуют подробности по железу, обратите внимание на даташит Artix-7 [PDF], reference manual к Arty Artix-7 [PDF], а также схему платы [PDF];
  • Книга Цифровая схемотехника и архитектура компьютера (Digital Design and Computer Architecture) — прекрасная книга, в которой, помимо прочего, подробно объясняются языки SystemVerilog и VHDL, а также внутреннее устройство FPGA;
  • OpenCores.org — каталог всевозможных открытых проектов под FPGA. Для скачивания исходного кода требуется регистрация. Активация аккаунта производится модераторами вручную, поэтому может занимать несколько дней;

А пишите ли вы под FPGA? Если да, то на каком языке и какого производителя предпочитаете?

Дополнение: Также вас могут заинтересовать статьи Головоломка с логическими вентилями и решение на HDL и Знакомимся с iCEstick и полностью открытым ПО для разработки под FPGA.

Метки: FPGA, Электроника.

Иллюстрированный самоучитель по OrCAD › Создание проекта в OrCAD Capture › Список команд программы OrCAD Capture [страница — 59] | Самоучители по инженерным программам

Список команд программы OrCAD Capture

В табл. 2.13 приведен перечень команд программы OrCAD Capture и их краткое описание.

Таблица 2.13. Команды OrCAD Capture (начало).

КомандаНазначение
Меню File (Файл)
New…Создание нового документа:
Project…Вызов Мастера создания проекта аналогового или смешанного устройства (Analog or Mixed-Signal Circuit), печатной платы (PC Board) или создание не специализированного проекта (Schematic)
DesignСоздание схемы
LibraryСоздание библиотеки символов
VHDL FileСоздание файла в формате VHDL
Text FileСоздание текстового файла
PSpice LibraryСоздание библиотеки моделей PSpice
Открытие существующего документа:
Project…Проект (файл *.opj)
Design…Схема проекта (файл *.dsn)
Library…Библиотека символов (файл *.olb)
VHDL File-Файл в формате VHDL (файл *.vhd)
Text File…Текстовый файл (файл *.txt)
PSpice LibraryБиблиотека моделей PSpice (файл *.lib)
CloseЗакрытие текущего окна (если схема была изменена, ее предлагается сохранить)
Close ProjectЗакрытие текущего проекта
Save (CTRL + S)Сохранение внесенных изменений в текущем проекте
Save As…Сохранение внесенных в проект изменений в новом файле, имя которого указывается по дополнительному запросу
Archive Project…Архивирование проекта (Library – библиотека, Output files – выходные файлы, Referenced projects – участвующие проекты)
Export Selection…Вставка на схему блока, занесенного ранее в библиотеку
Import Selection…Запись в библиотеку выбранного блока
Print Preview…Предварительный просмотр и масштабирование схемы

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.

Часть 1 Введение в Verilog

Подробности
Автор: EngineerDeveloper®

   Verilog, Verilog HDL (англ. Verilog Hardware Description Language) — это язык описания аппаратуры, используемый для описания и моделирования электронных систем. Verilog HDL, не следует путать с VHDL (конкурирующий язык), наиболее часто используется в проектировании, верификации и реализации (например, в виде СБИС) аналоговых, цифровых и смешанных электронных систем на различных уровнях абстракции.


   Разработчики Verilog сделали его синтаксис очень похожим на синтаксис языка C, что упрощает его освоение. Verilog имеет препроцессор, очень похожий на препроцессор языка C, и основные управляющие конструкции «if», «while» также подобны одноимённым конструкциям языка «C».


   Следует отметить одну из самых важных отличительных особенностей программирования логики (Verilog, VHDL и т.д.) освоив которую, сразу же все возвращается на круги свои. Всё дело в том, что в ПЛИС все процессы выполняются одновременно! В то время как привычная и понятная нам процессорная техника работает иначе – последовательно. Уяснив эту важную отличительную особенность можно смело пытаться программировать.


   Все плюсы и минусы СБИС ПЛИС освещаются в других разделах. Тут же хотелось бы продолжить уже конкретнее о языке описания аппаратуры Verilog.


   Автор является приверженцем FPGA Xilinx, поэтому большинство примеров будет именно в пакете ISE 14.4, а времяночки из симулятора ModelSim 6.5b.


   Теоретический материал был найден на просторах интернета, а так же в книгах с полки. С литературой и интернет ресурсами по теме Verilog можно ознакомиться в соответствующих разделах сайта.


   Статья ни в коем случае не претендует на полноту описания языка Verilog. И, конечно, она не может заменить множества книг, которые Вам придется прочитать, если Вы всерьез займетесь проектированием цифровых микросхем. Тем не менее, эти уроки послужат практическим навыком начинающим разработчикам.


   Для серьёзного обучения было бы правильно ознакомиться с международным стандартом — IEEE Std 1364-2001(стандарт на Verilog 2001).

Самоучитель немецкого языка


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

Для такого обучения не годиться один словарь, где придется искать необходимые слова. Больше времени будет уходить на поиск необходимых слов, чем на их заучивание. Также хороший пошаговый самоучитель немецкого языка должен предоставлять кроме поурочного словаря, повторяемость всех выученных слов. Так, каждое новое слово, должно повторяться на протяжении нескольких уроков, пока полностью не усвоиться. Если слово встретиться в первом уроке, а потом после десятого, то к этому времени оно забудется, это и будет снижение эффективности.

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

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

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

Центр Проектирования :: ЦП ИСУНМ МГТУ МИРЭА

 

Шкаф № В104.1

05.12.08г.

 

1. 

Фрунзе А.В. Микроконтроллеры? Это же просто! Том 1.

 

 

2.  

Фрунзе А.В. Микроконтроллеры? Это же просто! Том 2.

 

 

3. 

Фрунзе А.В. Микроконтроллеры? Это же просто! Том 3.

 

 

4. 

Микроконтроллеры фирмы ATMEL семейства AVR .Справочник КТЦ МК.

 

 

5. 

Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному.

 

 

6. 

Голубцов М.С. Микроконтроллеры AVR: от простого к сложному.

 

 

7. 

Баранов В.Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы.

 

 

8. 

Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы «ATMEL».

 

 

9. 

Белов А.В. Самоучитель по микропроцессорной технике.

 

 

10. 

Трамперт В. AVR-RISC микроконтроллеры.

 

 

11.  

Трамперт В. Измерение, управление и регулирование с помощью AVR микроконтроллеров.

 

 

12. 

Гребнев В.В. Микроконтроллеры семейства AVR фирмы ATMEL.

 

 

13. 

Микропроцессорные системы. Уч. пособие для вузов.

 

 

14. 

Предко М. Руководство по микроконтроллерам. Том 1.

 

 

15. 

Предко М. Руководство по микроконтроллерам. Том 2.

 

 

16. 

Иди Ф. Сетевой и межсетевой обмен данными с микроконтроллерами.

 

 

17. 

Васильев А.Е. Микроконтроллеры. Разработка встраиваемых приложений.

 

 

18. 

Мортон Дж. Микроконтроллеры AVR. Вводный курс.

 

 

19. 

Кравченко 10 практических устройств на AVR-микроконтроллерах. Книга 1 (с CD).

 

 

20. 

Ревич Ю. Занимательная микроэлектроника.

 

 

 

Шкаф № В102.1

 

 

21. 

System Application Guide (Analog Devices).

 

 

22. 

Practical Analog Design Techniques (Analog Devices).

 

 

23. 

Mixed-signal and DSP Design Techniques (Analog Devices).

 

 

24. 

Analog-Digital Conversion (Analog Devices).

 

 

25. 

Руководство пользователя сигнальными процессорами семейства SHARC ADSP-2106x.

 

 

26. 

ADSP-2100 Family. EZ-Kit Lite Reference Manual.

 

 

27. 

Гуртов В.А., Осауленко Р.Н. Физика твердого тела для инженеров.

 

 

28. 

Горелик С.С., Дашевский М.Я. Материаловедение полупроводников и диэлектриков.

 

 

29. 

Кобаяси Н. Введение в нанотехнологию.

 

 

30. 

Архитектура ЭВМ и язык ассемблера. (лекции МГУ ВМК В.Г. Баула) и другое.

 

 

31. 

Гуртов В. Твердотельная электроника.

 

 

32. 

Банах Д.Т., Джонс Т., А.Дж. Каламейя Autodesk Inventor.

 

 

33. 

Шалин П. Реестр Windows XP. Специальный справочник.

 

 

34. 

Омельченко Л., Федоров А. Самоучитель Microsoft Windows XP.

 

 

35. 

Якусевич В.В. BIOS Setup Полное руководство.

 

 

36. 

Симмонс К. Головная боль Windows XP.

 

 

 

 

 

 

 

Шкаф № В102.2

 

 

37. 

Волин М.Л. Паразитные  процессы в радиоэлектронной аппаратуре

 

 

38. 

Барнс Дж. Электронное конструирование: методы борьбы с помехами.

 

 

39. 

Стешенко В.Б. EDA. Практика автоматизированного проектирования радиоэлектронных устройств.

 

 

40. 

Бойко В.И. и др. Схемотехника электронных систем. Цифровые устройства.

 

 

41. 

Хоровиц П., Хилл У. Искусство схемотехники. Том 3.\

 

 

42. 

Бабич Н.П., Жуков И.А, Компьютерная схемотехника. Методы построения и проектирования.

 

 

43. 

Грушвицкий Р.И., Мурсаев А.Х., Угрюмов Е.П. Проектирование систем на микросхемах с программируемой структурой.

 

 

44. 

Угрюмов Е.П. Цифровая схемотехника.

 

 

45. 

Потапов Ю.В. Сиcтема проектирования печатных плат PROTEL.

 

 

46. 

Джексон Р.Г. Новейшие датчики.

 

 

47. 

Фрайден Дж. Современные датчики. Справочник.

 

 

48. 

Крекрафт Д., Джерджли С. Аналоговая схемотехника. Схемы, системы, обработка сигнала.

 

 

49. 

Фрике К. Вводный курс цифровой электроники.

 

 

50. 

Гадзиковский В.И. Методы проектирования цифровых фильтров.

 

 

51. 

Эннс В.И., Кобзев Ю.М. Проектирование аналоговых КМОП-микросхем. Краткий справочник разработчика.

 

 

52. 

Тревис Дж., Кринг Дж. LabVIEW для всех.

 

 

53. 

Суранов А.Я. LabVIEW 8.20: справочник по функциям.

 

 

54. 

Визильтер Ю.В., Желтов  С.Ю., Князь В.А., Ходарев А.Н., Моржин А.В. Обработка цифровых изображений с примерами на LabVIEW и IMAQ Vision.

 

 

55. 

Кехтарнаваз Н., Ким Н. Цифровая обработка сигналов на системном уровне с использованием LabVIEW.

 

 

56. 

Федосов В.П., Нестеренко А.К. Цифровая обработка сигналов в LabVIEW.

 

 

57. 

Болл Б., Даф Х. Red Hat Linux 8/9.  Настольная книга пользователя.

 

 

58. 

Зотов

 

 

59. 

Гук М. Аппаратные интерфейсы ПК.

 

 

60. 

Блюм П. LabVIEW: стиль программирования.

 

 

 

 

 

 

 

Шкаф № В102.3

 

 

61. 

Аналого-цифровое преобразование. Под ред. У. Костера.

 

 

62. 

Никамин В.А. Аналого-цифровые и цифро-аналоговые преобразователи. Справочник.

 

 

63. 

Медведев Б.Л., Пирогов Л.Г. Практическое пособие по цифровой схемотехнике.

 

 

64. 

Каплан Д., Уайт К. Практические основы аналоговых и цифровых схем.

 

 

65. 

Бойт К. Цифровая электроника.

 

 

66. 

Музылева И. Элементная база для построения цифровых систем управления.

 

 

67. 

Корис Р., Шмидт-Вальтер Х. Справочник инженера-схемотехника.

 

 

68. 

Бёрд Дж. Физика. От теории к практике.  Кн. 1. Механика. Оптика. Термодинамика. 

 

 

69. 

Бёрд Дж. Физика. От теории к практике.  Кн. 2. Электричество. Магнетизм.

 

 

70. 

Перельройзен Е.З. Проектируем на VHDL.

 

 

71. 

Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL.

 

 

72. 

Бибило П.Н. Основы языка VHDL.

 

 

73. 

Потехин Д.С., Тарасов И.Е. Разработка систем цифровой обработки сигналов на базе ПЛИС.

 

 

74. 

Кнышев Д.А., Кузелин М.О. ПЛИС фирмы «XILINX»: описание структуры основных семейств.

 

 

75. 

Бибило П.Н. Системы проектирования интегральных схем на основе языка VHDL.

 

 

76. 

Бибило П.Н., Авдеев Н.А. VHDL . Эффективное использование при проектировании цифровых систем.

 

 

77. 

Мальцев П.П., Гарбузов Н.И., Шарапов А.П., Кнышев Д.А. Программируемы логические ИМС на КМОП-структурах и их применение.

 

 

78. 

Тарасов И.Е. Разработка цифровых устройств на основе ПЛИС XILINX с применением языка VHDL.

 

 

79. 

Кузелин М.О., Кнышев Д.А., Зотов В.Ю. Современные семейства ПЛИС фирмы «XILINX».

 

 

80. 

Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики.

 

 

81. 

Дьяконов В.П. Справочник по применению сиcтемы PC MatLAB.

 

 

82. 

Дьяконов В.П. MATLAB 6.5 SP1/7.0+Simulink 5/6 в математике и моделировании.

 

 

83. 

Юкио Сато. Обработка сигналов. Первое знакомство.

 

 

84. 

Семенов Б.Ю. Шина I2C в радиотехнических конструкциях.

 

 

85. 

Ёсикадзу Суэмацу. Микрокомпьютерные системы управления. Первое знакомство.

 

 

86. 

Кечиев Л.Н. Проектирование печатных плат для цифровой быстродействующей аппаратуры.

 

 

87. 

Немудров В., Мартин Г. Системы-на-кристалле. Проектирование и развитие.

 

 

88. 

Ватанабэ М. Проектирование СБИС.

 

 

89. 

Соловьев В.В. Проектирование цифровых систем на основе программируемых логических интегральных схем.

 

 

90. 

Поляков А.К. Языки VHDL и VERILOG в проектировании цифровой аппаратуры.

 

 

91. 

Грушвицкий Р.И., Мурсаев А.Х., Угрюмов Е.П. Проектирование систем на микросхемах с программируемой структурой.

 

 

92. 

Джонсон Г., Грэхем М. Конструирование высокоскоростных цифровых устройств: начальный курс черной магии.

 

 

93. 

Джонсон Г., Грэхем М. Высокоскоростная передача цифровых данных: высший курс черной магии.

 

 

94. 

Титце, Шенк в 2-х т.

 

 

95. 

Волович Схемотехника аналоговых и аналого-цифровых электронных устройств.

 

 

96. 

Бибило Основы языка VHDL.

 

 

97. 

Казеннов Г.Г. Основы проектирования интегральных схем и систем.

 

 

98. 

Эннс В.И., Кобзев Ю.М. Проектирование аналоговых КМОП-микросхем. Краткий справочник разработчика. (еще раз)

 

 

99. 

Алексеенко А.Г. Основы микросхемотехники.

 

 

100. 

Коледов Л.А. Технология и конструкции микросхем, микропроцессоров и микросборок.

 

 

101. 

МОП-СБИС. Моделирование элементов и технологических процессов. Под ред. Р.А. Суриса.

 

 

102. 

Кунву Ли Основы САПР.

 

 

103. 

Хайнеман Р. PSPICE. Моделирование работы электронных схем. (c CD)

 

 

VHDL Учебник 1: Введение в VHDL

Что такое VHDL?

  • VHDL — это сокращенная форма языка описания оборудования VHSlC, где VHSIC означает Very High Speed ​​Integrated Circuits
  • Это язык описания оборудования — означает, что он описывает поведение цифровой схемы, а также может использоваться для создания или реализации аппаратного обеспечения цифровой схемы / системы.
  • Может использоваться как для синтеза цифровых схем, так и для моделирования.
  • Он используется для построения цифровой системы / схемы с использованием программируемого логического устройства, такого как CPLD (сложное программируемое логическое устройство) или FPGA (программируемая вентильная матрица).
  • Программа (код) VHDL используется для реализации цифровой схемы внутри CPLD / FPGA, или ее можно использовать для изготовления ASIC (интегральная схема специального назначения)
  • Это очень полезно при разработке сложных микропроцессоров или микроконтроллеров высокого уровня, таких как ASIP (процессор команд для конкретных приложений) или PSoC (программируемая система на кристалле).

Теперь, прежде чем вдаваться в подробности о VHDL, давайте сначала посмотрим, как и почему возникла необходимость в VHDL.

Почему именно VHDL?

  • В 1980-х годах Министерство обороны США инициировало программу VHSIC
  • Различные компании-разработчики аппаратного обеспечения начали разрабатывать свои ИС с собственным HDL. У всех компаний были свои и разные HDL
  • .
  • Итак, проблема в том, что все эти разные компании не могут обмениваться своим кодом и дизайном с другими.
  • Кроме того, все компании предоставляют DoD свои чипы с разными HDL
  • .
  • Итак, было требование к стандартизированному языку описания оборудования для проектирования, документации и проверки цифровых схем / систем.

Преимущества VHDL

  • Не зависит от поставщика
  • Переносной
  • Многоразовая
  • Он поддерживает иерархическое проектирование — целая большая и сложная система может быть смоделирована как взаимосвязь небольших компонентов, и снова компоненты могут быть смоделированы как взаимосвязь субкомпонентов
  • Все операторы программы VHDL выполняются одновременно (до тех пор, пока операторы не будут помещены внутри процедуры, функции или процесса)
  • Он читается как человеком, так и машиночитаем
  • Это стандарт IEEE и ANSI
  • Поддерживает различные методологии проектирования, такие как нисходящий, восходящий, смешанный и т. Д.
  • Может использоваться для разработки комбинационных, последовательных или смешанных цифровых схем с использованием трех различных методов: 1) поток данных 2) поведенческий 3) структурный

Краткая история происхождения VHDL

  • В 1985 году вышла первая версия VHDL 7.2 был разработан IBM, TEXAS INST. и Intermatrix по контракту DoD
  • В 1987 году он был стандартизирован IEEE со стандартом IEEE 1076. После этого для VHDL был предоставлен новый стандарт IEEE 1164, который сейчас используется повсеместно.
  • ANSI также распознает VHDL, и стандартное справочное руководство по VHDL предоставляется IEEE, у которого есть официальное описание этого VHDL
  • .

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

Здесь еще раз, прежде чем двигаться дальше, я советую всем вам прочитать две очень хорошие книги по VHDL.

  • Проектирование схем с использованием VHDL, автор — В. А. Педрони
  • A VHDL Primer, автор J Bhaskar

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

Итак, я думаю, теперь вы все очень взволнованы изучением VHDL. Давайте сначала посмотрим, как спроектировать цифровую схему с использованием средств VHDL: « Каков поток проектирования VHDL?»

Расчетный поток VHDL

  1. Процесс проектирования VHDL начинается с написания программы VHDL. Различные производственные компании, такие как XILINX, Altera и т. Д., Предоставляют свои собственные инструменты разработки программного обеспечения, такие как XILINX ISE, Altera Quartus и т. Д., Для редактирования, компиляции и моделирования кода VHDL.В этом коде VHDL схема описана в RTL (уровень передачи резистора)
  2. Этот код VHDL компилируется и генерирует список цепей на уровне шлюза. Компилятор преобразует высокоуровневый код VHDL в RTL в Gate Level
  3. .
  4. Этот список цепей дополнительно оптимизирован, чтобы снова получить оптимизированный список цепей на уровне ворот. Оптимизация сделана для лучшей скорости и меньшего пространства. На этом этапе выполняется моделирование дизайна.
  5. Наконец, физическое устройство реализуется на CPLD / FPGA, или окончательная маска подготавливается для ASIC из этого оптимизированного списка цепей по месту и программному обеспечению маршрута (установщик).еще раз окончательное устройство может быть смоделировано и проверено

Это поток проектирования цифровой схемы с использованием VHDL. Поскольку VHDL также является одним из видов языков программирования, он также имеет свою программную структуру (аналогичную другим языкам программирования, таким как структура программы C). Итак, в качестве следующего шага давайте узнаем, что такое структура программы VHDL?

Структура программы VHDL

  • Все программы VHDL состоят как минимум из двух компонентов: Entity и Architecture
  • Он может иметь дополнительные компоненты, такие как конфигурация, объявление пакета, тело и т. Д.согласно требованиям

Структура программы VHDL такая:

Декларация библиотеки:

  • Библиотека содержит весь часто используемый фрагмент кода. Это позволит нам использовать их снова и снова. Также он может использоваться совместно с другими проектами
  • Он начинается с ключевого слова LIBRARY, за которым следует имя библиотеки
  • Во всех кодах VHDL обычно используются три библиотеки.
    1. IEEE — определяет многоуровневую логическую систему
    2. std — библиотека ресурсов для среды проектирования VHDL
    3. work — используется для сохранения нашей проектной работы и файла программы (.vhd)
  • Однако в программном коде нам нужно объявить только библиотеку IEEE, потому что две другие библиотеки являются библиотеками по умолчанию.
  • Теперь для добавления пакетов библиотеки и ее части ключевое слово USE используется с именем библиотеки, пакетами библиотеки и частями пакета. Например, в библиотеке IEEE это пакет std_logic_1164, и чтобы добавить всю его часть, мы можем написать

БИБЛИОТЕКА ieee
ИСПОЛЬЗУЙТЕ ieee.std_logic_1164.all

  • Итак, все программы VHDL начинаются с двух вышеупомянутых операторов для объявления библиотеки

Декларация юридического лица:

  • Объект определяет соединения ввода-вывода цифровой схемы, с которыми он может взаимодействовать с другими компонентами / схемами
  • Он объявляет количество входов, заданных схеме, и количество выходов, взятых из схемы.
  • Кроме того, он объявляет любые промежуточные сигналы, которые используются в самой схеме.
  • Объявление объекта начинается с ключевого слова ENTITY. Пользователь должен дать желаемое имя сущности, которая часто связана со схемой, которая проектируется, например, ‘ mux,’ ‘, decoder,’ ‘, сумматор ,’ ‘, counter’ и т. Д. (Практическое правило для любая программа VHDL — имя файла программы должно совпадать с именем объекта)
  • Внутри объекта контакты ввода-вывода схемы объявляются с помощью ключевого слова PORT
  • PORT (означает взаимодействие контактов) объявлены с port_name, port_mode и port_type
    1. имя_порта — определяемое пользователем имя контакта ввода-вывода
    2. port_mode — существует четыре типа режима порта: IN, OUT, INOUT и BUFFER.IN обозначает входной контакт, доступный только для чтения. OUT указывает выходной контакт и его доступ только для записи. Оба эти штифта однонаправленные. Вывод INOUT является двунаправленным, его можно читать и писать. БУФЕР используется для промежуточного выхода
    3. port_type — это может быть BIT, BIT_VECTOR, STD_LOGIC и т. Д.
  • После объявления всех интерфейсов объявление объекта заканчивается ключевым словом END, за которым следует имя объекта
  • Давайте посмотрим на пример объекта для логического элемента И с двумя входами.

  • Аналогично, мы можем записать объект для полусумматора как

Архитектура:

  • Архитектура декларирует функциональные возможности цифровой схемы
  • Предоставляет внутренние детали объекта, которые означают, как ввод-вывод взаимосвязаны.
  • Он описывает поведение схемы означает, как схема генерирует требуемый выход из заданных входов
  • Объявление архитектуры начинается с ключевого слова ARCHITECTURE, за которым следуют имя_архитектуры и имя_существления
  • Ключевое слово BEGIN указывает начало тела архитектуры.Тело включает последовательные или параллельные операторы, которые описывают функциональность схемы
  • Тело архитектуры заканчивается ключевым словом END, за которым следует имя_архитектуры
  • Вот архитектура логического элемента И с двумя входами (сущность указана выше).

  • Аналогично напишем архитектуру полусумматора.

  • Существует три различных стиля моделирования архитектурного тела.
    1. Стиль потока данных — в этом стиле моделирования схема описывается с помощью параллельных операторов
    2. Поведенческий стиль — в этом стиле моделирования схема описывается с помощью последовательных операторов
    3. Структурный стиль — в этом стиле моделирования схема описывается с помощью различных взаимосвязанных компонентов
  • Также может быть еще один стиль моделирования, который представляет собой смешанный стиль моделирования — комбинация любых двух или всех трех стилей, указанных выше

На этом завершаются основы VHDL, процесс его проектирования и структура программы.В следующем руководстве мы увидим различные программы VHDL для цифровых схем и разные стили моделирования для программ VHDL.

Приступите к программированию на VHDL: создайте собственное оборудование

Раскрытие информации: Ваша поддержка помогает поддерживать работу сайта! Мы зарабатываем реферальный сбор за некоторые услуги, которые мы рекомендуем на этой странице. Узнать больше

VHDL — это язык описания оборудования (HDL). HDL немного похож на язык программирования, но имеет другое назначение.Вместо того, чтобы использоваться для разработки программного обеспечения, HDL используется для определения компьютерного чипа. VHDL может использоваться для описания любых типов схем и часто используется при проектировании, моделировании и тестировании процессоров, ЦП, материнских плат, FPGA, ASIC и многих других типов цифровых схем.

История VHDL

Имя VHDL — это вложенная аббревиатура. Это означает VHSIC Hardware Description Language . VHSIC означает Very High Speed ​​Integrated Circuit . Помимо описания быстрого процессора, это было название программы правительства США в 1980-х годах, миссией которой были исследования и разработки в области очень быстродействующих интегральных схем (быстрых компьютерных микросхем).

Наряду с крупными достижениями в области материаловедения, алгоритмов, дизайна микросхем, литографии и десятка других связанных областей, VHSIC разработал VHDL.

Первый официальный стандарт языка был разработан IEEE в 1987 году и известен как IEEE 1076. С тех пор было выпущено несколько редакций, последняя из которых вышла в 2008 году. В дополнение к «базовому» языку, указанному в 1076, существует — это ряд расширений, кодифицированных в других спецификациях:

  • IEEE 1076.1 VHDL Analog and Mixed-Signal (VHDL-AMS)
  • IEEE 1076.1.1 Стандартные пакеты VHDL-AMS (stdpkgs)
  • IEEE 1076.2 VHDL Math Package
  • IEEE 1076.3 Пакет синтеза VHDL (vhdlsynth)
  • IEEE 1076.3 Пакет синтеза VHDL — с плавающей запятой (fphdl)
  • 9000.49 Библиотеки Tim IEEE 10 : vital)
  • IEEE 1076.6 VHDL Synthesis Interoperability
  • IEEE 1164 VHDL Multivalue Logic (std_logic_1164) Пакеты

Дизайн и синтаксис VHDL

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

Большинство языков программирования, по сути, являются процедурными — компьютер последовательно выполняет одну команду за другой. VHDL другой. Это аппаратный язык, описывающий (реальную или смоделированную) физическую структуру.Эта структура состоит из большого количества модулей, и каждый модуль действует одновременно с любым другим модулем.

Итак, внутри каждого модуля есть процедурный поток инструкций, который чем-то похож на небольшую автономную программу — с переменными, потоками управления, условными операторами, циклами. Каждый модуль имеет один или несколько входов, а также один или несколько выходов. Входные данные указываются в структуре, называемой объектом , а автономная логика определяется в архитектуре .

Рассмотрим идею «логического элемента И», где у нас есть два входа и один выход. Если оба входа «включены» (истина, 1), то выход «включен»; в противном случае выход «выключен». Таким образом, используя VHDL, мы определяем два входа и один выход. Допустимые значения этих входов и выходов будут определены в модуле std_logic , который импортируется как библиотека на обычном языке программирования. Затем архитектура определит внутреннюю работу нашего «логического элемента И», чтобы он работал так, как мы только что обсудили.

Модуль std_logic представляет собой интересный аппаратно-зависимый тип значения. Оно похоже на значение BOOLEAN, присутствующее в языках программирования (один бит: истина или ложь), но может иметь диапазон значений, поскольку представляет собой фактический электрический импульс в физической системе:

  • U : не инициализировано. Этот сигнал еще не установлен.
  • X : неизвестно. Невозможно определить это значение / результат.
  • 0 : логика 0
  • 1 : логика 1
  • Z : высокий импеданс
  • Вт : слабый сигнал, не могу сказать, должен ли он быть 0 или 1.
  • L : Слабый сигнал, который, вероятно, должен перейти на 0
  • H : Слабый сигнал, который, вероятно, должен перейти на 1
  • - : Неважно.

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

Важно понимать, что дизайн VHDL — это не программа — она ​​не запускается и не выполняется. Как план, он определяет архитектуру. Как только проект завершен, он обычно моделируется для тестирования в программном тестовом стенде, а затем синтезирует , что означает, что он преобразуется в физический дизайн, который может быть реализован на реальной микросхеме или печатной плате.

Ресурсы для изучения VHDL

Ресурсов для изучения VHDL очень много.Мы собрали одни из лучших.

Интернет-ресурсы

Книги

Все эти книги посвящены VHDL:

VHDL & Verilog Books

Основным конкурентом VHDL является Verilog. Оба языка используются для проектирования оборудования, поэтому существует ряд книг, в которых основное внимание уделяется базовым концепциям проектирования и разработки и используется как VHDL, так и Verilog.

Другие важные ссылки VHDL

Реализации и симуляторы

  • Свободный / открытый исходный код
  • Коммерческий / собственный

Инструменты

  • Утилиты EDA: большой набор утилит для работы с VHDL, а также Verilog и другими HDL .
  • EDA Playground: онлайн-песочница для тестирования проектов VHDL.
  • Пакеты редактора

Вы также должны знать …

VHDL — один из двух основных языков описания оборудования. Другой — Verilog. Большинство разработчиков оборудования знакомы с обоими языками, а также с языками операционных систем низкого уровня, такими как Cand C ++.

Учебник по VHDL — Практический пример — часть 3 — Тестовая среда VHDL

В первой части этой серии статей мы сосредоточились на дизайне оборудования, включая некоторые определения VHDL для характеристик ввода / вывода части CPLD.В части 2 мы описали логику VHDL CPLD для этой конструкции. В части 3 мы покажем весь проект VHDL и связанные с ним тесты, используемые для доказательства того, что мы действительно разработали то, что мы начали проектировать.

Быстрые ссылки

Во-первых, давайте соберем все части предыдущего дизайна в единый список. Это дает нам отличный обзор дизайна и помогает нам разработать стратегию тестирования. Вот полный дизайн нашего механизма сбора данных:

Исходя из приведенного выше кода, среда Xilinx ISE упрощает создание базовой структуры для кода тестовой среды.Чтобы начать процесс, выберите «Новый источник» в пунктах меню «Проект». Это запускает «Мастер нового исходного кода». В мастере выберите «VHDL Test Bench» и введите имя нового модуля (нажмите «Далее», чтобы продолжить). Затем «Мастер создания нового источника» позволяет вам выбрать источник для связи с новым источником (в данном случае «acpeng» из приведенного выше кода VHDL), а затем нажать «Далее». Затем мастер создает необходимую структуру для модуля тестового стенда (см. Ниже).

Приведенная выше структура включает большую часть кода, необходимого для нашего тестового стенда.Он включает в себя раздел объявления компонента (строки 19–38), объявления и инициализации входного сигнала (строки 41–48), объявления вывода (строки 50–59) и создание экземпляра тестового компонента (строки 67–85). Фреймворк также содержит некоторые стандартные процессы для наших двух часов (Mclk — строки 87-94 и Sclk — строки 96-102, плюс определяет тактовые частоты — строки 62-63) и тупиковую версию процесса стимула (tim_proc: process — строки 105-118), которые будут использоваться для создания необходимых стимулов для тщательного тестирования нашего дизайна.

Этот фреймворк дает нам хорошую отправную точку для создания нашего полного тестового стенда. Мне нравится начинать разработку своего испытательного стенда с изучения основ, а затем расширять генерацию стимулов до тех пор, пока мы должным образом не протестируем нашу конструкцию. Мои первые шаги обычно сосредоточены на генерации часов. Для этого нам нужно будет настроить некоторые константы, чтобы они соответствовали нашим целевым тактовым частотам, а также некоторые незначительные изменения, чтобы мы могли подавить тактовую частоту SPI (Sclk) для времени, когда мы передаем или получаем данные от устройств SPI.

Это достаточно просто. Приведенные выше операторы изменяют тактовую частоту Master (Mclk) и тактовую частоту SPI (Sclk) на их соответствующие частоты (8 МГц и 10 МГц). Теперь нам нужно немного изменить логику генерации тактовых импульсов SPI. Сначала нам нужно создать два сигнала, чтобы помочь в логике стробирования. Первый сигнал, Sclk_inh, используется для включения и отключения синхросигнала. Второй сигнал, Sclk_raw, представляет собой замещающий тактовый сигнал. Мы будем генерировать стробируемый тактовый сигнал с помощью Sclk_raw, который будет назначен нашему входу Sclk для нашего UUT (тестируемого устройства).

Определив новые сигналы, мы теперь можем изменить логику в нашем Sclk_process. В этом процессе мы создадим непрерывный тактовый сигнал с помощью Sclk_raw, который переключается каждую половину периода Sclk_period, генерируя свободно работающие тактовые импульсы 10 МГц. Наряду с этой последовательностью генерации тактовых импульсов мы создаем вход Sclk, объединяя наш сигнал Sclk_raw с сигналом Sclk_inh. Таким образом, всякий раз, когда Sclk_inh установлен на «1», Sclk будет переключаться на 10 МГц, в противном случае он будет удерживаться на «0».Мы будем использовать сигнал Sclk_inh в нашем процессе optim_proc для синхронизации данных SPI на нашем устройстве и из них.

Теперь нам нужно создать процесс для генерации смоделированных данных АЦП для нашей конструкции. Для этой задачи нам нужен счетчик, чтобы отслеживать данные, которые должны быть отправлены из нашего моделирования АЦП (ADCcount). Затем нам нужно создать процесс для обработки генерации строки ADC_Data. В процессе мы ждем нарастающего фронта ADC_LRCK (левый / правый тактовый сигнал АЦП — строка 109).Мы используем этот нарастающий фронт для инициализации как нашего сигнала ADCcount значением обратного отсчета для последовательности генерации данных АЦП (32 или «10000» в двоичном формате в строке 110), так и ADC_Data равным «1» (строка 111). Затем мы ждем спада сигнала ADC_LRCK (строка 112). Оттуда мы входим в цикл, в котором сгенерируем простое переключение строки ADC_Data для нашей симуляции (строка 114). Установив сигнал ADC_Data, мы ждем, пока спад ADC_BCK не ускорит нас до следующего цикла (строка 115).В строке 116 мы уменьшаем значение ADCcount, которое проверяется в строке 113, чтобы определить, когда мы сгенерировали достаточно данных для моделирования реакции нашего АЦП на последовательность сигналов ADC_LRCK и ADC_BCK (вы можете вернуться к I2S / SPI Сроки для формата DSP и nvSRAM запишите диаграмму из части 2 этой статьи, чтобы просмотреть желаемую последовательность АЦП) .

Хорошо, теперь нам нужно соединить все части вместе и начать что-то делать, но сначала давайте составим план атаки на то, как протестировать устройство.Мне нравится начинать любой тест с импульса сброса (от высокого к низкому, с последующим возвратом к высокому) и короткой задержки (давая нам шанс увидеть, что наш главный конечный автомат — Eng_State находится в состоянии ожидания до тех пор, пока не будет получена команда). Затем мы должны отправить команду SPI, чтобы установить размер выборки и запустить последовательность сбора. Остальные просто ждут, пока не запустится сборка пакетов. Это примерно все, что нужно для проверки базовой функциональности устройства. Конечно, мы могли бы добавить дополнительный тест для выполнения всех подсчетов размера выборки (от 1 до 127), но на данный момент этого должно быть достаточно.

Итак, быстро пройдя через это, строки 124-157 заменяют старое тело процессаtim_proc. Как и планировалось, у нас есть короткая последовательность сброса и удержания (строки 124–130) и последовательность команд SPI для установки счетчика выборки на единицу и установки флага «Выполнить» (строки 132–157).

Теперь мы можем приступить к просмотру данных моделирования. Запустив моделирование и зафиксировав первые 2,5 мкс, мы можем изучить эффекты импульса сброса и команды SPI.

Давайте начнем с изучения двух наших бесплатных тактовых сигналов (mclk и sclk_raw), чтобы убедиться, что они были сгенерированы правильно. Для mclk мы видим, что сигнал завершает 4 цикла за первые 500 нс, что дает нам период 500 нс / 4 или 125 нс, что дает нам частоту 8 МГц. Хорошо, пока у нас есть одна правая. Для sclk_raw мы видим, что сигнал завершает 5 циклов за первые 500 нс, что дает нам период 500 нс / 5, 100 нс, что дает нам частоту 10 МГц.Хорошо, двое на двоих. Глядя на сигнал sclk, который является логическим И для sclk_raw и sclk_inh, мы видим, что в течение первых 1000 нс трасс этот sclk постоянно низкий. На данный момент это то, что мы хотим.

Теперь давайте посмотрим, как на дизайн влияет линия сброса. На графиках выше сигнал сброса начинается с установленного уровня (низкий), через 100 нс он сбрасывается, повторно утверждается еще через 100 нс и затем окончательно отпускается. При просмотре первых 500 нс ни одна из трасс (кроме mclk и sclk_raw) не меняется.Это показывает нам две вещи: во-первых, сброс не имел реального эффекта, не было разницы между нашим состоянием включения и нашим состоянием сброса. Это также показывает, что сигнал adc_bck (который является младшим битом seqcount, удерживается на низком уровне во время сброса). После сброса сброса и завершения двух циклов mclk adc_bck начинает переключаться (с частотой 2 МГц).

Хорошо, теперь, чтобы сдвинуть дело с мертвой точки, нам нужно отправить на устройство команду SPI с установленным битом «RUN», чтобы начать пакет сбора данных. Для этого нам нужно выбрать часть (CS = ’10’) и предоставить правильные данные и тактовые последовательности (Примечание: поскольку линия CS установлена ​​на «10», линия SDO переходит из трех состояний в состояние Low, текущее состояние флага Run).Итак, на отметке 1.1us (800ns после сброса линии сброса, строки 130-132 нашего тестового стенда) устройство выбрано. Через 100 нс линия данных SPI (sdi) устанавливается на высокий уровень. Это будет старший бит команды SPI или наш бит RUN. После 50 нс сигнал sclk_inh повышается до «1», что позволяет генерировать импульсы Sclk (8 импульсов от 1,3 до 2,05 мкс). Отсюда тестовый стенд будет использовать границы sclk, чтобы мы могли синхронизировать изменения строки данных SPI с sclk. После того, как сигнал Sclk перешел в высокий уровень, а затем в низкий (строки 137-138), мы очищаем сигнал SDI, готовясь отправить шесть нулей на периферийную защелку SPI (старшие биты CycleCnt).Затем испытательный стенд ожидает в течение шести циклов Sclk (строки 140–151, фиксируются старшие биты CycleCnt). После шести циклов Sclk SDI переводится в «1», чтобы установить младший бит регистра CycleCnt. Теперь мы ждем еще один импульс Sclk, а затем очищаем строку sclk_inh (строки 153-155), отсекая генерацию импульса Sclk. Чтобы завершить последовательность записи SPI, мы ждем 250 нс и повторно устанавливаем строки CS в состояние «без выбора» или «11» (строки 156-157 @ 2.3 нас).

Просматривая до сих пор трассировки, есть несколько вещей, на которые следует обратить внимание: 1) тактовые импульсы на линии Sclk передаются через устройство на линию Eng_Sck (здесь нет проблем, поскольку и ADC_CS, и nvSRAM_CS находятся на высоком уровне), 2) все данные в линии SDI передаются в линию Eng_So.Ни то, ни другое не является реальной проблемой. Код VHDL мог бы подавить сигналы Eng_Sck и Eng_So во время обмена данными с периферийной защелкой SPI внутри устройства, но это добавило бы сложности конструкции и, возможно, увеличило бы использование ресурсов в CPLD (всегда приятно иметь немного лишних ресурсов на случай, если вам понадобится внести изменения в будущем). Еще одна заслуживающая внимания вещь происходит прямо перед тем, как мы входим в состояние «без выбора» на линиях CS, при 2,25 мкс линия SDO переходит в высокий уровень (прямо перед тем, как вернуться в три состояния).Пока устройство находится в состоянии фиксации внутреннего периферийного SPI (CS = ’10’), линия SDO постоянно управляется с состоянием флага Run. Поскольку мы только что закончили посылать команду «Выполнить» детали, мы видим эффект этой команды, который теперь вызывает повышение уровня линии SDO. Это показывает нам, что устройство фактически распознало нашу команду и готовится начать цикл сбора данных.

На этом этапе код тестовой среды находится в стадии «ждать вечно», ожидая, пока устройство завершит последовательность сбора данных.Итак, давайте посмотрим дальше во времени и посмотрим, правильно ли работает устройство. Теперь давайте немного уменьшим масштаб и рассмотрим запись «заголовка» в микросхему nvSRAM.


«Заголовок» — это не что иное, как начальная часть последовательности записи в пакетном режиме для нашего устройства nvSRAM. Последовательность представляет собой 8-битный код операции записи (‘00000010’b), за которым следует выровненное по правому краю 24-битное адресное поле (7 нулей, за которыми следует 17-битный начальный адрес nvSRAM, равный нулю).Изучая приведенные выше трассировки, начиная с ~ 2.25us, мы видим, что строка nvSRAM_CS переходит в состояние выбора (‘0’). Так будет на протяжении всей остальной последовательности сбора данных. Вскоре после того, как nvSRAM_CS переходит в низкий уровень, мы видим 32 импульса сигнала Eng_Sck вместе с данными nvSRAM с шестью нулями, единицей и еще 19 нулями (измеренными на переднем фронте Eng_Sck).

Теперь давайте посмотрим на первую последовательность примеров АЦП. Здесь стробируется АЦП (ADC_LRCK), за которым следует серия последовательных битовых тактовых импульсов (ADC_BCK).

Увеличив масштаб для более подробной информации о сигналах АЦП (ниже), мы можем увидеть начало цикла АЦП. На заднем фронте ADC_BCK ADC_LRCK переходит в высокий уровень, а затем возвращается в низкий уровень на следующем заднем фронте ADC_BCK. В этот момент первый бит данных АЦП (MSB левого канала) присутствует в строке Eng_So (в данном случае «0»). Чтобы синхронизировать бит данных АЦП в nvSRAM, он должен быть стабильным для нарастающего фронта Eng_Sck. Пока вроде все идет правильно.На изображении выше мы можем видеть схему переключения «1» и «0» (генерируемую строками 113-117 внутри нашего процесса ADCcmp в тестовой среде). Всего в строках Eng_So и ADC_data 32 бита (16 последовательностей «0» / «1»), а также 32 цикла тактовых импульсов Eng_Sck (запись двух значений АЦП в виде четырехбайтовой записи в nvSRAM). ADC_BCK продолжает синхронизацию через кадр ADC, как подробно описано в спецификации для части ADC.

После проверки цикла АЦП мы снова уменьшаем масштаб и смотрим на полный цикл лазерного диода (ниже).В полном цикле сигнала LaserHiLow есть 16 циклов АЦП (считая импульсы ADC_LRCK).

После проверки цикла лазерного диода мы снова уменьшаем масштаб и смотрим на полный цикл сбора данных (ниже). В полном цикле сбора данных имеется 32 цикла лазерных диодов (с учетом импульсов LaserHiLow). В конце цикла сбора данных мы видим короткий высокий импульс сигнала Int (прерывание), который информирует μProcessor о завершении запрошенного цикла.

На этом этап проверки практически завершен. Вроде все заработало. Ну, в процессе был небольшой сбой, который я не заметил раньше. При тестировании заголовка nvSRAM я заметил небольшую ошибку с размещением высокого импульса на линии Eng_SO. Трассы моделирования были исправлены, но теперь мне нужно исправить источник VHDL для устройства. Итак, вот изменение:

Строки 180–184 вверху заменены на строки 180–183 внизу.Эффект изменения заключается в том, чтобы немного сдвинуть «1» в последовательности заголовков nvSRAM назад во времени. В верхней последовательности строка ENG_SO имеет высокий уровень от seqcount «001011» до «001100». В нижней последовательности линия ENG_SO имеет высокий уровень от «001100» до «001101». Кодирование нижней последовательности проще в том, что мы можем игнорировать младший бит seqcount и инициировать изменение битов с 4 на 1 (игнорируя бит 0).

Уф, я думаю, что добрался (наконец) до конца. Мы провели идею или спецификацию на этапах проектирования оборудования, кодирования VHDL и, наконец, тестирования.Я еще раз доказал себе (и, надеюсь, вам) важность тестирования. Ошибки скрываются там, все, что вам нужно сделать, это найти их и исправить.

Пока позже,

Ген

Вам также может понравиться … (продвигаемый контент)

Лучший способ изучить VHDL?

Как уже говорили другие, вам нужно узнать о цифровом дизайне, прежде чем изучать VHDL. Но пусть это вас не пугает, это не так уж и сложно. Я считаю, что вы можете очень быстро начать работу с VHDL, если получите книги, доску и программное обеспечение, которые я рекомендую ниже.

Узнайте о цифровом дизайне

«Цифровой дизайн» Фрэнка Вахида — отличная книга для людей, которые хотят узнать о цифровом дизайне с нуля. Мы использовали эту книгу во вводном курсе по цифровому дизайну, где мы также познакомились с VHDL. Вам не нужно глубоко копаться в этой книге, прежде чем вы сможете немного поиграть с VHDL (хотя эта книга не учит никакому VHDL) .
Я помню эту книгу как очень удобную для читателя.
http: // www.amazon.com/dp/0470044373/?tag=stackoverfl08-20

Купите плату FPGA!

Затем вам действительно нужно купить или получить доступ к плате FPGA и некоторым учебным материалам, в которых используется и объясняется конкретная плата FPGA, которую вы выбираете.
Несмотря на то, что у меня был доступ к плате FPGA в моем университете, я решил купить плату, чтобы я мог поиграть с VHDL дома.
В университете мы использовали плату virtex-pro Spartan-3E 100 MHz (точное название не помню). А для дома я купил плату Nexys2, которая также принадлежит к семейству spartan-3E и является отличной платой для начинающих программистов ПЛИС.
http://www.digilentinc.com/Products/Detail.cfm?Prod=NEXYS2

Узнать VHDL

Для VHDL мы использовали книгу Понга П. Чу «Прототипирование FPGA на примерах VHDL», которая является отличной книгой для быстрого получения некоторого опыта работы с VHDL без необходимости читать слишком много скучных страниц.
Книга также познакомит вас с программным обеспечением «Xillinx ISE».
http://www.amazon.com/FPGA-Prototyping-VHDL-Examples-Spartan-3/dp/0470185317

Программное обеспечение

Для программного обеспечения мы использовали Xillinx ISE, совместимый как с Linux, так и с Windows (я использовал его в основном в Linux).В университете мы использовали старую версию Xillinx ISE, потому что новая версия не была совместима с платой virtex pro. Это было худшее программное обеспечение, которое я когда-либо использовал, оно было полно ошибок и сводило всех с ума!
НО дома и на моем ноутбуке я использовал новейшую версию Xillinx ISE, которая была великолепным программным обеспечением и не содержала досадных ошибок. Единственное, для чего я не использовал Xillinx ISE, — это перенос синтезированного VHDL (файлов .bit) на мою плату, для этого я просто использовал программное обеспечение Digilent Adept (небольшая программа, созданная Digilent, для передачи файлов и тестирование платы).Но также должна быть возможность настроить Xillinx для передачи синтезированного VHDL, если вы не такой ленивый, как я.

Итак, если вы хотите использовать Xillinx ISE, обязательно купите плату, совместимую с более новой версией Xillinx ISE, чтобы избежать лишней головной боли. Например плата Nexys2.
Мы также использовали какой-то отличный инструмент для отладки, думаю, это был ModelSim. Это также должно быть включено в загрузку веб-пакета Xillinx ISE, если я не ошибаюсь.
Ссылка на Xillinx ISE:
http: // www.xilinx.com/ise/logic_design_prod/webpack_faq.htm#2b

Учебное пособие Введение в программирование на VHDL (в твердом переплете)

99,99 долл. США

Нет на складе, но можно заказать. Зависит от доступности издателя.


Описание


Эта книга помогает читателям создавать хорошие описания VHDL и моделировать проекты VHDL.Он обучает VHDL с использованием избранных примеров задач, которые решаются шаг за шагом и с точными объяснениями, так что читатели получают четкое представление о том, как должен выглядеть хороший код VHDL.

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

Книга предлагает обширные упражнения в конце каждой главы, предлагая читателям изучить VHDL, выполнив это и написав хороший код.

Об авторе


Орхан Гази — доцент кафедры электронной и коммуникационной техники Университета Чанкая.Он получил степени бакалавра, магистра и доктора наук в области электротехники и электроники в Ближневосточном техническом университете, Анкара, Турция, в 1996, 2001 и 2007 годах соответственно. Его области исследований включают обработку сигналов, теорию информации и прямое исправление ошибок. Совсем недавно он начал изучать коды полярных каналов и готовить публикации в этой области. Он опубликовал несколько учебников по цифровой обработке сигналов и теории информации, а также монографию по канальному кодированию.



Сведения о продукте
ISBN: 9789811323089
ISBN-10: 9811323089
Издатель: Springer
Дата публикации: 27 августа 2018 г.
Страницы: 251
Английский язык

(все)

Отличные бесплатные учебники для изучения VHDL

Java Универсальный, параллельный, объектно-ориентированный язык высокого уровня на основе классов
C Универсальный, процедурный, переносной язык высокого уровня
Python Универсальный, структурированный, мощный язык
C ++ Универсальный, переносимый, многопарадигмальный язык произвольной формы в свободной форме
C # Сочетает в себе мощность и гибкость C ++ с простотой Visual Basic
JavaScript Интерпретируемый, основанный на прототипах, язык сценариев
PHP PHP уже много лет находится у руля Интернета
Ruby Универсальный, скриптовый, структурированный, гибкий, полностью объектно-ориентированный язык
Сборка Как можно ближе к написанию машинного кода без записи в чистом шестнадцатеричном формате
Swift Мощный и интуитивно понятный язык программирования общего назначения
Groovy Мощный, опционально типизированный и динамический язык
Go Скомпилированный статически типизированный язык программирования
Pascal Императивный и процедурный язык, разработанный в конце 1960-х годов
Perl Высокоуровневый, универсальный, интерпретируемый, скриптовый, динамический язык
R Фактический стандарт для статистиков и аналитиков данных
COBOL Общий бизнес-ориентированный язык
Scala Современный, объектно-функциональный, мультипарадигмальный язык на основе Java
Fortran Первый язык высокого уровня, использующий первый компилятор
Scratch Язык визуального программирования для детей 8-16 лет
Lua Разработан как встраиваемый язык сценариев
Logo Диалект Lisp, который отличается интерактивностью, модульностью и расширяемостью
Rust Идеально подходит для систем, встраиваемых систем и других систем, критичных к производительности. Код
Lisp Уникальные возможности — отлично подходят для изучения конструкций программирования
Ada АЛГОЛ-подобный язык программирования, расширенный от Pascal и других
Haskell Стандартизованный, универсальный, полиморфно, статически типизированный язык
Схема Универсальный функциональный язык, унаследованный от Lisp и Algol
Prolog Декларативный язык логического программирования общего назначения
Forth Императивный язык программирования на основе стека
Clojure Диалект языка программирования Lisp
Julia Высокопроизводительный язык высокого уровня для технических вычислений
SQL Доступ и управление данными, хранящимися в системе управления реляционной базой данных
Erlang Универсальный, параллельный, декларативный, функциональный язык
VimL Мощный язык сценариев редактора Vim
OCaml Универсальный, мощный язык высокого уровня
Awk Универсальный язык, разработанный для сканирования и обработки шаблонов
Racket Платформа для разработки и реализации языков программирования
BASIC Семейство универсальных языков программирования высокого уровня
CoffeeScript Очень лаконичный язык программирования, транскомпилируемый в JavaScript
LaTeX Профессиональная система подготовки документов и язык разметки документов
Elixir Относительно новый функциональный язык, работающий на виртуальной машине Erlang
Dart Оптимизированный для клиента язык программирования для быстрых приложений
ABAP Расширенное программирование бизнес-приложений
F # Универсальный, строго типизированный, многопарадигмальный язык.Часть ML
Chapel Язык параллельного программирования в разработке в Cray Inc.
Dylan Многопарадигмальный язык, поддерживает функциональное и объектно-ориентированное программирование
D Язык системного программирования общего назначения с синтаксисом типа C
Solidity Объектно-ориентированный язык высокого уровня для реализации смарт-контрактов
XML Набор правил для определения семантических тегов, описывающих структуру и значение
Vala Объектно-ориентированный язык с автономным компилятором, который генерирует код C
ECMAScript Наиболее известен как язык, встроенный в веб-браузеры
Kotlin Статически типизированный язык программирования общего назначения с выводом типа
TypeScript Строгий синтаксический надмножество JavaScript, добавление необязательной статической типизации
Markdown Синтаксис форматирования обычного текста, предназначенный для удобства чтения и записи
Pike Интерпретируемый, универсальный, высокоуровневый, кроссплатформенный, динамический язык
HTML Язык разметки гипертекста
Фактор Динамический стековый язык
Objective-C Язык общего назначения, который является надмножеством C
Standard ML Один из двух основных диалектов языка ML
Алиса Образовательный язык с интегрированной средой разработки
Agda Функциональный язык с зависимой типизацией, основанный на интуиционистской теории типов
Значок Язык высокого уровня общего назначения
PureScript Маленький строго статически типизированный язык с выразительными типами
Tcl Динамический язык, основанный на концепциях оболочек Lisp, C и Unix
Eiffel Объектно-ориентированный язык
ClojureScript Компилятор для Clojure, ориентированный на JavaScript
QML Иерархический декларативный язык для макета пользовательского интерфейса с синтаксисом в соответствии с JSON
VHDL Язык описания оборудования высокоскоростной интегральной схемы
OpenCL Язык открытых вычислений
Elm Функциональный язык, компилируемый в JavaScript

материалов VHDL

материалов VHDL Информация о VHDL

VHDL материал

  • локальная копия VHDL Cookbook
  • Лекции Питера Эшендена на VHDL
  • Питер Эшенден домашняя страница
  • Введение в VHDL (Accolade)
  • Поваренная книга Питера Эшендена по VHDL
  • Организации и веб-сайты VHDL
  • VHDL International (организация для продвижения использования VHDL)
  • VHDL International — Часто задаваемые вопросы
  • Интерактивное руководство по VHDL (IEEE)
  • Небольшой учебник по VHDL (учебный проект с открытым исходным кодом)
  • Руководство по VHDL для EE475 (Cornell U.)
  • Руководство инженера по аппаратному обеспечению для VHDL (Doulos)
  • ресурсов VHDL (много ссылок)
  • Учебное пособие по моделированию Aldec Active-HDL: VHDL Дизайн 1-битного сумматора и 4-битного сумматора (Калифорнийский университет в Риверсайд)
  • Справочное руководство по стандартному языку VHDL IEEE (Microlab, Швейцария)
  • RASSP (быстрое прототипирование сигнальных процессоров для конкретных приложений — DARPA)
  • Страница поддержки RASSP для VHDL
  • Гамбургский архив VHDL
  • Интернет-ресурсы на VHDL, FPGA, схемотехника ,..
  • Группы новостей FPGA, VHDL, Verilog, часто задаваемые вопросы и архивы
  • Домашняя страница VHDL UK WWW (форум пользователей VHDL, ссылки, информация о книгах …) (мертва?)
  • J.W.Park’s EDA страница (документация и ссылки EDA и VHDL) (мертва?)
  • Коллекция моделей VHDL (Miss State Univ.)
  • Создание испытательного стенда из временных диаграмм (Приложение D к VHDL Made Easy, Дэвид Пеллерин, 1996 г.)
  • VHDL онлайн (U. Эрланген)
  • Northeastern Univ.Страница VHDL
  • Страница ресурсов VHDL (Университет Огайо)
  • Ресурс VHDL страница (Университет Цинцинатти)
  • VHDL-страница (Perso-Club, Франция)
  • VHDL-страница Дрезден
  • о OO VHDL
  • OO — Исследовательская группа VHDL
  • Исследования СБИС в У. Ольденбурге (объектно-ориентированный VHDL)
  • Часто задаваемые вопросы о VHDL
  • Автоматизация проектирования электроники
  • Ассоциация по развитию методологий проектирования ПЛИС
  • Цифровой симулятор (MIT)
  • Закладки (ссылки на VHDL и т. Д.) (ТУ Дрезден)
  • VHDL учебные пособия (Университет Ольстера)
  • Материал VHDL (UCSanDiego) (дает примеры кода VHDL для простых цифровых схем)
  • о VHDL и Powerview (Duke Univ.) (также есть примеры)
  • Документация VHDL (Университет Дортмунда)
  • VHDL ссылки по теме (Tufts Univ.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *