Один из наших читателей, JKQ, порекомендовал нам очень полезный ресурс: http://rutracker.org/forum/
Я сначала хотел почитать все это и сделать некий обзор по этому материалу, но потом понял, что наверное это будет не очень просто. Слишком много здесь материала и слишком он разнороден. Однозначно можно рекомендовать весь список к прочтению или ознакомлению.
Вот краткое оглавление:
Книги на русском языке:
VHDL для проектирования вычислительных устройств (Сергиенко).djvu
Основы языка VHDL (Бибило).djvu
ПЛИС фирмы Altera (Стешенко).djvu
ПЛИС фирмы Altera.Проектирование устройств обработки сигналов (Стешенко).djvu
Полезные схемы с применением микроконтроллеров и ПЛИС (Вальпа).djvu
Проектирование встраиваемых МП систем на основе ПЛИС фирмы Xilinx (Зотов).djvu
Книги на английском языке:
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
РУКОВОДСТВА И ОПИСАНИЯ ЯЗЫКА 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. | |
Данный цикл статей посвящен описанию языка Verilog. Будут приведены примеры описаний типовых узлов схем, некоторые рекомендации по стилю выполнения описаний на этом языке и материалы по разработке тест-бенчей.
Все статьи цикла:
Когда-то, в очень старые времена, в газетах журналисты применяли такую расхожую фразу — «письмо позвало в дорогу». Вот отрывки из письма Дмитрия, студента одного из российских университетов: «А книжку, которую Вы порекомендовали, в нашей библиотеке не нашел…», «…так как вижу, что спрос на литературу по ПЛИС (по крайней мере, здесь) очень велик… Спрос намного превышает предложение. Я считаю, что нужна книга с реализацией проекта от нуля до чего-то стоящего, и желательно для начинающих. В общем-то, Вы ближе всего подошли к решению данного вопроса».
Но для того чтобы автор смог решиться на такой шаг, как написание, пусть и небольшого, но все же учебного курса, понадобилось несколько лет общения с молодыми коллегами, студентами и преподавателями из различных университетов. Конечно, этот курс не заменит настоящего, полного изучения предмета, но все же автор надеется, что «Краткий курс HDL» (далее — КК) окажется полезным, в первую очередь тем, кто изучал цифровую схемотехнику по «безумно облегченным» университетским программам. Безусловно, есть хорошие книги и на русском языке, но, вопервых, большинство из них «про VHDL», а во-вторых, прочтите еще раз первую фразу из письма Дмитрия: эти книги почти недоступны студентам.
И еще надо добавить следующее. В отличие от многих изданий, выпущенных университетскими преподавателями, автор не ставил себе целью получить «учебник для изучения по программе ПЛИС за 4-й курс». Возможно, этот КК кому-то покажется сложным или избыточным. Может быть, кто-то из читателей захочет высказать свои замечания, предложения или прислать свои примеры. Пожалуйста, напишите об этом. Все ваши предложения будут учтены и размещены на сайте автора.
Автор не берется судить обо всех предметах, изучаемых сегодня в вузах по различным направлениям «электронных специальностей». Но общение со студентами и преподавателями ведущих петербургских вузов и письма читателей, обучающихся в различных университетах страны, наводят на довольно грустные размышления. Подведем итог: студентов многих, даже приборостроительных специальностей, вообще не учат технологии проектирования с применением FPGA, либо учат только «картинкам» (схемное описание проекта), либо дают только некоторые и очень краткие теоретические сведения по отладке проектов, но без практики на реальных аппаратных платформах.
Автор надеется, что читатели все же имеют некоторый опыт работы с электронными приборами. По крайней мере умеют читать схемы и понимают то, как работают простейшие узлы цифровых схем: триггеры, счетчики, мультиплексоры и т. д. Поэтому данный КК строится так, чтобы облегчить переход от схемных описаний устройств к описаниям на HDL. Но для того чтобы объяснить некоторые базовые принципы, сделано довольно подробное введение в КК.
Обычно все авторы стараются сделать свои учебники всеобъемлющими. Они стараются как можно более полно изложить материал, предназначенный для изучения. Масса примеров и тонкостей, много сокращений и специальных терминов — это обычное дело для таких книг. Однако для реальной жизни нужно совсем другое. Когда-то, очень давно, в 1977 году, автору посчастливилось купить переводную книгу издательства «Мир». Она называлась «Справочник по нелинейным схемам». Стиль изложения материала в этой книге был выбран очень необычный и не походил на все то, что издавалось у нас в стране. Книга была разделена на три части. Первая часть, объем которой не превышал 15%, содержала небольшое введение и «готовые к употреблению» схемы логарифматоров и перемножителей. Нужен синусно-косинусный генератор — вот схема, перечень компонентов, небольшое описание к ней. Вторая часть книги, примерно 35% от ее объема, представляла подробные примеры расчета и синтеза тех же самых логарифматоров и перемножителей. Но в этом разделе книги можно было посмотреть и быстро пересчитать основные характеристики схемы. А вот третья часть, она занимала почти половину книги, представляла собой очень подробное описание все тех же самых логарифматоров и перемножителей. Но только теперь были рассмотрены все параметры, влияющие на точность работы такого узла: и частотные, и температурные.
Почему потребовалось столь подробное описание структуры книги?
Да потому, что и «Краткий курс HDL» тоже хочется построить таким же образом. Если стоит задача сделать простой проект и довольно быстро, то 500–600 страниц англоязычного текста оказываются довольно серьезной преградой. Мало того, множество подробностей и тонкостей, возникающих при изучении языка, требуют много времени и сил. Именно поэтому автор стремился преследовать только одну цель: упростить разработку проектов с применением HDL-кодирования. Облегчить переход от проектирования в «картинках» к проектированию на языках HDL. Изучение такого «Краткого курса HDL» будет первым шагом на пути освоения методики проектирования на языках HDL. Тот, кто посчитает для себя необходимым сделать дальнейшие шаги по изучению HDL-кодирования, всегда сможет найти для себя «толстый» учебник и развить свои способности. Еще раз хочется подчеркнуть, что изучение языка — это не самоцель, это только средство для успешного выполнения проектов. И в данном контексте хочется привести лишь один пример. При создании тест-бенча можно делать поведенческое описание тестирования, а можно сделать подробное описание на уровне триггеров и вентилей, такое же, как описание самого тестируемого объекта. Безусловно, поведенческое описание гораздо легче создать. Но это надо уметь делать! И если стоит задача выполнить это быстро, а на изучение того, как это должно быть сделано, у вас нет времени, то структурное описание окажется создать легче, хотя и кода там будет больше, да и выглядит оно не так «красиво»…
И, наконец, еще одно замечание.
Первоначально «Краткий курс HDL» планировался только как очень краткое описание синтезируемых конструкций. Но в процессе работы над материалом автор пришел к твердому убеждению, что сегодня этого мало даже для краткого курса. Сейчас необходимо не только уметь быстро сформировать файл для микросхемы FPGA, содержащий пару счетчиков и дешифраторов. Разработчику необходимо уметь симулировать проект не на уровне отдельной микросхемы, а на уровне всей платы, содержащей FPGA, память и микроконтроллеры. А это подразумевает, что необходимо иметь очень четкое представление о том, как должна работать модель, как задать задержки и какие именно задержки в ней необходимы. Поэтому, сохранив первоначальное название, автор значительно расширил описание языковых конструкций и добавил большее количество примеров. Что же касается дополнительных разделов, то это, можно сказать, отдельные главы, и они более подробно описывают наиболее часто встречающиеся при проектировании проблемы.
Итак, вот что будет предложено читателям.
Герой известного кинофильма объяснял стратегию при помощи картошки. Ну, а мы, чтобы не отстать от классического шедевра, попробуем начать с яблок. Яблоки, какие они? Круглые, сочные, красные, «на снегу», «эх, яблочко» и так далее. Все это характеристики объекта, причем, ни одна из этих характеристик не описывает предмет целиком, а дает только свою часть описания. Точно таким же образом инженеры описывают разрабатываемое изделие. И на каждое изделие существует определенное стандартом количество документов, которые все вместе полностью описывают конкретное изделие. И называются они комплект конструкторской документации (КД). Каждый из входящих в него документов описывает какую-то одну сторону изделия. И при разработке узла какого-либо устройства нас в первую очередь будет интересовать то, какую функцию он выполняет, из чего состоит, как связан с другими узлами разрабатываемого изделия и по какому алгоритму работает.
И еще немного философии. При описании объектов люди пользуются различными абстракциями. Чаще всего в качестве абстрактного образа используется уличный светофор. Наверное, нет необходимости объяснять, почему… Точно так же и в схемотехнике. Кружочек, три черточки, одна поперечная линия и одна стрелка — это не описание транзистора, а только его условное обозначение на схеме. Но оно связано с описанием работы транзистора, возможно, оно связано и с его конструкцией. Таким образом, рассматривая условное графическое обозначение, можно представить то, как именно этот компонент будет работать. Более того, обычно мы рассматриваем компонент в схеме, то есть во взаимосвязи с другими компонентами. И опытный специалист, глядя на схему, в подавляющем большинстве случаев сразу скажет вам, как работает тот или иной ее узел.
Теперь давайте вспомним, что бывают такие схемы, которые не помещаются на одном листе. Или, например, какой-то фрагмент схемы повторяется многократно. Что делается в этом случае? Фрагмент выделяется в отдельный чертеж. При этом весь проект становится иерархическим. То есть на самом верхнем уровне чертеж состоит из прямоугольников, которые представляют собой части схемы, выделенные в отдельные чертежи. Те, кто программировал на языке высокого уровня, тут же вспомнят вызов функций. Действительно, принцип тот же самый. На более высоком уровне описания объекта присутствуют только «главные» характеристики объекта, а все то, что не соответствует этому уровню, находится в низших уровнях описания. То есть в описании функций или в тех самых отдельных чертежах, о которых шла речь ранее. Для примера можно представить себе механизм от заводной детской игрушки (наверное, каждый читатель имел в детстве опыт по «изучению внутренностей» заводных игрушек…). Что есть у такого механизма? Есть место, куда вставляется ключ, для того чтобы эту игрушку заводить, а из механизма выходит ось, которая вращает колеса игрушки. Все остальное сейчас для нас не так интересно: оно скрыто в корпусе механизма. Так что же с точки зрения схемотехники представляют эти два «внешних» для игрушечного механизма момента? Это две «точки подключения» механизма к остальному устройству. Точно так же и в схемотехнике: при создании иерархического проекта нас будет интересовать только то, как функционируют «квадратики», то есть то, что выделено в отдельные блоки, и как они подключаются ко всем остальным цепям верхнего проекта.
Теперь надо рассмотреть еще один момент. Если мы выделяем из схемы только один фрагмент и представляем его в виде «квадратика» на верхнем уровне, то тут все понятно. Что же происходит, когда надо компактно изобразить на чертеже верхнего уровня несколько одинаковых фрагментов? Решение здесь точно такое же. Выделяется унифицированный фрагмент схемы и из него делается чертеж нижнего уровня. А на верхнем уровне помещается столько «квадратиков», сколько нам нужно этих унифицированных узлов. Но как же мы узнаем, где и какой фрагмент находится и куда он подключается? По именам, которые мы даем при установке компонента в схему. Чтобы представить себе эту ситуацию более наглядно, вспомним, что комплект КД — это тоже только описание изделия. А вот серийные изделия на конвейере — это как раз полный аналог нашего случая. Так чем же отличаются новенькие автомобили, сходящие с конвейера? Они отличаются только своим «именем» — серийным номером.
Или другой пример: берем Си++, смотрим описание какого-нибудь класса. А также на то, как производится работа с экземпляром данного класса. Вот теперь мы подошли к объяснению терминов “instance” и “instantiate”. Фрагмент схемы, выделенный в описание нижнего уровня, будем называть “instance” — компонент. Размещение на схеме верхнего уровня такого фрагмента в виде блока будем называть установкой компонента — “instantiate”.
Итак, мы выяснили, что обсудим только часть описания изделия. Мы не будем обсуждать физическую сущность, конструкцию и прочее, все то, что не относится к схемотехнике. Мало того, «за кадром» останутся вопросы, связанные с алгоритмом функционирования. Они должны быть описаны в отдельном документе. Здесь же мы будем рассматривать только вопросы схемотехники. И так же, как при рассмотрении классических схем, можно сказать о том, как работает тот или иной узел, точно так же это суждение можно составить из HDL-описания блока. Но еще раз хочется напомнить, что классическое описание алгоритма работы устройства всегда должно быть сделано.
В чем же разница и в чем сходство таких языков? Мы уже выяснили, что любой предмет можно и нужно описывать следующим образом:
Будем считать, что читатель уже имел дело, пусть хотя бы и поверхностно, с одним из таких языков. (Ну, а если вы еще не работали с языками программирования, то вспомните ваши действия по управлению телевизором или СВЧ-печкой…). Язык программирования задает последовательность действий в фиксированной среде. Представим, что мы программируем микроконтроллер. Сам микроконтроллер от наших действий не меняется. Меняется только порядок обработки данных, поступающих в микроконтроллер и выдаваемых из него. При этом программист знает, что структура микроконтроллера и описание его команд приводятся в его комплекте документации. Микроконтроллер под управлением потока команд обрабатывает данные последовательно. Да, конечно, существуют процессоры, которые за один такт «умеют» выполнять несколько команд, есть каналы DMA, которые пересылают данные на периферийные узлы микроконтроллера для дальнейшей автономной обработки, но все же, в целом, обработка данных идет последовательно. Представим, что мы хотим произвести инкремент 100 переменных. Тогда в тексте программы это будет выглядеть так:
Можно сказать так: если представить, что каждая команда выполняется за один такт, то такой фрагмент программы будет выполнен микроконтроллером за 100 тактов.
Язык описания аппаратуры, в противоположность языку программирования, описывает связи в устройстве. А функционирование устройства будет происходить в соответствии с теми внешними воздействиями, которые будут к нему приложены. То есть разработчик аппаратуры, в соответствии с заданием для разработки, выбирает состав устройства и описывает этот состав и все связи устройства, пользуясь тем, что алгоритм его работы описан в комплекте документации или, если говорить более точно, в техническом задании, входящем в этот комплект. Поскольку составные части устройства могут работать независимо друг от друга, то для примера с инкрементированием 100 переменных на аппаратном уровне нужен будет всего лишь 1 такт. Конечно, скажет читатель, это же аппаратные «штучки», так можно сделать все, что разработчику угодно… Действительно, это так, но речь сейчас о другом. Дело в том, что в тексте описания аппаратуры, так же как и в тексте описания программы, будут присутствовать 100 строк примерно такого вида:
Таким образом, внешне все очень похоже. Но только внешне. А по сути это будут 100 одновременных процессов. Необходимо еще раз подчеркнуть, что все процессы, изложенные на языке описания аппаратуры, идут одновременно. Конечно, языки описания аппаратуры кроме возможностей, предоставляемых структурным описанием, имеют набор возможностей и для поведенческого описания. Да, можно описать то, как должно работать устройство. Но здесь необходимо отметить, что поведенческое описание не всегда можно превратить в загружаемый в микросхему FPGA файл. Только самые элементарные поведенческие описания компилируются в синтезируемые конструкции. И из этого описания компилятор синтезирует опять только связи внутри устройства. А алгоритм работы на все устройство, как в целом, так и в этом случае, будет зависеть от связей и от входных воздействий на данное устройство.
Текст программы на языке программирования пишется для того, чтобы он исполнялся на процессоре. Конечно, программа может быть написана на языке высокого уровня, который сам по себе не зависит от аппаратной платформы. Но компилятор с языка высокого уровня переводит весь текст программы в исполняемый код для определенного целевого процессора, на котором он и выполняется. И в текст программы могут быть добавлены фрагменты, которые позволяют на этапе ее отладки совершать какие-либо дополнительные действия. Можно применить условную компиляцию и вставить дополнительно фрагменты программы, позволяющие гибко перестраивать текст под нужды программиста. Текст описания аппаратуры на HDL-языке пишется и для того, чтобы провести симуляцию работы устройства, и для того, чтобы получить «прошивку», то есть загружаемый в FPGA файл. Поэтому в этих языках есть часть языковых конструкций, которые применяются только для симуляции и не могут быть синтезированы в аппаратные узлы. Разработчик обязан следить за тем, чтобы при описании того узла, который должен быть загружен в FPGA, применялись только синтезируемые конструкции языка или библиотечные компоненты, поставляемые производителем FPGA.
Общее — это то, что проекты и в том, и в другом языке строятся иерархически. Часть кода выделяется в классы, и экземпляры классов инстанциируются в проект. Используются библиотеки.
Далее необходимо отметить тенденцию по объединению этих языков. Дело в том, что сейчас появились версии языков программирования SystemC, System Verilog, позволяющие выполнять проекты на языке Си, с последующей автоматической компиляцией этих проектов на языки HDL.
Когда автора на одной из встреч в университете спросили студенты: «Что же нам надо изучать: VHDL или Verilog?», то ответ был такой: «А вы готовы пренебречь половиной рабочих мест только потому, что вы не захотели выучить оба эти языка?»
Нет нужды объяснять, что, как минимум, надо понимать оба этих языка. А на каком языке специализироваться? Есть такое негласное правило: фирма должна делать разработки на том языке программирования, на котором пишет ее лучший программист. Но, поскольку в нашей стране большинство книг написано университетскими преподавателями, а не разработчиками аппаратуры, то есть явный перекос в сторону VHDL. В то время как довольно большая часть инженеров с успехом пользуется языком Verilog. Поэтому автор уделит значительно больше внимания именно этому языку программирования. Практически, это и будет учебник по языку Verilog, а небольшие вкрапления примеров на VHDL помогут сравнить эти два языка и при необходимости быстрее перейти с одного языка на другой.
Схемное описание проекта, или «картинки» — это наиболее простое и доступное решение для небольших проектов. Оно, несомненно, наглядно и просто. И на этом все преимущества схемного описания проекта заканчиваются. Можно лишь добавить, что при использовании библиотек компонентов, поставляемых фирмой-изготовителем, удается применять параметризированные компоненты. Недостатки также очевидны. При увеличении сложности и объема проекта объем файлов тоже растет, и отладка такого проекта становится сложной. Более подробно об этом можно будет прочитать в тех разделах КК, где будут описаны методики отладки пользовательских проектов.
В любом языке, как в обычном разговорном, так и в техническом, есть свои устоявшиеся нормы и критерии. Есть свои слова для определения объектов и событий, а есть слова заимствованные. Когда заимствованные слова теряют свою новизну, то они воспринимаются уже как свои, «родные». Более сотни лет тому назад в литературных кругах шли дискуссии о «мокроступах» — так предлагали называть калоши некоторые отечественные литераторы, но в обиход вошло «импортное» слово. А когда СССР был ведущей научной державой, то все народы ввели в свои словари и начали применять слово «спутник». То же самое происходит и в других областях знаний. Те термины, которые первыми входят в оборот, получают наиболее широкое употребление. К сожалению, в той области знаний, к которой относится данная книга, наша страна сегодня не является лидером. Поэтому здесь нам приходится пользоваться терминологией, базирующейся на принятых во всем мире англоязычных терминах. Естественно, часть из этих терминов имеет понятный и привычный перевод. Но некоторые из них могут показаться читателю непривычными. Однако поскольку подавляющее большинство литературы в этой области написано на английском языке, то читателю, рано или поздно, придется к такой литературе обратиться. Поэтому автор не считает нужным вводить какие-либо «более литературные термины», для того чтобы читатель мог подготовить себя к чтению англоязычной литературы.
Теперь несколько слов о том, «как это работает». Если вы увидите такое выражение:
то это, конечно, равенство. И тут все должно быть понятно.
Выражение Y = X в математике называют уравнением. А вот в языках HDL смысл такого выражения будет зависеть от того места, где оно приведено. Если выражение используется как математическое, то тут все понятно. А вот в том случае, когда такое выражение применяется для описания передачи сигналов от одних компонентов схемы к другим, его смысл меняется. При описании схемы используются термины операция и операнд. Операнды различаются на те, которые находятся справа и слева от знака операции.
Теперь необходимо познакомиться с теми терминами, которыми пользователь оперирует при описании проекта на языке Verilog.
Термин «назначение на цепь»: assign — назначить; assignment — назначение.
В терминах HDL приведенный пример можно трактовать так. Есть цепи Y — это приемник данных и X — это источник данных. И этим выражением цепи Y назначаются те данные, которые ей передает цепь X. При моделировании под выражениями Y и X понимаются и переменные.
Утверждение. Еще раз обратимся к нашему примеру. Вот такие выражения:
Это не формула, не уравнение. Это нечто совсем другое. В англоязычной литературе для такого выражения применяется термин statement (утверждение).
Драйвер сигнала. Это тот компонент схемы, который управляет сигналом в какой-либо конкретной цепи. Одна цепь может иметь несколько драйверов.
Instance — установленный в проекте пользователя компонент, представляющий собой экземпляр того, что сделано в описании модуля. Аналогичен применяемому в С++ экземпляру класса.
Положительный фронт — переход сигнала из состояния низкого уровня в состояние высокого уровня.
Отрицательный фронт — переход сигнала из состояния высокого уровня в состояние низкого уровня.
Примечание. В данном описании оставлены некоторые термины на английском языке, для того чтобы читатель смог в дальнейшем легко узнать их в англоязычной литературе.
Все приведенные в книге примеры являются учебными и могут использоваться в том виде, в каком приведены. Автор не несет ответственности за применение этих примеров читателями в своих разработках.
Продолжение следует
--------------------------------------------------------------------------- --------------------------------------------------------------------------- -- 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 ; |
Рискну затронуть такую холиварную тему: сравнение двух методов разработки, графический ввод схемы и текстовое описание проекта на языках HDL Verilog / VHDL.
Какой метод лучше?
Сразу скажу, что я сторонник текстового ввода, так что наверняка моя заметка может выглядеть предвзятой. Тем не менее, вот еще важные замечания по теме:
Теперь все таки давайте рассмотрим недостатки и преимущества методов разработки в схеме или в текстовом виде.
Условно можно выделить несколько взаимосвязанных критериев для оценки метода разработки цифровых проектов для ПЛИС и 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
Учебное пособие: учимся на примере *** NEW (2010): См. Новую книгу VHDL для цифрового дизайна, F. Vahid и R. Lysecky, J. Wiley and Sons, 2007. Краткий (180 страниц), многочисленные примеры, недорогой. См. Также www.ddvahid.com. *** ESD книга | Проект Далтон | VHDL Справка | Synopsys Учебник | ActiveHDL Учебник | Xilinx РуководствоЕсли мы слышим, мы забываем; если мы видим, мы запоминаем; если мы это сделаем, мы поймем. Содержание
Основные логические вентили (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 Диаграмма) Индивидуальный дизайн процессора для одноцелевого назначения (ESD Глава 2, Глава 4) Первые три примеры иллюстрируют разницу между RTL FSMD модели ( Finite Конечный автомат со сборкой Datapath ) и RTL FSM + DataPath модель .С точки зрения дизайна уровней RT, каждый цифровой дизайн состоит из элемента управления . Блок (FSM) и Datapath . Путь к данным состоит из хранилища блоки, такие как регистры и память, и комбинационные блоки, такие как ALU, сумматоры, множители, шифтеры и компараторы. Путь к данным принимает операнды из блоков памяти, выполняет вычисления в комбинаторной единиц и возвращает результаты в единицы хранения в каждом состоянии. Этот процесс обычно занимает один или два такта.
Обсуждение IV: Синтез с Ограничения по времени Процессор общего назначения (Книга ESD, глава 3, рис. 3.15) Как указано в предыдущая часть, специализированная интегральная схема (ASIC) является указаны с описаниями поведения, которые представлены в виде конкретный алгоритм или блок-схему.Процессор общего назначения, на с другой стороны, полностью определяется набором команд (IS). Последовательность инструкций требуется для вычисления математической выражение или любую другую аналогичную вычислительную задачу. Чтобы проиллюстрировать всю процедура, простая Псевдомикропроцессор используется модель, содержащая семь инструкций (рисунок 3.7 книги ESD). Метод проектирования уровней RT из предыдущих примеров снова используется для построения этот микропроцессор.ЦП получит , декодирует , а выполнит каждую инструкцию, чтобы получить окончательный результат. Обсуждение V: VHDL против Verilog Приложение: Моделирование реального промышленного чипа — HD 6402 (Глава 4 ESD)
Создано Weijun Чжан (weijun_92507 @ yahoo.com) |
Веб-сайт 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.
Система обнаружения падений для пожилых людей на основе Интернета вещей : В статье рассматривается архитектура системы обнаружения падений, используемой для пожилых людей.
В нем упоминаются преимущества или преимущества системы обнаружения падений Интернета вещей.
Узнать больше➤
Также обратитесь к другим статьям о системах на основе Интернета вещей следующим образом:
• Система чистоты туалетов самолета.
• Система измерения столкновения
• Система отслеживания скоропортящихся продуктов и овощей
• Система помощи водителю
• Система умной торговли
• Система мониторинга качества воды.
• Система Smart Grid
• Система умного освещения на базе Zigbee
• Система интеллектуальной парковки на основе Zigbee.
• Система интеллектуальной парковки на основе LoRaWAN
В этом разделе статей представлены статьи о физическом уровне (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 : В этой статье рассматривается блок-схема сотового телефона 5G с внутренними модулями 5G. Архитектура сотового телефона. Читать дальше➤
Основы помех и типы помех: В этой статье рассматриваются помехи в соседнем канале, помехи в одном канале, ЭМ помехи, ICI, ISI, световые помехи, звуковые помехи и т. Д.Читать дальше➤
В этом разделе рассматриваются функции 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 на примере преобразователя 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 для ярких приложений, см. ИНДЕКС поставщиков >>.
Поставщики радиочастотных компонентов, включая радиочастотный изолятор, радиочастотный циркулятор, радиочастотный смеситель, радиочастотный усилитель, радиочастотный адаптер, радиочастотный разъем, радиочастотный модулятор, радиочастотный приемопередатчик, PLL, VCO, синтезатор, антенну, генератор, делитель мощности, сумматор мощности, фильтр, аттенюатор, диплексор, дуплексер, чип резистор, чип конденсатор, индуктор чипа, ответвитель, оборудование EMC, программное обеспечение RF Design, диэлектрический материал, диод и т. д.Производители RF компонентов >>
➤Базовая станция LTE
➤RF Циркулятор
➤RF Изолятор
➤Кристаллический осциллятор
Раздел исходного кода 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, поскольку это заразное заболевание.
Раздел «Калькуляторы и преобразователи» охватывает ВЧ-калькуляторы, беспроводные калькуляторы, а также преобразователи единиц.
Это касается беспроводных технологий, таких как GSM, UMTS, LTE, 5G NR и т. Д.
СПРАВОЧНЫЕ КАЛЬКУЛЯТОРЫ Указатель >>.
➤ Калькулятор пропускной способности 5G NR
➤5G NR ARFCN против преобразования частоты
➤Калькулятор скорости передачи данных LoRa
➤LTE EARFCN для преобразования частоты
➤ Калькулятор антенны Яги
➤ Калькулятор времени выборки 5G NR
Раздел 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
В серии учебных пособий Basic VHDL рассматриваются наиболее важные особенности языка VHDL. Этот курс VHDL для начинающих поможет вам понять фундаментальные принципы языка. Это учебник для вас, чтобы преуспеть в VHDL.
Если вы не знаете, что такое VHDL, начните здесь: Что такое VHDL?
Никакого оборудования не требуется, то есть вы можете начать прямо сейчас! Учебные упражнения VHDL запускаются только в симуляторе VHDL.В этой серии используется симулятор VHDL ModelSim, но вы можете использовать любой симулятор VHDL, к которому у вас есть доступ.
Будучи студентом, вы можете установить студенческую версию ModelSim бесплатно. ModelSim — это самый распространенный симулятор VHDL, и поэтому вы, скорее всего, столкнетесь с ним в своей первой работе. Знание отраслевого стандарта симуляторов полезно. Вы можете поместить это в свое резюме, чтобы сделать его более актуальным.
Загрузите материалы курса, нажав на баннер ниже.Вы получите zip-файл, содержащий папку со всеми упражнениями и папку со всеми ответами. Я рекомендую вам использовать файлы .vhd в папке упражнений в качестве отправной точки для каждого из руководств. Это избавит вас от повторения одного и того же кода снова и снова.
Для каждого учебника откройте соответствующий файл .vhd из папки упражнений. Вам нужно только заменить комментарии TODO своим кодом для выполнения каждого упражнения. Вам разрешено только заглядывать в.vhd из папки ответов, если у вас возникнут проблемы 🙂
Каждое из руководств охватывает одну базовую концепцию. Начните с нажатия первого баннера, чтобы ваша среда разработки заработала. Попробуйте выполнить упражнения на своем компьютере.
Начните с номера 1 и двигайтесь вниз до номера 23, который является последним. После каждого раздела вы можете пройти тест VHDL, чтобы проверить свои навыки по мере продвижения.
Вы можете задавать вопросы и обсуждать уроки в нашей частной группе Facebook .
Нажмите на изображения ниже, чтобы начать!
В части 1 серии руководств по VHDL вы познакомитесь с инструментами торговли. Если вы еще этого не сделали, вы начнете с установки симулятора VHDL и редактора кода.
Вы напишете и запустите свою первую программу VHDL в самом первом руководстве. Вы изучите основные возможности языка VHDL, такие как печать текста на консоли и три различных оператора цикла.
Мы рассмотрим некоторые особенности, которые возникают из-за того, что VHDL — это язык параллельного программирования, предназначенный для создания цифровой логики. Вы узнаете, как работать с самым важным инструментом, который есть у инженера по цифровой логике, а именно с симулятором VHDL.
Теперь, когда вы начинаете знакомство с языком VHDL, пора глубже погрузиться в некоторые концепции, уникальные для языков описания оборудования.
Вы узнаете, как бит, значение, которое может передаваться по одному проводу, может быть представлено в VHDL.Вы также увидите, что хотя VHDL имеет переменные, как и любой другой язык программирования, сигналы на самом деле являются предпочтительной единицей хранения в цифровом дизайне.
После этого раздела вы узнаете разницу между сигналом и переменной. Вы также затронули тему межпроцессного взаимодействия с помощью сигналов и списков чувствительности.
В части 3 вы узнаете, как целые числа представлены в VHDL. Вы увидите, как детальный контроль над битами в VHDL может быть использован в ваших интересах.Мы исследуем некоторые подводные камни работы с числами на битовом уровне.
Вы узнаете, как создать модуль на VHDL. Вы также узнаете о некоторых основных строительных блоках цифрового дизайна; мультиплексор и триггер.
После этого раздела вы узнаете разницу между параллельным процессом и синхронизированным процессом в VHDL.
В последнем разделе этого курса 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:
Практическое руководство для абсолютных новичков
Вы знакомы с программированием, но плохо знакомы с VHDL?
Вам нужно краткое введение в этот незнакомый предмет?
В вашем графике нет времени на учебу?
Изучите основы разработки FPGA с использованием VHDL за несколько вечеров! Этот курс предназначен для ИТ-специалистов и студентов, которым требуется быстрое изучение предмета.С помощью этого курса и недорогой платы для разработки Lattice iCEstick вы сможете разрабатывать реальное оборудование в считанные часы.
Щелкните здесь, чтобы узнать больше и зарегистрироваться:
FPGA и VHDL Fast-Track: практическое руководство для абсолютных новичков
Вы можете задать вопросы об этих обучающих материалах в нашей частной группе Facebook. Щелкните изображение ниже, чтобы присоединиться к группе Facebook! Не забудьте ответить на два простых вопроса, когда просите присоединиться.
Вот несколько других блогов и сайтов с обучающими материалами VHDL в Интернете:
.После выполнения этого руководства вы сможете писать коды 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 часов при хорошем соединении. Лучше всего начать загрузку, чтобы она была готова к тому времени, когда вы встанете.
Так что вздремните и вернитесь, как только скачаете его.
Министерство обороны потребовало, чтобы синтаксис был основан на 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
.