Verilog HDL e Giriş Bilg. Yük. Müh. Selçuk BAŞAK



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

FPGA ile Gömülü Sistem Tasarımına Giriş

VERILOG. Modüller

Programlanabilir Devreler

Digital Design HDL. Dr. Cahit Karakuş, February-2018

HDL Dilleri VHDL. Son olarak, spesifik ASIC teknolojisi için devrenin yerleşimi netlist tanımlamalarından gelen diğer araçlarla oluşturulmuş olunur.

FPGA ile Gömülü Sistem Tasarımına Giriş Bilgisayar Bil. Müh. Selçuk BAŞAK

VHDL. Ece Olcay Güneş & S. Berna Örs

Yazılan programın simülasyonu için; (A<B), (A>B) ve (A=B) durumunu sağlayacak 2 şer tane değeri girerek modelsimde oluşan sonuçları çiziniz.

FPGA İLE UYGULAMA ÖRNEKLERİ

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

BİL-142 Bilgisayar Programlama II

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

FPGA İLE UYGULAMA ÖRNEKLERİ

BM-311 Bilgisayar Mimarisi

FPGA İLE UYGULAMA ÖRNEKLERİ FPGA ile Seri Haberleşme (RS232) Uygulaması

Onluk duzende toplama. Lecture 4. Addition and Subtraction. Onluk tabanda toplama

Bölüm 7. İfadeler ve atamalar ISBN

SAYISAL VLSI SİSTEM TASARIM AKIŞI

Güz Y.Y. Lojik Devre Laboratuvarı Laboratuvar Çalışma Düzeni

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Bu deney çalışmasında kombinasyonel lojik devrelerden decoder incelenecektir.

PASCAL PROGRAMLAMA DİLİ YAPISI

18. FLİP FLOP LAR (FLIP FLOPS)

B.Ç. / E.B. MİKROİŞLEMCİLER

FPGA ile 2x16 LCD Uygulaması

Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula

Ders 8: Metotlar. barisgokce.com

OPERATÖRLER Alıştırmalar

BÖLÜM Mikrodenetleyicisine Giriş

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Bu derste! BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Yazmaç Aktarımı Düzeyi! Büyük Sayısal Sistemler! 12/25/12

BM312 Ders Notları 2014

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Veri Yapıları ve Algoritmalar

NECMETTİN ERBAKAN ÜNİVERSİTESİ MÜHENDİSLİK MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ SAYISAL DEVRE TASARIMI LABORATUVARI DENEY FÖYÜ

ALGORİTMA VE PROGRAMLAMA II

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

1 JAVASCRIPT NEDİR? 1

HSancak Nesne Tabanlı Programlama I Ders Notları

C Programlama Dilininin Basit Yapıları

Tek Vuruşluk Đşlemci. -- Company : Ege Universitesi, Elektrik-Elektronik Mühendisliği

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

KAYITLAR BÖLÜM Giriş

XILINX ISE WEBPACK 14.7 UYGULAMA TUTORIAL

XILINX ISE WEBPACK 14.7 UYGULAMA TUTORIAL

Göstericiler (Pointers)

Nesne Yönelimli Programlama

BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Hacettepe Üniversitesi Bilgisayar Müh. Bölümü

Sunum İçeriği. Programlamaya Giriş

BLM1011 Bilgisayar Bilimlerine Giriş I

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

EK A VHDL DONANIM TANIMLAMA DİLİ

Java da Program Denetimi ve Operatörler

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Proje #2 - Lojik Devre Benzetimi

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

SAYISAL ELEKTRONİK DERS NOTLARI:

Algoritma ve Akış Diyagramları

Java da İşleçler, Ders #3 (4 Kasım 2009)

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Yrd. Doç. Dr. Caner ÖZCAN

Operatörler. 6.1 Operatör Nedir?

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

FPGA İLE UYGULAMA ÖRNEKLERİ

BİL-142 Bilgisayar Programlama II

Bölüm 9. Altprogramlar ISBN

T.C. RC SERVO MOTOR KONTROLÜ

Mantıksal (Logic) Operatörler

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

BM-311 Bilgisayar Mimarisi

FGPA ile Gömülü Sistem Tasarımına Giriş Introduction to Embeded System Design Using FPGA

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

PLC DE PROGRAMIN YÜRÜTÜLMESİ

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

Proje Teslimi: güz yarıyılı ikinci ders haftasında teslim edilecektir.

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

«BM364» Veritabanı Uygulamaları

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

Temel Mikroişlemci Tabanlı Bir Sisteme Hata Enjekte Etme Yöntemi Geliştirilmesi. Buse Ustaoğlu Berna Örs Yalçın

ERCİYES ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTUSÜ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİMDALI. I. GENEL BİLGİLER Ders Adı

LAB 0 : Xilinx ISE Kullanımı

BĠLGĠSAYARIN TEMELLERĠ

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bölüm/Program Dersi Ders Tanım Bilgileri Dersin Adı

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur.

En kucuk calisabilir birime satetement denir Statements semicolon (;) ile sonlanir Yalniz basina ; null statement i ifade eder

Transkript:

Verilog HDL e Giriş Bilg. Yük. Müh. Selçuk BAŞAK SelSistem Bilgi ve İletişim Teknolojileri www.selsistem.com.tr

Donanım Tanımlama Dilleri - HDL İlk olarak 1977 yılında, ISP(Instruction Set Processor) - Carnegie Mellon Universitesi KARL- Kaiserslautern Üniversitesi İlk modern HDL olan Verilog, 1985, Gateway Design Automation. VHDL, 1987, Amerika Birleşik Devletleri Savunma Bakanlığı Sponsorluğunda. HDL şematik devre tasarımlarının dökümantasyonu ve simulasyonu amacıyla geliştirilmişti. HDL den Lojik sentezleme yapılması ile HDL Dijital Tasarımda ön plana geçti.

Verilog - Giriş Verilog HDL, 1984-1985 Philip Morby, Gateway Design Automation Amaç : Dijital devreleri, modelleme, simülasyon ve analiz amacıyla kolay, basit ve etkili bir şekilde ifade etmek. IEEE tarafından ilk olarak1995 yılında standardlaştırıldı. 2001 yılında standard Verilog 2001 olarak güncellendi. C programlama dilini andırır. Öğrenilmesi nispeten kolaydır

Verilog - Syntax Case sensitive bir dildir Anahtar sözcükler küçük karakter ile yazılırlar. İfadeler ; ile sonlandırılır Yorumlar; // dan sonraki tüm karakterler /* -- */ arasındaki tüm karakterler yorum olarak algılanırlar

Verilog - Syntax Değişkenlerin yaşam alanları vardır. Aynı alanda geçerli değişkenler için farklı isimler kullanılmalıdır Maksimum 1024 karakter olabilir İlk karakteri sayı olamaz,büyük ve küçük alfabetik, nümerik ve alt çizgi karakterlerinden oluşabilir Boşluklar ve boş satırlar istenildiği gibi bırakılabilir

Verilog - Modül Verilog ile dijital sistemler hiyerarşik modüllerden ve bu modüllerin arasındaki bağlantılar ile tanımlanır. Modülün içeriği, Yapısal (Düşük seviyeli lojik ve alt moduller ile), Veri akışı ile (Çıkışları giriş sinyallerinin dönüşümü ile) Davranışsal olarak (Devreden beklenen davranışın programsal ifadesi şeklinde) üç değişik tarzda ifade edilebilir. Bu üç stil, üst seviyeli modüllerde soyutlamaya gidilebilmesini ve alt seviyeli modüllerinde de donanıma daha yakın ve verimli olarak ifade etme imkanı sağlar. Modül içinde birden fazla tarz ifade beraber kullanılabilir.

Verilog - Modül Modüller, giriş/çıkış portları ve bu giriş sinyaleri ile çıkış sinyallerini belirleyen içerik kısmından oluşur Modülde, port listesi modül başlığında adları tanımlanıp altta yönleri ve boyutları belirtilir(verilog-1995) Verilog 2001 ile portların yön ve boyuları başlık içinde de tanımlanabilir. endmodule anahtar sözcüğü ile tasarım tamamlanmış olur module ALU(output [3:0] Result, output Cout, output equal, input [3:0] In1,... );... endmodule

Verilog Structural Style (Yapısal) Yapısal tarzda ifade primitive kapı türünden veya alt modüller ile yapılılır. Ön tanımlı primitive yapılar kullanılırken genellikle ilk eleman çıkış olur. Kullanıcı tanımlı alt modullerde giriş ve çıkışların sırası alt modülün tasarımına bağlıdır.

Verilog Dataflow Style (Veri Akışı) Veri akışı tarzında, çıkış sinyalleri giriş sinyallerinin bir fonksiyonu olarak ifadesi edilir.

Verilog Behaviral Style (Davranışsal) Davranışsal tarzda, tasarlanmak istenen sistemin davranışı «always» blokları içinde programlama dillerinde de kullanılan «if/else» veya «case» gibi yapılar ile ifade edilerek yapılır. Always içerisinde sadece reg tipinde sinyallere atama yapılabilir. Örnekte «Out» portuna atama yapılabilmesi için reg olarak tanımlanmıştır.

Verilog Sayılar <size> <radix> <value> Bit Sayısı Binary b or B Octal o or O Decimal d or D Hexadecimal h or H Consecutive chars 0-f, x, z 3 b001 8 hab 8 d4 124

Verilog Veri Türleri Verilog 4 değerli mantık sistemine sahiptir. (0, 1, z, x) Net Tipi: Donanım elemanlarını birleştiren fiziksel bağlantı, «kablo gibi» wire ile tanımlanan sinyaller Register tipi: Atama yapılmadığında mevcut değerini değerini saklar, «değişken gibi» reg ile tanımlanan sinyaller

Verilog Bus/Vektör type [MSB:LSB] varname; Örnek: reg [31:0] a; // 32 bit wide reg type bus wire [7:0] b; // 8 bit wide wire type bus wire temp; // 1 bit net type signal Bus elemanlarına erişim örnekleri a[2] = 1 b1; temp = a[0]; b[7] = temp; a[7:0] = b; a[7:5] = b[2:0];

Verilog - Operatörler Arithmetic Operations (binary: +, -,*,/,%,**); (unary: +, -) Bitwise (~, &,,^, ~&,~,~^) Reduction (&,~&,,~,^,~^) Logical (!,&&,,==,!=,===,!==) Relational (<,<=,>,>=) Shift (>>,<<) Arithmetic Shift (>>>,<<<) Conditional? : Concatenation {A,B} Replication {4{B}}

Verilog Primitives - Structured Yapısal tarzda ifadelerler aşağıda ön tanımlı primitive ler kullanılabilir Primitive modullerin genel olarak ilk portları output port udur. and, or, xor, not, nor, nand,xnor,... Ör: primitive instance_name(result,in1,in2,in3...); and a1(a,b,c);

Verilog Continuous Assignment-Dataflow Yazım kuralı: assign signal_name = <expr>; Bunarı nereye yazmalıyız: Modülün içerisinde Prosedürlerin dışarısına Özellikler: Hepsi paralel işlenir Birbirinden bağımsız, aynı zamanda aktif olurlar

Verilog Procedure - Behavioral Modüller istenen sayıda procedure içerebilir Procedure ler iki tür blok ile ifade edilirler: initial Sadece bir kez işlenir. Sentezlenebilir değildir. Simulasyon için kullanılır. always Sonsuza kadar işlenir. Sentezlenebilir. Bu bloklarda yalnızca reg tipi sinyallere değer atanabilir

Verilog Always Bir duyarlılık listesine sahiptir Duyarlılık listesindeki herhangi bir değişken değiştiğinde her zaman işlenir. Verilog 2001 de «@(*)» ile blok içindeki referans edilen tüm sinyaller duyarllık listesine dahil edilebilir. Sadece reg tipi sinyallere atama yapılabilir! wire türlerine atama yapılamaz! İçerisinde = seri(blocking) ve <= paralel(blocking) atamaları yapılabilir. İçerisinde if/else, case gibi procedural yapılar kullanılabilir.

Verilog Always (örnek) module fa_beh (input A, B, Cin, output reg Sum, Cout) ; alyaws@(*) begin {Cout,Sum} = A + B + Cin; end endmodule

Verilog - Atama kuralları reg tipi sinyaller modülün her yerinde referans gösterilebilirler reg tipi sinyaller sadece prosedürel ifadelerde yani always ve initial bloklarının içerisinde, task ya da functionlarda atama yapılabilir reg tipi sinyaller modülün input ya da inout portları olamazlar reg tipi sinyaller alt modüllerin output veya inout portlarına bağlanamaz Net değişkenler modülün her yerinde referans gösterilebilirler Net değişkenleri behavior, task or function içerisinde atanamazlar. Net değişkenleri modül içerisinde primitive, alt modül output portu, continuous assignment veya module input portu tarafından sürülmelidir

Verilog Bloklu ve Bloksuz Atamalar Bloksuz Atamalar <= ile atama yapılır İşlemler paralel bir şekilde aynı anda yapılır Örnek:* always @(*) begin b <= 0; c <= 0; b <= a + a; c <= b + a; d <= c + a; end * Bu örnek sentezlemede hata verir, aynı Bloklu Atamalar = ile gerçekleştirilir Bloklu atamalar sıralı gerçekleştirilir Örnek: always @(*) begin b = 0; c = 0; b = a + a; c = b + a; d = c + a; end sinyal(b,c) birden fazla sürücüye sahip

Verilog (if else) always@(*) begin if (a == b) begin q <= data; stop <= 1 b1; end else if (a > b) begin q <= a; stop <= 1 b0; end else begin q <= b; stop <= 1 b0; end end Tüm if/else her hangi bir dalında atama yapılan bir değişkene diğer tüm dallarda da atama yapılmalıdır yoksa combinational lojik tasarımda istenmeyen latch oluşturabilirsiniz Else en yakın if ile ilişkilidir. Begin ve end kullanarak okunabilirlği arttırabilirsiniz. if else if... else kullanımı seri ya da öncelikli devre oluşturur.

Verilog - Case always@(*) 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

Verilog Hiyerarşik Dizayn Top Level Module Full Adder Sub-Module 1 Sub-Module 2 Half Adder Half Adder Basic Module 1 Basic Module 2 Basic Module 3 Hiyerarşik tasarım yapısal tarzda ifade edilir.

Verilog Structural Style (Yapısal) module half_add ( input A, B, output S, C); xor u1 (S, A, B) ; and u2 (C, A, B) ; endmodule

Verilog Structural Style - Yapısal module full_adder (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

Verilog Dataflow Style/ Veri Akışı module fa_rtl (input A, B, Cin, output Sum, Cout) ; assign Sum = A ^ B ^ Cin; assign Cout = A & B (A ^ B )& Cin; //continuous assignment //continuous assignment endmodule

Verilog Behavioral Style module fa_beh (input A, B, Cin, output reg Sum, Cout) ; alyaws@(*) begin {Cout,Sum} = A + B + Cin; end endmodule

Örnek Uygulamalar

Verilog Synchronous Logic Saat sinyalinin yükselen kenarı:posedge düşen kenarı: negedge Örnek: D-Flip Flop module DFF (input d,clk, output reg q); always @(posedge clk) begin q <= d; end endmodule