VERİLOG HDL Doç. Dr. Mustafa TÜRK.

Slides:



Advertisements
Benzer bir sunumlar
OPERATÖRLER.
Advertisements

Değişken , Veri Türleri ve Operatörler
BÖLÜM Atama Deyimi (Assignment)
Değişkenler ve bellek Değişkenler
JavaScript Birinci Hafta.
OPERATÖRLER Programlama dillerinde tanımlanmış sabit ve değişkenler üzerinde işlemler yapmayı sağlayan karakter ya da karakter topluluklarına operatör.
BİLEŞİK ATAMA VE DÖNGÜLER
Kontrol İfadeleri : 2.Kısım
Ayrık Yapılar Matlab Notları
Makine Müh. & Jeoloji Müh.
VHDL Kullanarak FPGA İle Yüksek Kapasİtelİ Tam ÇIkarIcI Devre TasarImI
Değişken Tanımlamaları
Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
ALGORİTMA ÖRNEKLERİ Programlamaya Giriş
VERİ TİPLERİ VE DEĞİŞKENLER
SQL de Değişken Tanımlama
BPR151 ALGORİTMA VE PROGRAMLAMA - I
4. KONTROL VE DÖNGÜ KOMUTLARI
Operatörler.
Ödevlerin en iyi ÇÖZÜMLERİ
Yapısal Program Geliştirme – if, if-else
OPERATÖRLER.
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Ders – 1: Giriş.
Mantıksal Tasarım Mantıksal Tasarım – Prof.Dr. Ünal Yarımağan – HÜ Bilgisayar Mühendisliği Bölümü.
Döngü Yapıları.
DEĞİŞKENLER VE VERİ TİPLERİ
DEĞİŞKENLER.
Ece Olcay Güneş & S. Berna Örs
Birleşik Mantık Devreleri
VERİ TİPLERİ VE DEĞİŞKENLER
4. KONTROL VE DÖNGÜ KOMUTLARI
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 8.  Tamsayı Değerler (Integer) Tamsayılar, 10 tabanlı (decimal), 8 tabanlı (octal) veya 16 tabanlı (hexadecimal)
C++ Ders Notları 4.Ders (Kontrol ve Döngüler)
MATLAB’ de Programlama
Sayı Sistemleri Geçen Hafta Analog ve Sayısal Büyüklük Kavramı
Sayı Sistemleri Geçen Hafta Kayan Noktalı Sayılar
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
2. HAFTA 2. Hafta.
Algoritmalar ve Programlama I Ders 5: Operatörler
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
Değişkenler Programda Değişken Tanımlama. Değişken nedir? (Variables) Program içinde kullanılan veri(data)nin tutulduğu alanın adıdır. Her veri bir tür.
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
Karşılaştırıcı ve Aritmetik İşlem Devreleri
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
OTO1004 Bilgisayar Destekli Mühendislik Dersi Sunu No:01 Öğr. Gör. Dr. Barış ERKUŞ.
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
Değişkenler Sabitler İşlemciler İfadeler Deyimler 1 Programlama Dillerinin Temel Elemanları (Hafta5) BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ.
5. HAFTA Mart Discussion: comp.soft-sys.matlab An unmoderated newsgroup that focuses on the.
Neden donanım kullanıyoruz? Daha hızlı (Performans) Paralel Düşük güç tüketimi Maliyet Boyut Her yere bilgisayar?
Mekatronik Mühendisliği
MATLAB R2013’e Giriş.
C Programlama Dili Bilgisayar Mühendisliği.
Bilgisayar Programlamasına ve Veri Analizine Giriş - IV
Programlama Dillerinin Temel Elemanları
METHODLAR VE KOŞULLAR.
Sayı Sistemleri.
2.2. Özel Semboller ve Pascal Sözcükleri
Excel’de VBA Programlama (Visual Basic Application)
PROGRAM KONTROL KOMUTLARI 1. if koşulu 2. if else koşulu
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
4- OPERATÖR – koşul - döngü Nesne Yönelimli Programlama - i
Bilgisayar Bilimi Problem Çözme Süreci-2.
Bilgisayar Programlamasına ve Veri Analizine Giriş
2.2. Özel Semboller ve Pascal Sözcükleri
Discussion: comp.soft-sys.matlab
Bilgisayar Mühendisliğine Giriş
BÖLÜM 2 FORTRAN PROGRAMLAMA DİLİNE GİRİŞ
VERİLOG-Always.
Sunum transkripti:

VERİLOG HDL Doç. Dr. Mustafa TÜRK

Verilog HDL Verilog HDL, akademide ve endüstride kullanılan temel donanım tanımlama dillerinden biridir. Diğer tercih edilen dil ise VHDL’dir. Fakat Verilog öğrenmesi bakımından VHDL’den daha kolaydır. C diline oldukça benzemektedir. Verilog HDL tasarımcıya yapısal ve davranışsal seviyede tasarım yapmasına imkan verir.

Neden Verilog HDL ? Sayısal sistemler oldukça karmaşık sistemlerdir. Verilog HDL tasarımcıya yazılım platformu sayesinde tasarım yapma imkanı sağlar. Ayrıca tasarımcıya devrenin davranışları ile tasarım yapmasına olanak veren bir yapıdır. Program araçları yardımıyla verilog kodlarının VLSI benzeri çiplere dönüştürülmesine imkan verir. Ayrıca Devre tasarımı yapmadan gerçek ortamda benzetimleri yapılabilir.

Modül Tanımlaması module module_adı(duyarlılık listesi); … Bildirimleri endmodulen

Değişken Tanımlamaları input // giriş değişkeni output // çıkış değişkeni inout // giriş-çıkış integer // tamsayı real // reel sayı reg // kayıtçı Eğer değişken değeri bir bitten fazla ise [n:0] gibi bir tanımlama ile birlikte kullanılır.

Ayrılmış Değişken İsimleri-1 and always assign attribute begin buf bufif0 bufif1 case cmos deassign default defparam disable else endattribute end endcase endfunction wire wor endprimitive endmodule endtable endtask event for force forever fork function highz0 highz1 if initial inout input integer join large medium module nand negedge nor not notif0 notif1 nmos or output parameter

Ayrılmış Değişken İsimleri-2 pmos posedge primitive pulldown pullup pull0 pull1 rcmos reg release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared small specify specparam strong0 strong1 supply0 supply1 table task tran tranif0 tranif1 time tri triand trior trireg tri0 tri1 vectored wait wand weak0 weak1 while

659 // onlu sayı 20’h 837FF // hexadecimal sayı 4’b1001 // 4-bit ikili sayı 5’D3 // 5-bit onlu sayı 3’b01x // 3-bit ikili sayı en anlamsız bit bilinmiyor 12’hx // 12-bit binmeyen bir sayı

ALWAYS always @(duyarlılık listesi) begin … bildirimleri end  

always blocking ve non-blocking olarak iki şekilde tanımlanabilir Blocking non-blocking A=A+1 (A=11) A<=A+ (A=11) B=A (B=11) B<=A (B=10)   Not: always bildirimi içinde wire değişkeni kullanılamaz. Sadece reg ve int değişkenleri tanımlanabilir. Always duyarlılık listesi içinde hem level değişimli hem de kenar değişimli işaretler aynı anda değerlendirilmez

FOR Döngüsü module for_example(data_in,data_out); input [7:0] data_in; output [7:0] data_out; reg [7:0] data_out; integer i; /* reg [2:0] olarak da tanımlanabilir fakat reg işaretsiz iken int işaretli olabilir. */ always @ (data_in) begin for (i=0; i<=7; i=i+1) data_out[7-i] = data_in[i]; end endmodule

Case Bildirimi case duyarlılık listesi (S) içinde hangi durum gerçekleşmiş ise sadece o durum gerçeklenir. case (S) durum1:… durum2:… default: //kesinlikle olmalı endcase

Farklı kullanım şekilleri vardır.   if bildirimi Farklı kullanım şekilleri vardır. Eğer bildirim tek satır ise aşağıdaki gibi if (mantıksal işlem) bildirim if (mantıksal işlem) begin … Bildirimler end   if (mantıksal işlem) bildirim else bildirim else if (mantıksal işlem) bildirim else

İlişki operatörleri   < küçük ise > büyük ise <= küçük eşit ise >= büyük eşit ise == eşit ise Matematiksel operatörler * çarpma (tam sayı) + toplama / bölme(tam sayı) - çıkartma % amodb=a%b a mod(b)

Mantıksal operatörler && VE || VEYA ! DEĞİL Eşitlik ve tanımlama operatörleri = atama != eşit değil === bire bir eşitlik !== bire bir eşitsizlik

Bit işlemleri + İkili toplama - İkili çıkarma & VE | VEYA ^ XOR ~& NAND ~| NOR ~^ EXOR ~ Bit NOT

Öteleme operatörleri << Sola öteleme >> sağa öteleme ?: c=sel? a:b eğer sel doğru ise c=a değilse c=b {} {co, sum}=a+b+c a,b ve c toplanır taşma varsa co’ya atanır, toplam sum’a

Mealy makinesi örneği module seq3_detect_mealy(x,clk,y); input x, clk; output y; reg y; reg [1:0] pstate, nstate; parameter S0=2'b00, S1=2'b01; parameter S2=2'b10, S3=2'b11; always @(x or pstate) case (pstate) S0: if (x) begin nstate = S1; y = 0; end else begin nstate = S0; y = 0; end S1: if (x) begin nstate = S2; y = 0; end S2: if (x) begin nstate = S3; y = 0; end S3: if (x) begin nstate = S3; y = 1; end endcase always @(posedge clk) pstate <= nstate; endmodule

Örnek: 4 bit genlik karşılaştırıcı module compare (A, B, AeqB, AgtB, AltB); input [3:0] A, B; output AeqB, AgtB, AltB; reg AeqB, AgtB, AltB; always @(A or B) begin AeqB = 0; AgtB = 0; AltB = 0; if(A == B) AeqB = 1; else if (A > B) AgtB = 1; else AltB = 1; end endmodule  

Xilinix ISE KULLANIMI

Verilog Seçilir