Gönderen Konu: Simple Arduino graphic adapter  (Okunma sayısı 3161 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Simple Arduino graphic adapter
« : 14 Mayıs 2015, 12:37:15 »
i_r_on'un optimizasyon sorusundan yola çıkarak. Yeni bir soruya ulaştım. Breadboard üzerinde kendi başına bir şeyler yapan 6502 veya Z80'in ne yaptığından nasıl haberimiz olabilir? Bunun en kolay yolu belli bir hafıza adresini bir grafik arabiriminde görselleştirmek olurdu.

Peki Arduino kullanarak 8 bit işlemciler için basit bir grafik işlemcisi nasıl yapabililirz?

Problemin tanımı şu şekilde:
(1) Arduino sabit bir bellek aralığını okuyacak.
(2) Buradaki veriyi bitmap verisine dönüştürerek.
(3) LCD'ye basacak

2 ve 3 çok kolay işler anca 1. aşama benim bilgimi aşıyor. Bu kısım basit bir şekilde halledilebilir mi?
Gosub ile gidilen yerden goto ile dönen adam

Çevrimdışı nightlord

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 389
    • Night Network
Ynt: Simple Arduino graphic adapter
« Yanıtla #1 : 14 Mayıs 2015, 21:45:01 »
bu cok basit bir is degil bence. bellek erisimini islemciler ve grafik arabirimi arasinda nasil paylastiracagin kritik bir konu. biliyorsun 6510'da bunun icin BA sinyali ve cok karmasik VIC 6510 paslasmalari var. 6502 de bu nasil olur bilmiyorum. Elbette sonucta mumkun ancak ciddi bir tasarim konusu olacagini dusunuyorum

i_r_on

  • Ziyaretçi
Ynt: Simple Arduino graphic adapter
« Yanıtla #2 : 14 Mayıs 2015, 22:09:05 »
Aslında benim devreyi yaparken yapsam mı acaba diye sürekli düşündüğüm ama devre çalıştığı için rafa kalkan bir iş bu. Ekran sürmekten çok aslında bir şekilde ekstra io çipi olmadan geriye bilgi aktarmak da diyebiliriz. Sen de graphic adapter derken tam olarak ne imkanlara sahip bir adaptör olacağından bahsetmemişsin.

Klasik anlamda yapılışı nightlord'un da dediği gibi işlemci ile bus ve memory paylaşımı üstünden yürüyor. Yüksek hızlı bir micro/fpga vesaire kullanılırsa yapılabilir. 6502 yerine de 65c02 ya da 6510 gibi bus sinyalizasyonu olan bir işlemci kullanmak lazım.

Bellek paylaşımı olmayan spi/i2c yahut custom bir protokol ile sürülen daha basit bir ekran yahut çıktı birimi düşünülürse swinsid'in yaptığı gibi yapılabilir. Swinsid sid'i emüle ediyor. Adres bus'ın ilgili bacaklarına bağlantısı var, Data bus'a bağlantısı var. Memory mapped bir i/o cihazı gibi davranıyor. Bunun için adres decoding logic'ini doğrudan avr işlemcinin interrupt pin'ine bağlamış. Cpu yazma ya da okuma (ikincisine çok gücü yetmiyor) yaptığında avr'deki interrupt handler elverdikçe sid'i emüle ediyor. Elverdikçe diyorum çünkü 25 ve 30mhz kullanarak bile bir bus cycle içinde öyle aman aman çok iş yapamıyor. Komut bazlı ekran sürme muhtemelen sid emülasyonundan kolay olur. Bu şekilde 6502 ile arduino üstünden lcd display sürebilirsin.

Veya çok daha basiti yine memory mapped çalışan iki yönlü bir serial transfer linki kurmak 6502 ve arduino arasında. Adres decoding harici ekstra çip kullanmadan bunu da yapabilirsin.

ps1: 6502 için yazdım, z80'de de durum çok farklı değil. Onda da general purpose IO pin'i yok. Ama 6502'ye göre avantajı memory mapped io için address decoder'a eklenti yapmak zorunda kalmıyorsun. Bu tam olarak avantaj mı bilemedim, bu sefer de işlemcinin adresleyebildiği giriş çıkış port'ları ile sınırlısın. Zaten microcontroller'lar ile microprocessor'ler arasındaki en belirgin ayrım bu birinde i/o imkanları kendi içinde, diğerinde dışarıdan destek alıyor. Gerçi 6510'a gpio koymuş commodore mühendisleri. Bunu yaparken tabii 6502 üstündeki standart pin'lerden bazılarını uçurmuşlar, gitmiş güzelim SO pin'i.

ps2: VIC benzeri bir şey düşünüyorsan şuradaki tartışma işine yarayabilir : http://forum.6502.org/viewtopic.php?f=4&t=2807

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: Simple Arduino graphic adapter
« Yanıtla #3 : 15 Mayıs 2015, 08:55:34 »
fpga veya Asic'le grafik arayüzü yapılabiliyor. Bu şeklilde üretilmiş ticari ürünler de var.
- MOD VGA https://www.sparkfun.com/products/retired/10593
- GAMEDUINO https://www.olimex.com/Products/Modules/Video/MOD-VGA-32MB/open-source-hardware
- MICRO VGA: http://www.microvga.com/arduino

Ben bu tarz bir şey değil çok daha ilkel bir graphic adapter düşünüyorum. Başlangıç için Easy 6502'nin simulatör ekranı gibi bir şey yeterli olurdu. Buradaki simulatör $0200 to $05ff aralığındaki baytların değerine göre ekrana renkli pixeller yerleştiriyor. Ben bu tarz bir şeyi spi/ic2 üzerinden 5110 ekranı tarzı bir ekran sürerek yapmayı düşünüyorum.

Sadece 65xx değil Z80 desteği de olursa daha geniş bir kullanım alanı olabilirdi. En azından daha sonra Z80 versiyonu yapılabilir bir proje olmasını tercih ederim. Aynı şekilde projenin ileride işe yarar bir şeylere evrilebilmesi için old school yöntemlere bağlı kalmak gerektiğini düşünyorum. Bu yüzden bus interlieving tekniği önemli.

6502 ailesi hakkında çok bilgi sahibi değilim. Hatta 6510 haricinde hiç bir şey bilmiyorum denebilir. Kolay temin edilebilmesi için başlangıçta 65c02 veya 65c816 kullanılabilir. Belki IO için 65c22 (VIA)'dan yardım alınabilir. Gerekli mi bilmiyorum.
Gosub ile gidilen yerden goto ile dönen adam

i_r_on

  • Ziyaretçi
Ynt: Simple Arduino graphic adapter
« Yanıtla #4 : 15 Mayıs 2015, 10:04:20 »
Kisa yazabiliyorum.

6522 kullanacaksan arduinoya gerek yok. Vanilla 6502'leri tr'de daha kolay temin edersin, uyumluluk anlaminda daha genis kitleye hitap edebilirsin.

6522 kullandiginda is donanimdan cok yazilima kayiyor. Z80de nasil kullanilir fikrim yok ancak 6502 ile kullanmak icin adres decoder'ini hazir etmenin disinda gerisi hep duz baglanti islemci ve 6522 arasinda.

Salt arduino ile devam etmek senin için daha iyi olacaktir.

Bir de mutlaka bir logic analyzer edin. En az 16 kanal olsun. Felaket ise yariyorlar.