Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-1 Ders – 1: Giriş.

Benzer bir sunumlar


... konulu sunumlar: "Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-1 Ders – 1: Giriş."— Sunum transkripti:

1 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-1 Ders – 1: Giriş

2 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-2 Programlanabilir Devreler CPLD ( Complex Programmable Logic Device ) – FPGA ( Field-Programmable Gate Array ) Yapısı ve Avantajları

3 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-3 Tarihsel gelişimi İlk programlanabilir aygıtlar pahalı maske programlı ROM ‘lar yerine geliştirilmiştir. Bu ROM modüllerde bir değişikliğe gidilmesi gerektiğinde maske değiştirilip yeni çip’in tekrar fabrikada üretilmesi gerekiyordu. Bu özelliği nedeniyle programda yapılan bir hata ancak üretim sonucunda anlaşılmaktaydı. Daha sonra PROM modüller geliştirildi.

4 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-4 PROM Bu modüller bir bilgisayar programı ile bir kez programlanabilmekteydi. Programlama evlerdeki sigorta sistemine benzeyen sigortalar yardımıyla yapılmaktaydı. Fazla akım geçirilen bağlantı koparılıyor geçirilmeyen kısımlar ise devreyi oluşturuyordu. PROM chipler sayesinde tasarımdaki hatalar kolayca bulunabiliyor, değişiklikler üretime gitmeden denenebiliyor ve optimizasyonlar yapılabiliyordu

5 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-5 PROM  Daha sonra bu çiplerin yeniden programlanabilmelerine ihtiyaç duyuldu.  Geliştirilen teknikler birlikte EEPROM modüller üretildi.  İlk versiyonları UV ışınla silinebilmekteyken günümüzde EEPROM yani elektrikle silinebilen versiyonları kullanılmaktadır.  PROM ‘lar önceleri combinational devreleri gerçeklemek için kullanılsalar da günümüzde veri depolamada kullanılmaktadır.  PROM ‘ların kullanımının bırakılmasındaki asıl neden yeterince hızlı olmayışları ve giriş sınırlamasıdır.

6 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-6 PLA Programmable logic array (PLA) hız ve giriş sınırlamasına bir çözüm olarak geliştirildi. AND, OR seviyeleri ve NOT kapılarından oluşmaktadır. Bu nedenle PROM lardaki gibi her olası tasarım gerçeklenemez. Tasarımınızı and,or ve not kapılarıyla gerçeklemeniz gerekektedir.

7 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-7 PAL PAL chip ‘ler PLA çiplerin bir türevidir. PLA ‘e göre OR seviyeleri azaltılmıştır. Çünkü and ve not kapıları ile “de-morgan” kuralına göre or kapısı elde edilebilmekteydi. Or kapılarından boşalan alana multiplexer, xor kapıları, letch ve flip-flop yapıları konulmuştur. Böylece PLA ‘e göre çok daha fazla fonksiyonu hızlı bir biçimde yerine getirebilmektedir.

8 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-8 ASIC FPGA ve CPLD ile karşılaştırılırken “masked gate array” de denmektedir İç devreleri oldukça hızlı çalışmaktadır Büyük çaplı üretimde oldukça ucuzdur (maske üretim maliyeti) Üretim ve test aşamaları oldukça fazla zaman gerektirmektedir Tasarımda bir hata yapılmışsa bunu düzeltmek uzun masraflı bir iştir. (Tekrar doğru maskeyi oluşturup üretim tekrarlanmalı)

9 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-9 ASIC ASIC programlanabilen bir aygıt değildir. Tasarımcılar üreticinin sağlamış olduğu hücre ve fonksiyon kütüphanelerini kullanarak çalışırlar Tasarımcının tasarımının tam olarak silikona nasıl aktarıldığını bilmesine gerek yoktur. Gerçekleme düşük seviye fonksiyonlardan tamamına doğru olmaktadır Öncelikle tasarım için gerekli birbirine yakın transistorler, daha sonrada birbirine yakın olacak şekilde modüller oluşturulur. (routing) Tasarıma göre oluşturulan maske yardımı ile chip oluşturulur

10 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-10 CPLD & FPGA Donanım geliştiricileri ASIC gibi yüksek yoğunluklu, hızlı ve aynı zamanda gerçeklemenin kolay olduğu bir programlanabilir aygıt istemekteydi. – CPLD = complex programmable logic device – PAL – FPGA = field programmable gate array – ASIC Bu aygıtlar ASIC ve PAL ‘ın iyi özlelliklerini barındırmaktadır.

11 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-11 CPLD CPLD bir çok PAL aygıtın aynı çip içerisinde toplanıp birbirine switch ler aracılığı ile bağlanmasından oluşmuşdur. PAL ile aynı tabandadır ancak daha büyük ve komplaks dizaynları gerçekleyebilir.

12 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-12 CPLD Güncel CPLD ler üreticisine göre değişmekle birlikte and or not kapılarına ek olarak xor gibi ekstra yapılar da bulundururlar. I/O pinleri giriş çıkış ve çift yönlü atanabilir Özel bir “clock thee” 'ye sahiptir. Bu sayede clock sinyali chipin her tarafına çok yakın zamanlarda ulaşır CPLD de tasarımcılar girişten çıkışa olan gecikmeyi tahmin edebilirler.

13 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-13 CPLD JTAG üzerinden seri olarak programlanabilmekte EEPROM yapısı ile programlama verisini tutuğundan programlama verisi uçucu değildir. EEPROM a programlama verisini yüklediğinizde her açılışta veriyi okuyarak kendini konfigüre etmektedir

14 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-14 Terminoloji Interconnect Programable Switch Logic Block Logic Capacity Logic Density Speed - Performance

15 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-15 FPGA ASIC gibi düzgün mantıksal dizilerinden oluşur Yapısı oldukça kompleks dizaynlara izin vermektedir I/O hücreleri, programlanabilen logic blokları ve ara bağlantı elemanlarından oluşurlar

16 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-16 Konfigüre edilebilir mantıksal bloklar (CLB) - FPGA FPGA nın sahip olduğu CLB ler sayesinde CPLD ye göre çok daha complex devreleri gerçekleme avantajı vardır. Ancak devre büyüdükçe sinyalin yönlendirilmesi işlenmesinden daha fazla zaman alabilmektedir. FPGA 'da sinyaller CLB ler dolayısıyla kapılar üzerinden geçerek ilerlediğinden yönlendirme gecikmesi ASIC 'e göre oldukça fazladır. ASIC de sinyal direk metal yollar üzerinden ilerlemektedir.

17 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-17 Konfigüre edilebilir mantıksal bloklar (CLB) - FPGA FPGA üzerinde bulunan CLB ler LUT lardan oluşmaktadır ve görüldüğü gibi RAM flip-flop ve multiplexer işlevlerini yerine getirirler.

18 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-18 I/O Blokları - FPGA Her I/O portu giriş çıkış ya da çift yönlü ayarlanabilir Giriş çıkışlar diğer aygıtlarla uyumlu olabiecek şekilde değişik voltaj seviyelerine ayarlanabilmektedir.

19 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-19 FPGA Switch Matrix ler uzaktaki CLB ler ile hızlı hat üzerinden bağlantı kurulmasını sağlamaktadır Bunlar dışında birde “long line” denen çipin bir ucundan diğerine giden hızlı bağlantılar bulunmaktadır

20 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-20 Saat devresi - FPGA Özel yüksek hızlı saat buffer ları çip yüzeyine dağılmıştır Bu buffer lar saat giriş pinlerine bağlıdırar Clock tree boyunca saat hatlarına sinyali sürerler Senkron tasarımlarda saat ‘in devrenin her yerine aynı anda ulaşması çok önemlidir

21 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-21 Programlama CPLD aygıtlar programlama için EEPROM kullanmaktadır FPGA ‘ler ise programlama verilerini SRAM içerisinde tutar

22 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-22 CPLD & FPGA Seçimi Seçim tamamen gerekliliklere bağlıdır İkisi de yeniden programlanabildiğinden donanım geliştirmek için oldukça avantajlı platformlardır Hız olarak ise ASIC 'in hızına yetişemezler Bu yüzden çoklu üretimde geliştirme FPGA-CPLD üzerinde yapılırken olgunlaşan dizayn ASIC e aktarılır CPLDFPGA MimariPAL benzeriKapı dizisi - benzeri HızHızlı, tahmin edilebilirUygulama bağımlı YoğunlukDüşük - ortaOrta - yüksek BağlantıCrossbarRouting Güç TüketimiKapı başına yüksekKapı başına düşük

23 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-23 Proje için Platform Seçimi FPGA ve CPLD ler her ne kadar esnek yapılar olsa da proje geliştirme yeni başlayanlar için zaman alan bir süreçtir. Bazı durumlarda sıralı komutlar işleyen bir işlemcinin kullanılması daha avantajlıdır. Proje ile ilgili IP(Intellectual property) ‘ler araştırılmalıdır. FPGA ya da CPLD projenin gerekliliklerine uyacak şekilde seçilmelidir İçerisinde bir işlemci ve FPGA bulunduran hibrit yapılar da değerlendirilmelidir.

24 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-24 FPGA programlama ve HDL ’e giriş CPLD – FPGA Programlamaya giriş

25 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-25 İçerik Bu ünitede aşağıdaki konular işlenecektir – FPGA – CPLD programlama metodolojisini – Şematik tasarım ile tasarım gerçeklenmesini – VHDL dilinde tasarım gerçeklenmesini – Verilog dilinde tasarım gerçeklenmesini

26 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-26 HDL’lerin önemi HDL: Hardware Description Language (Donanım Tanımlama Dili) Yaygın kullanılan iki HDL: – Verilog HDL (also called Verilog for short) – VHDL (Very high-speed integrated circuits HDL)

27 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-27 HDL’lerin Özellikleri Tasarım soyut bir seviyede betimlenir. Fonksiyonel sağlama tasarım aşamasının erken safhalarında yapılabilir. HDL ile tasarım yapma bilgisayar programlama ile benzerdir.

28 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-28 Basit Tasarım süreci Tasarımın donanım tanımlama dilleri kullanılarak tanımlanması Fonksiyonel simulasyon Sentez Yerleştirme ve yönlendirme Tasarımın yüklenmesi

29 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-29 Programlama Yüklenecek hafıza türü – CPLD – EEPROM – FPGA – EEPROM & SRAM Yükleme ara yüzü – JTAG

30 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-30 Verilog HDL Genel amaçlı, öğrenmesi kolay ve kullanılması kolay bir HDL dilidir. Aynı modül içerisinde farklı seviyelerden soyutlamaya olanak tanır. Programming Language Interface (PLI)

31 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-31 Verilog - Giriş 1984 de oluşturuldu 1990 da Candance tarafından açık kaynak yapıldı de IEEE standardı oldu. C diline benzerliği nedeniyle adaptasyon kolaydır. Genel özellikleri; – Tanımlayıcılar maksimum 1024 karakter olabilir – İlk karakter sayı olamaz – İfadeler “ ;” ile sonlandırılır String ler çift tırnak ile tek satırda yazılmalıdır – Yorumlar; // dan sonraki tüm karakterler /* -- */ arasındaki tüm karakterler yorum olarak algılanırlar Compiler komutları “ ` ” ile başlar – Hazır task lar ya da function lar “$” ile başlar

32 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-32 Verilog - Giriş Case sensitive bir dildir – Anahtar sözcükler küçük karakter ile yazılırlar. Değişkenlerin yaşam alanaları vardır. – Aynı alanda geçerli değişkenler için farklı isimler kullanılmalıdır Tanımlayıcı karakterler – Büyük ve küçük alfabetik karakterler – Nümerik karakterler – Alt çizgi Boşluklar ve boş satırlar istenildiği gibi bırakılabilir Verilog 4 mantık değerli önceden tanımlı (0, 1, z, x) bir sisteme sahiptir

33 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-33 Verilog - Giriş Integer ve Real türleri tanımlıdır Procedure 'ler üzerinden işlem yapar paketlere sahip değildir Verilog dilinde dijital sistemler modüller oluşturularak gösterilir VHDL de olduğu gibi structural ve behavioral tasarım yapılabilmektedir Yapısal dizayna RTL (Register transfer level) de denmektedir

34 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-34 HDL Tabanlı Tasarım Basamakları

35 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-35 Verilog – Davranışsal dizayn Dizayn davranışına göre gerçeklenmektedir Always içerisinde sadece register değerlerine atama yapılabilir. Out çıkışının register tanımlanması ona always bloğu içerisinde atama yapılabilmesini sağlıyor

36 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-36 Verilog – Hiyerarşik Dizayn Top Level Module Top Level Module Sub-Module 1 Sub-Module 1 Sub-Module 2 Sub-Module 2 Basic Module 3 Basic Module 3 Basic Module 2 Basic Module 2 Basic Module 1 Basic Module 1 Full Adder Half Adder

37 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-37 Verilog – Hiyerarşik (Örnek) module full_add (A, B, CI, Sum, Cout) ; input A, B, CI ; output Sum, Cout ; wire S1, C1, C2; half_add HA1 (A, B, S1, C1); half_add HA2 (S1, CI, Sum, C2); or P1 (Cout, C1, C2); endmodule module half_add (A, B, S, C); input A, B ; output S, C ; xor (S, A, B) ; and (C, A, B) ; endmodule

38 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-38 Verilog - Örnek module fa_rtl (A, B, Cin, Sum, Cout) ; input A, B, Cin ; output Sum, Cout ; assign Sum = A ^ B ^ Cin; //continuous assignment assign Cout = A & B | (A ^ B )& Cin; //continuous assignment endmodule

39 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-39 Verilog – Sayılar, Türler ’ 3’b000 8’hAB Nets: Donanım elemanlarını birleştiren fiziksel bağlantı Registers: Bağlı olmasa bile depolanan değer Bit Sayısı Bit Sayısı Binary  b or B Octal  o or O Decimal  d or D Hexadecimal  h or H Binary  b or B Octal  o or O Decimal  d or D Hexadecimal  h or H Consecutive chars 0-f, x, z Consecutive chars 0-f, x, z

40 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-40 Verilog – Veri Türleri wire – sadece bağlantı; mantıksal değil reg – mantıksal değer depolama tri – wire gibi, ama donanım olarak 3-state gösterir wand – çoklu sürücü- kablolanmış and wor – çoklu sürücü - kablolanmış or triand – wand gibi, fakat 3-state trior – wor gibi, fakat 3-state supply0 - Global net GND supply1 - Global Net VCC (VDD) tri0, tri1, trireg

41 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-41 Verilog – Diziler Yazım kuralları integer count[1:5]; // 5 integers reg var[-15:16]; // 32 1-bit regs reg [7:0] mem[0:1023]; // bit regs Array elemanlarına erişim mem[10] = 8'b temp = mem[10]; var[6] = temp[2];

42 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-42 Verilog - Operatörler Arithmetic (binary: +, -,*,/,%*); (unary: +, -) Bitwise (~, &,|,^,~^,^~) Reduction (&,~&,|,~|,^,~^,^~) Logical (!,&&,||,==,!=,===,!==) Relational (,>=) Shift (>>,<<) Conditional ? : Concatenation and Replications {A,B} {4{B}}

43 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-43 Verilog – Sürekli Atama Yazım kuralı: assign #del = ; Bunarı nereye yazmalıyız: – Modülün içerisine – Prosedürlerin dışarısına Özellikler: – Hepsi paralel işlenir – Birbirinden bağımsız, aynı zamanda aktif olurlar opsiyonel net türü !!

44 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-44 V erilog - Procedure Modüller istenen sayıda procedure içerebilir Procedure ler iki tür blok ile ifade edilirler: – İnitial  Sadece bir kez işlenir. Sentezlenebilir değildir fakat testbenches için kullanılır – Always  Sonsuza kadar işlenir. (simulasyon ya da işlem bitene kadar) Procedurel işlemlerde yalnızca registerlara değer ataynır Sürekli atamalar ve pirimitive atamaları ise inputlarda bir değişiklik olduğunda gerçekleşir

45 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-45 Verilog – Initial 0 zamanında çalışmaya başlayıp içerisindeki son komutu çalıştırıncaya kadar çalışırlar module nothing; initial $display(“I’m first”); initial begin #50; $display(“Really?”); end endmodule simulation zamanı 0 da gösterilecek simulation zamanı 0 da gösterilecek simulation zamanı 50 de gösterilecek simulation zamanı 50 de gösterilecek

46 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-46 Verilog – Sistem görevleri $display(“..”, arg2, arg3,..);  printf() gibidir, çağırıldığında formatlanmış stringleri gösterir $monitor(“..”, arg2, arg3,..);  $display() gibidir, fakat argümanlarından herhangi biri değiştiğinde tekrar ekrana basar $stop;  çağırıldığında simulasyonu duraksatır $finish;  çağırıldığında simulasyonu bitirir $fopen(“filename”);  dosya tanımını döndürür (integer); daha sonra bunu $fdisplay(fd, “..”, arg2, arg3,..); ya da $fmonitor(fd, “..”, arg2, arg3,..); ile yazdırma işleminde kullanabilirsiniz $fclose(fd);  dosyayı kapatır $random(seed);  random integer döndürür

47 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-47 Verilog – Always Bir duyarlılık listesine sahiptir Adından da anlaşılabileceği gibi duyarlılık listesindeki herhangi bir değişken değiştiğinde herzaman işlenir Wire türlerini süremez !!! İnteger ve Register türleri üzerine işlem yapılabilir!!! İçerisinde “=” seri ve “<=” paralel atamaları yapılabilir Bu atamalara blocking ve nonblocking atama denilmektedir Sıralı işlenme mantığı => process ler ile aynı davranıştadır

48 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-48 Verilog – Always (örnek) module fa_bhv (A, B, Cin, Sum, Cout) ; input A, B, Cin ; output Sum, Cout ; //output reg Sum, Cout; reg Sum, Cout; or B or Cin) // yada begin Sum <= A ^ B ^ Cin; // procedural assignment Cout <= A & B | (A ^ B )& Cin; // procedural assignment end endmodule

49 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-49 Verilog – Register atamaları Registerlara yalnızca aşağıdaki alanlarda atama yapılır: – Procedural statement (always, initial) – Kullanıcı tarafından tanımlanan sıralı işleyen primitivelerde – Task yada fonksiyonlarda. Register 'a aşağıdaki alanlarda atama yapılamaz: – Primitive Kapı çıkışı – Sürekli atamalar

50 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-50 Verilog - Atama kuralları Register değişkenleri modülün her yerinde referans gösterilebilirler Register değişkenlerinin içerisine sadece prosedürsel ifadelerde yani always ve initial bloklarının içerisinde, task ya da function larda atama yapılabilir Register değişkenleri input ya da inout olamazlar Net değişkenler modülün her yerinde referans gösterilebilirler Net değişkenleri behavior, task or function içerisinde atanamazlar. İstisna: force … release Net değişkenleri modül içerisinde primitive, continuous assignment, force … release ya da module port tarafından sürülmelidir

51 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-51 Verilog – Bloklu ve Bloksuz Atamalar Bloksuz Atamalar – “<= “ ile atama yapılır – İşlemler paralel bir şekilde aynı anda yapılır Örnek: clk) begin b <= 0; c <= 0; b <= a + a; c <= b + a; d <= c + a; end Bloklu Atamalar “=” ile gerçekleştirilir Bloklu atamalar sıralı gerçekleştirilir Örnek: clk) begin b = 0; c = 0; b = a + a; c = b + a; d = c + a; end

52 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-52 Verilog – Gecikme ve Olay Operatörleri Gecikme Kontrol Operatörü(#) – İfadenin sonuçlanmasını geciktirir – Bloklu atamalarda (=), gecikme tüm alttaki ifadeleri etkiler – Example: clk) #10 Q = D; Olay Kontrol – Bir doğruluk net ya da register 'da gerçekleşen değişim ile devrenin aktivite akışını senkronize eder – Örnek (start) RegA = Data; – Örnek begin (posedge clk) Q = D; posedge: 0 -> 1, 0 -> x, x -> 1 anlamına gelir

53 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-53 Verilog – (if…else) or b or c) begin if (a == b) begin q <= data; stop <= 1’b1; end else if (a > b) q <= a; else q <= b; end Tüm seçeneklerin ele alınıp alınmadığını kontrol edin yoksa istenmeyen letch oluşturabilirsiniz Else en yakın if ile ilişkilidir. Begin ve end kullanarak okunabilirlği arttırabilirsiniz. İç içe geçmiş if … else sentez işleminden sonra seri ya da öncelikli devre oluşumuna neden olmaktadır.

54 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-54 Verilog - Case x) begin case (state) 2’b00: next_state <= s1; 2’b01: next_state <= s2; 2’b10: begin if (x) next_state <= s0; else next_state <= s1; end default next_state <= 1’bxx; endcase end

55 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-55 Verilog – For döngüsü initial integer r, i; begin r = 0; for (i = 1; i <= 7; i = i + 2) begin r[i] = 1; end

56 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-56 Verilog – Forever döngüsü initial begin clk = 0; forever begin #50 clk = 1; #50 clk = 0; end

57 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-57 Verilog – Task ve Fonksiyon Tasks – Modül içerisinde tanımlanır – Davranış olarak modül içerisinde kullanılır – Tasklara in ya da inout ile parametre göndeilirken out ya da inout ile çıktı alınabilir – Yerel değişken tanımlanabilir – Recursion desteklenmemektedir. Functions – Combinational davranışlar gerçekleştirilir – Zaman kontrolü, task, while yoktur – Recursion olmadan diğer fonksiyonları çağırabilir – Reference ile çağırılabilir – Output ya da inout a izin verilmez

58 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-58 Değerlendirme Bu derste öğrenilenler; – FPGA &CPLD Tasarım süreci ve programlama – Shematik tasarım geliştirme – VHDL ve Verilog dilleri Sonraki derslerde öğrenilecekler; – Quartus programının kullanımı – Tasarımların simülasyonunun yapılması – Örnek tasarımlar

59 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-59 Modüller Modül iki kısımdan oluşur: – Çekirdek devre (yani Gövde) – Arayüz (yani portlar)

60 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-60 Modüller module --- Temel yapı bloğu

61 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-61 Verilog – Diziler Yazım kuralları integer count[1:5]; // 5 integers reg var[-15:16]; // 32 1-bit regs reg [7:0] mem[0:1023]; // bit regs Array elemanlarına erişim mem[10] = 8'b temp = mem[10]; var[6] = temp[2];

62 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-62 Verilog - Operatörler Arithmetic (binary: +, -,*,/,%*); (unary: +, -) Bitwise (~, &,|,^,~^,^~) Reduction (&,~&,|,~|,^,~^,^~) Logical (!,&&,||,==,!=,===,!==) Relational (,>=) Shift (>>,<<) Conditional ? : Concatenation and Replications {A,B} {4{B}}

63 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-63 Verilog – Sürekli Atama Yazım kuralı: assign #del = ; Bunarı nereye yazmalıyız: – Modülün içerisine – Prosedürlerin dışarısına Özellikler: – Hepsi paralel işlenir – Birbirinden bağımsız, aynı zamanda aktif olurlar opsiyonel net türü !!

64 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-64 V erilog - Procedure Modüller istenen sayıda procedure içerebilir Procedure ler iki tür blok ile ifade edilirler: – İnitial  Sadece bir kez işlenir. Sentezlenebilir değildir fakat testbenches için kullanılır – Always  Sonsuza kadar işlenir. (simulasyon ya da işlem bitene kadar) Procedurel işlemlerde yalnızca registerlara değer ataynır Sürekli atamalar ve pirimitive atamaları ise inputlarda bir değişiklik olduğunda gerçekleşir

65 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-65 Verilog – Initial 0 zamanında çalışmaya başlayıp içerisindeki son komutu çalıştırıncaya kadar çalışırlar module nothing; initial $display(“I’m first”); initial begin #50; $display(“Really?”); end endmodule simulation zamanı 0 da gösterilecek simulation zamanı 0 da gösterilecek simulation zamanı 50 de gösterilecek simulation zamanı 50 de gösterilecek

66 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-66 Lexical Conventions C dili ile neredeyse aynı kurallar geçerlidir. Tanıtıcılar: alphanumeric characters, _, and $ – Verilog büyük – küçük harf ayrımına sahip bir dildir. White space: blank space (\b), tabs (\t), and new line (\n)

67 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-67 Lexical Conventions Comments – // --- the remaining of the line – /* ….*/ --- what in between them Sized number: ` – 4`b1001 – 16`habcd

68 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-68 Lexical Conventions Uzunluğu Belli Olmayan Sayı: ` – 2009 – `habc x or z – x: Belirli olmayan değer – z: Yüksek Empedans

69 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-69 Lexical Conventions Negatif Sayılar: - ` – -4`b1001 – -16`habcd ”_” and “?” – 16`b0101_1001_1110_0000 – 8`b01??_11?? // = 8`b01zz_11zz String: “Have a lovely day”

70 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-70 Kodlama Stili Küçük Harfler – Sinyal isimleri, değişken isimleri ve port isimleri için, Büyük Harfler – Sabit isimleri ve kullanıcı tanımlı veri tipleri için. Anlamlı isimleme – Sinyaller, portlar, fonksiyonlar ve parametreler için

71 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-71 Değerler Kümesi Dört Değerli Lojik – 0 : lojik 0, yanlış – 1 : lojik 1, doğru – z : yüksek empedans – x : bilinmez

72 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-72 Veri Tipleri Nets: Donanım bağlantı noktaları Variables: Veri depolama üniteleri

73 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-73 Nets Aşağıdakiler tarafından sürülürler: – Primitive – continuous assignment – force … release – module port

74 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-74 Değişkenler Aşağıdakilerin içinde atama yapılır. – Procedural statement – Task – Function Kulanılmadığı durumlar: – input – inout

75 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-75 Modül Modelleme Teknikleri Yapısal (Structural) – Kapı seviyesinde (Gate level) – Anahtar seviyesinde (Switch level) Veri Akışı (Dataflow) Davranışsal veya algoritmik (Behavioral) Karmaşık (Mixed) – RTL = synthesizable behavioral + dataflow constructs

76 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-76 Port Tanımlama Port Tipleri: – input – output – inout

77 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-77 Port Bağlantı Kurallar Named association Positional association

78 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-78 Port Tanımlama

79 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-79 Structural modeling (Yapısal Modelleme) // gate-level hierarchical description of 4-bit adder // gate-level description of half adder module half_adder (x, y, s, c); input x, y; output s, c; // half adder body // instantiate primitive gates xor (s,x,y); and (c,x,y); endmodule

80 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-80 Structural modeling (Yapısal Modelleme) // gate-level description of full adder module full_adder (x, y, cin, s, cout); input x, y, cin; output s, cout; wire s1, c1, c2; // outputs of both half adders // full adder body // instantiate the half adder half_adder ha_1 (x, y, s1, c1); half_adder ha_2 (cin, s1, s, c2); or (cout, c1, c2); endmodule

81 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-81 Structural modeling (Yapısal Modelleme) // gate-level description of 4-bit adder module four_bit_adder (x, y, c_in, sum, c_out); input [3:0] x, y; input c_in; output [3:0] sum; output c_out; wire c1, c2, c3; // intermediate carries // four_bit adder body // instantiate the full adder full_adder fa_1 (x[0], y[0], c_in, sum[0], c1); full_adder fa_2 (x[1], y[1], c1, sum[1], c2); full_adder fa_3 (x[2], y[2], c2, sum[2], c3); full_adder fa_4 (x[3], y[3], c3, sum[3], c_out); endmodule

82 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-82 Hierarchical Design

83 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-83 Dataflow Modeling (Veri Akışı Seviyesinde Modelleme) module full_adder_dataflow(x, y, c_in, sum, c_out); // I/O port declarations input x, y, c_in; output sum, c_out; // specify the function of a full adder assign #5 {c_out, sum} = x + y + c_in; endmodule

84 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-84 Behavioral Modeling (DavranışsalModelleme) module full_adder_behavioral(x, y, c_in, sum, c_out); // I/O port declarations input x, y, c_in; output sum, c_out; reg sum, c_out; // need to be declared as reg types // specify the function of a full adder y, c_in) // or or y or c_in) #5 {c_out, sum} = x + y + c_in; endmodule

85 Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-85 Mixed-Style Modeling module full_adder_mixed_style(x, y, c_in, s, c_out); // I/O port declarations input x, y, c_in; output s, c_out; reg c_out; wire s1, c1, c2; // structural modeling of HA 1 xor xor_ha1 (s1, x, y); and and_ha1(c1, x, y); // dataflow modeling of HA 2 assign s = c_in ^ s1; assign c2 = c_in & s1; // behavioral modeling of output OR gate c2) // c_out = c1 | c2; endmodule


"Chapter1: Introduction Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-1 Ders – 1: Giriş." indir ppt

Benzer bir sunumlar


Google Reklamları