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

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

Содержание

Подборка статей и книг по программированию ПЛИС и языкам Verilog, VHDL, AHDL

Один из наших читателей, JKQ, порекомендовал нам очень полезный ресурс: http://rutracker.org/forum/viewtopic.php?t=2135243 (и мы ему благодарны за эту ссылку). Здесь, в одном месте, собрана целая коллекция из статей и книг посвященных проектированию ПЛИС и разным языкам программирования аппаратуры.

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

Вот краткое оглавление:

Книги на русском языке:
VHDL для проектирования вычислительных устройств (Сергиенко).djvu
Основы языка VHDL (Бибило).djvu
ПЛИС фирмы Altera (Стешенко).djvu
ПЛИС фирмы Altera.Проектирование устройств обработки сигналов (Стешенко).djvu
Полезные схемы с применением микроконтроллеров и ПЛИС (Вальпа).djvu
Проектирование встраиваемых МП систем на основе ПЛИС фирмы Xilinx (Зотов).djvu

Проектирование на ПЛИС. Архитектура, средства и методы. Xilinx. MentorGraphics (Максфилд).djvu
Проектирование на ПЛИС. Курс молодого бойца (Максфилд).djvu
Проектирование систем на микросхемах программируемой логики (Грушвицкий).djvu
Проектирование цифровых систем на VHDL (Суворова).djvu
Проектирование Цифровых Схем на Языке Описания Аппаратуры Verilog (Стерхейм,Сингх,Триведи-1992).doc
Системы автоматизированного проектирования фирмы. Altera Max Plus II и Quartus II (Комолов).djvu
Системы на микроконтроллерах и БИС программируемой логики (Бродин).djvu
Цифровая электроника для начинающих (Хокинс).djvu
Цифровые системы. Теория и практика (Точчи).pdf
Язык описания цифровых устройств AlteraHDL (Антонов).djvu
Языки VHDL и Verilog в проектировании цифровой аппаратуры (Поляков).djvu
Языки VHDL и VERILOG в проектировании цифровой аппаратуры (Поляков).pdf

Книги на английском языке:
Verilog HDL — A Guide to Digital Design and Synthesis (Palnitkar)\
A VHDL Primer (Jayaram Bhasker).pdf
Advanced Digital Design with the Verilog HDL (Michael Ciletti).djvu
Advanced FPGA Design. Architecture, Implementation, and Optimization (Steve Kilts).pdf
Advanced Verilog Techniques Workshop (Clifford Cummings).pdf
Altium. VHDL Language Reference.pdf
Applications of Specification and Design Languages for SoCs (Vachoux).pdf
Cadence. HDL Modeling in Encounter.pdf
Circuit Design with VHDL (Volnei Pedroni).pdf
CSCI 320 Computer Architecture. Handbook on Verilog HDL.pdf
Design Through Verilog HDL. IEEE Press.pdf
Designing Digital Computer Systems with Verilog (David Lilja, Sachin Sapatnekar).pdf
Digital circuit analysis and design with Simulink modeling and introduction to cplds and fpgas (Steven Karris).pdf
Digital design with cpld applicaions and vhdl (Dueck).pdf
Digital Logic & Microprocessor Design With VHDL (Enoch Hwang).pdf

Digital signal processing with Field Programmable Gate Arrays (Uwer Meyer-Baese).pdf
Digital Systems Design Using VHDL (Charles Roth).pdf
Digital Systems Design with FPGAs and CPLDs (Ian Grout).pdf
Digital VLSI Design with Verilog (John Williams).pdf
Essential VHDL for ASICs (Roger Traylor).pdf
FPGA Compiler II, FPGA Express. VHDL Reference Manual.pdf
FPGA Implementations of Neural Networks (Omondi, Rajapakse).pdf
FPGA Prototyping by VHDL Examples — Xilinx Spartan-3 Version (Pong Chu).pdf
Fundamentals Of Digital Logic with VHDL Design (Stephen Brown, Zvonko Vranesic).pdf
HDL Chip Design. A Practical Guide for Designing, Synthesizing and Simulating ASICs and FPGAs Using VHDL or Verilog (Douglas Smith).pdf
IEEE 1364-1995 standard. Verilog hardware description language.pdf
IEEE 1364-2001 standard. Verilog hardware description language.pdf
Introduction to Verilog.pdf
Microprocessor Design. Principles and Practices with VHDL (Enoch Hwang).pdf
Newnes — Design Warriors Guide To Fpga.pdf
Practical FPGA Programming In C (David Pellerin, Scott Thibault).chm
Programmable Logic design. Quick Start Hand Book (Karen Parnell, Nick Mehta).pdf
Programmable logic design. Quick Start Handbook.pdf
Rapid Prototyping of Digital Systems. A tutorial Approach (James Hamblen, Michael Furman).pdf
RTL Hardware Design Using VHDL.Coding for Efficiency, Portability, and Scalability (Pong Chu).pdf
The Complete Verilog Book (Vivek Sagdeo).pdf
The Verilog Hardware Description Language (Thomas, Moorby).pdf
The Verilog Language.pdf
The VHDL Cookbook (Peter Ashenden).pdf
Verilog HDL. A Guide to Digital Design and Synthesis (Samir Palnitkar).pdf
Verilog Coding for Logic Syntesis (Weng Fook Lee).pdf
Verilog digital systems design (Navabi).pdf
Verilog Golden Reference Guide.pdf
Verilog HDL Quick Reference Guide.pdf
Verilog HDL Synthesis. A Practical Primet (Bhasker).pdf
Verilog Quickstart. Practical Gu

Руководства и описания языка VHDL

 

РУКОВОДСТВА И ОПИСАНИЯ ЯЗЫКА VHDL

 
Данная страничка создана в помощь людям, желающим самостоятельно освоить язык описания аппаратуры VHDL. Здесь вы найдете собранные мною в интернете учебные и справочные материалы на русском и английском языках. Позже, возможно, появится файловый архив полезных программ и утилит. В разделе «полезные ссылки» приведены интернет-адреса наиболее известных производителей программного обеспечения, использующего язык VHDL, а также сайты производителей ПЛИС (Программируемых Логических Интегральных Схем). Если у вас есть интересные книги, руководства или лекции по VHDL, то пишите мне. Желаю успехов в освоении этого интересного языка !!!
 

I. Книги в формате PDF.

 

К сожалению хорошей литературы по VHDL на русском языке очень мало, точнее ее почти нет. Поэтому большинство книг приведенных ниже написаны на английском языке. Из отечественных изданий можно порекомендовать книгу: «Проектирование цифровых систем на VHDL» Е.А.Суворова Ю.Е.Шейнин, которая свободно продается во многих книжных магазинах Москвы, в том числе и на Савеловском рынке, по цене ~200р. Есть еще несколько неплохих изданий о которых я расскажу позже.

 

1. VHDL Reference Manual. Достаточно толковый мануал от компании Synario Design Autamotion. Можно уверенно рекомендовать для первого знакомства. (английский)

2. The VHDL CookBook. Автор Peter J. Ashenden. Руководство содержит краткое, но очень хорошее описание VHDL, а также полностью рассмотрено создание простого 32-разрядного микропроцессора. (английский)

3. 1076 Ieee Standard Vhdl Language Reference Manual. Официальное описание языка VHDL от IEEE. В нем есть все, но читать его достаточно тяжело. Не рекомендую новичкам. (английский)

4. VHDL: Programming by Example. Автор Douglas L. Perry. Книга написана простым языком и содержит много примеров. На многих сайтах стоит в графе — рекомендовано (английский)

5. Examples of VHDL Descriptions. Файл содержит примеры VHDL описания типичных элементов цифровой техники, таких как ОЗУ, регистры, счетчики и многое другое. (английский)

6. VHDL Tutorial. Небольшое руководство по VHDL для студентов 3 курса одного Канадского тех. университета. Кратко, но интересно. (английский)

7. VHDL Tutorial. Автор Peter J. Ashenden. Еще одно хорошее описание от уже знакомого автора. (английский)
8. Mentor Graphics Introduction to VHDL. И снова Mentor, но теперь короче в два с лишним раза. Рекомендую тем, кто впервые знакомиться с языком, т.к. в нем очень хорошо написано что такое VHDL и зачем он нужен. (английский)
9. Mentor Graphics VHDL Reference Manual. Название говорит само за себя — огомный мануал от Mentor Graphics. Хорошая вещь, кто честно прочтет все — напишите. (английский)
10. VeriBest FPGA Synthesis VHDL Reference Manual. Руководство от компании Synopsys по приминению VHDL в проектировании FPGA. (английский)

11. Применение VHDL при проектировании СБИС. Автор В.Г. Ивченко. Небольшое методическое пособие по VHDL Таганрогского ГРУ. (русский)

   
 

II. Документация в формате HTML

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

1. VHDL MINI-REFERENCE. Краткое руководство по VHDL. В этом документе без лишних слов рассмотрены основные средства и конструкции языка. (английский)

2. Справочник. Как понятно из названия документ содержит описания типов переменных, сигналов, атрибутов, операторов и т.д. (русский)

3. Руководство компании EVITA. Составлено сотрудниками этой компании. Весьма интересное руководство с симпатичными картинками. (русский)

4. Справочник по синтаксису VHDL’87. Описание синтаксиса языка стандарта 87 года. (английский)

5. Справочник по синтаксису VHDL’93. Описание синтаксиса языка стандарта 93 года. (английский)

6. VHDL Tutorial. Автор Jan Van der Spiegel. Большое руководство с примерами. (английский)

7. www.kvantn.com.ua. Автор Анатолий Сергиенко. Копия одноименного интернет-сайта. Очень полезный ресурс, который представляет собой достаточно объемную книжку. Рекомендую. (русский)

8. Manual. Мануал от компании Green Mountain Computing Systems. (английский)

   
   

III. Примеры VHDL описания различных устройств и интерфейсов

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

В ПРОЦЕССЕ РАЗРАБОТКИ

 
   

IV. Программы

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

V. Ссылки

 
 

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

 
1. Mentor Graphics это один из лидеров мирового рынка программного обеспечения в области электроники. В его активах имеется полный набор ПО для создания, моделирования, отладки и реализации любых устройств. В нашем случае интерес представляет FPGA Advantage.
2. Cadence основной конкурент предыдущей конторы. Известен по пакету OrCad 10, который кстати также поддерживает описания компонентов с использованием VHDL.
3. Synopsys очень известный разработчик ПО для полупроводниковой промышленности. Сотрудничает со всеми крупнейшими производителями ИС. Имеет в арсенале массу средств для проектирования на VHDL.
4. Aldec специализируется на разработке ПО для проектирования FPGA и ASIC , используя VHDL, Verilog и т.д.
5. ModelSim пожалуй лучший на данный момент симулятор. Входит в комплект поставки многих САПР.
6. Xilinx крупнейший в мире производитель программируемой логики. На сайте можно скачать бесплатную версию САПР WebPack ISE и вышеупомянутый ModelSim, а также триал-версии некоторых других любопытных программных продуктов этого гиганта. Этот набор может стать хорошим стартом для изучения языка на практике.
7. Altera к этой компании относиться все тоже, что и к предыдущей. Также есть бесплатный САПР и ModelSim. Кто из них круче вопрос открытый 🙂

8. OpenCores этот веб-сайт содержит большое колличество VHDL и Verilog исходников различных устройств, интерфейсов, контроллеров и много другог. Все совершенно бесплатно.

 
 
P.S.: Дизайн сайта временный. Будут силы и время — постараюсь сделать симпатичнее, но пока главная задача — содержание. Сайт работает с 01.05.2005.
 

Краткий курс HDL. Часть 1. Введение — Компоненты и технологии

Данный цикл статей посвящен описанию языка Verilog. Будут приведены примеры описаний типовых узлов схем, некоторые рекомендации по стилю выполнения описаний на этом языке и материалы по разработке тест-бенчей.

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

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

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

Но для того чтобы автор смог решиться на такой шаг, как написание, пусть и небольшого, но все же учебного курса, понадобилось несколько лет общения с молодыми коллегами, студентами и преподавателями из различных университетов. Конечно, этот курс не заменит настоящего, полного изучения предмета, но все же автор надеется, что «Краткий курс 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 переменных. Тогда в тексте программы это будет выглядеть так:

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

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

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

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

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

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

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

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

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

VHDL и Verilog

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

VHDL портал для студентов и разработчиков — Главная — VHDL

---------------------------------------------------------------------------
---------------------------------------------------------------------------
--  This is Package TEXTIO as defined in Chapter 14 of the
--  IEEE Standard VHDL Language Reference Manual (IEEE Std. 1076-1987)
---------------------------------------------------------------------------
---------------------------------------------------------------------------

package TEXTIO is

    -- Type definitions for Text I/O

    type LINE is access string;
    type TEXT is file of string;
    type SIDE is (right, left);
    subtype WIDTH is natural;

    -- Standard Text Files

    file input : TEXT is in "STD_INPUT";
    file output : TEXT is out "STD_OUTPUT";

    -- Input Routines for Standard Types

    procedure READLINE(variable f:in TEXT; L: inout LINE);

    procedure READ(L:inout LINE; VALUE: out bit; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out bit);

    procedure READ(L:inout LINE; VALUE: out bit_vector; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out bit_vector);

    procedure READ(L:inout LINE; VALUE: out BOOLEAN; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out BOOLEAN);

    procedure READ(L:inout LINE; VALUE: out character; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out character);

    procedure READ(L:inout LINE; VALUE: out integer; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out integer);

    procedure READ(L:inout LINE; VALUE: out real; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out real);

    procedure READ(L:inout LINE; VALUE: out string; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out string);

    procedure READ(L:inout LINE; VALUE: out time; GOOD : out BOOLEAN);
    procedure READ(L:inout LINE; VALUE: out time);

    -- Output Routines for Standard Types

    procedure WRITELINE(f : out TEXT; L : inout LINE);

    procedure WRITE(L : inout LINE; VALUE : in bit;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0);

    procedure WRITE(L : inout LINE; VALUE : in bit_vector;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0);

    procedure WRITE(L : inout LINE; VALUE : in BOOLEAN;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0);

    procedure WRITE(L : inout LINE; VALUE : in character;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0);

    procedure WRITE(L : inout LINE; VALUE : in integer;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0);

    procedure WRITE(L : inout LINE; VALUE : in real;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0;
       DIGITS: in NATURAL := 0);

    procedure WRITE(L : inout LINE; VALUE : in string;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0);

    procedure WRITE(L : inout LINE; VALUE : in time;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0;
       UNIT: in TIME := ns);

    -- File Position Predicates

    -- function ENDLINE(variable L : in LINE) return BOOLEAN;

    -- Function ENDLINE as declared cannot be legal VHDL, and
    --   the entire function was deleted from the definition
    --   by the Issues Screening and Analysis Committee (ISAC),
    --   a subcommittee of the VHDL Analysis and Standardization
    --   Group (VASG) on 10 November, 1988.  See "The Sense of
    --   the VASG", October, 1989, VHDL Issue Number 0032.

    function ENDFILE (f: in TEXT) return BOOLEAN ;
end;

package body TEXTIO is
    -- The subprograms declared in the TEXTIO package are
    -- ignored for synthesis.
    -- Assertion warnings will be generated when these
    -- functions are called unconditionally.

    procedure READLINE(variable f:in TEXT; L: inout LINE) is
    begin
       assert (FALSE)
          report "Procedure call to READLINE ignored for synthesis"
          severity WARNING ;
    end READLINE ;

    procedure READ(L:inout LINE; VALUE: out bit; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out bit) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure READ(L:inout LINE; VALUE: out bit_vector; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out bit_vector) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure READ(L:inout LINE; VALUE: out BOOLEAN; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure READ(L:inout LINE; VALUE: out character; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out character) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure READ(L:inout LINE; VALUE: out integer; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out integer) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure READ(L:inout LINE; VALUE: out real; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out real) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure READ(L:inout LINE; VALUE: out string; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out string) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure READ(L:inout LINE; VALUE: out time; GOOD : out BOOLEAN) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;
    procedure READ(L:inout LINE; VALUE: out time) is
    begin
       assert (FALSE)
          report "Procedure call to READ ignored for synthesis"
          severity WARNING ;
    end READ ;

    procedure WRITELINE(f : out TEXT; L : inout LINE) is
    begin
       assert (FALSE)
          report "Procedure call to WRITELINE ignored for synthesis"
          severity WARNING ;
    end WRITELINE ;

    procedure WRITE(L : inout LINE; VALUE : in bit;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    procedure WRITE(L : inout LINE; VALUE : in bit_vector;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    procedure WRITE(L : inout LINE; VALUE : in BOOLEAN;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    procedure WRITE(L : inout LINE; VALUE : in character;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    procedure WRITE(L : inout LINE; VALUE : in integer;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    procedure WRITE(L : inout LINE; VALUE : in real;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0;
       DIGITS: in NATURAL := 0) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    procedure WRITE(L : inout LINE; VALUE : in string;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    procedure WRITE(L : inout LINE; VALUE : in time;
       JUSTIFIED: in SIDE := right;
       FIELD: in WIDTH := 0;
       UNIT: in TIME := ns) is
    begin
       assert (FALSE)
          report "Procedure call to WRITE ignored for synthesis"
          severity WARNING ;
    end WRITE ;

    function ENDFILE (f: in TEXT) return BOOLEAN is
    begin
       assert (FALSE)
          report "Function call to ENDFILE returns TRUE for synthesis"
          severity WARNING ;
       return TRUE ;
    end ENDFILE ;
end ;

Графический дизайн или текст Verilog/VHDL?

Что лучше схеммный ввод или текстовый ввод на Verilog, VHDL

Рискну затронуть такую холиварную тему: сравнение двух методов разработки, графический ввод схемы и текстовое описание проекта на языках HDL Verilog / VHDL.

Какой метод лучше?

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

  1. проект может быть выполнен хорошо и продуманно не зависимо от того, какой метод использовался, точно так же плохой дизайн можно сделать и с использованием схемотехнического представления и при описании на Verilog / VHDL. То есть, качество проекта скорее зависит от квалификации программиста, чем от выбранного инструмента (хотя у программиста могут быть свои предпочтения и специфический опыт работы со средой проектирования).
  2. не зависимо от представления проекта в виде HDL текста или схемы, компилятор (теоретически) должен и обязан синтезировать одинаково оптимальный образ для прошивки в ПЛИС. В любом случае компилятор будет оптимизировать комбинационную логику, удалять неиспользуемые элементы, триггера, синтезировать и оптимизировать netlist.

Теперь все таки давайте рассмотрим недостатки и преимущества методов разработки в схеме или в текстовом виде.

Условно можно выделить несколько взаимосвязанных критериев для оценки метода разработки цифровых проектов для ПЛИС и ASIC: удобство, скорость разработки, представление, портируемость, управляемость кода, надежность.

Удобство.

Удобство рисования схем в графическом редакторе определяется исключительно его свойствами. Например, разрабатывая в среде Altera Quartus II мы можем пользоваться только его графическим редактором. Хорош он или плох — выбора нет, он такой как есть, со всеми его плюсами или минусами. Даже если там есть баги или странности — смиритесь. Вы не можете использовать другой редактор схем, так как Quartus II использует свой специфический формат для записи файлов типа *.bdf (block design file). Да, сам *.bdf — это текстовый файл, но его уж точно не получится руками редактировать, там уж слишком все внутри непонятно. Получается, для своих графических файлов компания Altera — монополист и она, как любой монополист, может позволить себе выпустить не очень удобный редактор.

Почему я считаю его неудобным? Ну, скажем так, он мог бы быть и получше. Если посмотреть на другие CAD системы (PCAD, AUTOCAD) или даже не только CADы, а, например, всякие 3D редакторы (BLENDER, 3DMax), то можно увидеть несколько иную картину. Интересно, что удобство работы с графическими системами обычно достигается путем использования… строки для текстовых команд. Получается, чем меньше дизайнер использует мышь и чем чаще пользуется командным вводом для манипуляции графическими объектами на экране, тем быстрее у него спорится работа.

Ну вот в среде Quartus II для рисования схем нет такой возможности. Если нужно добавить новый компонент на схему, то приходится выполнять последовательность действий типа «правый клик мыши» => выбор в меню Insert => Symbol => далее в диалоговом окне выбор по списку библиотечного примитива => установка его на схему. Потом еще иногда требуется отредактировать свойства выбранного элемента, а это опять мышь, диалоговые окна и потом, после многочасовой работы с мышью — болезнь кисти руки, «тунельный синдром».

Как трудно работать мышью с графическим редактором

Сколько движений мышью и сколько кликов нужно сделать, чтобы добавить новый элемент в схему в среде Altera Quartus II?

С друго

VHDL Tutorial: Learn by Example


VHDL Учебное пособие: учимся на примере
, Weijun Zhang, июль 2001 г.


*** NEW (2010): См. Новую книгу VHDL для цифрового дизайна, F. Vahid и R. Lysecky, J. Wiley and Sons, 2007. Краткий (180 страниц), многочисленные примеры, недорогой. См. Также www.ddvahid.com. ***
Если мы слышим, мы забываем; если мы видим, мы запоминаем; если мы это сделаем, мы поймем.
Пословица
ESD книга | Проект Далтон | VHDL Справка | Synopsys Учебник | ActiveHDL Учебник | Xilinx Руководство

Содержание

Предисловие
Custom Дизайн универсального процессора
Универсальное Дизайн процессора
Приложение: Моделирование промышленного ядра


Предисловие (Франк Вахид)

Дизайн на основе HDL (язык описания оборудования) зарекомендовал себя как современный подход к проектированию цифровых систем с VHDL (VHSIC Hardware Язык описания) и Verilog HDL являются двумя доминирующими HDL.Таким образом, многие университеты знакомят своих студентов с VHDL (или Verilog). Проблема в том, что VHDL сложен из-за своей общности. Вводя студенты сначала изучают язык, а затем показывают им, как проектировать цифровые системы с языком, как правило, сбивают студентов с толку. языковые проблемы, как правило, отвлекают их от понимания цифровые компоненты. И синтез подмножества вопросов языка добавить в путаницу.

Мы разработали следующее руководство на основе философии, начинающему студенту не нужно разбираться в деталях VHDL — вместо этого, они должны иметь возможность изменять примеры для создания желаемого базового схем.Таким образом, они узнают важность цифрового дизайна на основе HDL, без необходимости изучать сложности HDL. Эти сложности можно зарезервировать для второго, более продвинутого курса. Примеры в основном взяты из учебника Embedded. Дизайн системы Фрэнк Вахид и Тони Гиваргис. Oни начинайте с простых ворот и постепенно переходите к простому микропроцессору. Большинство примеров было смоделировано Aldec Симулятор ActiveHDL и Synopsys Design Analyzer, а также синтезированный с помощью Synopsys Design Compiler.Несколько примеров последовательного проектирования был успешно протестирован на Xilinx Программное обеспечение Foundation и плата FPGA / CPLD.




Основные логические вентили
(ESD Глава 2: Рисунок 2.3)
Каждый дизайн VHDL описание состоит как минимум из одной пары объект / архитектура , или один объект с несколькими архитектурами. Раздел сущностей HDL дизайн используется для объявления портов ввода-вывода схемы, в то время как код описания находится в части архитектуры.Стандартный дизайн библиотеки обычно используются и включаются до объявления объекта. Это достигается включением кода библиотеки ieee; и «используйте ieee.std_logic_1164.all;».



Комбинированный логический дизайн
(ESD Глава 2: Рисунок 2.4)
Используем порт оператор карты для создания структурной модели (экземпляры компонентов).В следующем примере показано, как написать программу для включения нескольких компоненты в конструкции более сложной схемы. Чтобы смоделировать дизайн, простой тестовый стенд должен быть написан код для применения последовательность входов (стимуляторов) в тестируемую цепь ( UUT ). Результат взаимодействия испытательного стенда и проверяемого оборудования можно наблюдать в окно симуляции формы сигнала.

Обсуждение I: Signal vs.Переменная :

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




Типовые комбинированные компоненты
(ESD Глава 2: Рисунок 2.5)
Следующие коды стиля поведения демонстрируют параллельные и последовательные возможности VHDL. параллельных операторов записываются в теле архитектура. Они включают одновременных назначений сигналов , одновременных процесс и экземпляров компонентов (оператор карты портов) . Последовательный операторы записываются в рамках процесса оператор , функция или процедура .Последовательный оператор включает case оператор , если-то-еще оператор и оператор цикла .



Защелка и шлепки
(Глава 2.3 ESD)
Кроме входных и выходных сигналов схемы, обычно есть два других важных сигналы, сбрасывает и часы , в последовательной схеме. сигнал сброса — активный высокий или активный низкий статус и переход состояния схемы может происходить на любом тактовом сигнале по переднему фронту или задняя кромка . Триггер — это базовый компонент последовательного схем.



Типичные последовательные компоненты
(ESD Глава 2: Рисунок 2.6)
Типичный последовательный Компоненты состоят из регистров, переключателей и счетчиков.Концепция чего-либо дженерики часто используется для параметризации этих компонентов. Параметризованные компоненты позволяют создавать стандартизированных библиотек общих моделей. В описании поведения обычно устанавливаются выходные переходы. на часах на переднем крае. Это достигается за счет комбинации VHDL условные операторы (clock’event и clock = ‘1’). В течение при работе тестового стенда ожидаемый выход схемы сравнивается с результаты моделирования для проверки схемотехники.



Последовательный логический дизайн
(ESD Глава 2: Рисунок 2.7)
Самое главное Представленная здесь описывающая модель может быть конечным автоматом (FSM) . Общая модель конечного автомата состоит как из комбинационной логики, так и из последовательной компоненты, такие как регистры состояний, которые записывают состояния схемы и обновляются синхронно по нарастающему фронту тактового сигнала. Функция output вычисляет различные выходные данные в соответствии с различными состояниями. Другой тип последовательной модели — это модуль памяти, который обычно занимает длительное время для синтеза из-за количества конструктивных ячеек.

Обсуждение II: Поведение по сравнению с синтезом RTL (Y Диаграмма)

RTL означает регистр-передача Уровень .Это неотъемлемая часть процесса цифрового проектирования сверху вниз. логика синтез предлагает автоматизированный маршрут от RTL-проекта до Gate-Level дизайн. В конструкции RTL схема описывается как набор регистров и набор передаточных функций, описывающих поток данных между регистрами, (например, FSM + Datapath ). Как важная часть сложной конструкции, это разделение является основной задачей разработчика оборудования, использующего синтез.Пример синтеза Synopsys показывает, что синтез RTL более эффективен. эффективнее, чем синтез поведения, хотя моделирование предыдущего для одного требуется несколько тактов.

Следующий раздел иллюстрирует метод RTL (FSM + Datapath) дополнительно с использованием нескольких примеров проектирования.




Индивидуальный дизайн процессора для одноцелевого назначения
(ESD Глава 2, Глава 4)
Первые три примеры иллюстрируют разницу между RTL FSMD модели ( Finite Конечный автомат со сборкой Datapath ) и RTL FSM + DataPath модель .С точки зрения дизайна уровней RT, каждый цифровой дизайн состоит из элемента управления . Блок (FSM) и Datapath . Путь к данным состоит из хранилища блоки, такие как регистры и память, и комбинационные блоки, такие как ALU, сумматоры, множители, шифтеры и компараторы. Путь к данным принимает операнды из блоков памяти, выполняет вычисления в комбинаторной единиц и возвращает результаты в единицы хранения в каждом состоянии. Этот процесс обычно занимает один или два такта.

Data-flow ( выглядит больше похоже на алгоритм ) моделирование представлено в четвертом примере. Алгоритм цифрового фильтра FIR моделируется и синтезируется с использованием VHDL. Сравнение стилей кодирования между RTL моделирования алгоритмов и Уровневое моделирование подчеркивает различные методы.

    • Калькулятор GCD (ESD Глава 2: Рисунок 2.9–2.11)
    • Простой мост (ESD Глава 2: Рисунок 2.13-2.14)
    • Интерфейс шины ISA (ESD Глава 4, Глава 6)
    • Цифровой фильтр FIR (пример DSP)


Обсуждение III: Анализ мощности Synopsys

Инструменты Synopsys можно использовать для выполнения анализа мощности для всех проектов VHDL.В общем, тем лучше конструкция имеет меньшее энергопотребление. С другой стороны, улучшите мощность всегда означает жертвовать другими метриками дизайна, такими как производительность, площадь размер или стоимость NRE. Поэтому дизайнеру необходимо сбалансировать эти показатели, чтобы найти лучшую реализацию для данного приложения и ограничений. Пожалуйста, проверьте мощность результаты анализа сумматора, счетчика, контроллера ISA, контроллера моста и КИХ-фильтр. Как мы и ожидали, цифровой фильтр FIR имеет наибольшую мощность потребление, потому что он имеет более сложную схему, выполняющую вычисления DSP.Учебное пособие Synopsys по анализу мощности можно найти здесь.

Обсуждение IV: Синтез с Ограничения по времени

Когда мы проектируем и моделируем высокоуровневый (поведенческий или RTL) код, мы заботимся только о дизайне функциональность . Однако в синтезе VHDL временные интервалы , и Функциональность дизайна всегда следует рассматривать вместе. Следовательно, как только проект был синтезирован, вторая цель моделирования заключается в быстрой проверке соответствия реализации на уровне шлюза требованиям по времени.Мы используем эту идею (кодирование -> моделирование -> синтез -> моделирование) для тестирования все примеры в этом руководстве.

Другой распространенный способ — применить временные ограничения к проекту во время синтеза. тогда время отчет проверяется, чтобы увидеть, есть ли резерв, который является требуемой задержкой минус фактическая задержка — МЕТАЛЛ или НАРУШЕНА. В случае НАРУШЕНИЯ, мы должны вернуться к код VHDL и перепишите его, чтобы улучшить синхронизацию. Весь дизайн будет быть скомпилированным и протестированным снова.

Обсуждение V: Связь между площадью и временем

В ходе синтеза Synopsys, обычная комбинационная логика будет проходить через некоторые из известных как оптимизация отображения. При обычной оптимизации инструмент синтеза оптимизируем в соответствии с установленными ограничениями. Обычно говорят о движение по «банановой кривой» на оси площади и времени. Это означает, что чем жестче временные ограничения, тем крупнее будет дизайн, и наоборот наоборот.Результаты двух различных ограничений синтеза, примененных к тот же дизайн показан ниже.



Процессор общего назначения
(Книга ESD, глава 3, рис. 3.15)
Как указано в предыдущая часть, специализированная интегральная схема (ASIC) является указаны с описаниями поведения, которые представлены в виде конкретный алгоритм или блок-схему.Процессор общего назначения, на с другой стороны, полностью определяется набором команд (IS). Последовательность инструкций требуется для вычисления математической выражение или любую другую аналогичную вычислительную задачу. Чтобы проиллюстрировать всю процедура, простая Псевдомикропроцессор используется модель, содержащая семь инструкций (рисунок 3.7 книги ESD). Метод проектирования уровней RT из предыдущих примеров снова используется для построения этот микропроцессор.ЦП получит , декодирует , а выполнит каждую инструкцию, чтобы получить окончательный результат.

Для в целях тестирования короткая программа (последовательные инструкции) загружается в память. После выполнения эта программа получит 10 Fabonacci Числа и сохраните результаты по определенному адресу памяти. Дизайн был реализован с использованием Active-HDL и Synopsys Design Compiler. (Пожалуйста обратите внимание, что PC.vhd нужно немного изменить, чтобы получить правильный результат синтеза.Просто практика для читателя.)


Обсуждение V: VHDL против Verilog

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




Приложение: Моделирование реального промышленного чипа — HD 6402
(Глава 4 ESD)

И.Технические характеристики из HD 6402

II. Моделирование поведения Передатчик UART
(1) Код поведения (2) Дизайн на уровне ворот (3) Стенды для испытаний — 1, 2, 3 (4) Моделирование Synopsys
Случай № 1: одно 8-битное слово, 1 начало, 2 остановки и четность, или Data = 11000101, Control Word = 11011. (Моделирование на уровне ворот )
Случай № 2: три 5-битных слова, 1 запуск, 1 остановка и без четности, или Data = 11010 & 00101 & 10001, Управляющее слово = 00100.(Моделирование на уровне ворот )
Случай № 3: два 6-битных слова, 1 начало, 2 остановки и нечетная четность, или Data = 110010 и 101101, Control Слово = 01000. (Моделирование на уровне ворот )

III. Моделирование поведения приемника UART
(1) Код поведения (2) Дизайн на уровне ворот (3) Стенды для испытаний — 1, 2, 3 (4) Моделирование Synopsys
Случай № 1: два 6-битных слова, 1 начало, 2 остановки и четность (данные = 111001 и 100101, управляющее слово = 01101).(Моделирование дизайна на уровне ворот )
Случай № 2: одно 8-битное слово, 1 пуск, 1 останов и нечетная четность (данные = 10111001, управляющее слово = 11000). ( Моделирование дизайна на уровне ворот )
Случай № 3: три 5-битных слова, 1 пуск, 1 останов и без контроля четности (Данные = 01001 & 01110 & 00100, Контроль Слово = 00010. (Моделирование дизайна на уровне ворот )

IV. Структурное моделирование из HD-6402
(1) Код поведения (2) Дизайн на уровне ворот (3) Испытательный стенд (4) Моделирование Synopsys


Создано Weijun Чжан (weijun_92507 @ yahoo.com)
в Калифорнийском университете, Риверсайд, 06/2001


.

RF Поставщики и ресурсы беспроводной связи

О RF Wireless World

Веб-сайт RF Wireless World является домом для поставщиков и ресурсов радиочастотной и беспроводной связи. На сайте представлены статьи, руководства, поставщики, терминология, исходный код (VHDL, Verilog, MATLAB, Labview), тестирование и измерения, калькуляторы, новости, книги, загрузки и многое другое.

Сайт RF Wireless World охватывает ресурсы по различным темам, таким как RF, беспроводная связь, vsat, спутник, радар, волоконная оптика, микроволновая печь, wimax, wlan, zigbee, LTE, 5G NR, GSM, GPRS, GPS, WCDMA, UMTS, TDSCDMA, bluetooth, Lightwave RF, z-wave, Интернет вещей (IoT), M2M, Ethernet и т. Д.Эти ресурсы основаны на стандартах IEEE и 3GPP. В нем также есть академический раздел, который охватывает колледжи и университеты по инженерным дисциплинам и MBA.

Статьи о системах на основе Интернета вещей

IoT based Fall Detection System architecture

Система обнаружения падений для пожилых людей на основе Интернета вещей : В статье рассматривается архитектура системы обнаружения падений, используемой для пожилых людей. В нем упоминаются преимущества или преимущества системы обнаружения падений Интернета вещей. Узнать больше➤
Также обратитесь к другим статьям о системах на основе Интернета вещей следующим образом:
• Система чистоты туалетов самолета. • Система измерения столкновения • Система отслеживания скоропортящихся продуктов и овощей • Система помощи водителю • Система умной торговли • Система мониторинга качества воды. • Система Smart Grid • Система умного освещения на базе Zigbee • Система интеллектуальной парковки на основе Zigbee. • Система интеллектуальной парковки на основе LoRaWAN


RF Статьи о беспроводной связи

В этом разделе статей представлены статьи о физическом уровне (PHY), уровне MAC, стеке протоколов и сетевой архитектуре на основе WLAN, WiMAX, zigbee, GSM, GPRS, TD-SCDMA, LTE, 5G NR, VSAT, Gigabit Ethernet на основе IEEE / 3GPP и т. Д. ,стандарты. Он также охватывает статьи, относящиеся к испытаниям и измерениям, по тестированию на соответствие, используемым для испытаний устройств на соответствие RF / PHY. УКАЗАТЕЛЬ СТАТЕЙ >>.


Физический уровень 5G NR : Обработка физического уровня для канала 5G NR PDSCH и канала 5G NR PUSCH рассмотрена поэтапно. Это описание физического уровня 5G соответствует спецификациям физического уровня 3GPP. Читать дальше➤


5G cell phone architecture

Основы повторителей и типы повторителей : В нем объясняются функции различных типов ретрансляторов, используемых в беспроводных технологиях.Читать дальше➤


Основы и типы замирания : В этой статье рассматриваются мелкомасштабные замирания, крупномасштабные замирания, медленные, быстрые и т. Д., Которые используются в беспроводной связи. Читать дальше➤


Архитектура сотового телефона 5G : В этой статье рассматривается блок-схема сотового телефона 5G с внутренними модулями 5G. Архитектура сотового телефона. Читать дальше➤


5G cell phone architecture

Основы помех и типы помех: В этой статье рассматриваются помехи в соседнем канале, помехи в одном канале, ЭМ помехи, ICI, ISI, световые помехи, звуковые помехи и т. Д.Читать дальше➤


5G NR Раздел

В этом разделе рассматриваются функции 5G NR (New Radio), нумерология, диапазоны, архитектура, развертывание, стек протоколов (PHY, MAC, RLC, PDCP, RRC) и т. Д. 5G NR Краткий указатель ссылок >>
• Мини-слот 5G NR • Часть полосы пропускания 5G NR • 5G NR CORESET • Форматы DCI 5G NR • 5G NR UCI • Форматы слотов 5G NR • IE 5G NR RRC • 5G NR SSB, SS, PBCH • 5G NR PRACH • 5G NR PDCCH • 5G NR PUCCH • Эталонные сигналы 5G NR • 5G NR m-последовательность • Золотая последовательность 5G NR • 5G NR Zadoff Chu Sequence • Физический уровень 5G NR • Уровень MAC 5G NR • Уровень 5G NR RLC • Уровень 5G NR PDCP


Учебные пособия по беспроводным технологиям

В этом разделе рассматриваются учебные пособия по радиочастотам и беспроводной связи.Он охватывает учебные пособия по таким темам, как сотовая связь, WLAN (11ac, 11ad), wimax, bluetooth, zigbee, zwave, LTE, DSP, GSM, GPRS, GPS, UMTS, CDMA, UWB, RFID, радар, VSAT, спутник, WLAN, волновод, антенна, фемтосота, тестирование и измерения, IoT и т. Д. См. УКАЗАТЕЛЬ >>


Учебное пособие по 5G — Это руководство по 5G также охватывает следующие подтемы по технологии 5G:
Руководство по основам 5G Полосы частот руководство по миллиметровым волнам Волновая рама 5G мм Зондирование волнового канала 5G мм 4G против 5G Тестовое оборудование 5G Сетевая архитектура 5G Сетевые интерфейсы 5G NR канальное зондирование Типы каналов 5G FDD против TDD Разделение сети 5G NR Что такое 5G NR Режимы развертывания 5G NR Что такое 5G TF


Этот учебник GSM охватывает основы GSM, архитектуру сети, элементы сети, системные спецификации, приложения, Типы пакетов GSM, структура кадров GSM или иерархия кадров, логические каналы, физические каналы, Физический уровень GSM или обработка речи, вход в сеть мобильного телефона GSM, установка вызова или процедура включения питания, MO-вызов, MT-вызов, VAMOS, AMR, MSK, модуляция GMSK, физический уровень, стек протоколов, основы мобильного телефона, Планирование RF, нисходящая линия связи PS и восходящая линия связи PS.
➤Подробнее.

LTE Tutorial , охватывающий архитектуру системы LTE, охватывающий основы LTE EUTRAN и LTE Evolved Packet Core (EPC). Он обеспечивает связь с обзором системы LTE, радиоинтерфейсом LTE, терминологией LTE, категориями LTE UE, структурой кадра LTE, физическим уровнем LTE, Стек протоколов LTE, каналы LTE (логические, транспортные, физические), пропускная способность LTE, агрегация несущих LTE, передача голоса по LTE, расширенный LTE, Поставщики LTE и LTE vs LTE продвинутые.➤Подробнее.


RF Technology Stuff

Эта страница мира беспроводной радиосвязи описывает пошаговое проектирование преобразователя частоты RF на примере преобразователя RF UP от 70 МГц до диапазона C. для микрополосковой платы с использованием дискретных радиочастотных компонентов, а именно. Смесители, гетеродин, MMIC, синтезатор, опорный генератор OCXO, колодки аттенюатора. ➤Подробнее.
➤Проектирование и разработка радиочастотного трансивера ➤Конструкция RF фильтра ➤VSAT Система ➤Типы и основы микрополосковой печати ➤Основы волновода


Секция испытаний и измерений

В этом разделе рассматриваются контрольно-измерительные ресурсы, испытательное и измерительное оборудование для тестирования DUT на основе Стандарты WLAN, WiMAX, Zigbee, Bluetooth, GSM, UMTS, LTE.ИНДЕКС испытаний и измерений >>
➤ Система PXI для T&M. ➤ Генерация и анализ сигналов ➤Измерения слоя PHY ➤Тест устройства на соответствие WiMAX ➤ Тест на соответствие Zigbee ➤ Тест на соответствие LTE UE ➤Тест на соответствие TD-SCDMA


Волоконно-оптическая технология

Оптоволоконный компонент , основы, включая детектор, оптический соединитель, изолятор, циркулятор, переключатели, усилитель, фильтр, эквалайзер, мультиплексор, разъемы, демультиплексор и т. д.Эти компоненты используются в волоконно-оптической связи. Оптические компоненты INDEX >>
➤Учебное пособие по оптоволоконной связи ➤APS в SDH ➤SONET основы ➤SDH Рамочная конструкция ➤SONET против SDH


Поставщики и производители беспроводных радиочастотных устройств

Сайт RF Wireless World охватывает производителей и поставщиков различных компонентов, систем и подсистем RF для ярких приложений, см. ИНДЕКС поставщиков >>.

RF Wireless World Home Page-Passive RF components

Поставщики радиочастотных компонентов, включая радиочастотный изолятор, радиочастотный циркулятор, радиочастотный смеситель, радиочастотный усилитель, радиочастотный адаптер, радиочастотный разъем, радиочастотный модулятор, радиочастотный приемопередатчик, PLL, VCO, синтезатор, антенну, генератор, делитель мощности, сумматор мощности, фильтр, аттенюатор, диплексор, дуплексер, чип резистор, чип конденсатор, индуктор чипа, ответвитель, оборудование EMC, программное обеспечение RF Design, диэлектрический материал, диод и т. д.Производители RF компонентов >>
➤Базовая станция LTE ➤RF Циркулятор ➤RF Изолятор ➤Кристаллический осциллятор


MATLAB, Labview, встроенные исходные коды

Раздел исходного кода RF Wireless World охватывает коды, связанные с языками программирования MATLAB, VHDL, VERILOG и LABVIEW. Эти коды полезны для новичков в этих языках. ИНДЕКС ИСХОДНОГО КОДА >>
➤3-8 декодер кода VHDL ➤Код MATLAB для дескремблера ➤32-битный код ALU Verilog ➤T, D, JK, SR flipflop коды labview


* Общая информация о здоровье населения *

Выполните эти пять простых действий, чтобы остановить коронавирус (COVID-19).
СДЕЛАЙТЕ ПЯТЬ
1. РУКИ: Часто мойте их.
2. КОЛЕНО: Откашляйтесь
3. ЛИЦО: не трогайте его
4. НОГИ: держитесь на расстоянии более 3 футов (1 м) друг от друга
5. ЧУВСТВОВАТЬ: Болен? Оставайся дома


Используйте технологию отслеживания контактов >>, соблюдайте >> рекомендации по социальному дистанцированию и установить систему наблюдения за данными >> чтобы спасти сотни жизней. Использование концепции телемедицины стало очень популярным в таким странам, как США и Китай, чтобы остановить распространение COVID-19, поскольку это заразное заболевание.


RF Беспроводные калькуляторы и преобразователи

Раздел «Калькуляторы и преобразователи» охватывает ВЧ-калькуляторы, беспроводные калькуляторы, а также преобразователи единиц. Это касается беспроводных технологий, таких как GSM, UMTS, LTE, 5G NR и т. Д. СПРАВОЧНЫЕ КАЛЬКУЛЯТОРЫ Указатель >>.
➤ Калькулятор пропускной способности 5G NR ➤5G NR ARFCN против преобразования частоты ➤Калькулятор скорости передачи данных LoRa ➤LTE EARFCN для преобразования частоты ➤ Калькулятор антенны Яги ➤ Калькулятор времени выборки 5G NR


IoT-Интернет вещей Беспроводные технологии

Раздел IoT охватывает беспроводные технологии Интернета вещей, такие как WLAN, WiMAX, Zigbee, Z-wave, UMTS, LTE, GSM, GPRS, THREAD, EnOcean, LoRa, SIGFOX, WHDI, Ethernet, 6LoWPAN, RF4CE, Bluetooth, Bluetooth Low Power (BLE), NFC, RFID, INSTEON, X10, KNX, ANT +, Wavenis, Dash7, HomePlug и другие.Он также охватывает датчики Интернета вещей, компоненты Интернета вещей и компании Интернета вещей.
См. Главную страницу IoT >> и следующие ссылки.
➤THREAD ➤EnOcean ➤Учебник по LoRa ➤Учебник по SIGFOX ➤WHDI ➤6LoWPAN ➤Zigbee RF4CE ➤NFC ➤Lonworks ➤CEBus ➤UPB



СВЯЗАННЫЕ ЗАПИСИ


RF Wireless Учебники



Различные типы датчиков


Поделиться страницей

Перевести страницу

,Учебные пособия по

Basic VHDL — VHDLwhiz

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

Если вы не знаете, что такое VHDL, начните здесь: Что такое VHDL?

Как начать работу

Никакого оборудования не требуется, то есть вы можете начать прямо сейчас! Учебные упражнения VHDL запускаются только в симуляторе VHDL.В этой серии используется симулятор VHDL ModelSim, но вы можете использовать любой симулятор VHDL, к которому у вас есть доступ.

Будучи студентом, вы можете установить студенческую версию ModelSim бесплатно. ModelSim — это самый распространенный симулятор VHDL, и поэтому вы, скорее всего, столкнетесь с ним в своей первой работе. Знание отраслевого стандарта симуляторов полезно. Вы можете поместить это в свое резюме, чтобы сделать его более актуальным.

Материалы курса

Загрузите материалы курса, нажав на баннер ниже.Вы получите zip-файл, содержащий папку со всеми упражнениями и папку со всеми ответами. Я рекомендую вам использовать файлы .vhd в папке упражнений в качестве отправной точки для каждого из руководств. Это избавит вас от повторения одного и того же кода снова и снова.

Для каждого учебника откройте соответствующий файл .vhd из папки упражнений. Вам нужно только заменить комментарии TODO своим кодом для выполнения каждого упражнения. Вам разрешено только заглядывать в.vhd из папки ответов, если у вас возникнут проблемы 🙂

Exercises

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

Начните с номера 1 и двигайтесь вниз до номера 23, который является последним. После каждого раздела вы можете пройти тест VHDL, чтобы проверить свои навыки по мере продвижения.

Вы можете задавать вопросы и обсуждать уроки в нашей частной группе Facebook .

Нажмите на изображения ниже, чтобы начать!

Часть 1

В части 1 серии руководств по VHDL вы познакомитесь с инструментами торговли. Если вы еще этого не сделали, вы начнете с установки симулятора VHDL и редактора кода.

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

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

Part 2

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

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

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

Часть 3

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

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

После этого раздела вы узнаете разницу между параллельным процессом и синхронизированным процессом в VHDL.

Часть 4

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

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

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

Куда идти дальше

Прежде всего, поздравляем вас с завершением Основного учебного курса VHDL. Отлично сработано!

С вашими только что приобретенными навыками VHDL пора пойти немного дальше. Если вы серьезно относитесь к VHDL и FPGA, вам следует заполучить плату для разработки. Платы для разработки FPGA могут стоить всего 25 долларов. Одна такая плата, которую я много использовал и рекомендую, — это Lattice iCEstick.

Я использую Lattice iCEstick в продвинутом курсе Dot Matrix FPGA и в курсе Fast-Track VHDL для начинающих.Подробнее о курсе Fast-Track VHDL и FPGA ниже!

FPGA и VHDL Fast-Track:

Практическое руководство для абсолютных новичков

Lattice iCEstick and 7 segment display Lattice iCEstick and 7 segment display

Вы знакомы с программированием, но плохо знакомы с VHDL?

Вам нужно краткое введение в этот незнакомый предмет?

В вашем графике нет времени на учебу?

Изучите основы разработки FPGA с использованием VHDL за несколько вечеров! Этот курс предназначен для ИТ-специалистов и студентов, которым требуется быстрое изучение предмета.С помощью этого курса и недорогой платы для разработки Lattice iCEstick вы сможете разрабатывать реальное оборудование в считанные часы.

Щелкните здесь, чтобы узнать больше и зарегистрироваться:
FPGA и VHDL Fast-Track: практическое руководство для абсолютных новичков

Присоединяйтесь к группе Facebook

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

VHDL for FPGA Engineers VHDL for FPGA Engineers

Другие ресурсы

Вот несколько других блогов и сайтов с обучающими материалами VHDL в Интернете:

.

VHDL Учебное пособие для начинающих


Учебник по VHDL для начинающих

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

ВВЕДЕНИЕ


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

После выполнения этого руководства вы сможете писать коды VHDL как для простых, так и для схем средней сложности. Чтобы начать обучение, вам понадобится инструмент, чтобы вы могли скомпилировать свою программу и выполнить моделирование. Хотя доступен ряд инструментов, для этого урока мы выбрали Xilinx. Он имеет приятный пользовательский интерфейс и отлично подходит как для обучения, так и для проектирования профессиональных FPGA. Недостаток в том, что он очень большой по размеру, поэтому загрузка занимает очень много времени.Большинство концепций, представленных в руководстве, также применимы и к другим инструментам.

Вы можете скачать бесплатное руководство по Xilix ISE с сайта

http://www.xilinx.com/support/download/index.htm

Это платная версия http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm — она ​​вам не нужна

Прокрутите вниз до установщика Windows. Для загрузки вам потребуется корпоративная учетная запись. Это большая 6.Файл 2 ГБ, так что будьте осторожны. Обычно это занимает от 6 до 8 часов при хорошем соединении. Лучше всего начать загрузку, чтобы она была готова к тому времени, когда вы встанете.

Так что вздремните и вернитесь, как только скачаете его.

Еще несколько комментариев к VHDL

VHDL — это язык описания оборудования VHSIC, который изначально был разработан для Министерства обороны США для документирования поведения ASIC, которые компании-поставщики включают в оборонное оборудование.

Министерство обороны потребовало, чтобы синтаксис был основан на Ada как можно больше. В результате VHDL во многом заимствует у языка программирования Ada как концепции, так и синтаксис.

Первоначальная версия VHDL, разработанная в соответствии со стандартом IEEE 1076-1987, включала широкий диапазон типов данных, включая числовые (целые и действительные), логические (битовые и логические), символьные и временные, а также массивы битов под названием bit_vector и символа, называемого строкой.

Проблема, не решенная в этом издании, заключалась в «многозначной логике», где также учитывалась мощность сигнала (нет, слабая или сильная) и неизвестные значения.Для этого требовался стандарт IEEE 1164, в котором определены 9-значные логические типы: скалярный std_logic и его векторная версия std_logic_vector.

Обновленный IEEE 1076 в 1993 году сделал синтаксис более согласованным, обеспечил большую гибкость в именовании, расширил тип символа, чтобы разрешить печать символов ISO-8859-1, добавил оператор xnor и т. Д. [Указать]

Незначительные изменения в стандарте (2000 и 2002) добавили идею защищенных типов (аналогично концепции класса в C ++) и удалили некоторые ограничения из правил сопоставления портов.

В этом руководстве будут рассмотрены аспекты конструкции оборудования, а не язык.

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp

.

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

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