KASIRGA PROJESİ 2. GELİŞME RAPORU

Transkript

KASIRGA PROJESİ 2. GELİŞME RAPORU
KASIRGA PROJESİ 2. GELİŞME RAPORU 29.04.2008 Ankara Kasırga – [Gizli] İçindekiler 1.GİRİŞ ........................................................................................................................................................................................... 4 2. KASIRGA İŞLEMCİSİ ............................................................................................................................................................ 5 2.1 Kasırga Buyruk Tasarımı ........................................................................................................................................... 5 2.2 Kasırga 1 ........................................................................................................................................................................... 7 2.2.1 Kasırga 1 Sanal Tasarım ................................................................................................................................. 10 2.2.2 Kasırga 1 Benzetim ........................................................................................................................................... 11 2.2.3 Kasırga 1 Fiziksel (FPGA Üzerinde) Tasarım ......................................................................................... 15 2.3 Kasırga 2 ........................................................................................................................................................................ 16 2.3.1 Kasırga 2 Sanal Tasarım ................................................................................................................................. 17 2.3.2 Kasırga 2 Benzetim ........................................................................................................................................... 22 2.3.3 Kasırga 2 Fiziksel Tasarım ............................................................................................................................. 25 2.4 Kasırga 3 ........................................................................................................................................................................ 26 2.5 Kasırga Soc (System On Chıp)............................................................................................................................... 27 3. TULPAR ‐ KASIRGA ÇEVİRİCİSİ ................................................................................................................................... 28 3.1 Rs 232 Modülü ............................................................................................................................................................ 29 3.2 Vga Modülü ................................................................................................................................................................... 30 2 Kasırga – [Gizli] ÖZ Günümüz teknolojisi bilgisayar üzerine kurulmuş durumdadır. Bilgisayar donanımı üzerinde en yoğunlaşmış ülkeler Almanya, Amerika ve bazı Uzakdoğu ülkeleridir. Bunun nedeni bilim ve teknolojide ilerlemiş olmaları ve üretime geçmiş bulunmalarıdır. Bunların dışında da belirli çalışmalar yapılmasına rağmen bu ülkeler bilgisayar donanım sektöründe tekel konumundadırlar. Amerika ve Almanya’nın tekelliğini sürdürdüğü bu teknoloji sektöründe Türkiye de kendini kanıtlamak isteyen ülkelerden birisidir. Bu nedenle bazı üniversiteler ve şirketler bünyesinde başlangıç seviyesinde çalışmalar yapılmıştır. Ancak hedeflenen büyük adımlar atılamamıştır. Bu adımlardan en önemlisi bir işlemci tasarlanmasıdır. Çünkü işlemciler bilgisayarların en önemli parçaları olmakla birlikte diğer teknolojilerin de temelinde yer almaktadır. İşte bu önemli adımın atılabilmesi için bu projede farklı sistemlere uyum sağlayabilecek temel bir işlemci tasarımı yapılacaktır. Bu makalede bu işlemcinin tasarımı ve gerçekleştirilmesine ilişkin ayrıntılar anlatılacaktır. 3 Kasırga – [Gizli] 1.GİRİŞ Bilgisayar donanımı temel olarak dört kısımda incelenebilir. Bunlar işlemci, bellek ve giriş ‐ çıkış birimleridir. Bunlar arasında en önemlisi işlemcidir. Bir işlemci bilgisayarın temel parçasıdır. Adından da anlaşılacağı üzere işlemci, bir bilgisayardaki işlemleri yürüten ve sonuçları gerekli yerlere gönderen elemandır. Günümüzdeki işlemciler nanometreler ile ölçülen transistörlerin; dirençler, kondansatörler ve diyotlarla bir araya getirilmesinden oluşan milyonlarca karmaşık mantık kapısından oluşur. Bu karmaşık yapı ile işlemcinin temel iki birimi olan veriyolu ve denetim birimi oluşturulur. İşlemciler ilk olarak vakum tüpleriyle başlayan ve transistörlerle devam eden bir evrim geçirmişlerdir. Ancak işlemci üretiminin tam ivme kazanması silikon üzerine yapılan transistörler sayesinde olmuştur. Intel firmasının 1971 yılında ilk defa binlerce transistörü bir silikon çip üzerinde birleştirmesiyle bilgisayar çağında devrim gerçekleştirilmiştir. İşlemcilerin seri üretimine geçilmesiyle daha önce sadece büyük şirketlerin ve üniversitelerin kullanabildiği bilgisayarlar iyice küçüldü ve bugünkü PS halini aldılar. Bununla birlikte işlemciler modern hayatta yalnızca bilgisayarlar değil otomobil, cep telefonu gibi birçok yerde kullanılmaktadır. Teknolojide ileri seviyelere gelmiş birçok ülkede işlemci tasarımı gerçekleştirilmektedir. Bu konuda daha yeni adımlar atan ülkemizde de bir işlemci yapılmak istenmektedir. Bu yüzden daha yaratıcı olabilmek ve doğrudan bilgisayar tasarımının kullanıcılar, teknik elemanlar ve mühendisler tarafından daha yakından irdelenmesi amacı ile ülkemizde Tübider (Türk Bilişim Derneği) tarafından işlemci tasarımı üzerine bir yarışma düzenlenmektedir. Bu yarışma kapsamında gerçekleştirilecek işlemci bu projenin konusudur. Yarışmaya 3 dalda girmek mümkündür. Bunlar Sanal İşlemci Tasarımı, FPGA ile Fiziksel İşlemci Tasarımı ve Akademik Yenilikçi Gömülü Sistem Tasarımı’dır. Projesi kapsamında her üç dalda bir tasarım yapılması planlanmaktadır. Ancak bu makalede yalnızca sanal tasarım ve FPGA ile tasarıma ilişkin ayrıntılar verilecektir. Ayrıca yarışmanın ilerleyen zamanlarında yapılacak işler ile ilgili planlar da yer alacaktır. İşlemci tasarımı için zaten hali hazırda verilmiş olan buyruklar kullanılarak işlemcinin yapması gerekenler ve kullanılacak birimler belirlenmiştir. İlk olarak buyrukların nasıl davranacağı ve buyruk türleri tasarlanmıştır. Bu adımdan sonra kağıt üzerine geçirilen tasarım üzerinde gerekli düzenleme ve değişiklikler yapılmış ve tasarım son halini almıştır. Veriyolunun son halini almasıyla birlikte denetim birimi tasarımı tamamlanmıştır. 4 Kasırga – [Gizli] 2. KASIRGA İŞLEMCİSİ Kasırga ilk olarak Cpu‐Turkey yarışması için verilmiş temel buyruk kümesini gerçekleştirecek daha sonra tasarım üzerinde yapılacak olan değişiklik ve düzeltmelerle hem daha hızlı hem daha kullanışlı bir işlemci elde etmek üzere yapılacak olan işlemci dizisinin genel adıdır. Bu plan çerçevesinde Kasırga 1 ve Kasırga 2 işlemcileri tasarlanmış ve Kasırga 3 e yönelik ana adımlar atılmıştır. Kasırga 1 35 buyruktan oluşan temel buyruk kümesini kullanan tek vuruşluk bir işlemcidir. En temel ve basit tasarım her işin tek bir saat çevriminde bitmesi olduğu için diziye Kasırga 1 gibi tek vuruşluk bir işlemci ile başlanmıştır. Kasırga 2 ise Kasırga 1 den farklı olarak boru hattına sahip bir işlemcidir. Yine aynı buyruk kümesi bu sefer boru hattı ile gerçekleştirilmiş ve boru hattının sağladığı hızlanma gözlemlenmiştir. İşlemcilerin en temel hızlandırma yöntemi olan boru hattı bundan sonraki tasarımların tümünde var olacaktır. Kasırga 3 yapılacak değişiklik ise kullanım üzerinedir. Buyruk kümesi biraz daha genişletilerek programlanması daha pratik bir işlemci tasarımı yapılacaktır. Ayrıca buyruklar da 32 bite yükseltilerek buyruk kümesindeki buyruk sayısı artırılacaktır. Hiçbir işlemci giriş çıkışı olmadan anlam ifade etmeyeceği gibi Kasırga için de giriş çıkışlar daha doğrusu bir sistem olması için çalışmalar yapılmıştır. Bunun sonucunda Kasırga dizisindeki her bir tasarımın entegre edilebileceği bir sistem geliştirilmiştir. Bu sistem Kasırga çeviricisi ile başlamakta ve bir ekran ile son bulmaktadır. Yani kasırga çeviricisi üzerinde yazılan Kasırga buyrukları çevirici tarafından makine kodlarına çevrilerek seri port aracılığıyla kart üzerine atılmakta ve buradan her bir çıkış buyruğu sonucunda ekranda VGA modülü yardımıyla belirli bir yazmaçtaki değerin ascii karşılığı görülebilmektedir. Bu haliyle Kasırga_SOC(System on Chip) temel bir giriş çıkış fonksiyonu gerçekleştirmekle beraber yarışma süresince birimler üzerinde yapılacak iyileştirmelerle daha gelişmiş bir sistem elde edilecektir. Kasırga SOC un tasarımı sırasında Kasırga için kullanılacak pek çok yan birim de tasarlanmıştır. Bunlar başta Kasırga Çeviricisi (TULPAR) olmak üzere, seri port ve VGA modülleridir. TULPAR visual C# ile yazılmış bir bilgisayar arayüzüdür. TULPAR ile yazılan buyrukların çıkışları hem FPGA kartı hem de ekranda gösterilirler. 2.1 Kasırga Buyruk Tasarımı Sanal tasarım sırasında gerçekleştirilen ilk adım buyrukların belirlenmesi ve buyruk içindeki bitlerle buyrukların ve yazmaçların nasıl ifade edileceğinin belirlenmesidir. Kasırga’nın buyrukları 5 Kasırga – [Gizli] 16 bit genişliğinde olup anlık değeler 11 bit ile gösterilmektedir. İşletilecek olan 35 buyruk ise 16 bitlik buyruğun ilk 5 veya 7 biti ile gösterilmektedir. Kasırga işlemcisinde 4 tür buyruk bulunmaktadır. Bunlar A‐tipi, Y‐tipi, D‐tipi ve S‐tipi buyruklardır. A‐tipi buyruklar anlık değerlerle yapılan işlemleri ifade etmektedirler. 5 bit buyruğu bildirirken kalan 11 bit ise anlık değerdir. Anlık değerlerle işlem yapan buyruklar genellikle birikeci kullanmaktadırlar. Bu tür işlemlerde yazmaçlardan alınan değerler değil, buyrukla gelen anlık değerler kullanılır. Y‐tipi buyruklar yazmaçlarla işlem yapan buyruklardır. İşlem iki yazmaçtan gelen değerler arasında yapılır ve bir sonuç yazmacına bulunan sonuç yazılır. Buyruktaki ilk 5 bit yapılacak işlemi bildirirken sonraki 3 bit sonuç yazmacını, sonraki 6 bit ise işlemin yapılacağı değerlerin bulunduğu 2 yazmacı göstermektedir. D‐tipi buyruklar ise yine 5 bitlik işlem kodu ve 2 yazmaçtan oluşurlar. Buyruktaki 2.yazmaç adresi üzerinde işlem yapılacak yazmacı gösterirken ilk yazmaç ise yine sonucun yazılacağı yazmaçtır. S‐
tipi buyruklar ise sistem ile ilgili buyruklardır. Yani program işleyişi ve giriş çıkış portlarına gelen değerlerin yönlendirilmesiyle ilgili buyruklarda kullanılırlar. Buyrukların nasıl gerçekleştirildiğine dair diğer ayrıntılar. Kasırga 1 ve Kasırga 2 tasarımında verilmiştir. Tablo 1 Kasırga Buyruk Kümesi İŞLEM KODLARI 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 BUYRUKLAR (İNGİLİZCE) syscall add addi sub subi mul muli mulu and andi BUYRUKLAR (TÜRKÇE) sisçağ topla atopla çıkar açıkar çarp açarp içarp ve ave BUYRUK TÜRLERİ A Y A Y A D A D Y A 01010 01011 or ori veya aveya Y A 01100 01101 xor xori öveya aöveya Y A İŞLEMLER ‐‐‐‐‐ Ra ← Rb + Rc Brkç←Brkç+Anlık Değ. (İş. g.)
Ra ← Rb – Rc Brkç←Brkç‐Anlık Değ. (İş. g.)
Üst+Alt ← Ra * Rb HI+LO←Brkç*Anlık D. (İş. g.)
Üst+Alt ← Ra * Rb Ra ← Rb ˄ Rc Brkç ←Brkç ˄ Anlık Değer (Sıfırla genişletilmiş) Ra ← Rb ˅ Rc Brkç ← Brkç ˅ Anlık Değer (Sıfırla genişletilmiş) Ra ← Rb (XOR) Rc Brkç ← Brkç (XOR) Anlık Değer (Sıfırla genişletilmiş) 6 Kasırga – [Gizli] 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 not sll srl sla sra mov movi lw sw cmp değil somk samk soak saak taşı ataşı yükle sakla karş D D D D D D A D D D 11000 beq sed A 11001 bne sedd A 11010 11011 ba bl atla avb A A 11100 11101 bret bgt dön bd A A 11110 blt kd A 1111100 1111101 1111110 1111111 in out hlt nop gir çık dur işlyok S S S S Ra ← Rb‐1 Ra ← Ra<< Rb Ra ← Ra>> Rb Ra ← Ra<<< Rb Ra ← Ra>>> Rb Ra ← Rb
Brkç←Anlık Değer (İşaret. g.)
Ra ← Bellek [Rb] Bellek [Rb] ← Ra Ra>Rb ise Büyük Bayrağı=1 Ra<Rb ise Küçük Bayrağı=1 Sıfır Bayrağı = 1 ise PS=PS+İşaretle gen. Anlık D. Sıfır Bayrağı = 0 ise PS =PS+İşaretle gen. Anlık D. PS=Anlık Değer(İşaretle gen.) PS_ret = PS PS = Anlık Değer(İşaretle gen.) PS= PS_ret Büyük Bayrağı = 1 ise PS =PS+İşaretle gen. Anlık D. Küçük Bayrağı= 0 ise PS =PS+İşaretle gen. Anlık D. Brkç= Anlık Değer(Sıfırla gen.) Brkç<7:0> dışarı verilir. PS = PS PS ← PS+1 2.2 Kasırga 1 Kasırga 1 tek vuruşluk bir işlemcidir. Yani program sayacındaki değerle bellekten alınan buyruk bir saat vuruşu içinde işlenerek sonuç değerleri gereken yazmaçlara yazılmaktadır. İşlemcinin gerçekleştirilmesi sırasında tek bir modül içinde tüm kodlar yazılmıştır. Yalnızca bellek modülü dışarıdan IP Core Generator yardımıyla hazırlanmıştır. Yine tasarım üzerindeki çarpma, AMB ve Kaydırma modülleri ayrı ayrı yazılmış ancak hız sağlanması açısından Verilog’un standart operatörleri kullanılarak gerçekleştirme yapılmıştır. Herhangi bir durumda ayrıca yazılmış AMB, Çarpıcı ve Kaydırıcı da işlemciye bütünleştirilebilir. Kasırga tasarımı sırasında sanal tasarımla FPGA üzerindeki gerçekleştirim aynı anda yürütülmektedir. Bu nedenle ancak Verilog ile kodlamaya geçildiği sırada fark edilebilecek sorunlar 7 Kasırga – [Gizli] ve değişiklikler kısa sürede fark edilip çözümlenmektedir. Bunlardan bir tanesi de Kasırga 1 deki saat vuruşu kavramıdır. Tek vuruşlu bu işlemcide aslında 2 vuruşta bir buyruk gerçekleştirilmektedir. Ancak bu iki vuruş üst düzeyde tek bir vuruş olarak değerlendirilir. Bunun nedeni belleğin de bir saat darbesi ile çalışmasıdır. Saat darbesiyle birlikte bellekten alınan buyruğa göre geçici yazmaçlara okunan değerler atılır. Sonraki saat darbesiyle geçici yazmaçlardaki değerler işlem birimlerinden geçerek sonuçlar hesaplanır. Modüller yerine standart operatörlerin kullanılması da yine FPGA üzerinde tasarım sırasında fark edilmiş benzer bir iyileştirmedir. Şekil 1’de Kasırga 1 in sanal tasarımı gösterilmektedir. Bu tasarıma göre Kasırga 1 içinde gerçekleşen işlemler sırasıyla Kasırga 1 sanal tasarım başlığı altında anlatılmaktadır. 8 Kasırga – [Gizli] Şekil 1 ­ Kasırga 1 Veriyolu 9 Kasırga – [Gizli] 2.2.1 Kasırga 1 Sanal Tasarım Kullanılan bellek hem veri belleği hem de buyrukları tutan bellek olduğu için adres çıkışının önüne konulan bir çoklayıcı ile program sayacı ve adres değeri arasında seçim yapılır. Program sayacından gelen değerin seçilmesi için çoklayıcının denetim değeri 0 olarak belirlenir Program sayacından gelen değerle bellekten alınan buyruk yazmaç öbeğine getirilir. Yazmaç öbeğinde de; A‐tipi buyruk için ilk 5 bit <0:4> işlem değerini geriye kalan 11 bit ise anlık değer olarak alınır. Y‐tipi buyruk için ilk 5 bit <0:4> işlem değeri sonraki 3 bit <5:7> sonucun yazılacağı yazmacı (Ra), <8:10> arasındaki 3 bit birinci kaynak yazmacını (Rb) , <11:13> arasındaki 3 bit ikinci kaynak yazmacını (Rc) gösterir. D‐tipi buyruk için ilk 5 bit <0:4> işlem değeri sonraki 3 bit <5:7> sonucun yazılacağı yazmacı (Ra) ,<8:10> arasındaki 3 bit birinci kaynak yazmacını (Rb) gösterir. Yazmaç öbeğine gelindiğinde Ra sonucun yazılacağı yazmacı gösterir, sonucun yazılacağı yazmaç herhangi bir yazmaç olabileceği gibi birikeç de olabilir. Birikeç ve diğer yazmaç arasında seçim yapabilmek için sonuç yazmacının adresinin verildiği girişe bir çoklayıcı bağlanmıştır. Bu çoklayıcının girişleri Ra’yı bildiren <5:7> arasındaki 3 bit ve birikecin adresini bildiren 000 bitleridir. Yazmaç öbeğinde bulunan “yaz” denetimi sonuç yazmacına gelen değerin yazılıp yazılmayacağını denetler. Eğer yaz denetimi etkinse sonuç yazmacı olarak seçilmiş olan birikeç ya da genel amaçlı yazmaca yazmaç öbeğinin Veri Girişinden giren değer yazılır. Yazmaç öbeğinin veri girişinde bulunan çoklayıcı ile AMBden gelen sonuç değeri, anlık değer ve MOV buyruğunun gerçekleştirilmesini sağlayan Rb değeri arasında seçim yapılır. Bu belirlemenin yapılmasına sebep olan buyruk “MOVI” buyruğudur. “MOVI” buyruğu anlık değeri birikece atmaktadır. “MOVI” nın gerçekleştirilmesi için sonuç yazmacı olarak birikeç seçilirken yazmaç öbeğine giren değer olarak anlık değer seçilmektedir. Diğer buyruklarda ise işlemlerin yapılacağı AMB, Bellek vb. birimlerden gelen sonuç değeri seçilmektedir. MOV buyruğunda ise yazılacak değer olarak Rb yazmacının değeri olarak seçilir. Yazmaç öbeğinin çıkışı olarak Ra, Rb ve Rc yazmaçlarının değerleri alınır. Burada Ra bazı buyruklar için birikeci temsil ederken bazı buyruklar için sonuç yazmacını temsil etmektedir. Eğer işlem LW ya da SW gibi bir bellek işlemi ise Rb değeri bellekten okunacak ya da yazılacak veri için adresi gösterir. Ra LW için bellekten alınan değerin yükleneceği yazmacı, SW içinse belleğe yüklenecek değerin bulunduğu yazmacı gösterir. Eğer buyruk bir 10 Kasırga – [Gizli] aritmetik ya da kaydırma işlemi ise Ra, Rb ve Rc değerleri işlem birimlerinin olduğu kısma yönlendirilir. Aritmetik işlemlerin yapılacağı birimlere iki giriş verilecektir. Giriş değerleri buyruk türüne göre yazmaç öbeğinin çıkışına konulan çoklayıcılar yardımıyla seçilir. Birinci çoklayıcıya anlık değer ve birinci kaynak yazmacı (Rb) , ikinci çoklayıcıya ise sonuç yazmacı (Ra) ve ikinci kaynak yazmacı (Rc) verilir. Buyruğun türüne göre çoklayıcılardan değerler seçilir. Buyruklara göre hangi değerlerin seçileceği aşağıdaki tabloda gösterilmişti. 2.2.2 Kasırga 1 Benzetim Kasırga dizisinde tasarım sırasında izlenilen yol sanal ve fiziksel tasarımın bir arada yürütülmesidir. Bu tasarım sırasında verilog ile kodlama yapılmış ve bundan sonra geriye dönüş yapılarak benzetimler yardımıyla sanal tasarım kısmı gerçekleştirilmiştir. Bu sırada bellekte bulunan buyrukların görülebilmesi için chipscope ile tasarımın kart üzerinde çalıştırılırken gerçek değerleri alınmıştır. Çalıştırılan Kod:
movi 5
mov r3
movi 1
mov r4
mov r5
mov r6
cmp r3
bgt 2
ba 13
add r4
mul r6
mov r6
ba 6
r0
5 Faktöriyel Hesabı
//faktöriyeli alınacak sayı
r0
r0
r0
r4
r4 r5
r4
r2
mov r0 r6
out
ba 0
//13.yer
//faktöriyel sayısı yazdırılır
11 Kasırga – [Gizli] Şekil 2 –Kasırga 1 Sinyallerini Gösteren Grafik Program sayaci her bir saat darbesinde 1 artmaktadır. “Buyruk_w” değişkeninde hafızadan çekilen buyruklar bulunmaktadır. Bu buyruklar direk olarak işlemci tarafından işlenir. Kod incelendiğinde programın sürekli başa döndüğü görülecektir. Bu sebepten çıkış yazmacı olan “gc cikis” hep 120 değerini göstermektedir. 12 Kasırga – [Gizli] Şekil 3­ Kasırga 1 Sinyallerini Gösteren Grafik Y1 ve y0 yazmaçları faktöriyel hesabı için gerekli değerlerini almaktadırlar. Bu sırada program sayacının artışı bir kesintiye uğramadan devam etmektedir. 13 Kasırga – [Gizli] Şekil 4 ­ Kasırga 1 Sinyallerini Gösteren Grafik Program sayacının artışı 12’den 6 ya atlamaktadır. Bunun sebebi 12. adreste bulunan dallanma koşulunun doğru olmasıdır. 14 Kasırga – [Gizli] Şekil 5 ­ Kasırga 1 Sinyallerini Gösteren Grafik Program işlemini tamamladıktan sonra ba 0 buyruğu ile başa dönmektedir. 2.2.3 Kasırga 1 Fiziksel (FPGA Üzerinde) Tasarım Kasırga 1 tek bir modül ve bir hafıza modülünden oluşmaktadır. Kasırga modülüne giriş olarak saat, reset ve giriş portu değeri verilmektedir. Modülden çıkış olarak 8 bitlik çıkış portu değeri alınmaktadır. Çıkış portu kart üzerinde bulunan 8 LEDe bağlanmış durumdadır. Reset tuşu ise tüm işlemciye ilk değer vermek için ya da bazı durumlarda sıfırlamak için yine kart üzerindeki bir butona bağlanmış durumdadır. Kodlar içinde 2 "always" bloğu bulunmaktadır. Birinci blokta buyruk bellekten okunarak yazmaç değerleri okunup geçici yazmaçlara atılırken, ikinci "always" bloğunda işlemler yapılarak sonuçlar yazmaçlara yazılmaktadır. İşlemler yapılırken her bir işlemin sonucu paralel şekilde hesaplanarak sonuç tüm işlemlerin geldiği kablolardan seçilmektedir. 15 Kasırga – [Gizli] Hangi buyruğun işlenmekte olduğu bilgisinin işlemciye yayımlanması verilog'daki "define" yapısı ile gerçekleştirilmiştir. Bu şekilde ayrı modüllere gerek kalmadan tek bir modülde tasarım tamamlanmıştır. 2.3 Kasırga 2 Kasırga 2, Kasırga 1 buyruk kümesinin boru hattı ile gerçekleştirilmiş halidir. Bunun haricinde yazmaç sayıları ve diğer tasarım ana kuralları aynı şekilde kalmıştır. Bu sayede hem işlemciye hız kazandırılmış hem de boru hattının bir işlemci üzerindeki hızlandırma etkisi de incelenebilmiştir. Kasırga 2 boruhattı 4 aşamadan oluşmaktadır. Bu aşamalar Getir (Fetch), Çöz (Decode), Yürüt (Execute) ve Yaz (WriteBack)'dır. Getir aşamasında bellekten program sayacı yardımıyla buyruklar çekilir. Çöz aşamasında buyrukla birlikte gelen anlık değer veya değerlerin okunacağı yazmaçların adreslerine göre okumalar yapılır. Okunacak değerlerin yazmaç ya da anlık değer olması gelen buyruğun türüne göre belirlenir. Çöz aşamasında boru hattı sorunlarından birisi olan veri iletimi sorunu da çözümlenir. Yürüt aşamasında ise buyruğun türüne göre çöz aşamasında saklanan değerler kullanılarak hesaplanan sonuç değeri kaydedilir. Yürüt sırasında bayraklar da değerlerinin alırlar. Son aşama olan Yaz da ise bir önceki aşamada kaydedilmiş olan sonuç değeri 2 aşama önce Çöz'de belirlenmiş olan yazmaca yazılır. Ayrıca Yaz aşamasında dallanma buyrukları için gidilecek olan adres de hesaplanır. Boru hattı uygulaması aslında tek bir buyruğun işlenme süresini uzatmaktadır ancak boru hattı dolduktan sonra her bir vuruşta bir buyruk sonuçlanmaktadır. bir vuruşta yapılacak işler de tek vuruşlu işlemciye göre kısaldığı için çok daha kısa sürede buyruklar işlenmektedir. İşlenecek 1 ‐ 2 buyruk için tek vuruşluk işlemciden yavaş olan boru hattının yararı buyruk sayısı arttıkça belirginleşmektedir. Ancak buyrukların bu kadar süratle arka arkaya işlenmesi de beraberinde sorunlar getirmektedir. Kasırga boru hattında temel olarak 2 sorun vardır. Birincisi henüz hazır olmayan değerlerin yazmaçlardan okunmak istenmesi yani buyrukların arasındaki veri bağımlılığının getirdiği sorun, diğeri ise koşullu dallanma buyruğu geldiği anda koşulun doğru ya da yanlış olması durumuna göre bir sonraki buyruğun alınacağı adresin yani atlanacak adresinin bilinememesidir. Veri bağımlılığı sorununa yönlendirme tekniği ile çözüm bulunurken dallanma probleminde ise adresin değeri belli oluncaya kadar beklenmekte yani program sayacı sabitlenmektedir. Bu durumda dallanma buyruğu geldiği anlarda bir kaç vuruşun israf edilmesi söz konusudur. Ancak bu soruna bulunabilecek en temel ve ilk çözüm bekleme olmuştur. Kasırga 3 tasarımında dallanma sorununun çözümü üzerine iyileştirmeler yapılması planlanmaktadır. 16 Kasırga – [Gizli] 2.3.1 Kasırga 2 Sanal Tasarım Tüm boru hattı aşamaları arasındaki yazmaçlar program sayacı yazmacıyla başlar. Program sayacı belleğin buyruk iletişimi yapılan kapısının adres girişine bağlanmış durumdadır. Program sayacının ilerlemesiyle yeni gelen buyruklar veri yoluna alınır. Bellekte veriler 2 baytlık sözcükler halinde bulunmaktadır. Bu nedenle normal şartlarda program sayacı birer birer artarken dallanma buyruklarıyla farklı değerler almaktadır. Bellekten alınan buyruk, yakalama ile çözme arasında geçişi sağlayacak olan buyruk yazmacına yazılır. Bundan sonra buyruk tüm aşamalarda ilerletilir. Bu şekilde her bir aşamada yapılmakta olan işlem kontrol edilerek denetimler ayarlanır. Buyruk yazmacına yazılmış olan değer ile çöz aşamasına geçilir. Bu sırada saat vuruşuyla birlikte değişen program sayacı sayesinde buyruk yazmacına yeni buyruk yazılır. Çözme aşamasında gerekli yazmaçlar veya anlık değerler buyruk türüne göre okunurlar. Kasırga buyrukları yazmaç kullanımlarına göre 4 gruba ayrılmış şekildedirler. Bunlar: •
Çarpma Buyrukları •
Yazmayan Buyruklar •
Anlık Değer Buyrukları •
Diğer Buyruklar Çarpma buyrukları B ve C yazmaçlarını okuyarak sonucu önceden belirlenmiş olan ALT ve ÜST yazmaçlarına yazarlar. Yazmayan buyruklar ise hiçbir yazmaca sonuç yazamayacak olanlardır. Bunlar dallanma buyrukları, OUT ve SW buyruklarıdır. Yazamayanlar işlenirken anlık değer, A ve B yazmaçları okunur. Anlık buyruklarda ise genişletilmiş anlık değer ve birikeç okunur. Diğer buyruklar ise aritmetik işlemler, kaydırma ve IN buyruklarıdır. Bu buyruklar işlenirken A,B ve C yazmaçları okunur. Aritmetik işlemler B ve C arasında yapılırken, Kaydırma buyrukları ise A ve B yazmaçları arasında yapılır. Buna göre çöz aşamasında: 1. Yazmaçlar okunur 2. Veri Yönlendirmesi yapılır 3. Sonucun yazılacağı yazmaç belirlenir Yazmaçlar okunurken 16 bit uzunluğundaki 8 yazmaçtan gereken değerler çoklayıcılar yardımıyla alınır ve A, B, C yazmaçlarına atılırlar. Yazmaçlar okunurken ortaya bazı veri bağımlılıkları 17 Kasırga – [G
Gizli] v
henüz yazmaca yazılmamışs
y
sa veri yö
önlendirmesi çıkmakttadır. Eğer okunmak istenilen veri yapılmaası gerekir. Şe
ekil 6­ Boru h
hattındaki v
veri yönlendiirmesi Yönlend
dirme için “sscoreboardiing” yöntem
mi kullanılmııştır. Bu mettot verinin y
yazılacağı yeri gösteren
n 10 bitlik
k bir vektörr dizisi kullaanarak çalışşmaktadır. V
Vektörün ilk
k iki biti herr işlendiğind
de aynı yeree yazan buyrukların b
kullandığı yazmaçları göstermekttedir. Örneğğin çarpma buyruklarıı her zaman
n “Alt” vee “Üst” yazmaçlara yaazdığından bu b buyruklar işlenirkeen adresin hesaplanmasına gerek
k yoktur. Sonuç olaraak vektörün
n ilk biti 1 isse “Üst” ve ““Alt” yazmaçları yönlen
ndirmek gerrekmektedirr. Vektörü
ün geri kalaan 8 biti <7
7:0> yazmaçç öbeğinde yazmaçları göstermekttedir. Öncek
ki buyruğun
n yazdığı y
yazmacın veektördeki biiti 1 diğerlerri 0 olmaktaadır. Veri yö
önlendirmessi çöz aşam
masında uygulanmakttadır. Yönleendirme dee 2 tane vektör bitti kullanılm
maktadır. Bunlardan B
b
birincisi birr önceki saaat darbesin
nde oluşturrulan, diğeri de 2 saatt darbesi öncesinde o
oluşturulan vektör dizisidir. Eğer b
bir saat darbesi öncesin
ne bağımlılıık varsa verri yürüt aşamasından
a
n, eğer ikii saat darb
besi öncesiine bağımlıılık varsa vveri yaz aşamasından
a
n yönlend
dirilmektedir. Yaz aşam
masından yön
nlendirilen değer geçicci bir yazmaaçla, yürüt aaşamasından
n yönlend
dirilen değerr bir kablo ille alınmaktaadır. 18
8 Kasırga – [Gizli] Son olarak, sonucun yazılacağı hedef yazmaç, çöz aşamasında belirlenmektedir. Sonuç yazmacı çarpma işlemi için “Alt” ve “Üst” , anlık değer buyrukları için birikeç yazmacıdır. Diğer buyruklar A yazmacını, yaz aşamasına kadar taşıyarak sonucun yazılacağı hedef yazmacın adresi olarak kullanır. Çöz aşamasından A, B, C ile gelen değerler AMB, çarpma, karşılaştırma ve kaydırma birimlerine yollanır. Sonuçlar asenkron olarak elde edilir, bir başka deyişle işlem birimlerinin saate bir bağımlılığı yoktur. Sonuçlar çöz aşamasına ve yürüt aşaması sonuç yazmaçlarına bağlıdır. Sonuç ve hedef yazmaçlar elde edildikten sonra geri bir tek yazma işlemi kalmaktadır. Aynı anda bayraklar yürüt aşamasında güncellenmektedir. Büyüktür ve küçüktür bayrakları CMP buyruğundan sonra, sıfır ve işaret bayrakları da diğer buyrukların işlemlerinden sonra güncellenmektedir. Sonuç değerleri ve bayrakların durumları yürütmeden sonra diğer aşamaya da taşınır. Yazma aşamasında yürüt aşamasından alınan sonuç ve adres değeri kullanılır ve sonuç değeri yazmaç öbeğine yazılır. Sonucun yazılacağı yazmaç gösterilirken, çarpma için özel olarak 1 bit ayrılmıştır. Ayrıca yazmayan buyruklar için de hiçbir yazmaca yazılmayacağını bildiren 1 özel bit ayrılmış durumdadır. Yazma aşamasında ayrıca dallanma adresi de hesaplanır. Bu nedenle anlık değer boru hattının son aşamasına kadar taşınır. Anlık değer boru hattının sonuna taşınırken dallanma koşulunun doğruluğu kontrol edilir. Eğer dallanma koşulu gerçekleşirse yeni dallanma adresi yaz aşamasında anlık değer yardımıyla hesaplanır. Dallanma buyrukları işlenirken boru hattının bir diğer problemiyle karşılaşılır. Problem dallanmadan sonraki buyruğun nereden çekileceğinin bilinememesinden ötürü ortaya çıkmaktadır. 19 Kasırga – [G
Gizli] Şe
ekil 7 – Boru
u hattındaki dallanma so
orunu k
norm
mal çalışma sırasında prrogram sayaacı birer birrer artsa daa, eğer dallaanma koşulu
u Her ne kadar doğru isse henüz yeeni program
m sayacı değğeri hesaplaanmamış ollacaktır. Çün
nkü program sayacının
n değeri son s aşamada hesaplanm
maktadır. Kasırga K
2'de bu soruna bulunan çö
özüm yeni adres a
değerri gelene kadar bekllenmesidir. Çözme aşşamasında dallanma buyruğu b
old
duğu anlaşşıldığı andaa, bellekteen çekilmiş olan buyru
uk durdurullur. Adres hesaplanma
h
sı için bekllenirken, daallanma fark
k edildiği anda bir saayaç başlatıllır ve sayaç sıfırlanıncaaya kadar bo
oru hattına boş buyruk
klar sokulurr. Sayaç sııfırlandığı aanda işlemcii normal işlleyişine dev
vam eder. Boş B buyruklaar işlendiği süre içindee tüm yaazmaç değeerleri ve değişkenler d
aynı şekillde tutulurr. 4 saat vvuruşunda yeni adress hesaplan
nmaktadır aancak aradaa giren buyrruğun etkisizleştirilmessi için sayacın 1 oluğu d
dudumda daa program
m sayacının
n sıfırlanm
ması gerekiir. Dallanm
ma sonrasın
ndaki adrees hesaplan
nana kadarr beklenillmesi bir kaaç saat vuru
uşunun israff edilmesi aanlamına gelse ve kulağğa kolay gellse de FPGA
A üzerinde gerçekleştirilmesi haata ayıklama konusund
daki zorlukllar nedeniy
yle vakit alaan bir kısım
m olmuştu
ur. 20
0 Kasırga – [Gizli] Şekil 8­ Kasırga 2 Veriyolu 21 Kasırga – [Gizli] 2.3.2 Kasırga 2 Benzetim Kasırga 2'de de Kasırga 1 ile aynı şekilde belirli bir işlev gerçekleştirecek buyrukların arka arkaya sıralandığı bir kod çalıştırılmış ve bu çalışmanın Chipscope yardımıyla program sayacı, buyruk yazmaçları vb. değerlerine erişilmiştir. Çalıştırılan Kod:
movi 5
mov r3
movi 1
mov r4
mov r5
mov r6
cmp r3
bgt 2
ba 13
add r4
mul r6
mov r6
ba 6
5 Faktöriyel Hesabı
//faktöriyeli alınacak sayı
r0
r0
r0
r0
r4
r4 r5
r4
r2
mov r0 r6
out
ba 0
//13.yer
//faktöriyel sayısı yazdırılır
22 Kasırga – [Gizli] Şekil 9 – Kasırga 2 Sinyallerini Gösteren Grafik Ps asama1: Bellekten çekilenin verinin adresidir ve program akışını kontrol eden sayaçtır. Görüldüğü üzere 0’dan başlayarak her bir saat darbesinde değeri 1 artmaktadır. Her yeni çekilen buyruk , “buyruk_w” adlı değişkende tutulur daha sonra çekilen her buyruk, boru hattına gönderilir. Boru hattı aşamaları “buyruk aşama1” , “buyruk aşama2” , “buyruk aşama3” ve “buyruk aşama 4” olarak gösterilmiştir. “A,B ve C” geçici yazmaçlardır.”y0” birikeç yazmacıdır. 23 Kasırga – [Gizli] Şekil 10 ­ Kasırga 2 Sinyallerini Gösteren Grafik Şekilde görüldüğü üzere buyruk aşamalarında uzun süre 0000000000000000 buyruğu girmektedir. Bu buyruk boru hattını dallanma geldiğinde durdurmak için kullanılmaktadır. Veri bağımlılıklarını engellemek için vektör ve vektör1 adlı bit dizileri yazmaçları yönlendirme amacıyla tutulmaktadır. 24 Kasırga – [Gizli] Şekil 11 ­ Kasırga 2 Sinyallerini Gösteren Grafik Dallanma sonuçlandıktan sonra buyruklar normal çalışmasını devam etmektedir. “Ps yeni “ ve “Ps tutulan” değişkenleri dallanmadan önce ve sonra program sayacının değerinin doğru devam etmesini sağlayan değerlerdir. 2.3.3 Kasırga 2 Fiziksel Tasarım Kasırga 2 yine Kasırga 1 de olduğu gibi tek bir ana modül ve bir hafıza modülünden oluşmaktadır. Kasırga modülüne giriş olarak saat, reset ve giriş portu değeri verilmektedir. Modülden çıkış olarak 8 bitlik çıkış alınmaktadır. Çıkış portu kart üzerinde bulunan 8 LEDe bağlanmış durumdadır. Reset tuşu ise tüm işlemciye ilk değer vermek için ya da bazı durumlarda sıfırlamak için yine kart üzerindeki bir butona bağlanmış durumdadır. Kasırga 1 de bulunan tek bir "always" bloğu, Kasırga 2 de 4 ayrı bloğa bölünmüş durumdadır. İlk blokta bellekten çekilen buyruk buyruğun tutulduğu bir ara yazmaca atılır. İkinci blokta ise değerler okunur ve bir sonraki "always" bloğuna taşınmak üzere ara yazmaçlara atılırlar. Çöz aşamasında yönlendirmeyi sağlayan vektör değişkeni de bu aşamada atanır bir sonraki gelen buyruk da vektöre bakarak yine ikinci "always" bloğunda vektörün durumuna göre kimi zaman yürütme aşamasından 25 Kasırga – [Gizli] değer okunur. Bazen de iki buyruk üstteki veri bağımlılıklarından ötürü bir önceki vektöre bakılarak yaz aşamasından değerler okunur. Bir sonraki "always" bloğunda ise çöz aşamasından gelen değerlerle paralel şekilde yapılan işlemler bir sonraki aşamaya atanmak üzere ara yazmaçlara atılırlar. Ayrıca yine bu aşamada küçük ‐ büyük, işaret ve sıfır bayrakları da değerlerini alırlar. Son blokta ise bir önceki aşamadan taşınan sonuç değerleri 2. "always" de belirlenmiş olan yazmaca yazılır. Yine son aşamada dallanmalar için hesaplanan yeni program sayacı değeri de ara bir yazmaca atılır. Boru hattı sorunlarından veri bağımlılığına vektör ile gerçekleştirilen "scoreboarding" yöntemiyle çözüm bulunurken. Dallanma buyruklarındaki bekletme ise program sayacının kaç defa bekleyeceğinin bir değişkende tutulması ile gerçekleştirilmektedir. Dallanma ikinci "always" e girdiği anda hangi buyruk olduğu anlaşılmakta ve boru hattına boş buyruklar sokulmaya başlanmaktadır. bekletme süresi boyunca boş buyruklar verilir. Daha sonra 4.aşamada bayrakların durumuna göre belirlenmiş olan yeni program sayacı değeri atanır. Bu şekilde 4 blokla gerçekleştirilen 4 aşama sayesinde her bir saat vuruşunda aşamaların tümü paralel olarak çalıştırılır. İlk çalışma anında aşamaların tümü boş olmakla beraber 4 saat vuruşu sonra aşamaların tümüne buyruklar girer ve her bir vuruşta bir sonuç alınır. tek vuruşta işlem yapan Kasırga1 e göre bir vuruşta yapılacak işlem daha kısadır. Bu nedenle saat sıklığını en uzun aşama olan çöz aşaması belirler. Boru hattı uygulamasıyla yaklaşık 20 mhz lik bir hız artışı sağlanmıştır. 2.4 Kasırga 3 Kasırga 3 şu anda tasarım aşamasında olan bir işlemcidir. Tasarımın ilk adımı olan buyruk tasarımı tamamlanmıştır. Buna göre buyruklar 32 bite çıkarılmış ve buyruk kümesi 67 buyruğa çıkarılmış buna göre buyruk tipleri de 8 e ve yazmaç sayısı da 16 ya çıkarılmıştır. Ayrıca BL ve BRET buyrukları için kullanılan Program Sayacı dönüş yazmacı da bulunmaktadır. Bu yeni buyruk tasarımı sayesinde Kasırga buyruklarıyla daha kolay programlama yapılabilir duruma gelmiştir. Anlık değerlerin kullanımı yaygınlaştırılarak pratiklik sağlanmıştır. Örneğin eski buyruk kümesindeki her değerin önce birikece atılması durumundan kurtulmak için MOV vb. komutlar yeniden tasarlanmıştır. Ayrıca eklenen DEBUG ve CONTINUE buyruklarıyla da işlemcinin çalışması sırasında yazmaç değerlerini görmek ve bu noktadan devam mümkün olacaktır. Kasırga 3 işlemcisinde bilgisayardan verilecek bir komutla işlemcinin geçici olarak durdurulması ya da tamamen işlemin bitirilmesi mümkün olacaktır. 26 Kasırga – [Gizli] Kasırga 3'te yapılması planlanan diğer yenilikler ise bir önbellek eklenmesi ve boru hattı aşamaları ve çarpma biriminin bölünmesiyle birlikte hızlanmanın sağlanması amaçlanmaktadır. Kasırga 3 teki temel prensip kullanımı daha kolaya bir buyruk kümesi ve daha hızlı bir işlemci ortaya çıkarmaktır. Tasarım sırasında değişiklik ve geliştirmeler devam edecektir. 2.5 Kasırga Soc (System On Chıp) İşlemcinin çıkışlarının sergilenmesi, diğer sistemlerle bağının kurulabilmesi hatta bir bilgisayar gibi kullanılıp yapılan işlemlerin sonuçlarının alınarak problem çözümü sağlaması için işlemcinin dışarıya bağlantıları olması gerekir. Kasırga da bu bağlantılar FPGA kartı üzerinde bulunan RS 232 seri portu ile yapılmaktadır. USB yolu ile bilgisayardan alınarak karta gömülen Kasırga verilog kodları ile kart üzerinde bulunan Xilinx Spartan 3E chip üzerinde gereken transistör bağlantılarını, dolayısıyla Kasırga'nın oluşmasını sağlar. Kasırga buyrukları makine dilinde yazılmış şekliyle bellekten alınarak işlenmelidir. Yazılan buyrukların makine diline çevrilmesi ise TULPAR – Kasırga Çeviricisi ile yapılır. Tulpar ile çevrilen kodlar seri port bağlantısı ile belleğe yazılırlar. Bu sırada bellek ile işlemci arasındaki bağ kesilir. Yalnızca bilgisayardan gelen buyrukların yazımı yapılır. Buyrukların yazımının bitmesi ile port ile bellek arasındaki bağ kesilir ve Kasırga ile bellek iletişime başlar. Bu geçiş bir switch sayesinde gerçekleştirilir. Bundan sonra eğer aksi durum belirtilmemişse program sayacı 0 adresinden başlayarak tüm buyrukları okumaya başlar. Yapılan işlemlerin sonuçlarının gösterilmesi, işlemciden çıkış almak içinse bir VGA modülü yardımıyla monitöre OUT buyruğu ile dışarı verilen değerler ASCII kodları ile basılır. Kasırga'nın bir sistem olarak gerçekleştirilmesi sürümüne bağlı değildir. Çünkü her iki sürümde de buyruklar ve yaptıkları işler aynıdır. Bu durum sistemde modüler çalışmaya olanak verir. Şekil 12­ Kasırga System­on­Chip Şeması 27 Kasırga – [Gizli] 3. TULPAR ­ KASIRGA ÇEVİRİCİSİ TULPAR Kasırga buyruklarını makine koduna yani bitlere çeviren bir programdır. Visual C# dili ile yazılmıştır. İlk olarak yalnızca işlemci denemelerinde kolaylık sağlaması açısından tasarlanmış olan bu çevirici daha sonra bellek modülüne buyrukların yüklenmesinde daha sonra da direkt seri port bağlantısı ile bilgisayar ve Kasırga arasında işlem kurulmasında kullanılmıştır. Proje içinde en sık kullanılan parçalardan bir tanesidir. Bu nedenle programın derhal test edilmesi ve eksiklerinin giderilmesi mümkün olmuştur. Şekil 13­ Tulpar ekran görüntüsü TULPAR'ın soldaki penceresine yazılan kod üzerinde bulunan tuşa basılması ile yazılmış olan buyruklar ayrıştırılarak hatalı olanlar bildirilir ve buyrukların türlerine göre bir XML 28 Kasırga – [Gizli] dosyasında kayıtlı olan buyrukların içinden işlem kodu değeri ve yazmaçların değerleri çekilerek yazılmış olan program 16 bitlik buyruklara çevrilir. Şekil 14­ Tulpar Seri port iletişim mesajı Seri port ayarları ayarlar menüsünden yapıldıktan sonra işlemciye sağ pencerede makine kodunda olan buyruklar tuşuna basılarak işlemciye gönderilir. 3.1 Rs 232 Modülü Bu modül Kasırga Çeviricisi olarak kullanılan Tulpar aracılığıyla Kasırga2 işlemcisini programlamak için tasarlanmıştır. Projenin başlangıcında işlemci hafızası Xilinx’in yazılımı olan IP Core Generator ile oluşturuluyordu. Bu şekilde yapılan hafıza oluşturma işleminin çok zaman alması ve buyrukları test etmek için esnek bir yöntem olmamasından dolayı seri port iletişimi kullanılmaktadır. Kasırga2 deki seri port modülünün devreye alınabilmesi için kart üzerinde bulunan mod seçim anahtarı “belleğe yaz” konumuna getirilir. Mod seçim anahtarı 1 yapıldığı anda, Tulpar editöründe oluşturulan veriler Kasırga işlemcisinin belleğine yazılır. Program işlemciye yüklendikten sonra anahtar 0 konumuna getirilir ve işlemci buyrukları çekmeye başlar. İşlemcinin normal halinde, program sayacı 0’dan başlar. SPARTAN 3E kartıyla seri iletişim Bilgisayardan SPARTAN 3E kartına seri bağlantı aşağıdaki şekilde gösterilmiştir. 29 Kasırga – [Gizli] Şekil 15­ Seri port pin bağlantıları Hazır oluşturulmuş IP core hafızası seri porttan 8 bitlik veriyi okumak için kullanılır. Fakat Kasırga’nın belleği 16 bitlik veri uzunluğuna sahiptir. 8 bitlik paketler 16 bitlik olacak şekilde organize edilir ve veri hafızanın doğru adresine yazılır. Bu işlemleri yapan Verilog modülü paketleri senkronize etmek ve iletişim protokolü için basit bir sayaç kullanmaktadır. Çünkü belleğe yazma veya okuma işlemi bir saat vuruşunda gerçekleşmektedir. Ayrıca bir etkinleştirme biti yine seri port ve TULPAR üzerinden işlemciyi durdurmak üzere gönderilir. 3.2 Vga Modülü VGA modülü yazmaçların anlık durumunu görebilmek ve Kasırga Assembly Dili ile yazılmış programların hatasını ayıklamak amacıyla geliştirilen bir birimdir. SPARTAN 3E Starter Kit platformundaki VGA girişi ile standard PC monitörü veya flat panel LCD’lere DB15 könnektörü ile bağlanabilmektedir. Şekilde görüldüğü gibi renkler VGA_RED, VGA_GREEN ve VGA_BLUE pinleri ile üretilmektedir. Senkronlama ise VGA_VSYNC ve VGA_HSYNC pinleri ile yapılmaktadır 30 Kasırga – [Gizli] Şekil 16­ VGA modülü pin bağlantıları Kasırga VGA modülü 72 Hz tazeleme oranında 800x600 çözünürlüğe sahiptir. Vga sinyal zamanlaması Video Electronics Standards Association (VESA) tarafından belirlenmiştir. Bahsi geçen çözünürlük ve tazeleme oranlarına göre zamanlama terimleri aşağıda açıklanmıştır. 31 Kasırga – [Gizli] Dikey Zamanlama Toplam Çizgi Sync Pulse Back Porch (çizgi) (çizgi) 666 6 21 Aktif Zaman (çizgi) 604
Front Porch (çizgi) 35
Tüm çerçeve Periyodu (çizgi) 666 Yatay Zamanlama Piksel Saati Sync pulse Back Porch Aktif Zaman Front porch 50 MHz 120 piksel 61 piksel
806 piksel
53 piksel Tüm Çerçeve Periyodu 1040 piksel
Bu darbeler Verilog HDL’de ayrı ayrı sayaçlar ile üretilmektedir. Sistem Spartan 3E kartı ile uyumlu olarak 50 MHz’de çalışmaktadır. Kasırga işlemcisinin çıkış portları hem LED’ler hem de VGA’dır. Kasırga Çevirici dilindeki OUT buyruğu birikecin ilk 8 bitini dışarı vermektedir. Bu yazmaç aynı zamanda akümülatör yazmacı olarak da adlandırılır. 8 tane LED’den ikilik tabanda çıkış alınırken VGA modülünden 7 bit ASCII’ye karşılık gelen figür ekrana bastırılır. Bu modülün satır başına geçme, boşluk bırakma gibi fonksiyonlara sahip olmasına rağmen ekran temizleme, renk ayarı vs. gibi geliştirilecek yönleri bulunmaktadır. 32 

Benzer belgeler