RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Апрель 2024
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930     

Календарь Календарь

Последние темы
» Вити больше нет!
автор bug19 Пн Фев 20 2023, 19:54

» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47

» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05

» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03

» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02

» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52

» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36

» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37

» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33

» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00

» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58

» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17

» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07

» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08

» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09

» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02

» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47

» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11

» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33

» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38

» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12

» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01

» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22

» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08

» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08

Самые активные пользователи за месяц
Нет пользователей

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Ср Сен 24 2014, 13:28

1
Решил, что пора изучать VHDL и освоить ПЛИС, например фирмы Xilinx.
В этой теме, будет отображаться весь процесс изучения, не знаю чем он закончится, так как предыдущая моя попытка, ничем положительным так и не закончилась. Поэтому буду тут выкладывать и теорию, своего рода конспект нескольких источников. Так как уже убедился, что иногда в одной книге, понятно и доходчиво раскрывается какой нибудь аспект, но совершенно непонятно, другой. А некоторые вещи понятны становятся только прочитав какую нибудь статью из журнала.
Поэтому, можно считать, что эта тема своего рода, мой рабочий конспект, где я постараюсь собрать побольше информации, законспектировать её, в понятной для новичка форме, то есть меня и может ещё кому нибудь пригодится, и попытаться перейти к практике, если теория станет более или менее понятной.

Итак в путь, больше первый пост засирать не буду, он может ещё пригодиться...

_________________________________________________________________________

Обзор современных ПЛИС и САПР. 2006г.

Особенности архитектуры нового поколения ПЛИС с архитектурой
FPGA фирмы Xilinx, Artix-7, Kintex-7, Virtex-7. 2010г.

__________________________________________________

Практический курс сквозного проектирования цифровых
устройств на основе ПЛИС фирмы Xilinx

Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ISE Design Suite. Часть 1-11, 17-27.

Первое знакомство с ПЛИС Xilinx c сайта radiokot.ru

Разработка устройств питания для ПЛИС фирмы Xilinx на основе интегральных стабилизаторов напряжения, выпускаемых компанией National Semiconductor. Часть 1 - 3

Новый инструментальный комплект от компании Avnet на основе ПЛИС FPGA семейства Spartan-3A фирмы Xilinx

Новый инструментальный комплект Spartan-3A Starter Kit для практического освоения методов проектирования и отладки цифровых устройств с аппаратной и программной реализацией операций, реализуемых на основе ПЛИС семейств FPGA фирмы Xilinx

Новые возможности САПР Xilinx версии 12.3

Создание проекта в среде Xilinx PlanAhead 12.4 входящего в состав Xilinx ISE Design Suite 12.4

Инструменты автоматизации процессов моделирования и конфигурирования ПЛИС в САПР ISE
__________________________________________________

Система команд микропроцессорных ядер PicoBlaze
проектируемых на ПЛИС Spartan-II Spartan-IIE Virtex Virtex-E

Пример сквоздного проектирования 8-разрядной микропроцессорной системы на базе ядра семейства PicoBlaze, реализуемой на основе ПЛИС фирмы Xilinx. Часть 1-3

Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы XILINX.
В. Ю. Зотов. 2006г.

MicroBlaze - семейство 32-разрядных микропроцессорных ядер,
реализуемых на основе ПЛИС фирмы Xilinx

Система команд микропроцессорного ядра MicroBlaze

Создание проекта микропроцессорной системы на основе ядра MicroBlaze реализуемой в ПЛИС семейств FPGA фиры Xilinx

Построение систем на кристалле с подчинённым процессорным ядром MicroBlaze на ПЛИС фирмы Xilinx


Последний раз редактировалось: Viktor2312 (Чт Ноя 05 2015, 01:24), всего редактировалось 10 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Полезная информация.

Сообщение  Viktor2312 Ср Сен 24 2014, 13:36

2
Для начала выложу немного полезной информации, которая возможно в будущем пригодится нам для изучения:

_______________________________________________________
Справочная система по VHDL,  в формате html Скачать
_______________________________________________________
Ключевые слова VHDL, в формате html Скачать
_______________________________________________________
Авдеев Н. А., Бибило П. Н. Пакет NUMERIC_STD языка VHDL.
Информационные технологии. - 2005. - №9
Скачать
_______________________________________________________
Моделирование цифровых и микропроцессорных систем.
Язык VHDL. Дьяков.
Скачать
_______________________________________________________
Авдеев Н. А. Бибило П. Н. Реализация VHDL-функций пакета
NUMERIC_STD логическими схемами
. // Информационные
технологии. - 2006г. - №1. - стр. 9 - 18.
Скачать
_______________________________________________________
В. Стешенко. Языки описания аппаратуры: синтезируемое
подмножество VHDL
.
Скачать
_______________________________________________________


Последний раз редактировалось: Viktor2312 (Пт Окт 03 2014, 19:22), всего редактировалось 1 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Ср Сен 24 2014, 14:01

3
А также, немного литературы, из которой мы также будем черпать полезную информацию:

Основы языка VHDL. Бибило П. Н. (2002г.) Скачать

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6c13_beadc643_orig

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


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

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6cfb_bb7a4160_orig

В книге рассматривается язык VHDL - стандартизованный язык высокого уровня для описания аппаратуры - и его применение для проектирования систем на СБИС.
Подробно, в полном объеме приводится язык VHDL, базовые конструкции моделей на этом языке, методы его применения, особенности VHDL для моделирования и для синтеза цифровых систем.
Рассматриваются основы проектирования систем на СБИС, уровни и этапы проектирования СБИС и Систем-на-кристалле, использование VHDL в процессе проектирования цифровых систем.
Изложение иллюстрируется примерами моделей устройств на языке VHDL. Рассматривается шина АВМА АНВ, широко применяемая в Системах-на-кристалле, оцениваются ее характеристики. Приводится описание практической работы в популярных САПР - OrCAD Express и Xilinx Foundation Express - при проектировании на языке VHDL цифровых СБИС и Систем-на-кристалле.


Языки VHDL и VERILOG в проектировании цифровой аппаратуры. Поляков (2003г.)
Скачать pdf
Скачать djvu

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6d04_72518a1c_orig

Книга посвящена проектированию цифровых систем с помощью высокоуровневых языков описания аппаратуры (Hardware Description Language - HDL) - Verilog и VHDL. Эти языки являются международным стандартом и используются как системами анализа (моделирование), так и системами синтеза цифровой аппаратуры. С единых позиций изложены основные концепции этих языков. Даны рекомендации по стилю кодирования, синтезабельности и верификации HDL-описаний проектируемых систем.
Приведены примеры синтезабельных описаний узлов и устройств и организации функциональных тестов.
В приложение вынесены справочные данные по языкам VHDL и Verilog.
Автор предполагает, что читатель знаком с основами программирования и основами проектирования цифровых устройств.


VHDL для проектирования вычислительных устройств. Сергиенко А. М. (2003г.)
Скачать pdf
Скачать djvu

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6d1c_d7f68b1f_orig

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


Проектирование цифровых устройств на основе ПЛИС фирмы XILINX в САПР WebPACK ISE. Зотов В.Ю. (2003г.)
Скачать pdf
Скачать djvu

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6d2b_b178b2c_orig

Книга предназначена для самостоятельного изучения методики проектирования специализированных цифровых устройств на базе программируемых логических интегральных схем (ПЛИС) фирмы XilinxR, выполняемого в рамках свободно распространяемого пакета WebPACKT ISET версии 5.1. Применение САПР WebPACK ISE позволяет реализовать полный цикл сквозного проектирования устройства на рабочем столе разработчика, включая программирование кристалла, без материальных затрат на программное обеспечение. Рассмотрен процесс создания исходного описания разрабатываемого устройства в схемотехнической и алгоритмической форме. Краткий справочник по унифицированным библиотекам схемотехнического редактора, включенный в виде приложения, позволяет разработчикам использовать наиболее привычный способ представления проекта. Обзор шаблонов VHDL облегчает изучение этого языка описания аппаратуры и ускоряет создание законченных VHDL-описаний проектов. Приведено описание системы HDL-моделирования ModelSimT корпорации Model TechnologyR (одного из подразделений компании MentorGraphicsR) и ее применения в процессе функциональной и временной верификации разрабатываемого устройства.
Материал, изложенный в книге, также может быть использован в процессе самостоятельного освоения системы проектирования FoundationT ISE фирмы Xilinx.
Для инженерно-технических работников, может быть полезна студентам и аспирантам, специализирующимся в области разработки цифровых систем.


Разработка цифровых устройств на основе ПЛИС Xilinx с применением языка VHDL.
И. Е. Тарасов (2005г.) Скачать - да да, это теперь не ссылка, скачать нельзя, скажите спасибо государству и Яндексу, файл они заблокировали, так что ищите в другом месте и так скорее всего будет со всем. Но...
Но информация должна быть доступна всем, а посему:
Скачать (10,8 Мб)
Скачать (10,8 Мб)
Скачать (10,8 Мб)
Скачать (10,8 Мб)
Скачать (10,8 Мб)
Скачать (10,8 Мб)
Скачать (10,8 Мб)
Скачать (10,8 Мб)

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6dd5_4564f3aa_orig

Содержит начальные сведения о ПЛИС фирмы Xilinx, маршрутах проектирования цифровых устройств на базе ПЛИС, и языке описания аппаратуры VHDL. Рассмотрены технические характеристики современных ПЛИС Xilinx и возможности САПР, предназначенных для их программирования. Даются начальные сведения о языке описания аппаратуры VHDL, ориентированные на его использование в САПР фирмы Xilinx. Книга ориентирована на читателя, не имеющего опыт работы с ПЛИС.
Для инженерно-технических работников, студентов и аспирантов, занимающихся проектированием цифровых устройств.


VHDL: Эффективное использование при проектировании цифровых систем. Бибило П. Н. (2006г.) Скачать

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6dd8_c030d475_orig

Рассматриваются наиболее распространенные на практике пакеты STD_LOGIC_1164, NUMERIC_STD, EXEMPLAR_1164, TEXTIO, STD_LOGIC_TEXTIO, VITAL языка VHDL и их использование при проектировании цифровых систем на элементной базе сверхбольших интегральных схем, в том числе базовых матричных кристаллов. Приведены примеры и маршруты проектирования с использованием системы ModelSim моделирования и системы LeonardoSpectrum синтеза логических схем по алгоритмическим VHDL-описаниям цифровых систем. Предназначена для специалистов, занимающихся проектированием цифровых систем и знакомых с основными элементами языка VHDL, может быть полезна студентам и аспирантам, изучающим язык VHDL и его применение в системах автоматизированного проектирования.


Основы языка VHDL. 3-е издание. Бибило П. Н. (2007г.) Скачать

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6e24_68c1ed79_orig

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


Последний раз редактировалось: Viktor2312 (Вт Июл 12 2016, 19:46), всего редактировалось 10 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Ср Сен 24 2014, 14:04

4
И ещё немного литературы:

VHDL'92. Новые свойства языка описания аппаратуры. Берже Ж.-М., Фонкуа А., Мажино С., Руйар Ж. (1995г.) Скачать

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6e26_c27af114_orig

Книга представляет новый стандарт языка спецификации проектов аппаратуры на базе сверхбольших высокоскоростных интегральных схем — VHDL'92. Проанализировано большинство слабых мест и неоднозначностей VHDL'87. Показаны изменения, которые либо устранили, либо дали возможность обойти эти недостатки при сохранении максимальной преемственности. Классифицируются и объясняются новые свойства и возможности языка VHDL.
Для разработчиков цифровых систем, СБИС и средств автоматизации их проектирования, особенно для тех, кто работает над совместными проектами с зарубежными партнерами или собирается представить свои разработки на мировом рынке. Может быть полезна менеджерам в области проектирования изделий радиоэлектроники, а также аспирантам и студентам старших курсов соответствующих специальностей.


Проектирование систем на микросхемах программируемой логики. Грушвицкий Р., Мурсаев А., Угрюмов Е. (2002г.) Скачать

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6e30_af517e21_orig

Пособие посвящено проектированию систем на интегральных схемах с программируемой структурой (ИСПС) и включает материалы учебных дисциплин, читаемых авторами. Рассмотрены методика создания проектов на ИСПС, включая тестирование и верификацию c ориентацией на применение современных систем автоматического проектирования (САПР); архитектура и характеристики ИСПС; концепции языкового описания аппаратуры. Приведен сравнительный анализ современных ИСПС. Изложены основные концепции языкового описания цифровых устройств на системном уровне (язык SystemC), блочном уровне (языки VHDL, VerilogHDL), а также особенности описания смешанных (цифровых и аналоговых) систем (VHDL-AMS). Пособие содержит примеры разработки проектов. Практически все разделы включают новую информацию.


Проектирование на ПЛИС. Курс молодого бойца. Клайв Максфилд (2007г.) Скачать

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6e38_77f91778_orig

Эта книга является не только пособием по проектированию устройств на основе ПЛИС (FPGA), но и содержит поистине энциклопедические сведения. Кроме архитектурных особенностей последних поколений микросхем ПЛИС, здесь рассматриваются различные методы и средства проектирования. Проводится обзор и анализ схемотехнических подходов к проектированию (которые все еще находят применение), HDL-моделирования и логического синтеза, а так же современных технологий проектирования, основанных на использовании языка C/C++. Рассматриваются специализированные вопросы, такие как совместное проектирование программно-аппаратных систем и разработка систем цифровой обработки сигналов (ЦОС). Обсуждаются и технические новинки, например программируемые пользователем массивы узлов (FPNA).
Написанная в непринужденном, увлекательном стиле, книга будет хорошим пособием и для начинающих, и для опытных инженеров, разрабатывающих устройства на основе ПЛИС. Книга послужит весьма ценным источником информации и для специалистов, разрабатывающих устройства на основе заказных микросхем и переходящих на использование ПЛИС. А также, несомненно, привлечет внимание широкого круга читателей, в том числе технических аналитиков, студентов и продавцов.


Схемотехника и средства проектирования цифровых устройств. В. Амосов (2012г.)
Скачать Part1
Скачать Part2
Скачать Part3

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e6e66_2314401c_orig

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


Последний раз редактировалось: Viktor2312 (Пт Окт 03 2014, 19:29), всего редактировалось 1 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Ср Сен 24 2014, 15:03

5
Начинать наше изучение мы будем с освоения самого языка описания аппаратуры VHDL. Так как это, основа основ. И без его знания, нет смысла покупать всевозможные платы, так называемые Starter Kit, сами микросхемы ПЛИС или делать различные соединительные кабели для их программирования, конфигурирования.

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

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


Последний раз редактировалось: Viktor2312 (Пт Окт 03 2014, 19:38), всего редактировалось 1 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Ср Сен 24 2014, 16:05

6
Теория_001.


Лексические элементы и типы данных.


Начнём, с простого, с лексических элементов.
Текст на языке VHDL - это последовательность раздельных лексических элементов. Далее перечислим их и потом детально рассмотрим каждый из них:

* идентификаторы (имена);
* разделители;
* ключевые (зарезервированные) слова;
* литералы (константные значения);
* комментарии.

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

Меду собой смежные лексические элементы разделяются:

* разделителями;
* концами строк;
* знаками форматирования.

Теперь рассмотрим более подробна каждый из лексических элементов.

Идентификаторы.


Идентификаторы употребляются как пользовательские имена и ключевые слова. Идентификаторы используются как имена для объектов, процедур, функций, процессов, объектов конструкции и т.д в VHDL. Они могут иметь любую длину, при условии, что весь идентификатор написан в одной строке программы.
Идентификатор должен начинаться с буквы, это важно, он не должен ни в коем случае начинаться с цифры. Например идентификатор 5AB неправильный, так как начинается с цифры. Так же в идентификаторе кроме букв и цифр может употребляться символ подчёркивания _ , но не допускается идущих подряд два символа подчёркивания, а также идентификатор не должен начинаться или заканчиваться символом подчёркивания.
И важно: В VHDL коде нет различия между прописными и строчными буквами. Это значит, что идентификаторы SET_TOOL1 и set_tool1 идентичны и являются одним и тем же идентификатором.
Так же в именах идентификаторов нельзя использовать ключевые (зарезервированные) слова, например, next, to, case, disconnect и другие, список которых будет представлен позже. В зависимости от стандарта, этот список пополнялся новыми ключевыми словами, поэтому необходимо иметь полный список ключевых слов в соответствии с последним стандартом.
Часто встречающаяся ошибка в идентификаторах, при подготовке текстов программ, перепутываются внешне одинаковые символы латиницы и кириллицы и близкие по изображению символы цифр и букв, поэтому за этим необходимо строго следить.
Вот примеры правильных идентификаторов:

Sim_out
DityS
Count6_SUM


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

sIM_OUT или SIM_OUT или sim_out
ditys или DITYS или dITYs
Count6_sum или COUNT6_SUM

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

Так же существуют расширенные имена. Они могут включать любые символы кода ASCII. Расширенные имена ограничиваются символом \ наклонная черта влево.
И позволяют расширить диапазон применяемых имён.

Пример:

\d+dot_xo\

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

Пример:

VS.DD.E1

Важные замечания:
* Идентификатор должен начаться с символа (a .. z).
* Не позволяются никакие пробелы в идентификаторах.
* Идентификаторы не чувствительны к регистру, то есть верхние и нижние - символы регистра считаются идентичными.
* дентификаторы состоят из латинских символов (a .. z), символов подчеркивания (_) и цифр (0 .. 9). Не позволяется использовать какие-либо специальные символы, включая не латинские (специфические для языка) символы.


Разделители.


Разделители бывают обычные и составные. Обычные разделители, это один из специальных символов:

& ( ) * + ? - . / : ; < = > |

Составной разделитель, это композиция двух смежных специальных символов:

=> ** := /= >= <= <>

Пример. VHDL-предложение:

A <= B and C;

Данный пример имеет шесть лексических элементов A, <=, B, and, C, ;
Два из шести лексических элементов являются разделителями:
<= (составной разделитель - оператор назначения сигнала)
;
В качестве разделителей в данном примере используются пробелы, однако нет необходимости иметь разделитель между оператором ; и лексическим элементом С.


Последний раз редактировалось: Viktor2312 (Пт Окт 03 2014, 19:48), всего редактировалось 2 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Чт Сен 25 2014, 00:05

7
Теория_002.

Ключевые (зарезервированные) слова.

Как и многие другие языки, VHDL имеет ключевые (зарезервированные) специальные слова.

Список зарезервированных (ключевых) слов.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e748b_11458c37_L

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e748c_508efde5_L

Литералы.

Классификация литералов (константных числовых значений) приведена на рисунке:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e74aa_8fbe0663_L

Как видно из рисунка, абстрактные (Abstract) литералы состоят из десятичного (Decimal) и базового (Based), поэтому сначала рассмотрим десятичные литералы.
Десятичный литерал может быть целым, вещественным или вещественным с экспонентой.

Например:

Целые десятичные литералы: 35, 0, 2Е7, 4е5, 487_001.
Вещественные десятичные литералы: 34.0, 0.0, 0.398, 3.141_592_6.
Вещественные десятичные литералы с экспонентой: 2.78Е-12, 2.0Е+4, 4.078Е+25.

Знак экспоненты Е может быть строчным или прописным. Подчёркивание в десятичном литерале не является значащим. Экспонента для целого литерала не должна иметь знак минус.

Базовый литерал указывает на систему счисления: от двоичной до шестнадцатеричной:

Двоичная: 2#1111_1100# - число 252 в двоичной системе счисления

Шестнадцатеричная: 16#fc# или 016#0FC#

Десятичная: 10#252#

Семеричная: 7#510#

Число 16#6#E1 означает 6*16**1 - это число 96 в десятичной системе счисления 96=6х161. Символ * - знак умножения, ** - возведение в степень. Число 2Е-3 не является целым, 3е4 - это число 3х104.


Последний раз редактировалось: Viktor2312 (Пн Окт 06 2014, 11:33), всего редактировалось 1 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Пн Окт 06 2014, 11:32

8
Теория_003.

Основные понятия.

Теперь немного отвлечёмся от литералов, вернёмся к ним позже и почитаем основные понятия.

Данные основные понятия взяты из одной из статей на просторе интернета, но думаю пригодятся, для общего развития.

Интерфейс — описывает наше с вами устройство, как черный ящик с входами и выходами, т. е. главная его задача показать какие входы и выходы есть у нашего устройства для связи с внешним миром.

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

   * поведенческим стилем(описывается алгоритм работы устройства);
   * структурным стилем(описывается структура устройства).

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

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

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

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

Атрибуты — это значения(характеристики), связанные с какими-либо объектами языка. Например типами, сигналами, переменными и т. д.

Типы — множества значений с какими то общими характеристиками. Характеризуются типы набором значений, которые могут принимать объекты (сигнал, переменные) данного типа, а так же набором операций которое могут выполнятся с объектами данного типа.

Библиотеки и пакеты — пакеты представляют собой структуры в которых хранятся описания различных функций, процедур, компонентов, типов, констант и т. д, все пакеты собираются в библиотеки, которые в последствии подключаются к проектам.


Последний раз редактировалось: Viktor2312 (Вс Ноя 01 2015, 03:06), всего редактировалось 1 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Ср Окт 08 2014, 15:14

9
Теория_004.

Базовые конструкции моделей на языке VHDL.

Сигналы.

Сигналы являются отдельным классом объектов в VHDL, отличным от классов переменных и констант, достаточно традиционных для языков высокого уровня. Понятие сигнала не имеет аналогов в языках программирования типа FORTRAN, C, PASCAL и др.
Цифровые системы работают во времени, преобразуя и передавая сигналы. Естественно, что понятие сигнала является базовым в языке описания аппаратуры - языке VHDL. Сигналы являются абстракцией, представлением в модели на VHDL состояния проводников в структуре цифрового устройства.

О понятии время.

Рассуждая о языках и системах моделирования, мы имеем дело с несколькими понятиями, которые соотносятся с термином "время":

* физическое время моделируемого устройства. Оно непрерывно, в нём протекают различные физические процессы, изменяются электрические сигналы в цифровых устройствах, наблюдаемые на логическом уровне как изменения логических состояний;

* модельное время. Это время в модели устройства, оно является обобщённым представлением, на уровне модели устройства, физического времени, в котором работает моделируемое устройство. Модельное время дискретно;

* время моделирования. Это время выполнения программы на VHDL. В семантике программы на VHDL впрямую не наблюдается, однако, проявляется через упорядочение операторов программы по времени выполнения. Не имея для программиста на VHDL числовых значений, время работы системы моделирования позволяет определить отношение порядка над событиями - выполнением операторов программы в VHDL. Для каждой пары исполненных операторов программы определены отношения "выполнен раньше"/"выполнен позже".

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

Сигналы в цифровых устройствах. Каждое изменение состояния элемента схемы, его входов, является воздействием, которое может привести к изменению некоторого сигнала. Например, подача '1' на вход вентиля может привести к изменению сигнала на его выходе, но не мгновенно, а через интервал времени, определяемый задержкой вентиля (tв, скажем, 5нс). Так что, подавая '1' на вход вентиля в момент t2, мы как бы "запланировали" изменение сигнала на его выходе на время t3=t2+tв.
А что будет на выходе вентиля в момент t1=t2+tв-2нс? Это определяется тем, что было на входах вентиля (т. е. - что было запланировано, но ещё не успело выполниться, находится в процессе выполнения). Таким образом, в момент t2 в схеме идёт множество процессов которые "запланировали" значения сигналов на каждый момент времени, от момента t2 на некоторый промежуток времени вперёд. В текущем состоянии физического устройства как бы заложена временная диаграмма рассматриваемого сигнала на некоторый период времени вперёд.
В реальном цифровом устройстве, которое моделируется программой на VHDL, воздействий на сигнал, приводящих к его изменению, может быть несколько. Если мы посмотрим с этой точки зрения на сигнал и на устройство, то увидим, что в текущий момент физического времени в схеме одновременно идёт множество процессов, в разных её элементах и на связях между ними. Процессы в устройстве, которые приведут к изменению сигнала, уже идут, но в изменённом состоянии сигнала они проявятся через некоторые промежутки времени (возможно, разные процессы - через разные промежутки).

Сигналы в моделях устройств на VHDL. Сигналы, как и переменные, имеют некоторые значения, которые им присваиваются. Однако если переменную характеризует только значение, то сигнал характеризуется и моментом модельного времени, в который этот сигнал имеет данное значение. Можно сказать, что состояние сигнала - это пара: момент модельного времени/значение, которое сигнал имеет в данный момент.
Именно ассоциация сигнала с моментами модельного времени является его основным отличием от переменных. Сигнал существует в модельном времени, в каждый момент которого он может иметь своё значение, а переменная всегда имеет одно текущее значение. Таким образом, сигнал - это не тип переменной, это совсем другой, принципиально отличный класс программных объектов. И разница здесь значительно существенней, чем между переменной и константой.
По ходу модельного времени сигнал может менять своё значение. Последовательность значений сигнала в привязке к моментам модельного времени в течение некоторого промежутка времени формирует временную диаграмму сигнала (waveform).
В модели устройства на языке VHDL воздействия, изменяющие состояние сигнала, принимают форму присваивания значения сигналу. Проявляется воздействие в изменении значения сигнала, как правило, не в тот момент модельного времени, когда происходит это воздействие, а в другой, отстоящий от текущего на некоторый промежуток времени (задержку) по оси модельного времени.
Как и в физическом устройстве, в его модели на языке VHDL параллельно идёт множество процессов, определяющих значения сигналов в каждый момент модельного времени. Однако из прагматических соображений, чтобы сократить время прогона модели, система моделирует работу компонентов схемы не во всех моментах модельного времени, а только в тех, на которые запланированы действительные изменения каких-либо сигналов. Между такими моментами модельного времени сигналы не меняют своих значений, что мы и можем наблюдать при визуализации результатов моделирования на временных диаграммах.

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

Транзакция. Когда мы осмысливаем понятие переменных в языках программирования, обычно представляем себе определённые аспекты их реализации после трансляции, мыслим о них как о выделенных под переменные участках памяти. Также и при обсуждении сигналов и механизмов языка VHDL полезно представлять, хотя бы в общем виде, как сигналы реализуются в системах моделирования, выполняющих программы на VHDL.
В реализации сигналов, изменяемых в модельном времени, основным становится планирование в этом времени изменений сигналов. При выполнении операторов присваивания значения сигналу, системой моделирования формируется специальная структура данных, пара: значение сигнала/момент модельного времени, когда сигнал примет это значение. Такая пара в описаниях языка VHDL называется транзакцией (transaction).

Транзакция - это внутренняя инструкция системы моделирования по изменению указанного сигнала в заданный момент модельного времени.

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

Источник сигнала (драйвер). Ещё одним понятием, связанным с сигналом и часто используемым в описании VHDL, является понятие драйвера (driver) - источника сигнала.
В реальных цифровых устройствах выход элемента схемы формирует сигнал на проводнике, подсоединённом к этому выходу, он является источником сигнала в этой точке схемы. Каждый выход каждого элемента схемы - источник для одного сигнала. Множество элементов схемы функционируют параллельно в физическом времени, причём элемент, имеющий несколько выходов, формирует сигналы на них также параллельно во времени. Когда несколько выходов элементов схемы подсоединяются проводниками в одну точку схемы, то получается, что для этой точки схемы имеется несколько источников сигнала. Результирующий сигнал в этой точке схемы формируется как результат выполнения (на физическом уровне) некоторых преобразований над сигналами, сформированными всеми источниками. Вид выполняемого преобразования зависит от элементной базы, используемой в устройстве.
Работа с сигналами в программе на VHDL представлены специальными операторами присваивания значений сигналам. Один источник сигнала и в реальном устройстве, и программе на VHDL, формирует один сигнал.
Однако в языке VHDL источник сигнала может не только определять значение сигнала в какой-то один момент модельного времени, но и задавать целую последовательность значений сигнала в разные моменты модельного времени, формировать некоторую планируемую временную диаграмму сигнала (projected output waveform).
В реализации языка VHDL запланированная источником временная диаграмма представляется упорядоченным (по моментам модельного времени) списком транзакций, фиксирующих моменты изменения сигнала на временной диаграмме. Часто в описании VHDL именно этот список транзакций, связанный с одним источником сигнала, называют термином драйвер (driver).
Поскольку каждый источник сигнала в реальной схеме - выход некоторого элемента, формирует свой сигнал параллельно во времени с другими источниками сигналов, то и в модели устройства на VHDL источники сигналов работают параллельно в модельном времени.
Синтаксически, в структуре программы на VHDL, параллельно работающий источник сигнала может быть оформлен по-разному. Это может быть отдельный параллельный оператор присваивания значения сигналу среди операторов тела процесса (параллельная конструкция программы на VHDL). Но в любом варианте, осмысливая соответствующие программные конструкции и фрагменты программ на VHDL, представляющие источники сигналов, мы должны стараться соотносить их с реальной работой схем и формируемых ими сигналов.

Конец Теория_004.

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Пн Окт 13 2014, 13:58

10
Теория_005.

Структура описания объекта моделирования.

Описание объектов моделирования состоит из:

* декларативной части;

* описания архитектуры.

В декларативной части описываются связи объекта с внешним миром - входы и выходы объекта. Это, прежде всего, спецификация интерфейса описываемого объекта.
Понятие entity определяется как "интерфейс объекта проекта". В entity описывается интерфейс между объектом проекта и окружением, в котором употребляется объект. "Внутренность" объекта в entity не описывается и может быть уподоблена "чёрному ящику".
В описании архитектуры определяется функция специфицируемого объекта, осуществляемого им формирования выходных сигналов на основании входных сигналов и внутреннего состояния объекта.
Термин "архитектура" безотносительно к языку VHDL может быть определён как распределение функций, реализуемых системой, по отдельным её уровням и точное определение границ между этими уровнями.
К термину "архитектура" близок термин "структура", понимаемый как совокупность элементов системы и связей между ними.
Архитектура - это структура системы на функциональном уровне её описания.
Архитектурное тело (architecture) определяет тело объекта, т. е. раскрывает внутренность "чёрного ящика". В архитектурном теле описываются функции (поведение) либо структура объекта проекта.
В entity (в разделе деклараций) наряду с декларацией портов могут быть декларированы параметры. Для декларации таких параметров употребляется ключевое слово generic (настраиваемый). С помощью generic могут передаваться такие параметры, как ширина (разрядность) шины, число входных либо выходных полюсов, задержки элементов и т. д.

Декларативная часть.

Полный формат декларативной части описания объекта моделирования имеет следующий синтаксис:

Код:

entity entity_name is
      [generic (generic_interface_list);]
      [port (port_interface_list);]
[begin {concurrent_assertion_statement |
      passive_concurrent_procedure_call_statement |
      passive_process_statement}]
      {entity_declarative_item}
end [entity] [entity_name];

После ключевого слова entity указывается некоторый идентификатор entity_name - имя объекта моделирования. Поскольку оно используется для идентификации объекта в рамках проекта, имя объекта моделирования должно быть уникальным.
Секция generic предназначено для описания констант, определяющих изменяемые параметры объекта моделирования. Например, таким образом могут определяться времена задержек, размер внутренних буферов и др. Секция generic не является обязательной.
В терминах языка VHDL входы и выходы проектируемой схемы называют портами. Порты - это специальные программные объекты, являющиеся сигналами, а не переменными. Подобно переменным в традиционных языках программирования, в программе на VHDL порты должны быть определены (декларированы) с указанием типа соответствующих им сигналов. Для определения входных и выходных портов используется секция port в декларативной части спецификации объекта моделирования.
После ключевого слова port в круглых скобках располагается список описаний сигналов - port_interface_list. Он имеет следующий синтаксис:

{identifier, {...} : [mode] subtype_indication [:= expression]}, {...}

Описание каждого сигнала состоит из имени, вида сигнала [mode] и типа сигнала. Вид сигнала может иметь одно из следующих значений:

* in - входной сигнал;

* out - выходной сигнал;

*inout - сигнал являющийся и входным, и выходным.

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

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;


entity ...

В рамках описания, в секции port сигналам могут присваиваться значения по умолчанию. Если для сигнала определено значение по умолчанию, то оно используется внутри объекта моделирования в том случае, если сигналу не будет присвоено другое значение извне. Идентификаторы нескольких сигналов, имеющих одинаковое дальнейшее описание (вид, тип, значение по умолчанию, если оно есть) могут следовать в одном описании, через запятую.
Например:
Код:

entity wers is
      port(a : in std_logic;
           b : in std_logic;
           c: out std_logic);
end entity wers;

Тот же код:

entity wers is
      port(a,b : in std_logic;
           c: out std_logic);
end entity wers;

Секция port так же не является обязательной составляющей декларативной части описания объекта. Объект моделирования может не иметь входов и выходов. Такие объекты, как правило, расположены на верхнем уровне иерархии.
После ключевого слова begin следуют секции параллельно выполняющихся действий (не является обязательной частью описания), которые могут использоваться для проверки правильности функционирования объекта и для документирования процесса функционирования.
Последней располагается секция внутренних деклараций, {entity_declarative_item} описываемого объекта. В этой секции может содержаться декларация констант, переменных, сигналов и типов, являющихся внутренними для данного объекта моделирования, - т. е. доступных только внутри этого объекта.
Завершается описание объекта ключевым словом end, за которым следует слово entity (по стандарту VHDL'93 - обязательно); потом указывается имя описанного объекта (рекомендуется).
Пример, простейшего описания декларативной части объекта моделирования:
Код:

entity aser is
      port(a,b,c : in bit;
           set : out bit);
end entity aser;

В листинге описан объект моделирования с именем aser. Он имеет три входных сигнала - a, b, c имеющих тип bit, и один выходной сигнал set того же типа.

И ещё один простой листинг:
Код:

entity aser1 is
      port(a : in integer;
           b : in integer:=1; -- Значение по умолчанию.
           c : in integer;
           set : out bit);
end entity aser1;

В этом листинге описан объект моделирования с именем aser1. Он имеет три входных сигнала - a, b, c, имеющих тип integer, и один выходной сигнал set типа bit. Одному из трёх его входных сигналов, сигналу b, присваивается значение по умолчанию, равное 1.

Конец Теория_005.


Последний раз редактировалось: Viktor2312 (Вс Апр 26 2015, 10:40), всего редактировалось 2 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Немного полезной информации, для общего развития.

Сообщение  Viktor2312 Вт Окт 21 2014, 16:06

11
Краткая характеристика языка VHDL.

Хотя язык VHDL внешне выглядит так же, как и другие традиционные языки программирования (поскольку имеет литералы, разделители, операторы и т. д.), он обладает некоторыми важными отличительными характеристиками.
* Проекты цифровых устройств, созданные с помощью языка VHDL, имеют, как правило, иерархическую структуру.
* Каждый автономный проектируемый модуль (субблок проектируемого цифрового устройства) имеет:
- строго определённый интерфейс взаимодействия с другими модулями;
- точную спецификацию внутреннего устройства проектируемого модуля, описывающую концепцию и функционирование модуля.
* Спецификации модулей VHDL-проектов могут использовать или математические алгоритмы, описывающие их работу, или описание аппаратурной структуры проектируемого модуля. В соответствии с уровнями абстракций проектов описание модуля может иметь поведенческую или структурную форму.
* Моделирование алгоритма работы проекта основывается на событийном принципе управления.
* VHDL-проект позволяет выполнять моделирование протекания параллельных процессов в электрических схемах, временной анализ сигналов и их параметров.
* VHDL поддерживается инструментальными средствами синтеза и системами автоматического проектирования (САПР), которые могут создавать прямо из описания VHDL-проекта его аппаратную реализацию (связанные между собой структуры логических элементов, содержащихся в СБИС).
* Используя VHDL, можно проектировать, моделировать и синтезировать практически любое цифровое устройство, начиная от простой комбинационной схемы до законченной микропроцессорной системы на СБИС.

Перечисленные выше характеристики языка VHDL как специализированного языка описания цифровых устройств реализуются с помощью следующих языковых средств:
* Библиотеки и пакеты.
* Проекты: интерфейс и архитектура проекта.
* Подпрограммы: функции и процедуры.
* Скалярные типы данных: переменные, числовые, физические.
* Программные элементы данных: константы, переменные, сигналы, порты, идентификаторы.
* Математические операции: логические, отношений, арифметические.
* Программные операции: установка значений сигналов, присвоение значений переменным, реализация связи портов и сигналов.
* Математические выражения: логические, алгебраические, логико-алгебраические.
* Операторы комбинаторной логики: простой установки значения сигнала (ПУЗС), условной установки значения сигнала (УУЗС), селективной установки значения сигнала (СУЗС), оператор process, оператор реализации компонента port map.
* Операторы регистровой логики: оператор process, ПУЗС, оператор условной передачи управления, оператор цикла, оператор выбора.

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

Остановимся особо на некоторых важных отличиях языка VHDL. VHDL по существу является языком параллельного программирования, т. е. в его конструкции существуют операторы, соответствующие логическим вентилям. Эти операторы обрабатываются (т. е. вычисляются) по параллельному принципу. Суть данного принципа состоит в том, что, как только сигнал, содержащийся в описании проектируемого цифрового устройства, изменяет своё значение (говорят, что "происходит событие на сигнале"), все операторы, принимающие участие в его обслуживании, мгновенно запускаются на выполнение и одновременно выдают конечный результат. Поэтому такие операторы называются операторами параллельной обработки (ОПО) (concurence operator). Программа, написанная на VHDL, моделирует физическое поведение системы (как правило, цифровой), сигналы в которой распространяются мгновенно. Такая программа позволяет формировать временную спецификацию (время задержки распространения сигнала на логическом элементе), а также описывать систему как соединение различного рода компонентов или функциональных блоков.

Этапы проектирования с использованием VHDL.

В подавляющем большинстве случаев аппаратная реализация проекта цифрового устройства с использованием языка VHDL протекает в соответствии со следующими этапами:

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

Программирование. Запись VHDL-кода для модулей и их интерфейсов.

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

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

Синтез. Преобразование VHDL-описания в набор примитивов или логических элементов, которые могут быть реализованы с учётом конкретной технологии.

Компоновка, монтаж и разводка. Отображение проекта на карте синтезирующих элементов, содержащихся в микросхеме ПЛИС.

Временной анализ. Получение фактических задержек реализованной в микросхеме ПЛИС цифровой схемы проекта с учётом длины соединений, электрических нагрузок и других известных факторов.

Уровни представления и формы абстракции
цифровых систем.

Цифровая система на языке VHDL может быть представлена на различных уровнях и различными формами абстракции. Цифровая система может быть описана на уровне компонентов (диодов, транзисторов, логических элементов), на уровне архитектуры (структурной схемы, содержащей АЛУ, регистры, мультиплексоры и т. д.), на уровне автономной системы (ПЭВМ, ЭВМ, рабочей станции, сервера и т. д.), а также на уровне приложений (программных модулей, входящих в состав системы более высокого уровня).

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

Первичная и наивысшая форма абстракции - это поведенческая (behavioral) форма, которая позволяет описывать систему в терминах того, что она делает (или как она ведёт себя), а не в терминах её элементов либо компонентов и соединений между ними. Поведенческая форма представления определяет зависимость между входными и выходными сигналами. Поведенческая форма может быть Булевым (Boolean)выражением либо более абстрактным описанием, например, описанием межрегистровых пересылок (registr transfer) или описанием в алгоритмической форме.

В качестве примера представления поведенческой формы рассмотрим простое устройство SIREN, которое выдаёт сигнал предупреждения (Warning) всякий раз, когда автомобильный ключ вставлен в замок зажигания (Ignition_on), если дверь открыта (Door_open) или отстёгнут ремень безопасности (Seatbelt_off). На поведенческом уровне это словесное описание может быть выражено как:

Warning = Ignition_on and (Door_open or Seatbelt_off)

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

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8d47_92ceee7b_M

Как говорилось выше, язык VHDL позволяет описать цифровую систему и в структурной, и в поведенческой форме. При этом поведенческая форма может быть реализована в одном из двух стилей: в виде потока данных (data flow style) и в алгоритмическом виде (algoritmic style).

Представление системы в виде потока данных позволяет описать систему с учётом направления потока перемещаемых через неё данных. Этот стиль характерен для описания поведения системы на уровне межрегистровых пересылок.

При представлении системы в алгоритмическом виде поведение системы описывается с помощью операторов (operator). При этом для описания поведения системы могут использоваться как операторы параллельной обработки (concurrent), которые выполняются параллельно, как только данные поступают на входы, так и последовательные (sequential) операторы, которые выполняются последовательно в порядке их записи. Язык VHDL допускает как параллельную, так и последовательную установку значений сигналов, которые определяют способ и порядок их выполнения.


Последний раз редактировалось: Viktor2312 (Сб Окт 31 2015, 02:47), всего редактировалось 20 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Вт Окт 21 2014, 16:19

12
Теория_006.

Описание архитектуры объекта моделирования.


В языке VHDL под описанием архитектуры понимается описание функционирования специфицируемого объекта. Если декларативная часть описания объекта определяет его внешнее представление, задаёт интерфейсную спецификацию, вводит имя объекта и вводы/выводы ("порты", в терминах VHDL), то описание архитектуры задаёт его содержательное наполнение, спецификацию функциональной и временной работы описываемого объекта.
Отметим, что используемый в VHDL термин "архитектура" не вполне соответствует общепринятому в вычислительной технике смыслу (описание ЭВМ для программирующего на уровне машинных кодов или их символьного представления, на ASSEMBLER). Архитектурное описание на VHDL может, конечно, в конкретной программе получить и такое смысловое наполнение. Мы можем, например, в архитектурной части описания объекта моделирования - процессора, действительно дать такое описание, какое принято давать при описании архитектуры (в общепринятом смысле). Но в архитектурном описании на языке VHDL может быть, с одной стороны, дана и детальная функциональная или принципиальная схема процессора, а с другой стороны, наоборот, описание может идти на более абстрактном уровне, и программно доступные элементы архитектуры процессора не найдут отражения в архитектурном описании на языке VHDL.

Описывать архитектуру объекта на языке VHDL можно следующими способами:

1. Описать поведение объекта, преобразование информации и его внутреннего состояния, формирование выходных сигналов при поступлении входных, задать алгоритмическое описание поведения специфицируемого объекта. Внутренняя структура описываемого объекта при этом не специфицируется. Такое описание называется поведенческим описанием архитектуры объекта.

2. Описать структуру объекта, как состоящего из некоторых других объектов, указывая их перечень и связи между ними. Такое описание называется структурным описанием архитектуры объекта. Поведение объекта, преобразование информации и формирование выходных сигналов при поступлении входных, определяется здесь составом и связями объектов, формирующих заданную структуру. Сами объекты-компоненты описываются отдельно, с использованием структурного или поведенческого описания и т. д. В конечном итоге, на каком-то уровне вложенности таких описаний мы доходим либо до предопределённых компонентов, либо останавливаемся на алгоритмическом, поведенческом описании объекта-компонента.

3. Допускается и смешанное структурно-поведенческое описание, являющееся комбинацией первых двух видов описаний. Описание архитектуры объекта моделирования имеет следующий синтаксис:

Код:

architecture identifier of entity_name is
      {block_declarative_item}
begin
      {concurrent_statements}
end [architecture] [identifier];

Спецификатор entity_name позволяет связать декларативную и архитектурную части описания объекта моделирования. После ключевого слова architecture указывается уникальный идентификатор identifier данной архитектуры.
После ключевого слова begin следуют параллельные операторы, задающие в алгоритмическом виде функционирование описываемой архитектуры объекта.
Завершается описание архитектуры объекта ключевым словом end, за которым следует слово architecture (по стандарту VHDL'93); потом указывается идентификатор описанной архитектуры объекта (рекомендуется).
Объект моделирования может иметь несколько различных видов архитектурного описания, однако одновременно в модели может использоваться только один из них. Выбор конкретного вида архитектурного описания осуществляется с использованием конфигурационной спецификации.

Конец Теория_006.

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Вт Окт 21 2014, 16:21

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

Начал собирать. На фото видно корпус, который я буду применять. Решил не лепить внутри разъёма, а сделать нормально на макетной платке, МГТФ -ом соединю. Будет с одной стороны кабель с разъёмом LPT на конце, слева выходить, а справа шлейф 10 см, с разъёмом 10 контактным, ещё найти нужно его пока нет. Процесс потихоньку идёт...

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e8c35_6a27bc7_L
BB_MV_001 (фото кликабельны, да смешное какое слово, ну вы поняли...)

И вот собственно что получилось в сборе:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e905f_560496b0_L
BB_MV_002

Светодиодик питания горит, при подаче питания, ну а куда ему деться. Остальное ещё не проверял, в Quartus II подключал, пишет как вроде ОК, но нужно ещё разбираться, что да как. Работать думаю будет, так как схема простейшая, и там сложно, что-то ни так собрать. В общим один экземпляр программатора для ПЛИС есть ByteBlasterMV, пора думать о сборке следующего...

Немного приукрасил переднюю панель:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e9325_795fb755_L
BB_MV_003

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Пн Окт 27 2014, 22:05

14
А вот схема ещё одного кабеля, для программирования ПЛИС Xilinx (Parallel Download Cable III), немного подправил схему, добавил значок соединения выводов (точку) выводы 4, 10,13 микросхемы U1 соединены вместе, так как рисунок взят из статьи, в оригинальной документации XTP029 этой опечатки нет:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e933a_90fe4d12_orig
Parallel_Download_Cable_III

Ещё одна схема кабеля, более предпочтительна по сравнению с предыдущей, но лучше иметь оба кабеля.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e933b_be24a54c_L
Digilent JTAG3 Download/Debug Cable

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Сб Ноя 08 2014, 10:32

15
Теория_007

7. Языки описания дискретных устройств.

7.1. Общие положения.

7.1.1. HDL-программа как модель проектируемого устройства.


Языковое описание устройства - это текст, сохраняемый в некотором файле или нескольких файлах, которые в совокупности составляют представление разработчика о проекте и используются на всех последующих этапах проектирования, в том числе при синтезе устройства и его моделировании. Тексты описаний в большинстве языков проектирования дискретных устройств по составу синтаксических конструкций и по интерпретации результатов их исполнения (физического или модельного) очень схожи с традиционными языками программирования. Поэтому часто такое текстовое описание называют программой на языке проектирования, или, кратко, HDL-программой, а конструкции, описывающие способ формирования результатов, - операторами.
HDL-программа может рассматриваться как знаковая модель дискретного устройства. Знаковыми моделями называют способы представления реальных или проектируемых объектов, которые не имеют физического или геометрического подобия с объектами моделирования, а отражают лишь существенные свойства объектов с использованием принятых формальных обозначений. Воспроизведение функционирования или иных свойств объекта по знаковым моделям может выполняться на основе мысленных или машинных экспериментов с ними. Знаковая модель, как всякая другая модель, обеспечивает выделение наиболее существенных для разработчика характеристик. Как правило, составитель HDL-программы абстрагируется от конкретной физической реализации, выделяя, прежде всего, воспроизведение функционирования проектируемого изделия. После выполнения проверочных процедур на основе модели может быть построен объект, т. е. некое физическое устройство, которое подтвердит или (что при хорошем уровне моделирования мало вероятно) опровергнет предположения, заложенные в модель. Естественно в современных условиях основную работу по интерпретации модели в физический объект выполняет ЭВМ, но иногда пользователь может вмешиваться в процедуру синтеза, т. е. возможны интерактивные процедуры проектирования.
Современные языки позволяют строить модели (программы), характеризующиеся различной степенью приближения к будущей реализации - от внешнего описания закона функционирования, до детального представления проекта на уровне вентилей или макроячеек БИС. Одним из способов сближения описания и фактической реализации является иерархическое проектирование, возможность которого предусмотрена семантикой современных языков проектирования.

Типы данных.

Входная информация в дискретных устройствах - цифровые сигналы, которые должны поступать в систему через контакты и далее двигаться по цепям, называемым также связями, к блокам, выполняющим те или иные преобразования, и далее на выходные контакты или к другим блокам. Входным, внутренним и выходным данным проектов сопоставляются имена связей, которым соответствуют цифровые сигналы на соответствующих входных и выходных контактах проектируемой схемы или внутренних цепях проекта. Источнику сигнала, поступающего на некоторую связь, в языках сопоставляется оператор, присваивающий значения переменной, представляющей связь или сигнал на этой связи. Такие операторы называют драйверами. Различие сигналов от связей выполняется только по контекстным признакам.
Основным типом данных в языках являются данные сигнального типа, по свойствам близкие к обычным логическим данным (часто мы будем называть их просто логическими). Основное отличие логических данных в языках проектирования от логических данных языков программирования заключается в наборах доступных значений. Кроме того, явно или неявно подразумевается, что сигнал обладает временными характеристиками, в частности, изменение значений отображающей переменной может происходить не сразу после присвоения ей нового значения.
Для удобства работы данные могут, как и в обычных языках программирования, структурироваться и объединяться в агрегаты - массивы, векторы, записи. В некоторых оговорённых случаях структурированные логические данные представляются в достаточно "привычных" формах, например, как числа или строки. Преобразованиям логических данных сопоставляются определённые компоненты в структуре проектируемого устройства.
Помимо данных сигнального типа применяется ряд служебных типов данных. Из них наиболее важными являются данные арифметического типа и строчные данные. Хотя программы могут предусматривать преобразования таких данных, однако эти преобразования реализуются только на этапе компиляции и, может быть, моделирования проекта. При реализации в аппаратуре используются только окончательные результаты преобразований, обычно в форме констант, задающих конфигурацию аппаратных средств.

Структура и поведение.

Модель, отражающая объект проектирования в форме правил преобразования входных данных в выходные, называется поведенческой. Такая точка зрения на проект представлена на рис. 7.1.а.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e9a45_3f47e366_orig

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

Y=F(A,B).

Используя терминологию VHDL, назовём модуль F - PROJECT ENTITY (дословный перевод - сущность проекта), входы и выходы назовём портами (PORT). Программные модули на языке VHDL, описывающие проекты в поведенческой форме, именуют поведенческими архитектурными телами.
Структурная модель описывает проект в виде совокупности модулей, каждый из которых реализует определённую часть задачи, и набора связей между ними. Такое представление интерпретируется рис. 7.1.б. В данном случае, очевидно, выполнена декомпозиция функции F в виде:

F(A,B) = I(G(A,B),H(A,B)).

Каждый подблок (в нашем примере блоки G, H и I), в свою очередь, может быть представлен в виде поведенческой или структурной модели.
Структурная модель является естественным способом создания сложных проектов, описание которых целесообразно выполнить по иерархическому принципу. В программном модуле высшего уровня иерархии содержатся объявления портов и внутренних связей, а также так называемые декларации вхождений компонентов (INSTANTION DECLARATION), т. е. определённых синтаксисом языка указаний на включённые компоненты и способ их соединений. В VHDL такое описание называют структурным архитектурным телом.
На рис. 7.2 представлен типовой набор проектных модулей и их взаимосвязей на примере VHDL. Рассмотрим процедуру представления иерархических проектов в языковой форме на основе дисциплины нисходящего проектирования.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e9a47_eb210682_orig


Первым этапом проектирования по дисциплине "сверху вниз" является создание поведенческой модели высшего уровня иерархии. На рисунке этот этап отображён исходным первичным модулем ENTITY PROJECT, описывающим интерфейс проекта, и связанным с ним вторичным модулем ВВ (Behavioral Body) - описываем его поведение. Средствами используемого пакета проектирования выполняется сеанс моделирования поведения. Часто может потребоваться несколько коррекций до получения соответствия поведенческой модели заданным требованиям.
Если объект является сравнительно простым, то поведенческое описание высшего уровня после отладки на модели может непосредственно передаваться в подсистему компиляции для синтеза аппаратной реализации. Однако как показывает опыт использования САПР, при интерпретации сложных алгоритмов возникают ситуации, когда компилятор "навязывает" не оптимальные решения. Использование детализации описания позволяет смягчить эффект такого навязывания, усилить влияние разработчика на окончательную реализацию. Некоторые конструкции программ, особенно характеризующиеся большой глубиной вложения операторов, вообще не поддаются в распространённых САПР прямой интерпретации в соответствующее схемное решение. Кроме того, разделение общего описания на фрагменты облегчает реконфигурацию системы за счёт замены некоторых блоков другими блоками аналогичного назначения, не говоря о преимуществах связанных с возможностью распараллеливания проектной процедуры между несколькими исполнителями.

При структуризации проекта каждой выделенной структурной единице сопоставляется проектный модуль со своим ENTITY. Модули первого уровня декомпозиции на рисунке обозначены как М11, М12, ... -, М1n. Создаётся структурное архитектурное тело SB (Structural Body), соответствующее верхнему уровню иерархии. SB содержит декларацию выделенных подблоков и описание необходимых межблочных связей. Первичное (поведенческое) описание подблока может быть построено путём "вырезания и копирования" соответствующих фрагментов текста из поведенческого тела предшествующего иерархического уровня с добавлением требуемых стандартом языка заголовков. В общем случае, возможно сохранение описания части подблоков в архитектурном теле высшего уровня иерархии в поведенческой форме. Тогда говорят о смешанных или структурно-поведенческих телах. Важно отметить, что ENTITY целостного проекта остаётся без изменений. После тестирования структурированной версии описания можно перейти к структуризации подблоков, которая выполняется подобным образом. При необходимости, после каждого уровня структурная декомпозиция блоков может быть продолжена. В результате получается древовидная иерархия проекта. Процесс проектирования можно рассматривать как перемещение по дереву декомпозиции, а окончательный проект как совокупность однонаправленных путей в дереве от корня, представленного ENTITY целого проекта, к конечным вершинам.

Продолжение в Теория_007.1


Последний раз редактировалось: Viktor2312 (Вс Апр 12 2015, 09:05), всего редактировалось 1 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Re: Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx

Сообщение  Viktor2312 Пн Ноя 10 2014, 12:48

16
Теория_007.1

Продолжение.

Рисунок добавлен из Теория_007, чтобы был на виду:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_e9a47_eb210682_orig

На любом этапе декомпозиции ( в том числе на конечном и на всех промежуточных этапах) конечными вершинами являются только поведенческие тела, а промежуточные вершины представлены структурными телами. Если модуль далее не подлежит декомпозиции, он представляется только поведенческим телом.
В процессе осуществления конкретного проекта полная декомпозиция требуется не всегда. На некотором этапе может оказаться выделенной совокупность операторов, которая воспроизводится некоторым модулем, присутствующим в библиотеке, поставляемой с САПР, используемой при проектировании, библиотеке предыдущих разработок проектировщика или приобретаемых у третьих фирм расширениях библиотек. Тогда достаточно в соответствующем структурном теле сослаться на этот библиотечный модуль. Однако и в этом случае общая структура проекта сохраняется. Просто ссылаясь на библиотечный модуль, проектировщик фактически подключает к своему проекту иерархическое поддерево, вершиной которого является модуль, указанный в ссылке. Само поведенческое или структурное описание подключаемого модуля от проектировщика может быть скрыто.
Тестирование является одной из важнейших проектных процедур. Можно рекомендовать одновременно с разработкой программы описания проектируемого устройства изделия создавать программу для тестирования проекта. Подобная программа представляет структурную модель (SB) тестирующей установки (Test-Bench), компонентами которой, в общем случае, являются:
* проектный модуль;
* генератор тестирующего воздействия (Stimulator);
* анализатор результатов.
См. рисунок 7.3.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_ea0eb_e4ffa7ea_orig



Замечание

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


Test-Bench верхнего уровня с весьма незначительными изменениями может использоваться для отладки структурированных версий проекта. В сложных случаях могут создаваться свои программные модули для тестирования фрагментов.
Проектирование "снизу вверх" предусматривает объединение простейших модулей в более сложную структуру. Исходные модули - это решения, созданные проектировщиком на более ранних этапах работы, в ходе работ над другими проектами или доступные проектировщику через библиотеки САПР. Специфические языковые конструкции позволяют описывать последовательное объединение компонентов в группы (выделение групп осуществляется исходя из степени сильной алгоритмической и информационной связанности компонентов в целевой системе) с последующим объединением полученных фрагментов в структуры высшего уровня иерархии.
Сложные проекты, как правило, создаются большими группами разработчиков. В этом случае проектирование сверху вниз более оправданно. После любого этапа декомпозиции выделенные фрагменты, для которых уже определён интерфейс и принципы функционирования, могут передаваться для детальной проработки разным исполнителям. Отметим, что важнейший элемент корпоративной работы - это проектная база данных коллективного использования. В подобной базе должна быть установлена строгая иерархия прав доступа, но в любом случае изменение, внесённое разработчиком одного из разделов, должно быть доступно для разработчиков смежных разделов.

Стили описания проектов.

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

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_ea173_bf9cf8dd_orig

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

* Последовательный стиль описания соответствует традиционным подходам к составлению программ для ЭВМ. Расположение и порядок исполнения операторов в тексте описания соответствует порядку прохождения данных через информационный граф. Любой оператор в тексте записывается после всех операторов, ему инцидентных, т. е. тех, с которыми он имеет связи по входу. Такое описание наиболее точно интерпретируется ярусной формой информационного графа (см. рис. 7.4,а), которая получается из исходного представления алгоритма путём упорядочения независимых примитивных операторов таким образом, что вершины каждого яруса связаны с вершинами предыдущих. Желательно, чтобы максимальное число связей осуществлялось вершинами непосредственно предшествующего яруса. Порядок записи операторов одного уровня не имеет значения. Графы с обратной связью в последовательной форме интерпретировать в HDL затруднительно, а иногда и невозможно.

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

* Потоковый стиль отличается от предыдущего тем, что оператор исполняется после готовности всех предшественников данного оператора. В чистом виде потоковый принцип довольно сложен в реализации, за исключением случая линейного алгоритма или блочно-линейного алгоритма (т. е. алгоритма, разделимого на последовательно соединённые блоки, каждый из которых может иметь достаточно сложную структуру). Чаще используется его модификация - конвейер. Операторы, представляющие вершины одного яруса графа, исполняются после реализации всех операторов предыдущего яруса. Операторы одного яруса могут описываться и как последовательные и как параллельные. Техническая реализация обычно предусматривает синхронную работу ступеней конвейера от общего синхронизирующего сигнала, причём период синхронизирующих сигналов больше максимального времени задержки элементов. На рис. 7.4,б представлена реализация того же алгоритма, что и на рис. 7.4,а. Прямоугольниками показаны вспомогательные элементы, фиксирующие состояние входов и выполняющие запуск очередной ступени в синхронные моменты времени. На управляющие входы всех вспомогательных элементов подаётся один и тот же сигнал. Обозначения на управляющем входе отображают относительный порядковый номер порции данных, подаваемых на очередную ступень конвейера. В случае рассинхронизации прохождения потоков данных по разным путям вставляются пустые операторы (элементы задержки), отображённые на рис. 7.4,б заштрихованными кружочками. Конвейерный стиль описания порождает конвейерные реализации, которые, как известно, обладают повышенной производительностью, т. к. во время обработки порции данных некоторой ступенью предыдущая ступень может обрабатывать следующую порцию данных. В то же время недостатком конвейера в сравнении с параллельной реализацией может стать большая задержка результатов относительно момента появления порции данных.

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

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

Продолжение в Теория_007.2

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Немного практики, и чуть теории...

Сообщение  Viktor2312 Вс Апр 12 2015, 09:06

17
Немного практики, и чуть теории...

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


Чуть теории.

Базовая структура VHDL-файла.

1. Общие сведения.

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

Строки с комментариями в VHDL-программе начинаются с двух смежных дефисов (--) и при компиляции игнорируются компилятором так же, как символы конца строки и пробелы.

VHDL - это строго типизированный язык. Это означает, что все программные элементы данных (константа, переменная, сигнал) должны явно объявляться с обязательным указанием типа элемента. Тип, указанный в объявлении программного элемента данных, определяет информационные характеристики этого элемента, диапазон допустимых числовых значений, которые может принимать этот программный элемент, а также операции, которые могут над ним выполняться. Кроме того, в языке VHDL, в отличии от других строго типизированных языков, не допускаются операции над разнотипными элементами без предварительного преобразования типов.

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

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8dda_fe45fa46_L

В языке VHDL операторы с точки зрения их функционального программного назначения (как при поведенческой, так и при структурной методологии описания проектов) принято делить на две основные группы:
* Операторы объявления программных элементов данных и их типов, компонентов проектируемого цифрового устройства, их интерфейсов и архитектур, пользовательских типов, а также функций и процедур.
* Выполняемые операторы.

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

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

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

Такими фундаментальными операторами в языке VHDL являются операторы:

entity ... end entity ... ;

architecture ... end architecture ... ;

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

Представленный в виде VHD-файла проект цифрового устройства может содержать другие объекты (подсистемы), которые в таком случае являются подчинёнными компонентами системы верхнего уровня.

Любой компонент, независимо от того, является ли он автономным либо подчинённым компонентом, или же системой верхнего уровня, в свою очередь является совокупностью интерфейса (entity) и архитектуры (architecture).

В объявлении интерфейса (entity declaration) содержится объявление портов (ports declaration) проектируемого компонента с внешним миром. Объявление портов проектируемого компонента определяет внешние входные и выходные интерфейсные сигналы, в то время как архитектура представляет собой набор таких взаимосвязанных программных элементов, как подчинённые компоненты, операторы process, операторы параллельных вычислений, последовательные операторы, подпрограммы. В типичном проекте содержится несколько таких взаимосвязанных объектов, предназначенных для выполнения преобразований, в ходе которых и обеспечивается собственно требуемая функциональность проекта.


2. Объявление интерфейса.

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

Код:

entity ИМЯ_КОМПОНЕНТА is [ generic (общие_объявления); ]
    port (сигнал1: режим тип;
          сигнал2: режим тип;
          . . .
          сигналN: режим тип);
end [entity] [ИМЯ_КОМПОНЕНТА];


Как видно из приведённого синтаксиса, объявление интерфейса всегда начинается с ключевого слова entity, за которым указывается имя проектируемого компонента и ключевое слово is. Далее в объявлении интерфейса с помощью ключевого слова port размещается объявление портов. Объявление интерфейса всегда заканчивается ключевым словом end, после которого могут указываться ключевое слово entity, а также имя компонента (два последних элемента в объявлении интерфейса можно опускать).

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

  • in - ключевое слово, используемое для объявления входных сигналов;
  • out - ключевое слово, используемое для объявления выходных сигналов. Значения выходных сигналов могут считываться другими проектами;
  • buffer - ключевое слово, используемое для объявления внутренних сигналов. Значения сигнала с этого порта могут читаться только внутри архитектуры проекта;
  • inout - ключевое слово, используемое для объявления сигналов, которые могут быть как входными, так и выходными.

* тип - зарезервированное слово, используемое для объявления определённого пользователем типа сигнала, переменной или константы. Примерами встроенных типов являются: bit, bit_vector, Boolean, character, std_logic и std_ulogic.

  • bit - может принимать значения или 0, или 1;
  • bit_vector - зарезервированное слово, показывающее, что сигнал, переменная или константа являются вектором, состоящим из значений типа bit, например bit_vector (0 to 7);
  • std_logic, std_ulogic, std_logic_vector, std_ulogic_vector - зарезервированные слова, показывающие, что сигнал, переменная или константа могут принимать одно из девяти значений, отражающих его силу и реальные физические значения. В проектах цифровых устройств предпочтительнее использовать типы std_logic, std_ulogic, чем типы bit, bit_vector;
  • boolean - зарезервированное слово, означающее, что сигнал, переменная или константа могут принимать одно из двух значений: TRUE или FALSE;
  • integer - зарезервированное слово, означающее, что сигнал, переменная или константа могут принимать одно целое значение, попадающее в указанный диапазон;
  • real - зарезервированное слово, означающее, что сигнал, переменная или константа могут принимать одно вещественное значение, попадающее в указанный диапазон;
  • character - зарезервированное слово, означающее, что сигнал, переменная или константа могут принимать значение печатаемого ASCII-символа;
  • time - зарезервированное слово, означающее, что сигнал или константа снабжены единицей измерения времени.

* generic (общие_объявления):  - объявление generic является факультативным и определяет локальные константы, используемые для задания временных параметров и разрядности (например, разрядности шины) проектируемого цифрового устройства. В объявлении generic могут указываться значения, используемые по умолчанию. Синтаксис для объявления generic следующий:

Код:

generic (
имя_константы1: тип [ := значение ];
имя_константы2: тип [ := значение ];
. . .
имя_константыN: тип [ := значение ]);


Для примера цифровое устройство SIREN, структурное представление которого было уже тут представлено, ниже оно показано ещё раз,

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8d47_92ceee7b_M

объявление интерфейса имеет следующий вид:

Код:

-- Пример объявления интерфейса SIREN
entity SIREN is
    port (DOOR, IGNITION, SBELT: in std_logic;
           WARNING: out std_logic);
end SIREN;


Как видно из объявления, проектируемый интерфейс имеет идентификатор SIREN, содержит три входных порта (DOOR, IGNITION, SBELT) и один выходной порт (WARNING). Следует обратить внимание на порядок их размещения и наличие в оформлении точек с запятой! Входные порты обозначены с помощью ключевого слова in, а выходные - с помощью ключевого слова out. Так как язык VHDL является языком со строгим контролем типов, в объявлении каждого порта имеется указание о его информационном типе. Тип определяет набор значений, которые могут присваиваться объекту (в данном случае - сигналу). В этом проекте использован тип std_logic. Это наиболее предпочтительный тип для цифровых сигналов. В отличии от типа bit, который обеспечивает поддержку только бинарных значений '0' или '1', типы std_logic и std_ulogic позволяют присваивать соответствующим элементам данных одно из девяти значений.

Использование типа std_logic и std_ulogic даёт возможность точнее описать значения сигналов физической цифровой системы. В общем случае в физической цифровой системе сигнал может принимать бинарные значения '0', '1', 'X' (неизвестное значение), 'U' (неинициализированное значение), '-' (безразличное состояние) и ряд других значений:

'0' - логический ноль;
'1' - логическая единица;
'Z' - состояние высокого импеданса;
'X' - неизвестное значение;
'L' - логический ноль (слабый источник);
'H' - логическая единица (слабый источник);
'W' - неизвестное значение (слабый источник);
'U' - неинициализированное состояние;
'-' - неопределённое состояние.

Определение типа std_logic находится в пакете std_logic_1164 библиотеки ieee. Тип определяет набор значений, которые объект может иметь.


Примечание. В языке VHDL любой конструктивный элемент, начинающийся некоторым ключевым словом и заканчивающийся ключевым словом end и символом ; (точка с запятой), принято называть составным оператором. Однако операторы могут быть не только составными, т. е. содержащими в себе другие операторы (часто говорят, что составные операторы "содержат тело"), но и простыми. Простые операторы размещаются обычно в одной строке, не имеют ключевого слова end и всегда заканчиваются символом ; (точка с запятой).

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

entity ...
. . .
end [entity] ... ;

Этот оператор по своей конструкции является составным оператором и содержит другие операторы. Так, в приведённых выше примерах составной оператор entity имеет в своей конструкции оператор port (...);


3. Архитектура проекта.

Архитектура проекта (architecture body) определяет логику работы схемы проектируемого цифрового устройства, т. е. устанавливает алгоритм работы цифрового устройства и форму её реализации, которая бывает поведенческой или структурной.


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

Синтаксис объявления архитектуры имеет следующий вид:

Код:

architecture Имя_архитектуры of ИМЯ_КОМПОНЕНТА is
          -- Объявления:
          -- компонентов
          -- сигналов
          -- констант
          -- функций
          -- процедур
          -- типов
begin
          -- Выполняемые операторы параллельной обработки
end [ architecture ] Имя_архитектуры;


3.1. Архитектура проекта в поведенческой форме.

Поведенческая форма архитектуры проекта представленная ниже

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8d47_92ceee7b_M

имеет следующий вид:

Код:

architecture behav of SIREN is
begin
WARNING <= (not DOOR and IGNITION) or (not SBELT and IGNITION);
end behav;


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

Продолжение в следующих постах...


Последний раз редактировалось: Viktor2312 (Пн Май 11 2015, 12:13), всего редактировалось 42 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Немного практики и чуть теории...

Сообщение  Viktor2312 Вс Апр 19 2015, 23:34

18
Продолжение из предыдущего поста...

Как говорилось выше, поведенческая форма проекта может быть описана несколькими способами. В частности, в этом примере основная часть архитектуры проекта содержит один простой оператор установки значения сигнала. В данном операторе имеется символ <=, который означает, что сигналу, стоящему слава от символа <=, устанавливается результат вычисления выражения, стоящего справа от символа <=. Основная часть архитектуры проекта заканчивается ключевым словом end, которое может дополняться ключевым словом architecture и именем архитектуры.

Вот ещё два примера оформления архитектуры проекта:

Интерфейс и архитектура (поведенческая форма) двухвходового логического элемента И.

Код:

entity AND2 is
          port (in1, in2: in std_logic;
                    out1: out std_logic);
end END2;

architecture behavioral_2 of AND2 is
begin
          out1 <= in1 and in2;
end behavioral_2;


Интерфейс и архитектура (поведенческая форма) двухвходового логического элемента исключающее ИЛИ-НЕ.

Код:

entity XNOR2 is
          port (A, B: in std_logic;
                   Z: out std_logic);
end XNOR2;

architecture behavioral_xnor of XNOR2 is
          -- Объявление внутренних сигналов X и Y.
          signal X, Y: std_logic;
begin
          X <= A and B;
          Y <= (not A) and (not B);
          Z <= X or Y;
end behavioral_xnor;
          

Операторы установки значения сигнала <= в этих примерах содержат логические операции and, or и not. Кроме указанных, в таких операторах могут использоваться операции nand, nor, xor и xnor.

Всё выше описанное, а также рассмотренное ниже, кратко можно сформулировать так. При описании проектируемого устройства с помощью языка VHDL, описание представляется в форме соответствующего объекта, который может иметь как простую (одноуровневую), так и иерархическую (многоуровневую) структуру. Исчерпывающая информация об этом объекте указывается в форме его интерфейса и архитектуры. Интерфейс объекта описывается в виде совокупности портов, каждый из которых соответствует входу (in), выходу (out) или двунаправленному входу/выходу (inout) проектируемого устройства. Для каждого порта указывается его тип и режим функционирования. Архитектура объекта представляется в форме структуры разрабатываемого устройства или описания алгоритма его функционирования.

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


Примечание. Следует особо заметить, что операторы установки значения сигнала (signal assignment statement) в вышеупомянутых примерах являются операторами параллельной обработки (concurrent processing). Такие операторы выполняются параллельно, когда один или больше сигналов, входящих в состав выражений, которые расположены в правой части оператора, изменяют своё значение (т. е. когда хотя бы на одном из сигналов происходит событие). Например, когда сигнал порта А изменит своё значение, одновременно изменят своё значение внутренние сигналы X и Y, которые в свою очередь одновременно (во всяком случае в идеале) заставят последний оператор модифицировать значение сигнала на выходном порту Z. (В реальных цифровых системах при распространении сигналов может существовать задержка, связанная с этими изменениями).

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

3.2. Архитектура проекта в структурной форме.


Последний раз редактировалось: Viktor2312 (Пн Май 11 2015, 12:02), всего редактировалось 11 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Немного практики и чуть теории...

Сообщение  Viktor2312 Вс Май 03 2015, 01:48

19
Лексические элементы языка VHDL.

Текст описания на языке VHDL формируется из ключевых слов, идентификаторов, литералов и комментариев. Под ключевым словом (зарезервированным словом) понимается последовательность символов, которая имеет строго определённое значение. Примером ключевых слов являются операторы.

Идентификаторы (identifiers).

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

Литералы.

Литералы, как правило, используются в качестве значений, которые присваиваются переменным или сигналам, а также для инициализации констант соответствующего типа. В языке VHDL различают следующие типы литералов: десятичные, базовые, символьные, строчные и строчные битовые.
Десятичные литералы.
Представляют собой числовые значения и подразделяются на целые и вещественные, которые могут быть представлены в обычной или экспоненциальной форме.
Например, 2 - целый литерал, 5e2 - целый с экспонентой, 9.0 - вещественный, 2.4e-4 - вещественный с экспонентой.

Базовые литералы.
Являются числовыми значениями с явным указанием системы счисления, которые представлены в следующей форме:

<система_счисления>#<числовое_значение>#

Например,
2#1001# - базовый двоичный литера;
10#233# - базовый десятичный литерал;
16#6F# - базовый шестнадцатеричный литерал.

Символьные литералы.
Образуют символы, заключённые в одиночные апострофы, например, 'F', 'A', 'g'.

Строчные литералы.
Представляют собой последовательность алфавитных символов, заключённых в апострофы (двойные кавычки). Например, "gotohome", "thisismoon".

Строчные битовые литералы.
Содержат последовательность двоичных, восьмеричных или шестнадцатеричных символов, заключённых в апострофы (двойные кавычки), перед которыми указано условное обозначение системы представления:

B - двоичная;
O - восьмеричная;
X - шестнадцатеричная.
Например, B"0110", O"5743", X"7C4F".

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

Программные элементы данных: сигналы, переменные, константы.

В составе языка VHDL применяется три основных класса элементов (объектов данных): сигналы, переменные и константы. Любой программный элемент данных в языке VHDL, прежде чем использоваться в проекте, должен быть объявлен (declared) с указанием типа (type) и значения (value). Программным элементом данных может быть, как указано выше, константа (constant), переменная (variable), сигнал (signal), а также файл (file). Сигналы можно рассматривать как программное представление проводников (wire) в схемном решении. Сигналы могут иметь текущее значение и определённый набор возможных значений, являясь функциями операторов установки значения сигнала (signal assignment). Переменные и константы используются в качестве вспомогательных программных элементов, используемых для моделирования поведения схем, в операторах process, подпрограммах-процедурах и подпрограммах-функциях, подобно тому как они используются в других языках программирования.

Сигнал (signal).

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

<идентификатор_сигнала>' <идентификатор_атрибута>

Атрибуты бывают двух видов: предопределённые и определяемые пользователем. Наиболее часто в описании проектируемого устройства используется предопределённый атрибут event, который имеет тип boolean. Данный атрибут принимает значение true только в том случае, если произошло изменение этого сигнала. Например, атрибут ADR_EN'event будет иметь значение true при любом переключении сигнала ADR_EN.

Сигнал - это основной программный элемент данных в VHDL-проектах, предназначенный для переноса информации между компонентами. Фактически сигналы связывают компоненты проекта в единую систему. Оператор объявления сигнала имеет следующий синтаксис:

signal имя_сигнала: тип [ := начальное_значение ];

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

signal SUM, CARRY: std_logic;
signal CLOCK: bit;
signal TRIGGER: integer := 0;
signal DATA_BAS: std_logic_vector (7 downto 0);
signal VALUE: integer range 0 to 100;

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

SUM <= (A or B) after 5 ns;

Если задержка явно не указана, то сигнал изменится после задержки delta, установленной по умолчанию.

Переменная (variable).

Переменная - это программный элемент данных, который в процессе моделирования работы проекта может принимать любое, но всегда единственное значение в определённый момент. В другой момент переменная может иметь другое значение. Значение переменной может быть модифицировано оператором присваивания значения переменной. При этом считается, что значение переменной модифицируется оператором присваивания значения немедленно (т. е. без временной задержки), как только этот оператор выполнен. Переменные должны объявляться только в подразделе объявлений оператора process. Объявление переменной имеет следующий синтаксис:

variable имя_переменной: тип [ := начальное_значение ];

Значение переменной может модифицироваться с помощью оператора присвоения значения переменной. Этот оператор имеет следующий синтаксис:

Имя_переменной := выражение;

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

Ниже приведены примеры операторов объявлений переменных:

variable CNTR_bit: bit := 0;
variable VAR1: boolean := FALSE;
variable SUM: integer range 0 to 256 := 16;
variable STS_BIT: bit_vector (7 downto 0);

В рассмотренных примерах переменная SUM является целым числом, которое имеет диапазон от 0 до 256 и начальное значение 16 в начале процесса моделирования. В четвёртом примере определён битовый вектор STS_BIT, содержащий 8 элементов, к каждому из которых можно обращаться по имени переменной с указанием индекса бита в векторе:
STS_BIT (7), STS_BIT (6), STS_BIT (5), ..., STS_BIT (1), STS_BIT (0).

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

Константа.

Константа - это программный элемент данных, идентификатор, который используется для обозначения некоторого постоянного значения. Значение которого всегда остаётся постоянным в процессе моделирования и работы проекта. Объявление программной величины константы имеет следующий синтаксис:

constant имя_константы: тип [ := начальное_значение ];

В операторе объявления константы может отсутствовать та часть объявления, в которой указывается начальное значение константы, то есть [ := начальное_значение ]. Константы могут быть объявлены в разделе объявлений архитектуры проекта. В этом случае константа является видимой в пределах всей архитектуры того проекта, в котором она объявлена. Константы, объявленные в разделе объявлений оператора process, видимы только в пределах этого оператора process и могут использоваться только в этом конкретном операторе. Константы могут также объявляться в пакетах. Если константы имеют одинаковый тип и одинаковое начальное значение, их идентификаторы можно перечислять в операторе объявления в виде списка, отделяя одно имя от другого запятой.

Ниже приведены примеры операторов объявления констант:

constant RISE_FALL_TME: time := 2 ns;
constant DELAY1: time := 4 ns;
constant RISE_TIME, FALE_TIME: time := 1 ns;
constant DATA_BUS: integer :=16;

Для каждого из элементов, перечисленных выше, в описании устройства указывается соответствующий тип, определяющий всю совокупность значений, которые может принимать данный элемент (сигнал, переменная или константа). В языке VHDL имеется только несколько предопределённых типов, среди которых наиболее часто используются типы bit, bit_vector, integer, real, boolean, character, string, time. В частности, элементы типа bit могут принимать значения 0 и 1; integer - значения целого типа; real - значения вещественного типа; boolean - значения true и false. В отличии от предопределённых типов, остальные типы, применяемые в описании цифровых устройств, относятся к группе определяемых пользователем типов. Из таких типов в описаниях устройств чаще всего используется тип std_logic. Тип std_logic целесообразно использовать для описания большинства цифровых сигналов. Сигналы, переменные и константы этого типа могут принимать следующие значения:

'0' - логический ноль;
'1' - логическая единица;
'Z' - состояние высокого импеданса;
'X' - неизвестное значение;
'L' - логический ноль (слабый источник);
'H' - логическая единица (слабый источник);
'W' - неизвестное значение (слабый источник);
'U' - неинициализированное состояние;
'-' - неопределённое состояние.

Кроме простых (скалярных) типов применяются составные типы данных - массивы. Массив представляет собой упорядоченную совокупность элементов одного типа, обращения к которым осуществляются с помощью индекса. Массивы в языке VHDL применяются, в первую очередь, для описания сигналов, имеющих шинную организацию. Для описания таких сигналов чаще всего используется тип массива std_logic_vector, элементы которого относятся к рассмотренному выше типу std_logic. Среди предопределённых типов, перечисленных выше, bit_vector также относится к типу массива.

Операции и символы операций.

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

1. Логические операции.
2. Операции отношений.
3. Операции сдвига.
4. Операции сложения.
5. Унарные операции.
6. Операции умножения.
7. Вспомогательные операции.

Операции записываются с помощью символов операций (operator), которые применяются к двум (бинарные операции) или к одному (унарные операции) операнду (operand), в роли которых могут использоваться сигналы, переменные и константы. Бинарные операнды обязательно должны иметь одинаковый тип.

Наиболее высоким приоритетом обладают операции 7-го класса, за ними идут операции 6-го класса
и т. д., вплоть до операций 1-го класса, приоритет которых самый низкий. Если круглые скобки не используются, то сначала выполняются с более высоким приоритетом. Операции одного класса имеют одинаковый приоритет и выполняются слева на право по ходу записи выражения.

1. Логические операции.

Логические операции осуществляются с операндами типов bit, boolean, std_logic, std_ulogic, а также соответствующих векторов. Они используются, чтобы определять логические выражения (выражения булевой алгебры) и выполнять побитные операции на массивах битов. Результат имеет тот же тип, что и операнды. Эти операции могут применяться к сигналам, переменным и константам.

К логическим операциям относятся следующие символы операций:

and ---- логическое И
or ------ логическое ИЛИ
nand --- логическое И-НЕ
nor ----- логическое ИЛИ-НЕ
xor ----- исключающее ИЛИ
xnor --- исключающее ИЛИ-НЕ

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

X nand Y nand Z

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

(X nand Y) nand Z

2. Операции отношений.

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

К операциям отношений относятся следующие символы операций:

=  ----- равно
/=  --- не равно
<  ----- меньше
<=  --- меньше или равно
>  ----- больше
>=  --- больше или равно



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

Операторы дискретного типа (например, перечислимого типа) сравниваются поэлементно, начиная слева направо.

3. Операции сдвига.

Операции сдвига выполняют побитный или циклический сдвиг на одномерных массивах элементов типа bit, std_logic или boolean. Эти операции являются бинарными. Левым операндом является одномерный битовый массив, массив с элементами типа std_logic или массив, содержащий элементы типа boolean. Правый операнд должен быть целым числом (числом типа integer). Значение правого операнда определяет количество сдвиговых операций. Тип результата определяется типом левого операнда.

К операциям сдвига относятся следующие символы операций:

sll - Левый логический сдвиг. Правый бит заполняется нулями.
srl - Правый логический сдвиг. Левый бит заполняется нулями.
sla - Левый арифметический сдвиг. Правый бит сохраняет предыдущее значение.
sra - Правый арифметический сдвиг. Левый бит сохраняет предыдущее значение.
rol - Левый циклический сдвиг.
ror - Правый циклический сдвиг.

4. Операции сложения.

Операции сложения используются для выполнения арифметический действий (сложение и вычитание) над операндами любого числового типа. Операция конкатенация &, относящаяся так же к операциям сложение 4-го класса, используется для объединения двух векторов, в результате чего получается более длинный вектор. Чтобы использовать эти операции, необходимо в дополнение к пакету ieee.std_logic_1164 подключить к проекту пакеты ieee.std_logic_unsigned или std_logic_arith.

5. Унарные операции.

Унарными операциями называются операции, выполняемые над одним операндом. К таким операциям относятся операции изменения знака (+ или -) операнда любых числовых типов.

6. Операции умножения.


Последний раз редактировалось: Viktor2312 (Вт Май 12 2015, 09:28), всего редактировалось 5 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Немного практики и чуть теории...

Сообщение  Viktor2312 Вс Май 03 2015, 16:51

20
Рекомендации, правила и руководства по созданию описания цифровых устройств на VHDL.

Введение.

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

По материалам статьи:
Алексей Денисов "Несколько советов по проектированию цифровых устройств на VHDL для ПЛИС".
Из журнала КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 12 '2009 www.kite.ru

Именование.

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

1. Используйте в именах для всех сигналов, портов, переменных, констант, определяемых пользователем типов и параметров только строчные буквы.
2. Используйте осмысленные имена, которые должны объяснять поведение переменной/сигнала. Выразительное имя дает понимание, а не путает того, кто читает описание цифрового устройства, и это верно также по отношению к самому автору. Удачное имя объясняет, что означает величина вектора или переменной. Без этой информации трудно читать описание аппаратуры, и маловероятно, что оно будет написано без ошибок. В таблице 1 представлены некоторые из имен.
3. Используйте “clk” для обозначения тактового сигнала блоков/модулей, а также в качестве префикса для всех тактовых сигналов, которые поступают с PLL, например clk_inv, clk_96MHz. Применение данного имени для всех тактовых сигналов информирует о том, что происходят они от одного внешнего источника. Если внешних источников тактовых сигналов два и более, тогда добавляйте порядковый номер к имени “clk”, например clk2, clk3, clk4, clk5 и, соответственно, clk2_inv, clk2_100MHz.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f41_745e75d5_orig

4. Используйте последовательный порядок битов при объявлении многоразрядных векторов переменных/сигналов от высокого к низкому, то есть от (n–1) до 0 для VHDL. Ноль здесь используется как младший разряд, поэтому все многоразрядные векторы переменных/сигналов должны быть в форме от (n–1) до 0. Эти соответствия кодирования помогут избежать ошибок при связи многоразрядных переменных между собой.
5. Добавляйте _n для указания инверсной фазы сигнала. Например:

data_in_n, grand_n.
Если есть два имени, которые отличаются только символами _n, то убедитесь, что они действительно являются логической инверсией один другого.
6. Используйте поименованные константы вместо указания непосредственных значений в тексте модуля/блока.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f65_d2991c62_orig

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

Текст описания цифровых устройств.

Приведем основные правила написания текста описания цифровых устройств.
1. Приводите иерархию проекта в соответствие с иерархией физического разбиения. Модули должны быть понятными — достаточно короткими. Но слишком маленькие модули порождают много ветвей в структуре дерева, и иерархия становится сама по себе трудной для понимания. Соблюдение иерархий упрощает генерацию и извлечение тестовых векторов и делает проще трансляцию модели в физическую структуру.
2. Делайте декларацию портов логичной и непротиворечивой. Пишите один порт на строку, добавляя короткий комментарий, если что-либо неочевидно из его имени. Например, если модуль имеет 5 или меньше портов, их можно перечислять в виде списка в следующем порядке: входы, входы/выходы, выходы. Если портов более 5, группируйте сигналы по функциональному назначению. Пример декларации портов показан в листинге 1.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f66_82e7503c_orig

3. Используйте функции и процедуры вместо повторения кода.
4. Для уплотнения кода используйте векторы, массивы, операторы генерации и циклы.
5. Применяйте технологически независимое и совместимое с различными пакетами проектирования описание схем на VHDL. Исключением является использование блоков памяти, PLL, three-state buses, bidirectional buses и других. Избегайте таких элементов, так как могут возникнуть ограничения для повторного проектирования и применения из-за их зависимости от технологии и производителя. Работу с ними лучше изолировать в отдельных модулях/блоках проекта.
6. Старайтесь избегать вставок вентильных примитивов в RTL-код, поскольку такой проект на логическом уровне трудно будет читать и повторно использовать.
7. Старайтесь не встраивать директивы синтеза в RTL-код. Они различаются в разных пакетах проектирования, поэтому могут вызывать конфликты и ограничения для повторного проектирования и использования. Если же они необходимы, то в комментариях укажите, для какого пакета проектирования директивы синтеза предназначены и какую функцию они выполняют.
8. Используйте для процессов метки (label), которые кратко поясняют работу процесса. Например, метка label_counter поясняет, что процесс описывает схему счетчика. Кроме того, ставьте метки в начале и в конце процесса, что позволит быстро ориентироваться в описании на VHDL. Пример написания метки для процессов показан в листинге 2.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f67_4e52279f_orig

9. Пишите комментарии, соответствующие описанию на VHDL. Это означает, что необходимо проверить комментарий на соответствие тексту. Необходимо модифицировать комментарий, когда меняете текст описания цифрового устройства.
10. Включайте в файл комментарий к любому сделанному вами изменению. В нем следует обозначить дату, имя внесшего изменение, собственно изменение и причину, его вызвавшую. Это поможет другим, занимающимся поддержкой текста описания на VHDL, понять, что происходит, и разобраться в проблеме, если сделанные изменения повлекли за собой дополнительные ошибки.
11. Описывайте процесс создания готовых ядер при использовании соответствующих программ (например, CoreGenerator для Xilinx ISE). При отсутствии описаний могут возникнуть ограничения для повторного проектирования и применения из-за зависимости от технологии и производителя. Работу с такими ядрами лучше изолировать в отдельных модулях/блоках проекта.
12. Предоставляйте для функционально законченного блока, а также для проекта в целом Test bench файлы, в которых создаются внешние воздействия, максимально соответствующие работе схемы в реальных условиях, и предоставляйте описания работы с ними. Это помогает в дальнейшем быстрее понять и верифицировать работу модуля/блока и проекта в целом.
13. Используйте сигналы вместо переменных в VHDL.
14. Используйте графический схемотехнический редактор для создания схемы верхнего уровня проекта/модуля/блока, которую затем можно автоматически перевести в структурное описание на VHDL. Графическое представление позволит наглядно увидеть структуру проекта/модуля/блока в целом.
15. Делайте список чувствительности наиболее полным. Когда списки чувствительности являются неполными, моделирование может не сходиться между pre- и post-synthesis netlists. В комбинаторных процессах список чувствительности должен содержать каждый сигнал, входящий в этот процесс, а для последовательных блоков в него нужно включать тактовый, а также синхронные и асинхронные сигналы. Избегайте лишних сигналов в списке чувствительности, поскольку они замедляют процесс моделирования. Пример процесса с полным и неполным списком чувствительности показан, соответственно, в листингах 3 и 4.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f68_3dc9c9e4_orig

Руководство для синтеза.

При проектировании особенно важно понимать взаимодействие между стилем HDL-кодирования, различными архитектурами устройств FPGA и программным обеспечением для автоматизированного проектирования. Приложения, от которых требуется высокая производительность и плотность размещения логики, являются очень критичными к используемому разработчиком стилю кодирования. Для получения оптимальных результатов необходимо понимание архитектуры матриц FPGA, принципов работы инструментов синтеза схем и программного обеспечения конечной трассировки. Цель RTL — создание проекта через процесс синтеза. Каждый инструмент имеет свои собственные конструкции описаний для VHDL; использование этих конструкций позволяет сделать эффективным процесс синтеза, а также упростить post-synthesis анализ. Некоторые обобщенные руководящие принципы для принятия RTL-синтеза:

1. Избегайте использования конструкций, создающих различные защелки (Latchs). Они могут появляться из-за неполного или двусмысленного RTL-кода. Поэтому каждое if должно иметь else. Когда проектируется аппаратура, часто требуется выполнение одних действий при условии «истина» и других при условии «ложь». Даже если считаете, что условие «ложь» маловероятно (или невозможно), все равно else для случая по умолчанию должно быть в каждом if-операторе. Нарушение пары if–else может вызвать синтезирование логики (появление защелки), отличной от RTL модели. Пример описания, создающего защелку, и регистра приведен в листингах 5 и 6.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f80_a3b98aef_orig

2. Избегайте в RTL петли комбинаторной обратной связи и асинхронной логики.
3. Используйте регистры и триггеры для последовательной логики, которые обеспечивают синхронизацию и, следовательно, предпочтительнее защелок. Если необходим сброс модуля/блока, то вместо использования «инициализации» в декларации VHDL используйте цепи сброса сигнала для начальной инициализации регистров.
4. Производите переключение последовательной логики по переднему (clk’event and clk = ‘1’) или по заднему фронту тактовой частоты (clk’event and clk = ‘0’) в модулях/блоках. Об этом следует задуматься
еще в начальной стадии проектирования. По умолчанию принята работа схем по переднему фронту тактовой частоты (clk’event and clk = ‘1’).
5. Разделяйте RTL-код на процессы, чтобы процесс синтеза работал эффективнее, и могли быть легко проверены временные требования. Например, для конечных автоматов (finite-state machine) код может быть разделен на два процесса: один для комбинаторной логики, а второй — для последовательной.
6. Фиксируйте в ПЛИС данные/сигналы на регистрах — как на входах, так и на выходах (рис. 1). На выходах блоков/модулей рекомендуется иметь регистры — иначе больше вероятность того, что задержка в комбинационной схеме на выходе блока плюс задержка в межблочных соединениях и в комбинационной схеме на входе следующего блока превысят время между синхроимпульсами. Это также упрощает синтез, делает выход блока/ПЛИС надежным, а задержки более предсказуемыми. Фиксация на регистре делает технологию mapping легче.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f8a_fe0e47f4_L

7. В модуль верхнего уровня включайте только межсоединения (рис. 2). Структура, описанная на VHDL, может быть иерархичной и состоять из одного или более модулей, которые могут использовать любые другие модули. Модуль, который включает любой другой модуль, является узлом дерева, а не включающий никакого другого — его «листом». «Корень» — такой тип узла, который не входит ни в один
другой модуль. Хотя VHDL и допускает проектирование «леса», но иерархия будет понятной, если используется только одно дерево. Конкретно это означает, что структура должна иметь только один
корневой модуль, не содержащий чего-либо другого, кроме межсоединений и входящих модулей. Вся интерфейсная логика должна быть собрана в модулях нижнего уровня и в модулях, подсоединяемых к «корню».

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f8b_51bd9b5c_L

Наиболее важной причиной нахождения логики вне корневого модуля является эффективный синтез. САПР не сможет оптимизировать логику в подмодулях, если в корневом модуле есть промежуточная логика. Исключение логики из корневого модуля делает структуру иерархически яснее и чище. Более радикальным стилем было бы исключить логику из всех узловых модулей, хотя это может вызвать избыточные уровни иерархии и не сделает описание на VHDL проще для чтения. И последней причиной исключения логики из корневого модуля является необходимость дать возможность программе-трассировщику создать хороший список межсоединений.
8. Не объединяйте в одном модуле/блоке последовательную логику, управляемую передним фронтом, и последовательную логику, управляемую задним фронтом тактового сигнала, а также модули/блоки, работающие на разных частотах. Каждый блок/модуль должен разрабатываться как «одноклоковый», в нем тактовая частота должна обозначаться “clk”, за исключением блоков стыков доменов. То есть подсоединение к сигналу вида clk_96MHz производите только на Top Level уровне.
9. Старайтесь избегать использования арифметических операторов, поскольку при реализации они требуют много логики и занимают большую площадь. Например, если требуется операция умножения или деления операнда на четную степень двойки, то можно использовать соответствующую операцию сдвига на регистре.
10. Используйте скобки для оптимизации логической структуры. Изменяйте структуру схемы, используя скобки для группирования логики таким образом, чтобы результат синтеза был ближе к оптимальному.
Например, следующее выражение:


sum = a+b+c+d;

синтезатор транслирует в три последовательно соединенные сумматора. А такое выражение:


sum = (a+b) + (c+d);

транслируется в два параллельных сумматора для (a+b), (с+d) и один окончательный сумматор для сложения этих сумм.

11. Старайтесь использовать совмещение аппаратных ресурсов — это уменьшает затраты на оборудование. Примеры оптимизированного и неоптимизированного описания, соответственно, показан в листингах 7 и 8.

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f8c_36a055e9_L

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f9f8d_810cbda0_L

Заключение.

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

Конец.


Последний раз редактировалось: Viktor2312 (Вс Ноя 01 2015, 04:12), всего редактировалось 15 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty резерв.

Сообщение  Viktor2312 Вс Май 03 2015, 16:58

21
резерв.


Последний раз редактировалось: Viktor2312 (Пн Май 11 2015, 17:37), всего редактировалось 1 раз(а)

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Немного практики и чуть теории...

Сообщение  Viktor2312 Пн Май 11 2015, 17:35

22
Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f83f3_19c7b89d_orig

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

Создание VHDL-описания устройства или его блоков начинается с создания нового проекта. Для этого можно воспользоваться кнопкой New Project... (создать новый проект) в приведённом выше поле Project commands или выбрав в основном меню раздел File (Работа с файлами, функции печати и завершения работы) команду  New Project... (создать новый проект):

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f83fb_16dc6cf2_L

В результате чего у нас запустится мастер создания нового проекта (New Project Wizard):

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8486_42257c10_L

В данном окне необходимо указать имя проекта. Важно обратить внимание, на то, чтобы как в имени, так и при указании путей размещения, не было пробелов и символов кириллицы. Так же, следует проследить, чтобы проект не был размещён в той же папке где и сама САПР Xilinx ISE. Ниже представлено окно с заполненными данными:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f84c2_f4610e19_L

Внизу окна мы должны выбрать параметр Top-level source type  (тип файла верхнего уровня иерархии), он задаёт формат представления главного модуля проекта, в который будут вложены другие модули проекта.
- HDL (Hardware Description Language)  – означает, что файлом верхнего уровня является текстовый файл на языке описания аппаратуры;
- Schematic – файл верхнего уровня представляет собой графическое изображение принципиальной электрической схемы, составленной из стандартных библиотечных модулей, и модулей, добавляемых разработчиком в виде других графических схем или файлов на HDL;
- EDIF, NGC/NGO – устройство представляется в виде готовых списков связей, разработанных ранее в САПР ISE или с помощью иных программных инструментов. Маршруты, основанные на EDIF и NGC/NGO, представляют интерес в том случае, если в ПЛИС выполняется устройство, приобретённое в виде IP-ядра. В такой проект невозможно внести несанкционированные изменения, или восстановить его схему, имея NGC-представление.

После указания и выбора всех параметров, нажимаем кнопку Next (Далее) и у нас появляется следующее окошко:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f84e2_30194f25_L

В данном диалоговом окне необходимо указать наименование микросхемы ПЛИС, которую мы будем использовать для проекта. В последствии, при необходимости, её тип можно будет изменить. В строке Synthesis Tool тип инструментов синтеза XST (VHDL/Verilog). В следующей строке Simulator программу для моделирования iSim (VHDL/Verilog) и затем язык описания аппаратуры (VHDL). Пример правильно заполненного этого окна, представлен выше. После заполнения всех параметров можно переходить к следующему окну, для этого, как и прежде нажимаем кнопку Next (Далее) и у нас появляется следующее финальное окошко:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f84e7_c4387ddd_L

Данное окно содержит форму отчёта, в которой обобщены исходные данные проекта. Вся эта информация будет сохранена в соответствующем текстовом файле, автоматически в каталоге проекта, для дальнейшего использования её. При необходимости что-то исправить, можно нажать кнопку Back и вернуться назад, к предыдущим формам для их исправления. После нажатия кнопки Finish в окне исходных модулей навигатора проекта появится название текущего проекта и тип выбранной микросхемы ПЛИС:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f84e8_bed268ef_L

Интерфейс пользователя имеет определённую комбинацию окон:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8510_b30eec74_L

Окно исходных модулей, то есть непосредственно навигатор проекта, окно документов, окно процессов (проектных процедур), которые могут быть выполнены для модуля, выбранного в окне навигатора проекта, окно консоли сообщений о ходе выполнения проектных процедур и их результатах.

В окне Design, на рисунке выше обозначено как навигатор проекта (исходные модули), мы можем просмотреть и при необходимости исправить свойства проекта. Для этого в данном окне выделяем строку с названием нашей микросхемы ПЛИС и нажав правую кнопку мыши вызываем меню свойств. В появившемся меню выбираем Design Properties:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8511_ae413d78_L

В результате чего откроется окно Design Properties в котором мы можем изменить свойства проекта:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f8575_9d2484e3_L

После изменения свойств или их просмотра, нажимаем кнопку Ок для завершения.

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

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_f85b1_48790f9b_L

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx Empty Немного о схемном вводе.

Сообщение  Viktor2312 Вс Июл 05 2015, 15:02

23
Немного потренируемся, так сказать практическое занятие.

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

Итак, у нас установлена САПР Xilinx ISE 14.4 и соответственно на рабочем столе имеется соответствующий значок для запуска САПР:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101744_c172cade_orig

Двойным нажатием левой кнопки мыши по данному значку, запускаем САПР Xilinx ISE 14.4 и у нас появится главное окно:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101745_cefc8d80_L

В левой части имеются четыре кнопки, находящиеся в поле Project commands:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10174b_d1af0d91_orig

Нам необходимо нажать кнопку New Project... для создания нового проекта. Все действия пока абсолютно идентичны тем, что и при создании любого проекта. После нажатия данной кнопки, появляется очередное окно, мастера создания нового проекта New Project Wizard:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10174c_5fabb95c_L

В данном окне нам необходимо в поле Name: указать имя проекта, у меня он будет называться pr2_spa_3A, обязательно только английскими буквами, также ниже при необходимости указать путь расположения на диске нашего проекта и в поле Top-level source type: выбрать пункт Schematic:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10174d_fdcb2d83_L

Именно в пункте Top-level source type: основное отличие от предыдущей практики по созданию нового проекта, выбрав Schematic верхний уровень в иерархии будет представлен в схемотехническом виде. Далее нажимаем кнопку Next и у нас появится очередное окно, в котором нужно будет выбрать семейство и конкретный тип микросхемы ПЛИС:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10174e_40ccc62_L

После выбора, нажимаем кнопку Next и в появившемся окне кнопку Finish

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10174f_6dd58326_L

И мы возвращаемся в главное окно, где слева мы видим название проекта и нашей микросхемы:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101750_2180041a_L

Теперь движемся далее. В меню нажимаем Project и в выпавшей вкладке выбираем New Source...

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101751_af99ff0b_L

Так же тоже самое действие можно произвести щёлкнув правой кнопкой по названию нашей микросхемы ПЛИС:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101752_8517d6bd_L

В результат появляется окно New Source Wizard, где нам необходимо будет выбрать пункт Schematic и указать название нашей схемы, я назову её также pr2_spa_3A, а также убедиться, что установлена галочка добавления файла к проекту (Add to project)

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101753_998e38d9_L

И нажимаем в нижней части нашего окна кнопку Next

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101754_9bef9e96_L

В результате чего появляется окно Summary где отображаются все наши выбранные настройки, нажимаем кнопку Finish

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101755_d39acc87_L

И через некоторое время видим, окно схемотехнического редактора:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101756_1012a7b4_L

Если не нравится белое рабочее поле, то его цвет можно сменить на чёрный, для этого в меню нужно выбрать пункт Edit и в выпавшей вкладке пункт Preferences

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101757_a656beab_L

После появления окна Preferences - Schematic Editor выбрать в правой части окна пункт Schematic Editor и в нём подпункт Colors

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101758_492af2ac_L

В этом окне в поле Color Scheme нужно выбрать пункт Black Background и для применения нажать кнопку Apply, затем Ok

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_101759_49fefc5e_L

В результате окно примет следующий вид:

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10175a_8cb5a38b_L

Теперь, если мы закроем схемный редактор и выйдем в основное меню, то в левой части мы увидим, что к нашему проекту добавился файл с расширением .sch

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10175b_aa5306b8_L

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

Итак, в левой нижней части окна имеется вкладка Symbols

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10175c_4aa1ce37_L

Перейдя на данную закладку, можно переносить на схему стандартные элементы

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10175d_55d80f9f_L

При помощи лупы можно увеличивать или уменьшать изображение

Изучаем VHDL и осваиваем ПЛИС фирмы Xilinx 0_10175e_7440561_L

...

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения