23 Temmuz 2013 Salı

VHDL PROGRAMLAMA

FOR DÖNGÜSÜ

Bu makalede size VHDL Programlamada for döngüsünden bahsedeceğiz...




For Döngüsü 
Sıralı Bildirimi---- ---- Kullanılan>Süreç
Fonksiyon
Prosedür

Sözdizimi
  optional_label: for döngüsü aralık parametreler
  sıralı ifadeler
 end döngü etiket;



Kurallar ve Örnekler

For Döngüsü belirtilen aralık türüne alır bir döngü parametresi tanımlar. Örneğin, aralık 0 ila 3 bir tamsayı anlamına gelir:
  
process (A)
begin
 Z <= "0000";
 for I in o to 3 döngü
  if (A = I) then
   Z(I) <= '1';
  end if;
 end loop;
end process;

Bu 'yüksek,' düşük ve 'aralığı olarak özellikler de for döngüsünde bir bir yineleme tanımlamak için kullanılabilir:
process (A)#
 variable TMP : std_ulogic;
begin
 TMP := '0';
 for I in A'low to A'high döngü
  TMP := TMP xor A(I);
 end loop;
 ODD <= TMP;
end process;


Aralığı bir sayısı sabit tür örneğin, herhangi bir ayrık aralığı olabilir:
  tipi İLKÖĞRETİM (KIRMIZI, YEŞİL, MAVİ) 'dir;
 tipi RENK tamsayı aralığı 0 ile 255 DİZİ (İLKÖĞRETİM) 'dir;
 - Diğer ifadeleri
 MUX: süreci
 begin
 for SEL in PRIMARY loop
  V_BUS <= VIDEO(SEL);
  wait for 10 ns;
 end loop;
end process MUX;;

Döngü parametresi ilan edilmesi gerekmez: dolaylı olarak döngü içinde ilan edilir. Bu döngü içinde değiştirilemez:
 
for I in 1 to 10 loop
 if (REPEAT = '1') then
  I := I-1; -- Illegal
 end if;
end loop;


Sentez Sorunlar
For döngüsü sağlayan sentezi için desteklenir:
  1. Döngü aralığı (yani yineleme belirli sayıda ima) statik ve
  2. Döngü hayır bekle ifadeleri içerir.

18 Temmuz 2013 Perşembe

VHDL İF-ELSE KOMUTU

VHDL İF-ELSE KOMUTU



Bu makalede sizlere Vhdl programlama dilinde İf-Else kontrol yapılarından bahsedeceğim


İF-ELSE


Tanım:


Açıklamada, bir veya daha fazla ilgili koşulların değerine bağlı olarak yürütme bir veya durdurur.

Tanımlama

VHDL İF-ELSE KOMUTU
If diğer sıralı tabloların koşullu yürütme kontrol eder. En az bir Boole durumda (eğer anahtar sözcüğünden sonra belirtilen) içerir. Kalan koşulları else-if maddesi ile belirlenir. Başka madde daha sonra else-if doğru olarak kabul edilir. Bunlardan herhangi bir gerçek olarak döner veya kontrol edilmesi için daha fazla koşullar vardır.
Koşulları kadar  tek tek değerlendirilir. Bir durumdur sonra doğru olduğunda o fıkra sonra belirtilen tabloların dizisi yürütülür. Hiçbir koşul o zaman kontrol if sonra bir sonraki açıklamaya geçirilir.
Açıklamada sık sık else-if ne de başka bir madde de (örneğin 1) destekliyorsa,-daha sonra açıklamada, adlı bir basitleştirilmiş şeklinde kullanılabilir eğer.
Bir durum toplantı, bazı ifadeler yürütülecek neden gerektiğini, ancak yerine başka eylemler yapılmalıdır bu durumda, başka bir madde (örneğin 2) kullanılır.
Farklı iç içe koşullar (örneğin 3) kontrol edilmesi olduğunda else-if madde kullanılır. Bu öncelik koşulları ve sinyaller için de kullanılabilir.
If ifadeleri (örneğin 4) iç içe olabilir.



Örnekler

Örnek 1
I1: if Status_Signal = hold
      then A1: Outputs <= 'X';
    end if I1;


Atama durumu Status_Signal = beklemeye doğrudur sadece gerçekleştirilecektir. Aksi takdirde, son izleyen deyim I1 idam edilecektir.
Örnek 2

function
 AND_FUNC (x, y: in Bit) return Bit is
begin
  I2: if x = '1' and y = '1'
        then return '1';
      else return '0';
      end if I2;
end 
AND_FUNC;

Değişkenler x ve y hem '1 eşit olduğunda ', işlev değeri '1 döner'. Aksi takdirde, '0 'döndürülür.
Örnek 3

Signal Code_of_Operation : Bit_Vector(1 downto 0);I3: if Code_of_Operation(1) = '1'
      then F := Operand_1 + Operand_2;
    elsif Code_of_Operation(0) = '1'
      then F := Operand_1 - Operand_2;
      else F := "00000000";
    end if I3;

Bu örnekte, Code_of_Operation en bit sayısı 1 bit sayısı 0 daha yüksek bir önceliğe sahiptir. Bit sayısı 1 '1 'bir değere sahip olduğunda, o zaman iki işlenen eklenir. Eğer değilse (yani '0 '), sonra bit sayısı 0 kontrol edilir. Bu '1 'ise, o zaman iki işlenen çıkarılır. Aksi takdirde, Code_of_Operation iki bit '0 'olduğu zaman, F sinyali tamamen sıfırlı atanır.
Örnek 4
if Status = RUN
  then
    if Code_of_Operation = CONC
      then
        F := Operand_1 & Operand_2 ;
      else
        F := "00000000";
    end if;
  Output_1 <= F;  
end if
;

Ifadeler eğer Yerleştirme yasal, ancak deyimi seviyeleri karıştırmamak için dikkatli olmalıdır.

Önemli Notlar

  • If ifadeleri ile en tipik hatalardan biri deyimi sonunda, end if ve if boşluk atlamak ve endif olarak yazmaktadır.
  • if bir mimari eş zamanlı ifadeler bölümünde kullanılamaz sıralı bir ifadedir. Bir sinyal için yeni bir değer atama belirli bir durumu etkilenir gerekiyorsa, o zaman bir koşullu sinyal ataması (sırayla süreç veprosedürler içinde kullanılamaz olan) kullanılmalıdır.





2 Temmuz 2013 Salı

VHDL ÖRNEKLERİ

VHDL ÖRNEKLERİ


Bu makalemde size Vhdl programlama dilinde If, Case, When With ile hazırladığımız örnke kod bloklarını paylaşacağız.Kolay gele..



VHDL ÖRNEKLERİ


 - ================================================ =============================
 - Dosya adı: mux4_1.vhd (mux = çoklayıcı)
 - Yazar: Hedef Ozel Ders
 - Oluşturulma: 00.04.10 son değişiklik: 00.04.13
 - ================================================ =============================
 - Bu gibi fonksiyonu ile 4 giriş çoklayıcı olduğunu:
 - Sel Giriş => çıkış yorumlar
 - MSB LSB
 - 0 0 In0 => çıkış
 - 0 1 1 arada => çıkış
 - 1 0 in2 => çıkış
 - 1 1 in3 => çıkış
 -
 --------
 - IF ve CASE sadece bir süreç içinde kullanılabilir.
 - ZAMAN ve İLE sadece bir süreç dışında kullanılabilir.
 -
 - ZAMAN karşılık IF
 - İLE için OLGU correpsonds
 - ================================================ =============================

 KÜTÜPHANE IEEE;
 Ieee.std_logic_1164 KULLANIM TÜM; -. Kullanılan araç bağımlı farklı olabilir.
 Ieee.std_logic_unsigned KULLANIM TÜM; -. Kullanılan araç bağımlı farklı olabilir.

 ENTITY mux4_1 IS
    PORT (s0: STD_LOGIC IN;
          s1: STD_LOGIC IN;
          In0: STD_LOGIC IN;
          in1: STD_LOGIC IN;
          in2: STD_LOGIC IN;
          in3: STD_LOGIC IN;
          çıkışı: OUT STD_LOGIC
         );
 END mux4_1;
 - ================================================ =============================
 - ================================================ =============================
 Mux4_1 MİMARLIK if_example IS

 - ================================================ =============================
 BEGIN 

 mux: SÜRECİ (s0, s1, In0, in1, in2, in3)
 BEGIN

   (S0 = '0 'VE s1 = '0') THEN
     çıkışı <= In0;
   ELSIF (s0 = '1 'AND s1 = '0') SONRA
     çıkışı <= 1 arada;
   ELSIF (s0 = '0 'VE s1 = '1') SONRA
     çıkışı <= in2;
   ELSIF (s0 = '1 'AND s1 = '1') SONRA
     çıkışı <= in3;
   BAŞKA - (s0 veya s1 0 veya 1 değil)
     çıkışı <= 'X';
   IF END;

 SÜREÇ mux END;

 END if_example;

 - ================================================ =============================
 - ================================================ =============================
 Mux4_1 MİMARLIK case_example IS

 - ================================================ =============================
 BEGIN 

 mux: SÜRECİ (s0, s1, In0, in1, in2, in3)
   DEĞİŞKEN sel: STD_LOGIC_VECTOR (1 0 DOWNTO);
 BEGIN
   sel: = s1 ve s0; - birleştirmek s1 ve s0

   OLGU sel IS
     ZAMAN "00" => çıkışı <= In0;
     ZAMAN "01" => çıkışı <= 1 arada;
     ZAMAN "10" => çıkışı <= in2;
     ZAMAN "11" => çıkışı <= in3;
     NE ZAMAN DİĞER => çıkışı <= 'X';
   END OLGU;

 SÜREÇ mux END;
  
 END case_example;

 - ================================================ ============================= 
  - ================================================ ============================= 
  Mux4_1 MİMARLIK with_example IS

 SİNYAL sel: STD_LOGIC_VECTOR (1 0 DOWNTO);
 - ================================================ =============================
 BEGIN 
   sel <= s1 ve s0; - birleştirmek s1 ve s0
   Sel SEÇİMİ İLE
     çıkışı <= In0 ZAMAN "00",
               in1 ZAMAN "01",
               in2 ZAMAN "10",
               in3 "11",
               'X' ZAMAN DİĞER;
     
 END with_example;

 - ================================================ ============================= 
  - ================================================ ============================= 
  Mux4_1 MİMARLIK when_example IS

 - ================================================ =============================
 BEGIN 

     <= In0 (s1 ve s0) = "00" ELSE çıktı
               (s1 ve s0) = "01" ELSE in1
               in2 ZAMAN BAŞKA (s1 ve s0) = "10"
               (s1 ve s0) = "11" ELSE in3
               'X';
     
 END when_example;











21 Haziran 2013 Cuma

VHDL NEDİR

VHDL NEDİR

Bugün ki yazımızda size VHDL hakkında bir kaç kısa bilgi aktaracağım.


VHDL NEDİR


VHDL ( VHSIC Donanım Tanımlama Dili ) bir olan donanım tanımlama dili kullanılan elektronik tasarım otomasyonu tanımlamak için dijital ve karışık-sinyal gibi sistemleri alan programlanabilir kapı dizileri ve entegre devreler . VHDL ayrıca, genel amaçlı paralel bir programlama dili olarak kullanılabilir.

Tarih 

VHDL ABD Savunma Bakanlığı davranışını belgelemek için ASIC tedarikçi firmalar ekipmanları da dahil olmak üzere araştırmak için geliştirilmiştir.Bu dokümandaki bilgilerden ASIC simüle etmek mümkün olma fikri o kadar açıkça çekici mantık simülatörleri VHDL dosyaları okuyabilir halde geliştirilmiştir. Bir sonraki adımda mantık sentezi gelişmesi oldu.

Ada dayalı olması kadar sözdizimi mümkün gerektiren Savunma Bakanlığından dolayı, Ada gelişiminde zaten iyice  test edilmiştir yeniden icat kavramlarını önlemek için VHDL gelen ağır ödünç Ada programlama dili kavram ve hem de sözdizimi Için tasarlanmıştır,İlk sürümü IEEE standart 1076-1987 , sayısal (dahil olmak üzere veri türleri geniş bir yelpazede, dahil tamsayıve gerçek ), mantıksal ( bit ve boolean ), karakter ve zaman , artı diziler bir bit olarak adlandırılan bit_vector ve karakter adı verilen dize .
Bu sürümü tarafından çözülmüş bir sorun değil, ancak, bir sinyal sürücü gücü (yok, zayıf veya güçlü) ve bilinmeyen değerleri de kabul edebilir "çok değerli mantık", oldu. Bu gerekli IEEE standardı 1.164 skaler: 9-değeri mantık türleri tanımlanmış, std_logic ve vektör sürümü STD_LOGIC_VECTOR .
Güncellenmiş IEEE 1.076 , 1993 yılında, adlandırma daha fazla esneklik izin, sözdizimi daha tutarlı yapılan genişletilmiş karakter ISO-8859-1 basılabilir karakterler izin tipi, katma xnor operatörü, vb operatörleri.
Standardında küçük değişiklikler (2000 ve 2002) korumalı tip fikri eklendi (sınıf kavramına benzer C + +) ve port haritalama kurallardan bazı kısıtlamalar kaldırıldı.
IEEE standardı 1164 olarak ek olarak, birçok çocuk standartları dilin işlevselliğini genişletmesi tanıtıldı. IEEE standart 1076,2 gerçek ve karmaşık veri türleri daha iyi taşıma ekledi. IEEE standart 1076,3 tanıtıldı imzalı ve imzasız vektörler üzerinde aritmetik işlemleri kolaylaştırmak için türleri. IEEE standart 1076,1 (olarak bilinen VHDL-AMS ) analog ve karışık sinyal devre tasarımı uzantıları sağladı.
Diğer bazı standartlar VHDL daha geniş kullanımı, özellikle HAYATİ (ASIC Kütüphaneler Doğru VHDL Girişimi) ve destek mikrodalgadevre tasarımı uzantılarıdır.
Haziran 2006'da, bir VHDL Teknik Komitesi Accellera (standart bir sonraki güncelleme üzerinde çalışmaya IEEE tarafından delege) bu yüzden VHDL-2006 Taslak 3.0 adı verilen onaylanmıştır. Eski sürümleri ile tam uyumluluk korurken, bu önerilen standart daha kolay yazma ve VHDL kodu yönetmek yapmak çok sayıda uzantıları sağlar. Önemli değişiklikler çocuk standartlarına dahil edilmesi (1164, 1076,2, 1076,3) ana 1.076 standart haline, operatörlerin uzun bir dizi, daha esnek sözdizimi içerir durumda ve oluşturmak ifadeleri, VHPI dahil edilmesi (arayüzüne C / C + + dilleri) ve bir alt kümesi PSL ( İşletme Özellikleri Dil ). Bu değişiklikler sentezlenebilir VHDL kod kalitesini artırmak gerektiğini, testbenches daha esnek yapmak ve sistem düzeyinde açıklamalar için VHDL daha geniş kullanımına izin verir.
2008 yılı Şubat ayında, Accellera VHDL 4.0 da gayri resmi sürüm 3.0 için deneme süresi boyunca tespit 90'dan fazla sorunları ele ve geliştirilmiş genel türleri içerir VHDL 2008 olarak bilinen onayladı. 2008 yılında, Accellera IEEE 1076-2008 eklenmek üzere gizli oylama için IEEE VHDL 4.0 yayındı. VHDL standardı IEEE 1076-2008 Ocak 2009'da yayınlanmıştır.

Tasarım 

VHDL yaygın olarak, bir mantık devresini tarif metin modelleri yazmak için kullanılır. Böyle bir model, bu mantık tasarımının bir parçası olduğu takdirde, bir sentez programı tarafından işlenmektedir. Bir simülasyon programı tasarım arayüzü mantık devreleri temsil etmek için simülasyon modelleri kullanarak mantık tasarımı test etmek için kullanılır. Simülasyon modelleri Bu koleksiyona  genellikle testbench denir.

VHDL işlemek için yapıları vardır paralellik donanım tasarımları doğasında, ancak bu yapıları ( süreçler ) Ada (içinde paralel yapıları gelen sözdizimi farklı görevleri ). Ada gibi, VHDL olduğunu kesinlikle yazılı ve bir küçük harfe duyarlı değildir . Doğrudan donanım yaygındır işlemleri temsil etmek için, bu da dahil olmak üzere Boole operatörleriyle uzun bir dizi olarak Ada bulunmayan VHDL birçok özelliği vardır NAND ve ne de . VHDL de diziler her iki yönde artan veya azalan endeksli izin verir; hem kongre donanım kullanılır, Ada ve en programlama dilleri sadece artan indeksleme kullanılabilir ise.
VHDL dosya giriş ve çıkış yetenekleri vardır, ve metin işleme için genel amaçlı bir dil olarak kullanılabilir, ancak dosyaları daha sık uyaran veya doğrulama verileri için bir simülasyon testbench tarafından kullanılmaktadır. Çalıştırılabilir ikili inşa bazı VHDL derleyiciler vardır. Bu durumda, bir yazmak için VHDL kullanmak mümkün olabilir testbench , uyaranlara tanımlamak için kullanıcı ile etkileşim ve beklenen olanlar ile karşılaştırılması için ana bilgisayarda dosya kullanarak tasarım işlevselliğini doğrulamak için. Ancak, çoğu tasarımcılar simülatörü için bu işi bırakın.
Bu başarıyla simüle ama gerçek bir cihaza sentez olamaz, yada pratik olması çok büyük kod üretmek için deneyimsiz bir geliştirici için nispeten kolaydır. Sıkan özellikle birinin yanlışlıkla üretim şeffaf mandalları yerine D-tipi flip-flop depolama elemanları olarak. 
Bir üretmek için VHDL IDE (örneğin Xilinx ISE, Altera Quartus, Synopsys Synplify veya Mentor Graphics HDL Tasarımcı olarak FPGA için) donanım tasarlayabilirsiniz RTL istenen devre şematiktir. Bundan sonra, oluşturulan şematik uygun Testbench oluşturduktan sonra giriş ve devrenin çıkış dalga biçimlerini göstermektedir simülasyon programı kullanılarak doğrulanabilir. Belirli bir devre veya VHDL kodu için uygun bir testbench oluşturmak için, girişleri doğru tanımlanmalıdır. Örneğin, saat girişi, bir döngü işlem veya tekrarlanan bir açıklama için gereklidir. 
Son bir nokta, bir VHDL modeli böyle bir gibi bir programlanabilir mantıksal aygıt üzerine eşleştirilir "kapıları ve teller" tercüme zaman olmasıdır CPLD veya FPGA , o zaman gerçek donanım yapılandırılmış olan, yerine VHDL kodu "idam ediliyor "gibi bir işlemci çipi çeşit üzerinde eğer.

Avantajları 

Sistem tasarımı için kullanılan VHDL, en önemli avantajı, sentez araçları gerçek donanım (kapılar ve telleri) içine tasarım çevirmek önce gerekli sistem davranışını tarif (modellenmiş) ve (taklit) doğrulanması için izin vermektedir.

Başka bir yararı VHDL açıklamasını izin vermektedir eşzamanlı sistemi . VHDL bir olan veri akışı dil tüm sırayla çalıştırmak usul gibi BASIC, C gibi bilgisayar dilleri, ve montaj kodu, her seferinde bir talimat aksine,.
Bir VHDL proje çok amaçlı. Bir kez oluşturulan, bir hesaplama blok birçok diğer projelerde kullanılabilir. Ancak, birçok oluşum ve fonksiyonel blok parametreleri (kapasite parametreleri, bellek boyutu, taban eleman, blok bileşimi ve ara bağlantı yapısı) ayarlanmış olabilir.
Bir VHDL proje taşınabilir. Bir eleman temel için oluşturulan, bir bilgisayar cihazı proje çeşitli teknolojiler ile örneğin VLSI için, başka bir unsuru baz olarak taşıdık olabilir.

Dezavantajları 

Analog desteği (aka VHDL-AMS) ve Verilog-AMS olarak entegre değildir, bir sürü iş kullanıcıların elinde kalır, bu nedenle.



Tasarım örnekleri 





VHDL de, bir tasarımı, en az oluşur varlık arayüzü ve bir tarif mimarisi gerçek uygulama içerir. Buna ek olarak, en tasarımları kitaplık modülleri alın. Bazı tasarımlar aynı zamanda birden fazla mimarileri ve içerir yapılandırmaları .
Basit bir VE kapısı VHDL gibi görünecektir
- (Bu bir VHDL yorumdur)
 
- IEEE kütüphane ithalat std_logic 
kütüphane  IEEE ; 
kullanımı  IEEE . std_mantık_1164 . tüm ;
 
- Bu varlıktır 
varlık ANDGATE olan 
  port  (  
    I1 :  in  std_logic , 
    I2 :  in  std_logic ; 
    O   :  dışarı  std_logic ) ; 
sonunda  varlık ANDGATE ;
 
- Bu mimari 
mimari RTL bir ANDGATE edilir 
başlamak 
  O <= I1 ve I2 ; 
sonunda  mimarisi RTL ;
(Not bu RTL için standları Kayıt transferi seviyesi tasarımı.) Yukarıdaki örnekte HDL yeni başlayanlar için ayrıntılı görünse de, birçok yerinde ya isteğe bağlı ya da sadece bir kez yazılması gerekir. Bu gibi genellikle basit işlevleri yerine kadar basit bir şey için ayrı bir modül olan daha büyük bir davranış modülünün bir parçasıdır. Ayrıca, gibi unsurların kullanımı std_logic tür ilk başta bir overkill gibi görünüyor olabilir. Bir kolayca yerleşik kullanabilirsiniz biraz tipi ve başlangıçta kütüphane ithalatından kaçının. Ancak, bu kullanarak 9-değerli mantık ( U , X , 0 , 1 , Z , W , H , L , - ) yerine basit bit (0,1) şu anda yapan tasarımcı için çok güçlü bir simülasyon ve hata ayıklama aracı sunuyor diğer HDL mevcut değildir.
Takip örneklerde, VHDL kodu bir çok kompakt şeklinde yazılabilir göreceksiniz. Ancak, deneyimli tasarımcılar genellikle bu kompakt formları önlemek ve okunabilirliği ve bakımı uğruna daha ayrıntılı kodlama stili kullanabilirsiniz. Ayrıntılı kodlama tarzı bir diğer avantajı böyle bir CPLD gibi bir Programlanabilir Mantık Cihaz programlama kullanılan kaynakların küçük bir miktardır.

Sentezlenebilir yapıları ve VHDL şablonları 

Elektronik tasarımları ve bu tür tasarımlar sentezi simülasyon: VHDL sık sık iki farklı amaçlar için kullanılır. Sentez bir VHDL böyle bir FPGA veya ASIC gibi bir uygulama teknoloji derlenmiş ve eşlenen bir süreçtir. Birçok FPGA satıcıları ASIC araçları genellikle çok pahalı fişlerini, kullanmak için VHDL sentezlemek için ücretsiz (veya ucuz) araçları vardır.

VHDL içinde değil bütün bileşenleri sentezi için uygundur. Örneğin, çoğu yapıları bu gibi zamanlama ile açıkça anlaşma 10 ns bekleyin; simülasyonu için geçerli olmasına rağmen sentezlenebilir değildir. Farklı sentez araçları farklı yetenekleri var ise, ortak bir var var sentezlenebilir alt birçok sentez araçları için ortak donanım içine hangi dili yapıları ve deyimler haritası tanımlar VHDL. IEEE 1076,6 resmi sentezi alt kümesi olarak kabul edilir dilin bir alt kümesini tanımlar. Genellikle sonuçlar standart olmayan yapıları için yanlış veya idare eder olabilir gibi sentezi için çok deyimsel kod yazmak için bir "en iyi uygulama" olarak kabul edilir.

MUX şablonu 

Çoklayıcı , ya da genellikle denir olarak 'MUX', donanım tasarımı çok yaygın basit bir yapıdır. Aşağıdaki örnek girişi ile basit bir 2-1 MUX gösterir A ve B , seçici S ve çıkış X . VHDL aynı MUX ifade etmek için birçok yolu olduğunu unutmayın.

X <= A zaman S = ' 1 ' başka bir B ;

Mandal şablonu 




Bir şeffaf mandalı bir enable sinyali ortaya çıkar güncellenir bellek temelde bir parçasıdır. Yine, bu VHDL ifade edilebilir birçok yolu vardır.
- Mandalı şablonu 1: 
Q <= D zaman Enable = ' 1 ' başka Q ;
 
- Mandalı şablonu 2: 
işlem ( D, Enable ) 
başlar 
  eğer Enable = ' 1 ' sonra 
    Q <= D , 
  sonunda  ise , 
son  işlem ;

D-tipi flip-flop 


D-tipi flip-flop örnekleri bir saat (ya da düşen) yükselen kenarında gelen sinyal. Bu örnek bir asenkron, aktif-yüksek sıfırlama ve yükselen saat kenarında örnekleri vardır.
DFF :  süreci ( RST, CLK ) 
başlar 
  eğer RST = ' 1 ' sonra 
    Q <= ' 0 ' ; 
  elsif RISING_EDGE ( CLK )  sonra 
    Q <= D , 
  sonunda  ise , 
son  işlem DFF ;
VHDL de kenarla tetiklenen davranış yazmak için başka bir yaygın yolu 'olay' sinyal özelliği ile. Tek bir kesme işareti sinyal adı ve niteliğin adını arasında yazılı olması gerekir.
DFF :  süreci ( RST, CLK ) 
başlar 
  eğer RST = ' 1 ' sonra 
    Q <= ' 0 ' ; 
  elsif CLK 'olayı  ve CLK = ' 1 ' sonra 
    Q <= D , 
  sonunda  ise , 
son  işlem DFF ;

Örnek: bir karşı 


Aşağıdaki örnek, senkronize sıfırlama, paralel yük ve yapılandırılabilir genişliği ile bir up-counter. Bu 'imzasız' tipi, 'imzasız' ve 'STD_LOGIC_VECTOR' ve VHDL türleri arasında dönüşüm kullanımını gösterir jenerik . Jenerik çok gibi diğer geleneksel programlama dillerinde bağımsız değişken veya şablonları yakın C + +.
kütüphane  IEEE ; 
kullanımı  IEEE . std_mantık_1164 . tüm ; 
kullanmak  IEEE . numeric_std . tüm ;     - imzasız türü için
 
entity COUNTER is
  generic (
    WIDTH : in natural := 32);
  port (
    RST   : in std_logic;
    CLK   : in std_logic;
    LOAD  : in std_logic;
    DATA  : in std_logic_vector(WIDTH-1 downto 0);
    Q     : out std_logic_vector(WIDTH-1 downto 0));
end entity COUNTER;
 
mimari RTL bir SAYAÇ olan 
  sinyal CNT :  işaretsiz ( EN - 1  downto  0 ) ; 
başlar 
  süreci ( RST, tipi imzasız dönüştürülür başka 
        CNT <= CNT + 1 , sonunda ise , sonunda ise , son işlem ; 
  
      
     
        
       
       
     
   
 
  Q <=  STD_LOGIC_VECTOR ( CNT ) ,  - tipi STD_LOGIC_VECTOR geri dönüştürülür 
 mimarisi RTL ;
Içinde / sonra / else if deyimleri daha karmaşık sayaçları ekleyebilirsiniz RISING_EDGE (CLK) elsif bu sayısı Bakım olmalıdır vb, Terminal sayım sinyalleri gibi çıkış sinyalleri üreten, bazı sayım değeri at üzerinde durdurma veya haddeleme, sağlar gibi diğer işlevleri, eklemek için İstenen öncelikleri üretmek ve gerekli mantık seviyeleri sayısını en aza indirmek için, birlikte kullanılan bu tür kontrollerin sipariş ve iç içe ile çekilen.

Simülasyon-sadece yapıları


VHDL büyük bir alt donanım tercüme edilemez. Bu alt olmayan sentezlenebilir veya VHDL simülasyon-sadece alt olarak bilinir ve sadece prototip, simülasyon ve hata ayıklama için kullanılabilir. Örneğin, aşağıdaki kod, 50 MHz frekans ile bir saat oluşturur. Bu, örneğin, bir tasarım simülasyonu sırasında bir saat girişi sürmek için kullanılabilir. Bu, ancak, bir simülasyon-sadece inşa ve donanım uygulanan olamaz. Gerçek donanım, saat dışarıdan oluşturulur, bu kullanıcı mantık veya özel donanım tarafından dahili olarak küçültülmüş olabilir.
süreç 
başlar 
  CLK <= ' 1 ' ;  beklemek  için  10 NS ; 
  CLK <= ' 0 ' ;  beklemek  için  10 NS , 
son  süreci ;
Simülasyon-yapıları sadece çok kısa bir süre içinde karmaşık bir dalga oluşturmak için de kullanılabilir. Bu tür dalga formu, örneğin bir karmaşık bir tasarım için test vektörü olarak ya da gelecekte uygulanacak bir birleştirici mantık bir prototip olarak, kullanılabilir.
işleme 
başlamadan 
  beklemek  kadar BAŞLANGIÇ = ' 1 ' ;  - START yüksek olana kadar bekleyin
 
  için i içinde  1  ile  10  döngü  - sonra birkaç saat süre bekleyin ... 
    bekleyin  kadar RISING_EDGE ( CLK ) , 
  sonunda  döngü ;
 
  için i içinde  1  ile  10  döngü          - yazma 1'den 10'a kadar sayıların DATA, 1 her döngüsü 
    VERİ <= to_unsigned ( i, 8 ) ; 
    beklemek  kadar RISING_EDGE ( CLK ) , 
  sonunda  döngü ;
 
  - Çıktı değişene kadar bekleyin 
  bekleyin  üzerinde SONUÇ ;
 
  - Şimdi saat süreyle ACK yükseltmek 
  ACK <= ' 1 ' ; 
  bekleme  kadar RISING_EDGE ( CLK ) ; 
  ACK <= ' 0 ' ;
 
 
  - Ve benzeri ... 
son  işlem ;