İçeriğe atla

Verilog

Verilog elektronik sistemleri modellemek için kullanılan bir donanım tanımlama dilidir. Verilog (bazen “Verilog HDL” olarak da adlandırılır) analog, sayısal ve karışık işaretli devrelerin tasarımını, doğrulanmasını ve yürütülmesini değişik düzeylerde desteklemektedir. Verilog dilinin tasarımcıları dilin C programlama diline yakın bir söz dizimine sahip olmasını istemişlerdir. Böylece bu dile yatkın olan mühendislerin dili kolayca kullanmasını amaçlamışlardır. Dil küçük/büyük harf duyarlılığına sahiptir ve temel denetim akışının “if” ve “while” gibi anahtar kelimeleri, C'ye benzemektedir. Verilog birkaç temel yönde C’den farklıdır. Verilog bir blok kodu tanımlamak için kıvrık parantezler yerine Begin/End kullanmaktadır. Verilog 95 ve 2001 işaretçi veya yinelemeli alt yordamlar yapılarına sahip değildir fakat SystemVerilog bu özelliklere sahiptir. Son olarak Donanım Tanımlama Dilleri için çok önemli olan zaman kavramı C dilinde bulunmamaktadır. Verilog geleneksel programlama dilleri gibi basamaklarını tam olarak ardışık bir şekilde yürütmez. Verilog tasarımı modüller arasında bir hiyerarşi bulundurur. Modüller bir takım giriş, çıkış ve çift yönlü portlar şeklinde tanımlanır. Bir modül içinde yazmaç ve kablo listesi bulunur. Eş zamanlı ve ardışık ifadeler modülün davranışını; portların, kabloların ve yazmaçların arasındaki ilişki ile tanımlar. Ardışık ifadeler bir begin/end bloğuna konur ve blokla beraber ardışık olarak yürütülür. Tüm eş zamanlı ifadeler ve begin/end blokları koşut olarak yürütülür. Bir modül aynı zamanda diğer bir modülün bir veya daha çok örneğini içererek bir alt-davranışı belirtebilir. Eğer tasarımdaki modüller sadece sentezlenebilir ifadeler içeriyorsa bu tasarımın donanımda gerçekleştirilecek temel bileşenlerini ve bağlantılarını içeren netlist, yazılım sayesinde sentezlenebilir. Elde edilen bu netlist bir tümleşik devreyi (örn. ASIC veya FPGA) tanımlamak amacıyla kullanılabilir.

Tarihçe

Başlangıç

Verilog 1983/1984 yıllarında Automated Integrated Design Systems (daha sonraları “ Gateway Design Automation” olarak ismi değiştirildi) Phil Moorby ve Prabhu Goel tarafından icat edilmiştir.1985 yılında ise donanım modelleme dili olarak değiştirilmiştir. Gateway Design Automation firması daha sonra Cadence tarafından 1990 yılında satın alınmıştır. Cadence şu anda Gateway firmasının Verilog diline ve Verilog-XL simülatörünün haklarına tamamen sahiptir.

Verilog-95

VHDL’in o zamanlarki yükselen başarısı karşısında Cadence, dili standardlaştırmaya açmaya karar vermiştir. Cadence Verilog’u genel bir alan adresine taşımıştır Open Verilog International19 Haziran 2020 tarihinde Wayback Machine sitesinde arşivlendi. (OVI) (Accellera olarak biliniyor).Verilog daha sonraları IEEE’ye verilmiştir. IEEE Standard 1364-1995, Verilog-95 olarak referans gösterilir.

Verilog 2001

Orijinal Verilog-95 standardında kullanıcılar tarafından bulunan eksikler kapatılarak IEEE’ye tekrar gönderilen standarttır. Bu eklemeler sonrasında Verilog-2001 IEEE Standard 1364-2001 şeklinde referans gösterilir. Verilog-2001, Verilog-95’ten sonra önemli bir geliştirmedir. Öncelikle ikiye tümleyen ve işaretli değişkenlerle ilgili önemli bir destek eklenmiştir. Daha önceleri kod yazıcılar işaretli işlemleri garip bit işlemleri yaparak gerçekleştiriyorlardı. Dosya giriş/çıkış işlemleri birkaç yeni sistem görevi ile geliştirildi. Son olarak kodun okunabilirliğini artıran birkaç söz dizimi eklentisi yapıldı.(örneğin: always@* ve C dilindekine benzer fonksiyon/görev/modül başlık bildirimi gibi.) Verilog-2001 ticari elektronik tasarım otomasyonu yazılımlarının temel olarak desteklediği Verilog dilidir.

Verilog 2005

Verilog 2005 (IEEE Standard 1364-2005) SystemVerilog ile karıştırılmamalıdır. Verilog’un bu sürümü birkaç küçük düzeltme, özellik açıklaması ve birkaç yeni dil özelliği içermektedir. Verilog standardının ayrı bir parçası olan Verilog-AMS analog ve karışık işaret işlemleri ile geleneksel Verilog’u birleştirme çabasındadır.

SystemVerilog

Systemverilog, Verillog 2005’in bir üst kümesi olarak tasarım doğrulama, tasarım modelleme gibi özellikleri olan bir dildir.

Örnekler

Bir “Merhaba Dünya” programı şu şekildedir.

module main;
  initial 
    begin
      $display("Merhaba Dunya!");
      $finish;
    end
endmodule

Basit şekilde iki Flip-flop şu şekildedir:

module toplevel(clock,reset);
 input clock;
 input reset;

 reg flop1;
 reg flop2;

 always @ (posedge reset or posedge clock)
 if (reset)
   begin
     flop1 <= 0;
     flop2 <= 1;
   end
 else
   begin
     flop1 <= flop2;
     flop2 <= flop1;
   end
endmodule

Tüm benzetim yürütülürken, “<=” işleci ile atanmış bütün sinyaller, işlemlerini aynı anda gerçekleşen tüm ifadeler yürütüldükten sonra yapılacak şekilde sıraya sokarlar. Bu işlece tıkanmasız (non-blocking) işleç denmektedir. Bir olaydaki tüm ifadeler yürütüldükten sonra, sıralanmış atanmalar yapılır. Bu olay eş zamanlı davranan kodların daha kolay çalıştırılmasını sağlar. Yukarıdaki örnekte, flop1 değeri, flop2’ye atanmıştır. Benzer şekilde flop2 değeri, flop1’e atanmıştır. Bu ifadeler aynı zaman olayında yürütülmektedir. İfadeler “<=” tıkanmasız işleç ile kodlandığından, işlemler olayın sonunda yapılacak şekilde sıralanmıştır. O zamana kadar, flop1 ve flop2 için ihtiyaç duyulan değerler zaman olayının başındaki değerlerdir. Bu demektir ki atamalar alakasız bir şekilde sıralansa dahi aynı sonuç elde edilecektir. Flop1 ve flop2 her saat vuruşunda (clock olayında) değerlerini takas edeceklerdir. Bu atama için bir diğer seçenek ise tıkanmalı (blocking) olarak bilinen “=” işlecidir. Bu işleç kullanıldığında olaylar diğer dillerdeki gibi bir sıra halinde meydana gelir. Eğer yukarıdaki örnekte “<=” işleç yerine “=” tıkamalı işleci kullanılsaydı, ifadeler sırası davranışı etkilerdi. Reset flop2’yi 1 e, flop1 de 0 a değiştirirdi. Clock olayı daha sonra flop1 i flop2’ye atardı(reset’ten sonra bu değer 1’dir).Sonraki ifade flop2’yi flop1’e atardı. Değerleri takaslamak yerine clock,flop1,flop2 1 olurdu ve değişmezdi.

Gecikme Örneği:

...
reg a, b, c, d;
wire e;
...
always @(b or e)
 begin
   a = b & e;
   b = a | b;
   #5 c = b;
   d = #6 c ^ e;
 end

Yukarıdaki “always” tümcesinin kullanımı diğerlerinden farklıdır. Örnek olarak, “always” tümcesindeki “b or e” koşulu b veya e parametrelerinin değişmesi koşulunda aşağıdaki ifadelerin yürütülmesi gerektiğini belirtir.5 birim zamanlık bir gecikmeden sonra b’nin değeri c’ye atanır ve c^e değeri görünmeyen bir yere atanır. 6 birim zaman sonra bu yerden d yazmacına atanır. Bir işlem içinde (initial veya always bloğunun içinde) yürütülen işaretlerin her zaman “reg (yazmaç)” türünde olmalıdır. Dışarıdan yürütülen işlemlerde işaretler “wire(tel)” tipinde olmalıdır.”Reg” anahtar sözcüğü donanımsal bir yazmacı belirtmemektedir.

Sabitlerin Tanımlanması

Temel söz dizimi şu şekildedir. <Genişlik (bit cinsinden)>'<taban harfi><sayı>

Örnekler:

  • 12'h123 – 16’lık tabanda 123 (12 bit kullanarak)
  • 20'd44 – Ondalık tabanda 44 (20 bit kullanarak - 0 ile otomatik olarak genişletilir.)
  • 4'b1010 – ikilik tabanda 1010 (4 bit kullanarak)
  • 6'o77 – Sekizlik tabanda 77 (6 bit kullanarak)

Sentezlenebilir Yapılar

Daha önce de belirtildiği gibi, donanımı tanımlamak için birkaç temel taslak kullanılabilir.

// Çoklayıcı Örnekleri –Aynı işlemi yapmanın 3 farklı yolu
// İlk örnek sürekli atamayı kullanmaktadır.
wire out ;
assign out = sel ? a : b;

// İkinci örnek aynı işlemi gerçekleştirmek için izlek(prosedür)  
// kullanmaktadır.

reg out;
always @(a or b or sel)
 begin
  case(sel)
   1'b0: out = b;
   1'b1: out = a;
  endcase
 end
 
// İzlek yapısında If/else  
// kullanılabilir.
reg out;
always @(a or b or sel)
  if (sel)
    out = a;
  else
    out = b;

Sonraki ilginç yapı ise saydam mandaldır (transparent latch).Kapı işareti “geç” olarak ayarlandığında girişi çıkışa gönderecektir. Eğer kapı işareti “tut” olarak ayarlamışsa, çıkış işareti girişten bağımsız olarak aynı durumda kalacaktır.

// Saydam Mandal Örneği

reg out;
always @(gate or din)
 if(gate)
   out = din; // İlet durumu
   // Burada “else” ifadesine gerek yoktur. “Gate” “high” durumdayken “out” 
   // “din” değişkenini takip edecektir.
   // “Gate” “LOW” olduğu zaman “out” durumunu koruyacaktır.

D Flip-Flop en basit yapılardan biridir.

reg q;
always @(posedge clk)
  q <= d;

Örnekte tıkanmasız atama kullanıldığına dikkat edilmelidir. Temel kurallardan biri “always” yapısı içerisinde “posedge” (pozitif kenar) veya “negedge” (negatif kenar) ifadeleri kullanıldığında “<=” işlecini kullanmaktır.

D flip-flop’un bir değişik türü, zamanuyumsuz sıfırlama (asynchronous reset) ile gerçekleştirilendir. Reset ifadesi geleneksel olarak yapı içerisindeki ilk “if” ifadesi olarak tanımlanmaktadır.

reg q;
always @(posedge clk or posedge reset)
  if(reset)
    q <= 0;
  else
    q <= d;

Bir sonraki değişik yapıda, hem zaman uyumsuz sıfırlama hem de zaman uyumsuz değer ataması kullanmaktadır. Geleneksel olarak “reset” terimi “set” terimi (değer ataması) ile takip edilmektedir.

reg q;
always @(posedge clk or posedge reset or posedge set)
 if(reset)
   q <= 0;
 else if(set)
   q <= 1;
 else
   q <= d;

Son değişik D flip-flop tipi ise girişini bir çoklayıcıdan alan tiptir.

// Temel yapı geri besleme ile yapılmaktadır.
always @(posedge clk)
  if(gate)
    q <= d;
  else
    q <= q; // açık geri besleme yolu
always @(posedge clk)
  if(gate)
    q <= d; // “else” çoklayıcı gerçekleştirildi.

Initial ve Always

Verilog işlemini belirtmek için iki tane farklı anahtar kelime bulunmaktadır. Bunlar “always” ve “initial” anahtar kelimeleridir. “Always” sözcüğü durum kontrolü (@) ifadesiyle tetiklenen serbest çalışan işlemleri ifade eder.”Initial” anahtar sözcüğü sadece bir kere yürütülen işlemler için kullanılır. Her ikisi de benzetimlik zamanının 0 anında “begin” yapısını kurar ve blok sonuna kadar yürütülür. Blok sona ulaştığında tekrar sıraya alınır. Genel düşünce “initial” bloğunun, “always’den” önce yürütüleceğinin varsayılmasıdır fakat “initial” bloğunun “always” bloğunun sadece bir kere çalıştıktan sonra duran özel bir durumu olarak düşünülmesi daha doğrudur.

//Örnekler:
initial
  begin
    a = 1; // zaman 0 anında reg tipi değişkene değer ata 
    #1; // 1 birim zaman bekle
    b = a; // reg a’yı reg b’ye ata
  end

always @(a or b) // a veya b değiştiğinde aşağıdaki ifadeleri gerçekleştir. 
begin
  if (a)
    c = b;
  else
    d = ~b;
end // Bu blokla işlem bittiğinde tekrar yukarı dön (@ durum kontrolü)

always @(posedge a)// reg a pozitif kenar değeri aldığında çalıştır
  a <= b;

Bunlar iki anahtar kelimenin klasik kullanımıdır. Bunun dışında iki tane ek kullanım özelliği bulunmaktadır.”Always” anahtar sözcüğünü @() duyarlılık listesini eklemeden de kullanabiliriz. Örneğin:

always
 begin // 0 zamanında yürütmeye başla ve hiçbir zaman durma
   clk = 0; 
   #1; // 1 birim zaman bekle
   clk = 1; 
   #1; 
 end // Yürütmeye devam ediyor – yukarıdan tekrar başlar.

“Initial” kullanımının bir diğer kullanımı ise “forever” anahtar sözcüğü ile kullanımdır. Aşağıdaki örnek işlemsel olarak yukarıdaki “always” örneği ile aynıdır.

initial forever // 0 zamanında başla ve begin/end’i sürekli tekrarla.
 begin
   clk = 0; 
   #1; 
   clk = 1; 
   #1; 
 end

Fork/Join

Verilog’da “Fork/Join” yapısı koşut işlemler yaratmak amacıyla kullanılır. Fork/join çiftinin içindeki tüm ifadeler (veya bloklar) “fork” ile eş zamanlı olarak yürütülmeye başlanır. Yürütme “join” ile yürütmenin en uzun süren elemanın tamamlanmasıyla sona erer.

initial
 fork
   $write("A"); // A karakterini yaz
   $write("B"); // B karakterini yaz
   begin
     #1; // 1 birim zaman bekle
     $write("C");// C karakterini yaz
   end
 join
 

Yukarıdaki yazılan şekilde “ABC” veya “BAC” şeklinde bir sonuç almak mümkündür. Benzetimin sırası (ilk $write ve ikinci $write ifadelerinin sırası) simülatöre bağlıdır. Bu olay Verilog’daki en önemli durumlardan birini açığa çıkarmaktadır. Yarış koşulu adı verilen bu durumda yürütüm sırası sonuçların tutarlığını gölgeye düşürebilir.

Yarış Koşulları

Verilog’ta yürütüm sırası her zaman aynı olmayabilir. Bu durum iki sonucun çıkışa yarışması gibi düşünülebilir. Bu durum klasik bir örnekle açıklanmaktadır.

initial
  a = 0;

initial
  b = a;
 
initial
  begin
    #1;
    $display("Value a=%a Value of b=%b",a,b);
  end

A ve b değerleri için ne çıktı verilecek? Cevap 0 ve 0 olabileceği gibi, 0 ve herhangi değer olabilir. Bu olay tamamen “initial” bloklarının yürütüm sırasına bağlıdır. Eğer benzetim programının sıralayıcısı dosyayı yukarıdan aşağıya ele alıyorsa 0 ve 0 sonucu alınır. Eğer aşağıdan yukarıya ele alıyorsa, b benzetimin başındaki 0’a çekilemeyen “a” değerini alacaktır. 3. “initial” bloğunda böyle bir problem yaşanmayacaktır çünkü #1 ifadesi ile küçük bir gecikme eklenmiştir.

İşleçler

İşleç tipiİşleç sembolüYapılan işlem
Bit bit(bitwise)~1'e tümleyen
&AND
|OR
^XOR
~^ or ^~XNOR
Mantıksal (logical)!NOT
&&AND
||OR
Azaltma (reduction)&AND
~&NAND
|OR
~|NOR
^XOR
~^ or ^~XNOR
Aritmetik+Toplama
-Çıkarma
-2'ye tümleyen
*Çarpma
/Bölme
**üs (*Verilog-2001)
İlişkisel>Büyüktür
<Küçüktür
>=Büyük veya eşittir
<=Küçük veya eşittir
==mantıksal eşitlilik
!=Mantıksal eşitsizlik
===4 durumlu mantıksal eşitlilik
!==4 durumlu mantıksal eşitsizlik
Kaydırma>>Mantıksal sağa kaydırma
<<Mantıksal sola kaydırma
>>>Aritmetik sağa kaydırma (*Verilog-2001)
<<<Aritmetik sola kaydırma (*Verilog-2001)
Birbirine bağlama{, }Birbirine bağlama
ÇoğaltmaÇoğaltma
Koşullu? :Koşullu

Sistem görevleri

Sistem görevleri basit giriş/çıkış ve değişik tasarım işlevleri için bulunmaktadır. Tüm sistem görevleri kullanıcı görevleri ve fonksiyonları ile karıştırılmaması amacıyla “$” ön takısını bulundurmaktadır. Bu bölüm çok kullanılan görevlerin kısa bir listesini ele almaktadır yeteri kadar kapsamlı değildir.

  1. $display – Yeni bir satırla ekrana yazdırma
  2. $write – Satırbaşı yapmadan ekrana yazdırma
  3. $swrite – Bir değişkene satırbaşı yapmadan yazdırma
  4. $fdisplay – Bir dosyaya satırbaşı yaparak yazdırma.
  5. $fwrite –Bir dosyaya satırbaşı yapmadan yazdırma.
  6. $readmemh – Hafıza dizisine hex dosyası alınması.
  7. $readmemb - Hafıza dizisine binary dosyası alınması.
  8. $monitor – Değerlerinde bir değişiklik olan değişkenlerin yazdırılması.
  9. $time – Benzetim zamanının değeri.
  10. $random – Rastgele bir değer döndürülmesi.

Dış bağlantılar

Verilog Kaynakları

Standard Geliştirmeler

Verilog Araçları

Açık Kaynak Verilog Araçları

Kaynakça

  • Thomas, Donald, Moorby, Phillip "The Verilog Hardware Description Language" Kluwer Academic Publishers, Norwell, MA. ISBN 0-7923-8166-1
  • [4]9 Mayıs 2008 tarihinde Wayback Machine sitesinde arşivlendi. Cornell ECE576 Course illustrating synthesis constructs
  • Janick Bergerdon, "Writing Testbenches: Functional Verification of HDL Models", 2000, ISBN 0-7923-7766-4. (The HDL Testbench Bible)
  • Burak Kelleci, "VHDL ve Verilog ile Sayısal Tasarım", Seçkin Yayıncılık, 2017, ISBN 978-9-7502-4192-5
  • Burak Kelleci, "VHDL ve Verilog ile Sayısal Tasarım", 2. baskı, Seçkin Yayıncılık, 2019, ISBN 978-9-7502-5561-8


İlgili Araştırma Makaleleri

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

Matematiksel mantık, biçimsel mantığın matematiğe uygulanmasıyla ilgilenen bir matematik dalıdır. Metamatematik, matematiğin temelleri ve kuramsal bilgisayar bilimi alanlarıyla yakınlık gösterir. Matematiksel mantığın temel konuları biçimsel sistemlerin ifade gücünün ve biçimsel ispat sistemlerinin tümdengelim gücünün belirlenmesidir.

<span class="mw-page-title-main">Ada (programlama dili)</span> programlama dili

Ada, yapısal, statik tipli, zorunlu, geniş spektrumlu ve nesne yönelimli bir üst düzey bilgisayar programlama dilidir. Pascal ve diğer dillerin genişletilmiş halidir. Gömülü design-by-contract (DbC), güçlü yazımı, açık eşzamanlı, senkronize mesaj geçişi, korunmuş objeli ve belirsiz bir dildir. Ada kod güvenliğini ve sürdürebilirliğini derleyicide hataları bularak geliştirdi.

Doğrusal dönüşüm, bir fonksiyon çeşididir. T, M boyutlu bir vektörden N boyuta bir doğrusal dönüşüm ise, o zaman;

VHDL sayısal devrelerin tasarlanması ve denenmesi amacıyla yaygın olarak kullanılan bir donanım tanımlama dilidir. Dilin adı "yüksek hızlı tümleşik devreler için donanım tanımlama dili" teriminin İngilizce karşılığı olan Very high speed integrated circuit Hardware Description Language tümcesindeki sözcüklerin baş harflerinin bir araya getirilmesiyle oluşturulmuştur.

<span class="mw-page-title-main">Matris (matematik)</span>

Matematikte matris veya dizey, dikdörtgen bir sayılar tablosu veya daha genel bir açıklamayla, toplanabilir veya çarpılabilir soyut miktarlar tablosudur. Dizeyler daha çok doğrusal denklemleri tanımlamak, doğrusal dönüşümlerde çarpanların takibi ve iki parametreye bağlı verilerin kaydedilmesi amacıyla kullanılırlar. Dizeylerin toplanabilir, çıkartılabilir, çarpılabilir, bölünebilir ve ayrıştırılabilir olmaları, doğrusal cebir ve dizey kuramının temel kavramı olmalarını sağlamıştır.

<span class="mw-page-title-main">Bölme</span> Matematik işlemi

Bölme, aritmetiğin temelini oluşturan dört ana işlemden biri olarak kabul edilir. Diğer üç ana işlem ise toplama, çıkarma ve çarpma olarak sıralanır. İşlem sırasında bölünen miktar bölünen olarak adlandırılırken, bu miktarın bölündüğü sayıya bölen denir ve işlemin sonucunda elde edilen değer bölüm olarak tanımlanır.

En küçük kareler yöntemi, birbirine bağlı olarak değişen iki fiziksel büyüklük arasındaki matematiksel bağlantıyı, mümkün olduğunca gerçeğe uygun bir denklem olarak yazmak için kullanılan, standart bir regresyon yöntemidir. Bir başka deyişle bu yöntem, ölçüm sonucu elde edilmiş veri noktalarına "mümkün olduğu kadar yakın" geçecek bir fonksiyon eğrisi bulmaya yarar. Gauss-Markov Teoremi'ne göre en küçük kareler yöntemi, regresyon için optimal yöntemdir.

<span class="mw-page-title-main">Toplama</span> aritmetik işlem

Toplama işlemi dört ana aritmetik işlemden biridir. Diğer aritmetik işlemler çıkarma, çarpma ve bölmedir. İki doğal sayının toplaması sayı değerlerinin toplamını üretir. Yandaki resimdeki örnek, toplamda beş elma oluşturan üç elma ve iki elmanın toplamasını göstermektedir. Bu gözlem, matematik ifadesi ile "3 + 2 = 5" olarak ifade edilir

AHDL, Altera ortaklığı tarafından kendi ürettiği CPLD ve FPGA türündeki aygıtlarla birlikte kullanılmak üzere geliştirilen ve pazarlanan bir sayısal donanım tanımlama dilidir. Bu donanım tanımlama dilinin C programlama diline benzer yapısı ve VHDL diline benzer işlevi vardır. Altera'nın Quartus ve Max+ serisi derleyicileriyle derlenir.

<span class="mw-page-title-main">Düzenli ifade</span> bir arama modeli oluşturan karakter dizisi

Düzenli ifadeler veya kurallı ifadeler, bilgisayar bilimlerinde ele alınan metindeki kimi katarların kısa yoldan ve esnek bir biçimde belirlenmesini sağlar. Bu katarlar belli karakterler, kelimeler veya karakter örüntüleri olabilir. Düzenli ifadeler, bir biçimsel dil kullanarak yazılır ve bir düzenli ifade işleyici tarafından yorumlanır. Bir düzenli ifade işleyicisi ya ayrıştırıcı olarak hizmet eden ya da metni inceleyip verilen tarife uygun kısımlarını belirleyen bir programdır.

<span class="mw-page-title-main">Doğrusal denklem dizgesi</span>

Doğrusal denklem dizgesi, birkaç tane aynı tip değişkenleri içeren birkaç tane doğrusal denklemlerin oluşturduğu topluluktur. Örneğin:

Periyodik fonksiyon, matematikte belli zaman aralığıyla kendini tekrar eden olguları ifade eden fonksiyonlara verilen isimdir. Tekrar etme süresi "periyot" olarak bilinir. Trigonometrik fonksiyonlar en tipik periyodik fonksiyonlardır. Bununla birlikte, diğer periyodik fonksiyonlar da trigonometrik fonksiyonların toplamı olarak ifade edilebilirler.

Cebirde polinom bölme, bir polinomu, eşit ya da daha düşük dereceli bir polinoma bölme algoritmasıdır. Uzun bölme olarak adlandırılan aritmetik yöntemin genellemesi olan algoritma, karmaşık bir bölme işlemini basite indirgediğinden elle yapılabilmektedir.

Knuth yukarı ok gösterimi, matematikte, çok büyük tam sayıların gösterim yöntemidir. 1976'da Donald Knuth tarafından geliştirildi. Ackermann işlevi ve özel hiperişlem serisi ile oldukça bağlantılıdır. Çarpmanın, tekrarlı hiperişlem olarak tekrarlı toplama ve üs alma gibi görülebilmesi fikrine dayanır. Bu durumu devam ettirme tekrarlı üssü (tetrasyonu) ve çoğunlukla Knuth ok gösterimi kullanılarak ifade edilen aşırı seri üretiminin geri kalanını meydana getirir.

<span class="mw-page-title-main">Kare matris</span>

Doğrusal cebirde, kare matris, satır ve sütun sayıları eşit olan bir matrisdir. n ye n lik bir matris, boyutu n olan bir kare matris olarak bilinir. Aynı boyuta sahip herhangi iki matriste, toplama ve çarpma işlemleri yapılabilir.

Doğrusal cebirde veya daha genel ifade ile matematikte matris çarpımı, bir matris çiftinde yapılan ve başka bir matris üreten ikili işlemdir. Reel veya karmaşık sayılar gibi sayılarda temel aritmetiğe uygun olarak çarpma yapılabilir. Başka bir ifade ile matrisler, sayı dizileridir. Bu yüzden, matris çarpımını ifade eden tek bir yöntem yoktur. "Matris çarpımı" terimi çoğunlukla, matris çarpımının farklı yöntemlerini ifade eder. Matris çarpımının anahtar özellikleri şunlardır: Asıl matrislerin satır ve sütun sayıları, ve matrislerin girişlerinin nasıl yeni bir matris oluşturacağıdır.

Doğrusal cebirde veya daha genel ifade ile matematikte matris toplamı, iki matrisin ilgili girişlerinin eklenmesi işlemidir. Matrisler için diğer bir toplama işlemi türü doğrudan toplamdır.

Small Basic, Microsoft'un geliştirdiği ve yayımladığı bir programlama dilidir.

Bilgisayar biliminde dizi programlama, işlemlerin bir kerede tüm değerler kümesine uygulanmasına izin veren çözümleri ifade eder. Bu tür çözümler, bilimsel ve mühendislik ortamlarında yaygın olarak kullanılmaktadır.