plazma - amatör bilgisayar kültürü

Lorraine'den MiniMig'e Amiga

Arda (CoZe) Karaduman

Merhaba arkadaşlar, bu yazıda size son günlerde adını sıkça duyduğumuz Minimig projesinden ve kısaca FPGA teknolojisinin günümüz retro sistemlerine getirdiği yeni olanaklardan bahsedeceğim.

Öncelikle Minimig projesini tanıyalım. Minimig projesi, ilk Amiga çipseti olan OCS çipsetinin bir FPGA üzerinde gerçekleştirilmesi esasına dayanıyor. Bu sistemde, disk işlemleri ve SD kart sürme işlemini PIC cinsi başka bir çip üstleniyor. Toplam 2 megabayt hafıza, 512K ROM, 512K Fast RAM ve 1mb Chip RAM olarak ayarlanmış. Boot esnasında PIC, SD Kart üzerindeki FPGA konfigürasyon dosyasını FPGA’e, ROM dosyasında kendine ayrılan 512k hafızaya yüklüyor. 68000 işlemcinin yerini ise 3,3v uyumlu 68SEC000 almış. Bu işlemci 68000 ile yüzde yüz uyumlu olmakla birlikte bir komut (move sr,EA) sadece privileged modda çalışıyor. Stack register’ı okuyan bu komutun Minimig uyumluluğu üzerindeki etkisi şu anda tartışılan bir konu olduğu için fazla bahsetmeyeceğim, ama şu an için 68020 ve üzeri işlemcileri tanımak için bu komutu kullanan programlarda sorun yarattığı düşünülüyor.

Minimig Revizyon 1

Şekil 1.

Minimig'i son kullanıcılar için önemli kılan en büyük özelliği günümüz donanımlarıyla uyumlu bir şekilde çalışabilmesi. PS2 mouse ve klavyenizi herhangi bir çeviriciye ihtiyaç duymadan Minimig'inizde kullanabilirsiniz. Ayrıca 15 KHz ve 31 KHz görüntü modları sayesinde klasik Amiga monitörleri dışında normal bir VGA monitör veya LCD ile de kullanabilirsiniz. SD kart yuvası ve adf emulasyonu artık tarihin tozlu rafları arasında yerini alan floppy teknolojisinden bizi kurtarıyor. Yanlızca tek bir birimde Amiga standartlarına sadık kalınmış, Joystick. Emektar Quickshot'ınızı Minimig ile kullanabilirsiniz. Ayrıca port 1 için mouse ile cebelleşmenize gerek yok, mouse portu ayrı bir ps2 port olduğundan iki joystick ve mouse u aynı anda bağlayabilirsiniz.

Peki Minimig'i geliştiriciler açısından önemli kılan ne? Öncelikle şimdiye kadar yapılamaz denilen Amiga custom çipset emulasyonunun yapılabilir bir proje olduğunu ispatlaması. Bu açıdan birçok projeye yol gösterebilecek bir gelişme. Şu an geliştirilmekte olan iki ayrı Amiga FPGA projesine umutla bakmamızı sağlıyor. Bunlardan ilki, Individual Computers'ın Clone A projesi. Bu projede Minimig gibi A500 özelliklerinde bir ECS çipset emule etme esasına dayanıyor. Ama Minimig'den farklı olarak Clone A, custom çiplerin birebir replikasını üretip oradan tüm Amiga emulasyonunu gerçekleştirmeyi hedefliyor. Geliştirme gerçek Amiga 500 üzerine yerleştirilen FPGA çipleri ile yapılıyor. Bu açıdan custom çip emulasyonunun yüzde yüz uyumlu olması planlanıyor. Diğer proje ise son zamanlarda adından söz ettiren ve oldukça spekülasyon yaratan NatAmi projesi. Bu proje AGA çipsetli bir Amiga'yı emule etme hedefini taşıyor ama aynı zamanda SuperAGA adında gelişmiş bir mod barındıracağı söyleniyor. Bu proje şu aşamada biraz belirsiz bir durumda olduğundan fazla bahsetmeyeceğim.

Clone-A Prototipi

Şekil 2.

Minimig sadece Amiga çipseti veya başka bir retro platform emulasyonu değil, bu platformlarla kullanabileceğimiz çeşitli arabirimler içinde ilham kaynağı oluyor. Buna örnek olarak Amiga 500 de kullanılan IDE harddisk projesini ve Amiga 600 için geliştirilen RAM projesini verebiliriz. Gerçi bu projeler FPGA değil CPLD tipi başka bir tür programlanabilir çip kullanıyor ama kullanılan mantık aynı. Her iki projede Verilog ve VHDL gibi donanım tasarım dilleri vasıtasıyla Amiga kullanıcıları tarafından gerçekleştirilen projeler.

FPGA ve CPLD’lerden söz açılmışken biraz bu çipler hakkında bilgi vermek istiyorum. FPGA ne demek ? İngilizce açılımı Field-Programmable Gate Array olan bu çiplere Türkçe anlaşılabilir bir isim vermek biraz zor, ama programlanabilir çip diyebiliriz. Tabi böyle diyince yine kafada soru işaretleri oluşabilir, programlanabilir çip ne demek ? normal cpu'larda programlanmıyor mu? diyebilirsiniz. Ama burada bahsedilen programlama biraz farklı. Bunun farkını kavrayabilmek için biraz alt seviyeye inip ASIC olarak ifade edilen (belli uygulamalara özgü) çiplerin yapısını anlatmamız gerekiyor. Bu çipler belirli sayıda mantık kapılarının (and, or, not ve bunların kombinasyonları) dizimiyle oluşturuluyor. Ve üretildikten sonra bu yapı sabit kalıyor. Bu ne demek, yani bir 68000 işlemci üretildikten sonra ancak bir 68000 işlemci işlevini görüyor veya bir mpg decoder çipi sadece mpg çözüm işleminde kullanılabiliyor. Yeniden programlanabilir çipler ise kullanıcı tarafından konfigürasyonu değiştirilebilen mantık kapılarından oluşan bir yapıya sahip. Yani and/or/not kapıları ve bunların kombinasyonları yeniden programlanabilir çiplerde yeniden ayarlanabiliyor ve çip tamamen farklı bir işlev görebiliyor.

Peki bu FPGA'ler ne için kullanılıyor? Ne işe yarıyorlar? Öncelikle hardware tasarımı konusunda bir devrim anlamına geliyor, çünkü eskiden çok büyük ve hantal transistor plakalarıyla yapılan çip geliştirme işlemini, bir kibrit kutusu büyüklüğünde bir çip ile evde masa üstünde yapabiliyorsunuz. Mesela Amiga çipsetinin ilk tasarım aşamasında kullanılan sisteme bir bakalım :

Daphne ve Agnus Plakaları

Şekil 3.

Bu fotoğrafta gördüğünüz sağdaki üç plaka agnus çipini oluşturuyor. Soldaki plakalar ise ilk Denise prototipi olan Daphne’ye ait. Dizaynda bir değişiklik yapmak gerektiğinde, bu plakalar üzerinde el ile gerekli değişiklik yapılıyor (atıyorum bir and or ile değişiyor, veya 85’inci and kapısının çıkışı 37’inci xor’un girişine bağlanıyor, gibi). FPGA'lerde ise bu tip işlemler tamamen software ile birkaç tuş darbesiyle yapılan bir değişikliğe dönüşüyor. HDL (hardware design language) denilen donanım tasarım dilleri ile yapmak istediğiniz değişikliği yapıp çipinize yüklüyorsunuz.

İlk Amiga Prototipi Lorraine ve 'custom chipset'

Şekil 4.

Burada ufak bir parantez açarak sizi 'Donanım tasarım dilleri' konusunda kısaca bilgilendirmek istiyorum. İlk donanım tasarım dili olan Verilog aslen 1985 yılında Gateway tarafından geliştirilmiş olan bir dil. Verilog'un en büyük alternatifi olan VHDL ise 1987 yılında ABD savunma bakanlığı tarafından geliştiriliyor. O dönemlerde programlanabilir çip teknolojisi fazla gelişmiş olmadığından bu diller daha çok simulasyon ortamında kullanılıyordu. İlk FPGA lerin tasarımı Xilinx tarafından 1984 yılına dayanmasına rağmen ev kullanıcılarına hitap eden Spartan serisi FPGA'lerin geliştirilmesi 1998'i bulur. 2005'e gelindiğinde ise Spartan serisi 128 milyon satan, Xilinx'e yılda 1.2 milyon gelir getiren dev bir sektör haline gelmişti. 2005 mart ayında Xilinx Spartan3E serisini piyasaya sürdü. Tam bu sıralarda ise Hollandalı Dennis Van Weeren, biraz da Commodore One projesinin etkisiyle Amiga çipsetinin FPGA üzerinde emule edilip edilemeyeceğini düşünüyordu. Aynı sene içinde kendisine bir Spartan 3 başlangıç kiti alarak Verilog ile ilk kodlarını yazmaya başladı.

Minimig Prototipi

Şekil 5.

Minimig prototipi ilk defa 2005 kasım ayında boot etti. Resimde görünen prototipte 68SEC000 çip ve 2mb SRAM ayrı bir PCB’de, SD kart, mouse, joystick ve video çıkışları ayrı bir PCB’de görülüyor. Bu aşamada çipset emulasyonunda birçok bug bulunuyordu. Bunların ayıklanması ve ilk versiyonun GPL lisansı altında yayınlanması 2007’yi buldu. Her ne kadar en son sürümünde bir takım buglar bulundursa bile bu projenin bu aşamaya kadar gelmesi Amiga çipsetini yeniden tasarlama amacı taşıyan projeler için çok umut verici. Amiga çipseti zamanında Jay Miner'ın önderliğinde her biri kendi alanında uzman 30 profesyonel tasarımcının çabalarıyla gerçekleşmişti. Aynı işlemi (gerçi biraz kopya çekerekte olsa) tek başına bir hobi tasarımcının gerçekleştirmesini Xilinx'in yarattığı bu FPGA devrimine borçlu olduğumuzu söyleyebiliriz.

Minimig projesinin ilk yan ürünü Tobias Gubener tarafından geliştirilen tg68k projesi oldu. Bu proje, Amiga çipseti olarak tamamen Minimig kodu üzerine dayanmasına rağmen, 68000 işlemci yerine softcore (yani FPGA tarafından emule edilen) bir 68000 işlemci kullanıyor. Bu yaklaşım, 68000 emulasyonundan doğan uyumluluk sorunları yaratma potansiyeli olsa bile, beraberinde getirdiği yeni olanaklar sayesinde TG68’in çok ilginç bir proje olmasını sağlıyor. Bu proje ile 68000’ı daha hızlı emule ederek hızlandırılmış bir Minimig elde etmek mümkün. Aynı zamanda 68030-68060 gibi artık üretilmeyen işlemcileri FPGA ortamında gerçekleştirmeninde yollarını açıyor. Belki ileride çeşitli Amiga modelleri için FPGA bazlı turbo kartlarda görebiliriz, kimbilir ?

Altera DE2 Softcore Minimig

Şekil 6.

Sonuç olarak FPGA teknolojisinin gelişmesinin bizlere yeni donanım olanakları olarak geri döneceğini söyleyebiliriz. Burada bir yazının daha sonuna gelmiş bulunduk, umarım bir sonraki Plazma yazısında gelecek vaat eden bir diğer FPGA implementasyon projesi olan NatAmi hakkında daha ayrıntılı bilgi verebiliyor olacağız. Bu yazıda bahsi geçen projeler hakkında daha detaylı bilgi sahibi olmak isterseniz e-mail adresimden bana ulaşabilirsiniz.

coze.00@gmail.com

Not : Bu yazıda kullanılan fotoğraflar, Dennis Van Weeren’in Minimig sayfası, Secret Weapons of Commodore, Total Amiga Jens Schönfield röportajı ve TG68 proje grubu’ndan alıntıdır.

Linkler:

Minimig projesi resmi sayfası:

http://home.hetnet.nl/~weeren001/

TG68 yahoo grubu:

http://www.opencores.org/projects.cgi/web/tg68/overview

Minimig amiga.org topiği:

http://www.amiga.org/modules/newbb/viewtopic.php?forum=8&topic_id=27988

NatAmi resmi sayfası:

http://www.natami.net/

Clone-A röportajı:

http://www.totalamiga.org/files/TA25_JensIviewExtract.pdf

Xilinx Spartan 3 Geliştirme Kiti:

http://www.xilinx.com/products/devkits/HW-SPAR3-SK-UNI-G.htm

Altera DE2 Geliştirme Kiti:

http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=30

plazma - 2008