47981 (Основы языка VHDL)

2016-07-30СтудИзба

Описание файла

Документ из архива "Основы языка VHDL", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47981"

Текст из документа "47981"

Кафедра "Вычислительная техника"

курсовая работа

На тему: Основы языка VHDL

Москва, 2009

Содержание

1.1 Введение

1.2 Идентификаторы в языке VHDL

1.3 Объекты языка VHDL

1.4 Типы данных

1.5 Операции языка VHDL

1.6 Последовательные операторы

1.7 Параллельные операторы

1.8 Описание интерфейса устройства

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

1.10 Особенности синтеза схем по описаниям на языке VHDL

Литература


1.1 Введение

Язык VHDL служит для описания модели цифрового устройства (прибора, системы). Описание на языке VHDL определяет внешние связи устройства (“вид снаружи” или интерфейс) и один или несколько “видов изнутри” (см. рис. 1.1). Вид снаружи задает интерфейс устройства, набор сигналов, которыми устройство обменивается с внешним миром. Этот вид описывает абстрактное представление устройства “в целом” и обозначается английским термином entity, что в дословном переводе означает «сущность» и наиболее точно отражает смысл представления. Однако в литературе термин «сущность» не нашел широкого распространения, для обозначения внешнего описания объекта используются термины «интерфейс объекта», «декларативная часть» и другие. В настоящем пособии будет использоваться термин «интерфейс объекта» или просто «интерфейс».

Рис. 1.1. Цифровое устройство и его модель

Вид изнутри определяет функциональные возможности устройства или его структуру. Внутреннее строение объекта определяет архитектура (architecture body).

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


1.2 Идентификаторы в языке VHDL

Идентификаторы - это последовательность букв и цифр произвольной длины. Легальными символами являются прописные (A…Z), строчные (a…z), цифры (0…9), знак подчеркивания. Первый символ должен быть буквой, а последний символ не может быть знаком подчеркивания. Строчные и прописные буквы считаются идентичными, например, Count, COUNT и CouNT рассматриваются как один идентификатор. Знаки подчеркивания не должны следовать друг за другом. Комментарии начинаются с двойного дефиса и следуют до конца строки, например,

- это комментарий, он продолжается до конца строки

- это продолжение комментария

entity UART is end -- это комментарий, который следует за декларацией интерфейса устройства.

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

Abs

Access

after

alias

All

And

architecture

array

begin

Block

Body

Buffer

case

component

Configu-ration

Constant

disconnect

downto

else

Elsif

End

Entity

file

for

function

generate

Generic

guarded

if

In

inout

Is

label

library

linkage

loop

Map

mod

nand

New

next

Nor

not

null

Of

on

Open

or

others

Out

package

Port

procedure

process

Range

record

Register

rem

select

severity

signal

Subtyupe

then

to

Transport

type

Units

until

use

vriable

wait

When

while

with

Xor

1.3 Объекты языка VHDL

Объекты это область хранения данных определенного типа. Создаются объекты посредством декларации объекта, например:

variable COUNT: INTEGER;

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

Объекты – данные могут быть трех классов:

- сonstant (константа) - может хранить отдельное значение определенного типа. Это значение присваивается объекту в начале моделирования и не может изменяться в процессе моделирования.

- variable (переменная) - объект этого класса может хранить отдельное значение определенного типа, однако, в процессе моделирования ему могут присваиваться различные значения. Для этого используются выражения присваивания (variable assignment statement).

- signal (сигнал) – объект данного класса имеет предыдущее значение, имеет текущее значение и набор последующих значений.

Объекты класса signal моделируют проводные соединения в схемах, в то время как переменные (variable) и константы (constant) используются для моделирования поведения схемы, они аналогичны объектам, используемым в языках программирования C и Pascal.

Декларация констант

Декларации объектов (object declaration) имеют целью дать имя объекту, объявить его тип, класс и даже присвоить значение. Примеры деклараций констант описаны ниже:

constant RISE_TIME: TIME := 10ns;

constant BUS_WIDTH: INTEGER := 8:

В первом случае объявляется объект RISE_TIME, который хранит значение типа TIME, объекту в начале моделирования присваивается величина 10 наносекунд. Во втором случае объявляется, что BUS_WIDTH (ширина шины) типа INTEGER (целое) и ей присвоено значение 8.

Декларация переменных

Примеры деклараций объектов класса variable приведены ниже:

variable CTRL_STATUS: BIT_VECTOR(10 downto 0);

variable SUM: INTEGER range 0 to 100 := 10;

variable FOUND, DONE: BOOLEAN;

В первом случае декларируется переменная CTRL_STATUS как массив из 11 элементов, причем, каждый элемент типа BIT. Во втором случае переменная SUM декларируется как целое, лежащее в диапазоне от 0 до 100, в начале моделирования переменной присваивается значение 10. Если переменной в начале моделирования не задано значение, то используется значение по умолчанию. Им служит самое “левое” значение в наборе значений данного типа. Например, переменная типа BOOLEAN имеет набор значений (FALSE, TRUE) и в третьем примере начальное значение переменных FOUND и DONE будет взято по умолчанию, т.е. FALSE.

Декларация сигналов

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

signal CLOCK: BIT;

signal DATA_BUS: BIT_VECTOR(0 to 7);

signal GATE_DELAY: TIME := 10 ns;

В первом примере декларируется объект CLOCK типа BIT, начальное значение при моделировании будет взято по умолчанию, т.е. 0 (набор значений типа BIT: 0,1 и крайнее левое значение 0).

Не все объекты в языке VHDL создаются путем декларирования, например, входные/выходные порты всегда считаются объектами класса signal.

1.4 Типы данных

Каждый объект в языке VHDL может хранить значения, относящиеся к определенному набору. Это множество значений декларируется с помощью объявления типа (type declaration). Тип – это имя, которое связывается с определенным набором значений и набором операций. Некоторые типы предопределены языком VHDL. Например, BOOLEAN имеет набор значений FALSE, TRUE и набор операторов: and, or, nor, nand, not. В языке имеется возможность создавать новые типы с использованием деклараций и задания набора операций.

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

- scalar (скалярные),

- composite (композитные) – они состоят из элементов одного типа (массивы) или различного типа (записи),

- access type (типы доступа) – обеспечивают доступ к данному типу через указатели,

- file types (тип – файл) – обеспечивает доступ к объектам, содержащим последовательности значений данного типа.

В свою очередь скалярные типы подразделяются на четыре вида:

-enumeration (перечислимый тип),

-integer (целый тип),

-physical(физический тип),

-floating point (тип “с плавающей запятой”).

Перечислимый тип

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

type MVL is ('U','0','1','Z);

type MICRO_OP is (LOAD, STORE, ADD, SUB, MUL, DIV);

MVL – перечислимый тип с упорядоченным набором значений: 'U', '0', '1', и 'Z'. MICRO_OP имеет набор значений: LOAD, STORE, ADD, SUB, MUL, DIV. Порядок записи значений в декларации определяет лексику, т.е. значение справа всегда больше значения слева: STORE

MUL is false. Значения в перечислимых типах имеют позиционный номер. Позиционный номер самого левого элемента 0. Значения в перечислимых типах еще называют enumeration literals (литералы перечислимого типа). Например, в декларации:

type CAR_STATE is (STOP, SLOW, MEDIUM, FAST);

литералами являются STOP, SLOW, MEDIUM, FAST и только они могут присваиваться переменной CAR_STATE.

Целый тип

Integer – целое, задает тип, набор значений которого находится в заданном целочисленном диапазоне, например:

type INDEX is range 0 to 15;

type WORD_LENGTH is range 31 downto 0;

subtype DATA_WORD is WORD_LENGTH range 15 downto 0;

type MY_WORD is range 4 to 6;

INDEX – это переменная целочисленного типа, набор значений которой размещен в диапазоне целых от 0 до 15. DATA_WORD – подтип WORLD_LENGTH в диапазоне от 15 до 0. В отличие от перечислимых в целочисленных типах позиционный номер равен величине значения, например, для значения 31 переменной WORD_LENGTH позиция равна 31.

Тип “с плавающей запятой”

Тип floating point обладает набором значений в заданном диапазоне вещественных чисел, например:

type TTL_VOLTAGE is range 1.4 to 5.5

type REAL_DATA is range 0.0 to 31.9;

Литералы типа floating point отличаются от целочисленных присутствием точки ( . ). В результате 0 – это целочисленный литерал, а 0.0 – это литерал типа с плавающей запятой.

Физический тип

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

type CURRENT is range 0 to 1 E9

units

nA; -- (base unit) nano-ampere

uA = 1000 nA; -- micro-ampere

mA = 1000 A; --milli-ampere

Amp = 1000 mA; -- ampere

end units;

subtype FILTER_CURRENT is CURRENT range 10 A to 5 mA;

Здесь CURRENT определен как физический тип, имеющий значения в диапазоне от 0 nA до 10^9 nA. Базовой единицей является наноАмпер, а все остальные являются производными. Позиционный номер значения равен числу базовых единиц, представленных данным значением, например, 2 A имеют позиционный номер 2000, в то время как 100 nA занимают позицию 100. Физический литерал записывается как целое, за которым следует название единицы измерения (пробел обязателен).

Тип “массив”

Объект типа array состоит из элементов одного типа. Ниже даны примеры массивов:

type ADDRESS_WORD is array (0 to 63) of BIT;

type DATA_WORD is array (7 downto 0) of MVL;

type ROM is array (0 to 125) of DATA_WORD;

ADDRESS_WORD – одноразмерный массив из 64 элементов типа BIT. DATA_WORD – одноразмерный массив из 8 элементов типа MVL. ROM – массив из 126 элементов типа DATA_WORD, т.е. в данном случае имеем дело с массивом массивов.

Доступ к элементам массива осуществляется с помощью индексов, например, ADDRESS_WORD(26) ссылается на 27-ой элемент массива ADDRESS_WORD.


1.5 Операции языка VHDL

В языке VHDL имеются операции следующих категорий:

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

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

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее