Кафедра "Обчислювальна техніка"
курсова робота
На тему: Основи мови 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, на початку моделювання змі...