VLSI Tasarımı - VHDL Tanıtımı

VHDL, çok yüksek hızlı entegre devre donanım tanımlama dilini ifade eder. Veri akışı, davranışsal ve yapısal modelleme stiliyle dijital bir sistemi modellemek için kullanılan bir programlama dilidir. Bu dil ilk olarak 1981'de VHSIC programı kapsamında Savunma Bakanlığı (DoD) için tanıtıldı.

Bir Tasarımı Tanımlamak

VHDL'de bir varlık, bir donanım modülünü tanımlamak için kullanılır. Bir varlık şu şekilde tanımlanabilir:

  • Varlık beyanı
  • Architecture
  • Configuration
  • Paket beyanı
  • Paket gövdesi

Bakalım bunlar ne?

Varlık Beyanı

Bir donanım modülünün adlarını, giriş çıkış sinyallerini ve modlarını tanımlar.

Syntax -

entity entity_name is
   Port declaration;
end entity_name;

Bir varlık bildirimi 'varlık' ile başlamalı ve 'bitiş' anahtar kelimeleriyle bitmelidir. Yön, girdi, çıktı veya içe doğru olacaktır.

İçinde Bağlantı noktası okunabilir
Dışarı Bağlantı noktası yazılabilir
Giriş Port okunabilir ve yazılabilir
Tampon Port okunabilir ve yazılabilir, sadece bir kaynağı olabilir.

Architecture -

Mimari, yapısal, veri akışı, davranışsal veya karma stil kullanılarak tanımlanabilir.

Syntax -

architecture architecture_name of entity_name 
architecture_declarative_part;

begin
   Statements;
end architecture_name;

Burada, mimari gövdeyi yazdığımız varlık adını belirtmeliyiz. Mimari ifadeler 'begin' ve 'énd' anahtar kelimesinin içinde olmalıdır. Mimari bildirime dayalı kısım değişkenler, sabitler veya bileşen bildirimi içerebilir.

Veri Akışı Modellemesi

Bu modelleme stilinde, varlık boyunca veri akışı eşzamanlı (paralel) sinyal kullanılarak ifade edilir. VHDL'deki eşzamanlı ifadeler WHEN ve GENERATE şeklindedir.

Bunların yanı sıra, kod oluşturmak için yalnızca operatörleri (AND, NOT, +, *, sll, vb.) Kullanan atamalar da kullanılabilir.

Son olarak, BLOCK adı verilen özel bir tür atama da bu tür bir kodda kullanılabilir.

Eşzamanlı kodda aşağıdakiler kullanılabilir -

  • Operators
  • WHEN ifadesi (WHEN / ELSE veya WITH / SELECT / WHEN);
  • GENERATE ifadesi;
  • BLOCK ifadesi

Davranışsal Modelleme

Bu modelleme stilinde, bir varlığın davranışları bir dizi ifade olarak belirtilen sırada sırayla yürütülür. Yalnızca bir PROCESS, FUNCTION veya PROCEDURE içine yerleştirilen ifadeler sıralıdır.

SÜREÇLER, FONKSİYONLAR ve PROSEDÜRLER kodun sıralı olarak çalıştırılan tek bölümleridir.

Bununla birlikte, bir bütün olarak, bu bloklardan herhangi biri, onun dışına yerleştirilen diğer ifadelerle hala eşzamanlıdır.

Davranış kodunun önemli bir yönü, sıralı mantıkla sınırlı olmamasıdır. Aslında onunla, sıralı devrelerin yanı sıra kombinasyonel devreler de inşa edebiliriz.

Davranış ifadeleri IF, WAIT, CASE ve LOOP şeklindedir. DEĞİŞKENLER de sınırlıdır ve yalnızca sıralı kodda kullanılmaları beklenir. DEĞİŞKEN hiçbir zaman küresel olamaz, bu nedenle değeri doğrudan aktarılamaz.

Yapısal Modelleme

Bu modellemede bir varlık, birbirine bağlı bir dizi bileşen olarak tanımlanmaktadır. Bileşen somutlaştırma ifadesi eşzamanlı bir ifadedir. Bu nedenle, bu ifadelerin sırası önemli değildir. Yapısal modelleme tarzı, bileşenlerin kendilerinin veya toplu olarak temsil ettikleri varlığın herhangi bir davranışını ima etmeden, yalnızca bileşenlerin (kara kutular olarak görülen) bir ara bağlantısını tanımlar.

Yapısal modellemede, mimari yapı iki bölümden oluşur - bildirim bölümü (anahtar sözcük başlamadan önce) ve ifade bölümü (anahtar sözcük başladıktan sonra).

Mantık İşlemi - AND GATE

X Y Z
0 0 0
0 1 0
1 0 0
1 1 1

VHDL Code:
Library ieee;
use ieee.std_logic_1164.all;

entity and1 is
   port(x,y:in bit ; z:out bit);
end and1;

architecture virat of and1 is
begin
   z<=x and y; 
end virat;

Dalga biçimleri

Mantık İşlemi - OR Kapısı

X Y Z
0 0 0
0 1 1
1 0 1
1 1 1

VHDL Code: 
Library ieee; 
use ieee.std_logic_1164.all;  

entity or1 is
   port(x,y:in bit ; z:out bit); 
end or1; 
 
architecture virat of or1 is
begin
   z<=x or y; 
end virat;

Dalga biçimleri

Mantık İşlemi - Kapı DEĞİL

X Y
0 1
1 0

VHDL Code:
  
Library ieee; 
use ieee.std_logic_1164.all; 
 
entity not1 is
   port(x:in bit ; y:out bit); 
end not1; 
 
architecture virat of not1 is
begin
   y<=not x;
end virat;

Dalga biçimleri

Mantık İşlemi - NAND Kapısı

X Y z
0 0 1
0 1 1
1 0 1
1 1 0

VHDL Code:
  
Library ieee; 
use ieee.std_logic_1164.all; 

entity nand1 is
   port(a,b:in bit ; c:out bit); 
end nand1; 
 
architecture virat of nand1 is
begin
   c<=a nand b; 
end virat;

Dalga biçimleri

Mantık İşlemi - NOR Kapısı

X Y z
0 0 1
0 1 0
1 0 0
1 1 0

VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all; 
 
entity nor1 is
   port(a,b:in bit ; c:out bit); 
end nor1; 
 
architecture virat of nor1 is
begin
   c<=a nor b;
end virat;

Dalga biçimleri

Mantık İşlemi - XOR Kapısı

X Y Z
0 0 1
0 1 1
1 0 1
1 1 0

VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all;
  
entity xor1 is
   port(a,b:in bit ; c:out bit); 
end xor1;
  
architecture virat of xor1 is
begin
   c<=a xor b; 
end virat;

Dalga biçimleri

Mantık İşlemi - X-NOR Kapısı

X Y Z
0 0 1
0 1 1
1 0 1
1 1 0

VHDL Code: 
 
Library ieee; 
use ieee.std_logic_1164.all; 

entity xnor1 is
   port(a,b:in bit ; c:out bit); 
end xnor1; 
 
architecture virat of xnor1 is
begin
   c<=not(a xor b); 
end virat;

Dalga biçimleri