Elektronik / Mikrodenetleyici Projeleri/

Tarih Öncesine Bir Yolculuk: ABEL ve PAL

Sponsorlu Bağlantılar

1978 yılının Mart ayında, daha Xilinx FPGA’i keşfetmemişken, tüm elektronik kartlar AND veya OR kapıları ile tasarlanıyorken Monolithic Memories piyasada döneminde çığır açan yeni programlanabilir yapısını görücüye çıkardı: PAL.

PAL, Programmable Array Logic yani programlanabilir mantık dizisi, içerisinde bugünkü FPGA’lerin mantığına benzeyen yüzlerce mantık kapısı bulunduruyordu ve kullanıcı istediği işlemi yazarak 50-60 tane entegrenin yaptığı işi tek bir entegreyle artık yapabiliyordu. Programlamanın yapılacağı en etkin derleyici ise C++’ın babası olan Walter Bright tarafından 1988 yılında yazılmıştı. Bundan sonra ise piyasa mikrodenetleyiciler gelişip, Xilinx FPGA’i duyuruncaya kadar PAL ve onun kardeşi GAL’in kölesi haline gelecekti.

Durup şöyle bir baktığımızda bile insan nereden nereye diyor açıkçası. Üniversitenin ilk yılında mantık dersi kapsamında hem ABEL dilini görmüş hem de PAL programlamıştım. Üzerinde bulunan ufak penceresine güneş ışığı tutup ayrıca rahatça da silmiştim.

Bilenlerin tekrar nostalji yapıp iç geçirmesini, yeni öğrenenlerin ise faydalanmasını istediğim bu yazımda, Data-IO firmasına ait Easy Abel Complier‘ını ve kullanımı daha basit olan Deusto Üniversitenin tasarladığı Boole-Deusto programının kullanılışını gösterip bir uygulama yapacağım.

1) Data-IO Easy Abel Complier

Öncelikle belirtmek isterim ki derleyici 1988-1990 yıllarında yazıldığından, günümüz bilgisayar kullanıcılarının pek beğenmeyeceği bir çok özelliğe sahip. Bunlardan bir kaçı programın MS DOS tabanlı olması, programda fare kullanılamaması, kopyala yapıştır işlemlerini yapamıyor olmak şeklinde sayılabilir. Bunların yanında programın piyasadaki tek ABEL derleyicisi olması sahip olduğu tek avantaj olarak söylenebilir.

Öncelikle programımızı yazının sonunda verdiğim bağlantıdan indirip, indirdiğimiz dosyayının içinde bulunan ‘dataio’ klasörünü, bilgisayarımızda C:\ konumuna koyarak çıkararak işe başlayalım. Daha sonra ise ABEL4.exe dosyasını bulup, çift tıklayarak çalıştırdığımızda görülecek program ekranı aşağıdaki gibi olacaktır.

abel-giris-ekrani-data-io-easy-abel-complier

Biraz bekledikten sonra bu ekran yerini aşağıda görülebilecek program yazım ekranına bırakacaktır.

Abel_Ana_Ekran

Programdaki menülerden ise bahsetmeyeceğim, zaten herhangi bir C veya başka bir derleyici ile haşır neşirseniz bu menülere az çok aşina olacaksınızdır. Programı yazmaya başlamadan önce tekrar uyarmak isterim ki kesinlikle klavye ve yazım sorunu yaşayacak, compile et dediğinizde bile boşluk fazlası, olmayan bir yerde hata gösterme gibi problemlerle karşılaşacaksınız.
Tüm bunları aşıp aşağıdaki gibi örnek bir program yazdığınızda ise yapmanız gereken tek şey Alt+C tuşuyla Compile seçeneğine gelip Enter tuşuna basmaktır.

abel-Ornek-Program

Eğer yazdığınız programda herhangi bir sorun yoksa aşağıdaki resimde kırmızıyla çizilen ifadeyi görecek ve dataio klasörünün içine dosya adınızı ne belirledi iseniz, o isim ve sonunda .jed uzantılı bir dosya elde edeceksiniz.
Bu dosyayı daha sonra entegrenizin içine atmak suretiyle istediğiniz işlemi gerçekleştirebilirsiniz.

jed-Basarili-Program

Eğer ABEL dili hakkında daha fazla bilgiyi, yine yazının sonunda vereceğim bağlantının içinde bulunan ve Mutlu Boztepe‘nin hazırladığı ders notlarında bulabilirsiniz.

2) Boole-Deusto

Programı yazının sonunda verdiğim bağlantıdan indirip çalıştırdığınızda göreceğiniz ilk ekran şekildeki gibi olacaktır.

Boole-Deusto_Ana_Sayfa

Programın ana kullanım pencere yukarıda da görüleceği üzere son derece sadedir. Biz burada özellikle Combinational Circuit kısmı ile ilgileneceğiz.

Boole-Deusto-Combinational-Circuit

Bu kısmı açtığımızda karşımıza yukarıdaki ekran çıkacaktır. Şekilde görüldüğü gibi program ara yüzü İngilizce’ye azıcık hakim olan biri için son derece açıklayıcıdır. Yine de neyin, ne anlama geldiğine değinecek olursam:

Name: Projenin ad kısmıdır, program buraya herhangi bir isim vermezseniz işleminizi kesinlikle yürütmeyecektir.

Input ve Output: Devrenizdeki giriş çıkış değerlerinin kaça kaç olacağını göstermektedir. Burası önemli bir noktadır şayet buradaki değerleri yanlış girdiğinizde programlamaya çalıştığınız tüm değerler de yanlış olacaktır.

Manual Truth Table: Yukarıda da görüleceği üzere giriş değerlerini seçtiğiniz değere göre 0 dan başlayarak n’e kadar sıralar ve sizden bu değerlere karşılık fonksiyon sonucunu bekler. Burada yapmanız gereken tek işlem gerekli alanları doldurarak Evaluate yani değerlendir butonuna basmaktır…

Compact Truth Table: Bu sekme de Manual Truth Table gibi değerler girmenize yarar, arasındaki tek fark girdileri 0 dan n’e kadar sıralamaz, bu sonuçları sizin girmenizi bekler.

Boolen Expression: Boolen açılımını elinizle girerek programı yaratmaya yarar.

Ayrıca programda Minimized SOP(Sum of Product)/POS(Product of Sum) Expression sekmelerine bastığınızda aşağıdaki ekran karşımıza gelecektir. Buradan Veitch-Karnough sekmesinden karnoug tablonuzu, nand/nor sekmesiyle devrenizin sadece nand ya da nor kullanılarak oluşturulmuş boolen denklemini ve wiev circuits tablosundan da oluşan devrenin şemasını bulabilirsiniz…

Boole-Deusto-Veitch-Karnough

Son olarak tüm değerlerinizi doğru olarak girip, denkleminizi ve devre şemanızı gördükten sonra ana ekranın sol altında bulunan VHDL, OrCad-Pld ve Jedec kodu oluştur seçeneklerinden istediğiniz programın yazılmış halini, yine istediğiniz yere çıkartabilirsiniz.

Burada dikkat edilmesi gereken tek önemli konu Jedec kodunun sadece PAL22V10 için geçerli olmasıdır. Ayrıca belirtmediyseniz girişler sırasıyla I1, I2, I3 … I11 çıkışlar ise I/O0, I/O1, I/O2… I/O9 olacaktır…

Örnek olarak binary olarak girdiğimiz değerleri, seven-segment üzerinde sayı olarak gösteren uygulamayı tasarlayalım.
Tabloları sırasıyla aşağıdaki gibi yerleştirelim:

1 – 0110000
2 – 1101101

Bunları yazdıktan sonra evalute’ye basalım…
Son olarak Jedec Code’a basıp dosyamızı oluşturalım.
Proteus vb. bir simülasyon programından AM22V10’u seçelim ve yarattığımız programı buraya aktaralım.

Devre şemamız ve çalışması ise aşağıdaki resimde görülebilir.

Binary-to-Decimal-am22v10

Dünya da artık ne PAL, ne de GAL kaldı belki ama teknolojinin ilerlemesinde birer mihenk taşı oldukları, bugünlerde tekrar tekrar silip kullandığımız çoğu mikrodenetleyici ya da mikroişlemcinin bir şekilde bir atası olduğu kesin.

Tüm programları, Mutlu Boztepe‘nin hazırlamış olduğu ders notlarını ve uygulama örneği: Tarih Öncesine Bir Yolculuk: ABEL ve PAL

Dosya indirme linkleri (TXT formatında) link-21436.zip şifre-pass: 320volt.com

Herkese iyi çalışmalar diliyorum…