commodore.gen.tr

Genel Kategori => Proje => Konuyu başlatan: i_r_on üzerinde Aralık 15, 2015, 23:49:01 ÖS



Konu Başlığı: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 15, 2015, 23:49:01 ÖS
Alınık TMS9918 (http://www.commodore.gen.tr/forum/index.php?topic=11031.0) konusunda hatırlarsınız 10'lu paketlerde satılan TMS video çipleri için kendime ortak arıyordum. Sağolsun delimawi yarısına talip oldu, nihayetinde TMS9929 tercih ettik (ettim aslında biraz) ve mallar elimize ulaştı.

İnsan hakikaten bazı şeylere ancak işin içine girince uyanıyor. Öncelikle video çıkışının PAL ve YPbPr olmasının görüntü kalitesi ve Avrupa uyumu açısından tercih edilesi bir şey olduğunu düşünmekte iken şu günlerde lan NTSC destekliyor bizim televizyonlar, niye composite çıkışlı TMS9918'i tercih etmedim demiyor değilim.

Gerçi şöyle bir durum var, ilk denemeler için kablo sayısı 1'den 3'e çıksa da component destekleyen bir tv ile kullanma şansı var.

İkinci golü sıcağı sıcağına 20. yüzyılın Güngören'inde Dram dediğin şey Dram'dır kardeşim diyerek sipariş ettiğim  TMS4416 16Kx4bit dram'lerden yedim. Plan şuydu : Datasheet'te 16k elde etmek için 8 adet 4116 (16Kx1bit) kullanılmakta. Bendeki çakallık 8 çip yerine 2 çiple hallederim bu işi demek oldu.

İşin içine girince işin tam da düşündüğüm şekilde olmadığı anlaşıldı.

Aşağıdaki şekilde çipin pinout'una bakınca aslında gör beni, gör beni diyor resmen.

Kod:
       +----+--+----+ 
  RAS* |1 o       40| XTAL2
  CAS* |2         39| XTAL1
   AD7 |3    T    38| CPUCLK        R-Y  on TMS9928A/TMS9929A
   AD6 |4    M    37| GROMCLK
   AD5 |5    S    36| COMVID        Y    on TMS9928A/TMS9929A
   AD4 |6         35| EXTVDP        B-Y  on TMS9928A/TMS9929A
   AD3 |7    9    34| RESET*/SYNC
   AD2 |8    9    33| Vcc
   AD1 |9    1    32| RD0
   AD0 |10   8    31| RD1
  R/W* |11   A    30| RD2
   Vss |12        29| RD3
  MODE |13        28| RD4
  CSW* |14        27| RD5
  CSR* |15        26| RD6
  INT* |16        25| RD7
   CD7 |17        24| CD0
   CD6 |18        23| CD1
   CD5 |19        22| CD2
   CD4 |20        21| CD3
       +------------+

Biraz ön bilgi vermekte fayda var. Bu görüntü çipinin her ne kadar sistemdeki clock sinyallerini sağlasa da VIC-II gibi bus'ın master'ı ben olacağım, istediğim cycle'ları yerim, topunuzu keserim ulen gibi bir iddiası yok. Azıcık aşım, ağrısız başım şeklinde takılan bir çip, kendi belleğini istiyor, sistemin belleğine karışmıyor. Address bus'a falan da doğrudan bağlanma gereksinimi yok, portlarım buralar, buralardan beni okur yazarsın diyor.

Bu önbilgiden sonra gelelim RAM seçme olayına. Dikkat edilirse 3 tane 8 bit'lik portu var.

AD0..AD7 : DRAM interface'i için Adres yahut Data gönderimi için kullanılıyor
RD0..RD7 : DRAM interface'inde bellekten data okumak için kullanılıyor
CD0..CD7 : Cpu interface'inde okuma ve yazma için kullanılıyor

Bunlar da sırasıyla 4116 ve 4416'nın pinout'ları. Uyumsuzluğun kaynağı dikkatinizi çekti mi?


(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11633.0;attach=14097;image)

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11633.0;attach=14099;image)


4116 sadece 1 bit interface'i olan bir DRAM, 4416 ise 4 bit. Ancak bacaklara dikkatle bakıldığında 4116'da tek bitlik data hattının giriş ve çıkışı ayrı ayrı. 4416'da ise bir arada. Yani biri unidirectional, diğeri ise bidirectional. Bu tip bellek/latch/sayıcı gibi entegre pin dizilimlerinde genel standart şu : Giriş olan pin'ler D ile, çıkış olan pin'ler ise Q ile gösteriliyor. Hem giriş hem de çıkış söz konusu ise pin DQ ile betimleniyor.

TMS'deki mühendisler sağolsun Dram interface'inde belleği adreslerken ve yazarken AD0..AD7 portunu kullanmayı tercih etmişler, okurken de RD0..RD7 portunu. Yani bunların ilgili Dram'e ayrı ayrı bağlanmaları gerekiyor. (Ya da bağlayan kişi ekstra logic ile bu işi halletmeli)

4416 kullanmak ciddi handikap. 8 adedinden ancak bir 16k elde ediliyor ilaveten 5V'a ek olarak -5V ve 12V gereksinimi de var.

Daha yoldayken kullanamayacağımızı anladığımız 4416'lara alternatif ne peki?

Sağolsun birileri uğraşmış, normal şartlarda CAS / RAS sinyalleri ile multiplex edilen interface'i 74574 latch ve bir adet 7404 ile SRAM'e uygun hale getirmiş.

Dokümanı şurada : http://retrobrewcomputers.org/n8vem-pbwiki-archive/0/35845334/48860720/33053543/SRAM%20Replacement%20for%20TMS99x8%20VRAM.pdf (http://retrobrewcomputers.org/n8vem-pbwiki-archive/0/35845334/48860720/33053543/SRAM%20Replacement%20for%20TMS99x8%20VRAM.pdf)

Kolay temin edilebilecek parçalarla kurtarıyoruz Dram interface'ini bu şekilde. TMS'nin bu video çipinin bir gereksinimi de 10,738 MHZ bir kristal istemesi. Tabii dönüp aradığınızda pek çok yerde bulamıyorsunuz. Pratiğini bilmiyorum ancak 0.005 tolerans tanımışlar. Benim anladığım 10,684 - 10,791 aralığında bir kristal iş görüyor. Piyasada şansımıza  10.695 MHz ve 10.734 MHz kristal mevcut. Deneyeceğiz bakalım iş görecekler mi.

Sram interface'inin breadboard üzerinde kısmen kablolanmış hali aşağıdaki şekilde.

(http://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=11633.0;attach=14101;image)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 16, 2015, 00:14:14 ÖÖ
Şimdi diyebilirsiniz ki proje bunun neresinde? Proje aslında bu çiplerden 1 tanesini yahut 1'den fazlasını (Çipin video input özelliği var bir tanesinde transparan olan bölgede input'a bağlı diğer çipin ürettiği görüntüyü gösterebiliyor) tamamen özel tasarım bir bilgisayarda kullanmak şeklinde. Değişik projeler çıkabilir buradan ancak benim ilk amacım öncelikle bu çipten benim hali hazırda bir adet 6502 içeren sid player devresine entegre edip televizyonda görüntü almak. Sonrasında ise bu çiplerden 1 veya 1 kaçı ile custom bir arcade oyunu üretmek. Donanım kısmını bir şekilde hallederiz gibi geliyor ancak oyun yazma kısmı nasıl olur onu bilemiyorum :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: witchdoktor üzerinde Aralık 16, 2015, 14:37:52 ÖS
@i_r_on

TMS9918 kullanmaktaki amacın kolay bulunabilmesi ve arabirim kurma kolaylığı mıydı? Ben C64 zamanlarında 32 sprite desteği nedeniyle MSX'e özenirdim, ta ki aradan 10-15 yıl geçtikten sonra bir scanline'de 4 sprite limiti olduğunu ve sprite genişliğinin 16 pixel olduğunu öğrenene kadar. Yani bu çip o kadar da kullanışlı değil aslında.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 16, 2015, 15:10:08 ÖS
@i_r_on

TMS9918 kullanmaktaki amacın kolay bulunabilmesi ve arabirim kurma kolaylığı mıydı? Ben C64 zamanlarında 32 sprite desteği nedeniyle MSX'e özenirdim, ta ki aradan 10-15 yıl geçtikten sonra bir scanline'de 4 sprite limiti olduğunu ve sprite genişliğinin 16 pixel olduğunu öğrenene kadar. Yani bu çip o kadar da kullanışlı değil aslında.

Evet çok da kullanışlı değil, delimawi ile yazışmıştık bunu. Smooth scroll olayı da yok bildiğim kadarıyla. Ancak dediğin gibi arabirimi kolay, temin etmesi kolay. Hızlı bir cpu ile bazı eksiklikleri de giderilebilir. İlaveten bahsettiğim çıkışları cascade etme olayı nasıl bir şey çıkaracak onu da çok merak ediyorum.

Bir de farklı bir şeyle uğraşma isteği de var işin içinde :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: witchdoktor üzerinde Aralık 16, 2015, 15:18:55 ÖS
Aslında muhtemelen bundan da kolay interface edebileceğin bir çip C128'in VDC-8563 olurdu. Yine in-out port mantığıyla çalışan, üzerinde 16K veya 64K RAM barındıran bir çip bu.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 16, 2015, 22:12:57 ÖS
VDC 8563 hiç dikkatimi çekmemişti. Ancak onun temin edilebilirliği ciddi anlamda sorun olur. Baktığımda yüksek çözünürlükler destekliyor ancak grafik anlamda TMS'den de zayıf bir çip.

TMS'nin güzel tarafı bugün arduino'dan tv out yapmaya kalksan bile kullanabileceğin bir çip. Stok durumu da fena değil, öyle retro fiyatları yok. Tanesi 4-5 tl'ye falan geliyor.

Msx2'de kullanılan Yamaha V9938 diye bir çip var, bunun özellikleri daha iyi ancak bu da pahalı. Tanesi 30-40 tl'ye geliyor.

https://en.wikipedia.org/wiki/Yamaha_V9938

Gerçi tek sefer yapılacak bir arcade pcb'sinde kullanılabilir. Ama amaçlardan biri de başkalarının da yapabileceği bir şekilde çıkarmak bu işi.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 17, 2015, 11:38:03 ÖÖ
Devreyi kurmaya başlamışsın. NAsıl gidiyor, görüntü alabildin mi?
Ben daha tembel tembel düşünüyorum nasıl birşeye başlasam diye...


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 17, 2015, 11:44:34 ÖÖ
Devreyi kurmaya başlamışsın. NAsıl gidiyor, görüntü alabildin mi?
Ben daha tembel tembel düşünüyorum nasıl birşeye başlasam diye...

Şu an için sadece SRAM interface'ini kabaca yaptım, kristali takıp benim sid player board'una bağlamak için de biraz kablolama lazım. Sonrasında iş yazılım ve test. Bluemavi'den pcb'ye takılabilen rca soketlerden aldım, belki TMS'yi header'lı küçük bir perfboard'a koyup breadboard'a öyle takabilirim. 3 tane rca kablo ile çok fazla uğraşmamış olurum.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 17, 2015, 12:07:47 ÖS
Ben de delikli pertinaksa bir board yapmayı planlıyorum. Board'a takılacak şekilde header bırakacağım. SRAM vb siparişleri verdim. Herhalde yarın gelir, vakit olursa haftasonu kurarım devreyi.

Ben de kristal bulamadım. Nasıl çözeceğim o işi bilmiyorum. Eldeki eski boardlara bakacağım belki birşey çıkar... :/


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: joker_ üzerinde Aralık 17, 2015, 12:48:55 ÖS
Devreyi kurmaya başlamışsın. NAsıl gidiyor, görüntü alabildin mi?
Ben daha tembel tembel düşünüyorum nasıl birşeye başlasam diye...

Şöyle ZxSpectrum için birşeyler olsa nede güzel olur :P


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 17, 2015, 13:50:27 ÖS
Spectrum dan hiç anlamam ben. Belki i_r_on bişiler çıkartır o konuda... :D


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: witchdoktor üzerinde Aralık 17, 2015, 14:15:36 ÖS
Şöyle ZxSpectrum için birşeyler olsa nede güzel olur :P

Hades'in bir projesi vardı aslında, Z80 ile VIC-II çipini kullanmaya yönelik...


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: joker_ üzerinde Aralık 17, 2015, 14:21:02 ÖS
Şöyle ZxSpectrum için birşeyler olsa nede güzel olur :P

Hades'in bir projesi vardı aslında, Z80 ile VIC-II çipini kullanmaya yönelik...

evet Hades'den de heran bir atak bekliyoruz. İş yerinde biraz daha kafası rahatladı. ;)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: hades üzerinde Aralık 17, 2015, 14:56:22 ÖS
Son zamanlardaki DMA kontrolu bilgileri nedeniyle projede büyük bir değişikliğe gittim.
Öncelikle devreye PIC 18F4550 ekledim. İşin içine pic girince hazır pc başındayken pic basic pro öğrenmeye başladım.
Şu an itibariyle devrede pic18f4550, 2x74hct573, 4x74hct245, 1x74hct08, 1x74hct14, 1x74hct365, 1xZ80, 2x62256, 2x74hct139 bulunuyor.
Hem Eagle'a alışma süreci, hem picbasic pro öğrenme aşaması hem de tasarıma yönelik iyileştirmeler derken epeyce zaman geçiyor. Kullanacağım pic'te sd card ve usb uçlarıda var ama bunların yazılım işleri beni şimdilik aşıyor. Bir de pcbyi smd kılıfa göre çizeceğim.
Neyse konu başlığını daha fazla dağıtmadan ben kaçayım.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: joker_ üzerinde Aralık 17, 2015, 15:23:07 ÖS
Son zamanlardaki DMA kontrolu bilgileri nedeniyle projede büyük bir değişikliğe gittim.
Öncelikle devreye PIC 18F4550 ekledim. İşin içine pic girince hazır pc başındayken pic basic pro öğrenmeye başladım.
Şu an itibariyle devrede pic18f4550, 2x74hct573, 4x74hct245, 1x74hct08, 1x74hct14, 1x74hct365, 1xZ80, 2x62256, 2x74hct139 bulunuyor.
Hem Eagle'a alışma süreci, hem picbasic pro öğrenme aşaması hem de tasarıma yönelik iyileştirmeler derken epeyce zaman geçiyor. Kullanacağım pic'te sd card ve usb uçlarıda var ama bunların yazılım işleri beni şimdilik aşıyor. Bir de pcbyi smd kılıfa göre çizeceğim.
Neyse konu başlığını daha fazla dağıtmadan ben kaçayım.


Proje çok kapsamlı olduğundan, tek başına kotarabilmen uzun zaman alacak ;)

Aslında bu projeyi forumdaki deneyimli, işi bilen arkadaşlar birleşip ele alsa hem hızlı ilerler, hemde senin üzerindeki yük hafifler :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 17, 2015, 15:25:36 ÖS
Son zamanlardaki DMA kontrolu bilgileri nedeniyle projede büyük bir değişikliğe gittim.
Öncelikle devreye PIC 18F4550 ekledim. İşin içine pic girince hazır pc başındayken pic basic pro öğrenmeye başladım.
Şu an itibariyle devrede pic18f4550, 2x74hct573, 4x74hct245, 1x74hct08, 1x74hct14, 1x74hct365, 1xZ80, 2x62256, 2x74hct139 bulunuyor.
Hem Eagle'a alışma süreci, hem picbasic pro öğrenme aşaması hem de tasarıma yönelik iyileştirmeler derken epeyce zaman geçiyor. Kullanacağım pic'te sd card ve usb uçlarıda var ama bunların yazılım işleri beni şimdilik aşıyor. Bir de pcbyi smd kılıfa göre çizeceğim.
Neyse konu başlığını daha fazla dağıtmadan ben kaçayım.


Abi yolun başındayken picbasic yerine doğrudan c ye geçseydin keşke... Şiddetle tavsiye ederim.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 18, 2015, 22:38:42 ÖS
@delimawi : Yakın değerde kristal bluemavi'de var. Ben oradan temin ettim. Datasheet'te 0.005 hassasiyet denmiş, bilmiyorum o değerde kristal olacak ve bu kadar değeri oynasa yeter mi demek yoksa bu kadar farklı kristal kullanabilirsin demek mi.

Deneyeceğim bakalım ben de. Üşeniyorum şu anda uğraşmaya :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: commander64 üzerinde Aralık 18, 2015, 22:43:27 ÖS
@delimawi : Yakın değerde kristal bluemavi'de var. Ben oradan temin ettim. Datasheet'te 0.005 hassasiyet denmiş, bilmiyorum o değerde kristal olacak ve bu kadar değeri oynasa yeter mi demek yoksa bu kadar farklı kristal kullanabilirsin demek mi.

Deneyeceğim bakalım ben de. Üşeniyorum şu anda uğraşmaya :)

Bir direnç ve kondansatörle kristalin frekans değeri düşürülebiliyor diye hatırlıyorum.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 19, 2015, 14:54:06 ÖS
Sıçtık diyorum :)

Hardware tarafını tamamlamadan software tarafından gireyim dedim işin. Datasheet'i okuyorum.. Cpu interface'i için şunlar var,

MODE : VRAM erişimi ile register erişimini ayırmak için kullanılan sinyal.
/CSR : Low active okuma sinyali
/CSW : Low active yazma sinyali
CD0..CD7 : Bidirectional data bus bağlantısı
/INT : Her taramada üretilen interrupt

Hadi MODE, /CSR ve /CSW'yi address decoder ile yaptık diyelim.. İşin enteresan tarafı şurada,

"The CPU interacts with VRAM memory through the VDP. The amount of time necessary for the CPU to transfer a byte data to or from VRAM memory can vary from 2 to 8 microseconds. "

En az 2 microsecond lazım, 8'e kadar da yolu var diyor :)

İş bittiğinde anlayacağımız bir pin falan var mı peki? Yok :)
2 micro second 1 mhz işlemci için 2 cycle. Normalde stock 1mhz'lik bir 6502 i/o çipinden değil de bellekten okuma yapıyorsa tüm erişim yarım cycle içinde gerçekleşiyor. 70-200ns'lik erişim zamanı olan bir belleği düşünürsek.

Cpu'nun yavaş kaynaklara erişimi için düşünülmüş RDY diye bir bacağı var. Ancak sadece okumada cpu'yu bekletebiliyor. O da 2 cycle imiş sadece.

Ne yapacağız? Latch'lere mi kaldı yine işimiz?


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 19, 2015, 15:05:13 ÖS
:D Ben daha o kısıma gelemdim. Birkaç saat önce kargo geldi. RAM'ler vb... Delikli pertinaksa devre diziyorum.

Ama şu var. Ben bu board'u bitirince aklımda ilk etapta 6502 ile değil PIC ile sürmeyi düşünüyordum. Dolayısı ile bir sıkıntı yok aslında. Doğrudan 6502 adress bus'a bağlayacaksan evet sıkıntı var sanırım. Araya sanki bir latch yolu göründü...


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 19, 2015, 15:14:55 ÖS
:D Ben daha o kısıma gelemdim. Birkaç saat önce kargo geldi. RAM'ler vb... Delikli pertinaksa devre diziyorum.

Ama şu var. Ben bu board'u bitirince aklımda ilk etapta 6502 ile değil PIC ile sürmeyi düşünüyordum. Dolayısı ile bir sıkıntı yok aslında. Doğrudan 6502 adress bus'a bağlayacaksan evet sıkıntı var sanırım. Araya sanki bir latch yolu göründü...

Benim delikli pertinaksa dizmeyle başlayan projeler hep hüsran ile bitiyor. O yüzden breadboard'dan şaşmıyorum.

Aslında ilk deneme için hakikaten pic/arduino vesaire kullanmak iyi fikir.

Şu an bodosladığım şu problemden sonra ben de bu yola sapabilirim. Neden pic bu arada? Arduino kullan da bari software compatible bir şeyler yapalım :)

Pic için yeterince donanım bende de var ancak adam akıllı compiler yok.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 19, 2015, 16:52:50 ÖS
Bende de breadboard ile başlayınca proje bir gün mutlaka sökülüp dağıtılıyor. Muhtemelen bu projenin en azından bu ilk halinin hiç bir zaman kendine ait bir PCB si olamayacak. Bu sebeple yaptıklarım anı olarak kalsın diye pertinaksta başladım. :D

Arduino yu hiç bilmiyorum ve aslında bakarsan pek de sempatim yok. PIC'i yıllardır projelerde kullandığım için elim çok alışık. PIC C18 compiler kullanıyorum. Gerçi bir kaç yıl önce başka bir compiler'a geçti microchip ama ben hala eski MC18 kullanıyorum. Crack bulunabiliyor...


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 19, 2015, 18:37:49 ÖS
Evet, Projede 1. gün bitti.

Bakırlı delikli pertinaks üzerinde, TMS9928 ve çevrebirimlerini (SRAM, video out buffers, vb.) kurmaya karar verdim. Sadece CPU interface dışarı pin header yada kablo ile çıkacak. Bu sayede PIC yada benzeri CPU'lar ile görüntü üretilebilecek.

Daha önce i_r_on'un da bahsetmiş olduğu gibi aslında bu entegre DRAM ile çalışmak üzere tasarlanmış ama gerek çok sayıda RAM chipi gerektirmesi, gerek DRAM'ler için negatif voltaj ihtiyacı sebebi ile tek bir SRAM chipi ile kullanılması günümüz teknolojisine daha uygun. Hatta bu yönde çalışmalar da yapılmış. 3 adet latch ve bir logic kapı entegrasi ile DRAM yerine SRAM kullanılabiliyor. Ben de bu şekilde ilerlemeye karar verdim. İhtiyaç olan SRAM 16KByte ancak bulabildiğim RAM 32KByte. Yarısı boş kalacak...

Neyse lafı uzatmayalım, devreyi route etmeye başlıyoruz:
(http://i63.tinypic.com/2ef5oyd.jpg)

Üstten görünüş:
Burada sol üst kısımda SRAM, sağ üst kısımda TMS9928, aşağıda 3 adet latch ve hemen yanında NOT kapı entegresi...
Bu arada chip 10.7MHz kristal istiyor ama elimde yok. Denemek için elimde bulduğum 10.7MHz rezantör'ü bağladım. Ayrıca şimdilik CPU bağlamadan test edebilmek için bir adet reset butonumuz mevcut.
(http://i65.tinypic.com/1ze9qab.jpg)

Routing tamamlandı, biraz karışık görünüyor:
(http://i63.tinypic.com/20ubtb5.jpg)

Ve son kontrollerden sonra enerjiyi veriyoruz. 5V üzerinden 170mA çekiyor. O yıllarında teknolojisi için normal sayılır. TMS hafif ılık. Zaten MSX bilgisayarımdaki TMS üzerinde de küçük bir aliminyum soğutucu vardı.

Rezonatör iyi sonuç vermedi. Osilasyon var fakat frekans 1 MHZ kadar daha yüksek. biraz ayar yapacağız sanırım yada şu bluemavideki kristallerden sipariş etmek daha doğru olabilir:
(http://i67.tinypic.com/2i6yzo6.jpg)

Ve ilk günün sonucu. Reset sonrası RAS, CAS vb hatlar canlı. Chip birşeyler yapıyor. Tabiki CPU falan bağlı olmadığı için bir görüntü şimdilik yok. Bir sonraki aşamada PIC ile basit bir interface hazırlayarak görüntü almayı deneyeceğim.
(http://i65.tinypic.com/ih5ceh.jpg)

Bugünlük bu kadar, herkese iyi haftasonları... :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: hades üzerinde Aralık 19, 2015, 18:45:52 ÖS
Kısa sürede çok iş çıkarıyorsun. Darısı benim başıma :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: commander64 üzerinde Aralık 19, 2015, 22:23:01 ÖS

(http://i63.tinypic.com/2ef5oyd.jpg)
Bordun kenarını kim ısırdı :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 19, 2015, 22:27:31 ÖS
Pacman galiba... :P


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 20, 2015, 11:47:27 ÖÖ
Dün edindiğim bilgileri paylaşayım.
Burada sorduğum soruyu 6502.org'da da sordum.
http://forum.6502.org/viewtopic.php?f=4&t=3564 (http://forum.6502.org/viewtopic.php?f=4&t=3564)

Cycle stretching yahut 6502 yerine 65c02 kullanılıp wait state kullanılabilir diyen oldu. Hatta örnek aldığımız projenin sahibi de forumdaymış, benim soruyu ona da yönlendirdiler.

İkinci konu datasheet'i okurken farkettim, çipleri cascade ederiz dediğim mevzu sadece 9918'de yapılabiliyormuş. 9929'da bu özellik yok.

Üçüncü konu Texas instruments'deki amcamların standartları ile alakalı. Adamlar çipin üstündeki ifadelerde bile bus türü girdi/çıktı için 0'ı en anlamlı bit(MSB), yükselen rakamları da sırasıyla LSB'ye doğru götürüyorlar.

Memory'e interface ederken çok fark yaratmaz bu ancak CPU'ya interface ederken klasik bildiğimiz databus'ın D0'ını bundaki CD7'ye bağlamak gerekiyor... diğerleri sırasıyla.

Dün tüm devreyi kurdum, arduino'ya da interface ettim. Sadece çerçeve rengini değiştiren de bir kod yazdım. Çalıştırdım, görüntü alamadım :)

Bugün sadece TMS'yi hiç VRAM interface'i yahut cpu interface'i olmadan hatta sadece Y çıktısını kullanıp deneyeceğim. Sonuçta ekrana siyah da olsa yahut garbage da olsa bir şeyler çıkartır diye ümit ediyorum :)

Logic analyzer'ımı da saklandığı yerden çıkardım.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 20, 2015, 13:12:37 ÖS
@delimawi : Hala almadıysan bluemavi'deki kristallerden alma sakın. 10,634 olandan aldım ben. GROMCLK çıkışından ölçtüğüme göre iki değişik frekans görüyorum 10,665 ile 10,867.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 20, 2015, 15:49:06 ÖS
Y de olsa cikis transistor buffer olmadan dogrudan monitore cikis vermeyebilir. Empedans ve dc level uyusmamasi problemi. Bence y cikisina scope ile bak. En azindan senkron darbeleri ve blanking periyodlari kabak gibi gorunur calisiyorsa. Ben dun baktigimda kabaca gorebilmistim senkron darbelerini... kristal almadim bu arada henuz. Bir de kristal biraz kacik bile olsa bence tv yada monitor senkron olabilir gelen sinyale. (Bu benim fikrim... )


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 20, 2015, 19:12:18 ÖS
Scope yok maalesef. Ancak logic analyzer'da görüntü sinyaline (dijital hali tabii) benzer bir sinyal görüyorum. Sid player için kullandığım çıkış katını bir deneyeyim bakayım.

Bu arada elemandan teyit etmiş oldum, görüntü almak için cpu ve vram interface'ini yapmaya gerek yokmuş. Yine aynı şekilde vram interface'i olmadan da sadece cpu interface'i ile mode seçme, arka plan rengi değiştirme şeklinde ilerlenebilir.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 20, 2015, 19:47:09 ÖS
Bu arada transistör katını inşa ettim. Döndüm devreye bağlayacağım. Baktım görüntü aldığım kabloya olan bağlantı çıkmış. Lan acaba deyip bağladım ve görüntü aldım :)

Yukarıdan aşağı epey çizgileri olan simsiyah bir görüntü.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 20, 2015, 21:02:00 ÖS
Arduino ile interface te çalıştı bu arada. Ancak görüntü felaket :)
Analog dünyasında felaketim o yüzden delimawi'nin görüntü almasını bekleyeceğiz artık.


1CjWzx8yxoA

ps: B-Y ve R-Y'yi de bağladım sonra, renkli görüntü de aldım.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 20, 2015, 22:27:56 ÖS
Goruntu aldim derken? :) Saka bir yana tebrikler... ben en az bir hafta ilerleme kaydedemem herhalde. Ctesi bos gunde ben de deneyecegim PIC ile goruntu almayi. Analog kisimla da ilgilenecegim ister istemez. Bir adum sonrasi ne olacak? MSX icin yazilmis hazir bir oyunu mu port etmek mantikli olir acab. Open source herhangi bir oyun var mi TMS kullanan acab...


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 20, 2015, 23:30:41 ÖS
Aslında bu çipi kullanmaktan vazcayabilirim. Okudukça, öğrendikçe kısıtlı imkanları olan bir çip olduğunu iyice anladım. Beri yandan çok fazla alternatif de yok. MSX2+'ta kullanılan V9958'e mi geçsek acaba diyorum ancak onun da programlanması çok kompleks.

https://en.wikipedia.org/wiki/Yamaha_V9958 (https://en.wikipedia.org/wiki/Yamaha_V9958)

- Video RAM: 128 KB + 64 KB of expanded VRAM
- Text modes: 80 x 24 and 32 x 24
- Resolution: 512 x 212 (4 or 16 colours out of 512) and 256 x 212 (16, 256, 12499 or 19268 colours)
- Sprites: 32, 16 colours, max 8 per horizontal line
- Hardware acceleration for copy, line, fill, etc.
- Interlacing to double vertical resolution
- Horizontal and vertical scroll registers

Benim için bir adım sonrası şöyle,
Öncelikle benim sid player'daki hazır 6502 setup'ta deneyeceğim çipi programlayı. Paralelinde WDC 65c02 sipariş edeceğim, 5mhz'e kadar çıkıyor bu çipler. Gerçi TMS'nin 2'den 8 mikrosaniyeye kadar olan vram erişim süreleri ile bu hızlar ne işe yarar bilmiyorum ya :)

ps: Şöyle bir şey de var, kenara not edelim : http://atariage.com/forums/topic/168968-f18a/ (http://atariage.com/forums/topic/168968-f18a/)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: wizofwor üzerinde Aralık 21, 2015, 10:41:14 ÖÖ
TMS9929'in bus'a müdahele etmemesi, kendi belleği olması, veri alış verişinin yazmaçlar
üzerinden yapılması aslında hem programcının, hem donanım üzerinde çalışan mühendislerin  işini çok kolaylaştırıyor. Bu yüzden arcade oyunlarında da bol bol kullanılan bir chip. Sen yetersiz kaldığını söyleyince aynı prensiple çalışan Sega Master System Video Display Chip'ini önereyeim dedim. Ancak o da TMS9929 türeviymiş.

Sega Mage Drive VDP (Sega 315-5313) kullanmayı düşünür müsün? Yalnız bu çipin iki falsosu var. Birincisi Sega üretim custom bir çip olması. Ancak internette indirilebilir fpga core'ları falan var. Mega Drive çok yaygın bir sistem olduğu için yedek parça olarak da temin edilebilir. İkincisi de 16-bit bir çip olması. Dolayısıyla bunu kullanırsan tasarladığın cihaz cross genereration olacak.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 21, 2015, 11:10:16 ÖÖ
Kristalde sorun yaşadığımı düşündüğümde elimin ilk uzandığı sistem master system oldu :) Yavuzg'den aldığım konsolu açtım baktım TMS 99XX bulma ümidi ile ancak onun yerine 50 küsür mhz bir ana osilatör ve bir sürü custom sega chip vardı. TMS'nin tasarımını alıp bir sürü iyileştirme yapmışlar, sesi de dahil edip yeni bir custom chip yapmışlar. Temin edilebilirse aslında kullanılabilir.

Fpga'ya çok sıcak bakmıyorum, mümkün mertebe oldschool komponentler olsun istiyorum.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: eins üzerinde Aralık 21, 2015, 11:25:15 ÖÖ
i_r_on: Diğer başlık altında TMS'den bahsettiğinde hiç düşünmeden atladım. Çünkü ilk bilgisayarım bir MSX tabanlı bir SVI-728'di. O bilgisayar içinde de TMS kullanılıyor. Hatta o bilgisayar üzerinde basic ile yazdığım ilk programlarda bol bol grafik üzerine çalışmalarım olmuştu. TMS tabiki bir yamaha yada VIC-II kadar kabileyetli değil. Eğer chip'i değiştirecek isek sanırım ben başka bir chip için vakit ayıramayacağım. Ama TMS ile de yapabildiğim ne ise yaparım bu hali ile... :)

Şu ara doberman pcbleri henüz meydanda yok, diğer FPGA tabanlı projelere de başlayamadım bu sebeple. Aradaki boşluğu doldurmak adına iyi geldi TMS şimdilik... :D



Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: wizofwor üzerinde Aralık 21, 2015, 12:26:21 ÖS
Ufak bir güncelleme ile yukarıdaki bilgi eksiğini düzelteyim. Mega Drive VDP çipi her ne kadar Sega üretimi olsa da Yamaha YM7101 ile birebir uyumluymuş. Genesislerde YM7101 kullanmışlar. YM7101'e de bir bakın isterseniz.


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: Cengiz Demir üzerinde Aralık 21, 2015, 12:34:54 ÖS
Yine anlayamadığım. Ama merakla takip ettiğim bir konu daha :D

Bakalım sonunda ne olacak :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 21, 2015, 14:00:43 ÖS
Ufak bir güncelleme ile yukarıdaki bilgi eksiğini düzelteyim. Mega Drive VDP çipi her ne kadar Sega üretimi olsa da Yamaha YM7101 ile birebir uyumluymuş. Genesislerde YM7101 kullanmışlar. YM7101'e de bir bakın isterseniz.

YM7101 ne aliexpress'te ne de ebay'de sonuç vermedi :( Her ne kadar geçmişte vukuatlarımız olsa da sağlam makineden çip sökmek te bizim gibi retrocuya yakışmaz :)

i_r_on: Diğer başlık altında TMS'den bahsettiğinde hiç düşünmeden atladım. Çünkü ilk bilgisayarım bir MSX tabanlı bir SVI-728'di. O bilgisayar içinde de TMS kullanılıyor. Hatta o bilgisayar üzerinde basic ile yazdığım ilk programlarda bol bol grafik üzerine çalışmalarım olmuştu. TMS tabiki bir yamaha yada VIC-II kadar kabileyetli değil. Eğer chip'i değiştirecek isek sanırım ben başka bir chip için vakit ayıramayacağım. Ama TMS ile de yapabildiğim ne ise yaparım bu hali ile... :)

Şu ara doberman pcbleri henüz meydanda yok, diğer FPGA tabanlı projelere de başlayamadım bu sebeple. Aradaki boşluğu doldurmak adına iyi geldi TMS şimdilik... :D

Bakma benim de burun kıvırdığıma, sanki her gün bir video chip interface'i yapıyormuşum yahut çok baba oyunlar yazabilecekmişim gibi oldu biraz :) Ben de iliğini kemiğini sömürmeye çalışacağım tabii bu TMS çiplerin :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: imgqtr üzerinde Aralık 21, 2015, 15:15:21 ÖS
Yine anlayamadığım. Ama merakla takip ettiğim bir konu daha :D

Bakalım sonunda ne olacak :)

Ben de zırnık anlamıyorum ama okurken keyif alıyorum :)


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 22, 2015, 22:48:51 ÖS
Referans olması açısından, test için yazdığım arduino kodu aşağıdaki şekilde. Register erişimlerinde sıkıntı yok yalnız VRAM'de sıkıntım var. Muhtemelen bağlantılarda bir nanik var. İlk tur düzeltme geçtim, 256 byte yazıp okuma başarılı oldu. Ancak sonra tekrar afalladı. Artık ekranda garip garip şekiller görmeye başladım :)
Kod:
#define MODE 2
#define CSW 3
#define CSR 8
#define RESET 9
 
 
#define PORT_MANIPULATION

int bytePins[8] =   { 14, 15 , 16, 17, 4, 5, 6, 7 };

void setDBReadMode() {
  #ifdef PORT_MANIPULATION
  DDRD = DDRD & B00001111; // Set Pin 4..7 as inputs. High nibble of databus.
  DDRC = DDRC & B11110000; // Set Analog pin 0..3 as inputs     
  #else
  for (int i=0;i<8;i++) {
    pinMode(bytePins[i], INPUT);
  }
  #endif
}

void setDBWriteMode() {
  #ifdef PORT_MANIPULATION 
  DDRD = DDRD | B11110000; // Set Pin 4..7 as outputs. High nibble of databus.
  DDRC = DDRC | B00001111; // Set Analog pin 0..3 as outputs
  #else
  for (int i=0;i<8;i++) {
    pinMode(bytePins[i], OUTPUT);
  } 
  #endif
}

void reset() {
  Serial.println("Resetting");
  digitalWrite(RESET, HIGH);
  delayMicroseconds(100);
  digitalWrite(RESET, LOW);
  delayMicroseconds(5); 
  digitalWrite(RESET, HIGH);
}

inline void setPort(unsigned char value) {
    #ifdef PORT_MANIPULATION
    PORTD = (PIND & 0x0F) | (value & 0xF0);
    PORTC = (PINC & 0xF0) | (value & 0x0F);
    #else
    unsigned char mask = 1;
    for (int i=0;i<8;i++) {
      digitalWrite(bytePins[i], value & mask);
      mask = mask<<1;
    }   
    #endif   
}

inline unsigned char readPort() {
    unsigned char memByte = 0;   
    #ifdef PORT_MANIPULATION
    memByte  = (PIND & 0xF0) | (PINC & 0x0F);
    #else
    unsigned char mask = 1;
    for (int i=0;i<8;i++) {
      if (digitalRead(bytePins[i])) {
        memByte = memByte | mask;
      }
      mask = mask<<1;
    }       
    #endif 
   
    return memByte;
}

//Writes a byte to databus for register access
void writeByte( unsigned char value) { 
    setDBWriteMode();
    setPort(value);
    digitalWrite(MODE, HIGH);       
    digitalWrite(CSW, LOW);           
    delayMicroseconds(10);
    digitalWrite(CSW, HIGH);
    setDBReadMode();
}

//Reads a byte from databus for register access
unsigned char  readByte( ) {
    unsigned char memByte = 0;
    digitalWrite(MODE, HIGH);           
    digitalWrite(CSR, LOW);       
    delayMicroseconds(10);
    memByte = readPort();
    digitalWrite(CSR, HIGH);
    return memByte;
}

//Writes a byte to databus for vram access
void writeByteToVRAM( unsigned char value) { 
    setDBWriteMode();
    setPort(value);
    digitalWrite(MODE, LOW);       
    digitalWrite(CSW, LOW);           
    delayMicroseconds(10);
    digitalWrite(CSW, HIGH);
    setDBReadMode();
}

//Reads a byte from databus for vram access
unsigned char  readByteFromVRAM( ) {
    unsigned char memByte = 0;
    digitalWrite(MODE, LOW);           
    digitalWrite(CSR, LOW);       
    delayMicroseconds(8);
    memByte = readPort();
    digitalWrite(CSR, HIGH);
    return memByte;
}

void setRegister(unsigned char registerIndex, unsigned char value) {
  writeByte(value);
  writeByte(0x80 | registerIndex); 
}

void setWriteAddress( unsigned int address) {
  writeByte((address & 0xFFC0)>>6);
  writeByte(0x40 | (address & 0x3F)); 
}

void setReadAddress( unsigned int address) {
  writeByte((address & 0xFFC0)>>6);
  writeByte((address & 0x3F)); 
}

void setup() {
  setDBReadMode();
  Serial.begin(9600);
  pinMode(MODE, OUTPUT);
  pinMode(RESET, OUTPUT);
  pinMode(CSW, OUTPUT);
  pinMode(CSR, OUTPUT); 
 
  digitalWrite(RESET, HIGH);
  digitalWrite(MODE, HIGH); 
  digitalWrite(CSW, HIGH);   
  digitalWrite(CSR, HIGH); 

  reset();
  delay(2000);

  setRegister(0, 0);
  setRegister(1, 0xD0);
  setRegister(7, 0x56); 
 
  Serial.println("Clearing RAM");
  setWriteAddress(0);
  for (int i = 0;i<16384;i++) {
    writeByteToVRAM(0);
  }
  Serial.println("RAM Cleared, testing"); 
  setWriteAddress(0);
  for (int i = 0;i<256;i++) {
    writeByteToVRAM(i);
  }
  setReadAddress(0);
  for (int i = 0;i<256;i++) {
    unsigned char value = readByteFromVRAM();
    Serial.println(value);
  }
}


void loop() {
 

}


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 24, 2015, 22:35:47 ÖS
SRAM Interface'in kablolamasını debug etmeye epey üşeniyorum :)

Elimde eskiden kalma bir adet 1MB simm bellek var. Üzerindeki çiplerin (UPD421000) datasheet'ine baktım data pin'leri bidirectional değil yani bu açıdan TMS'ye uyuyorlar. 16KB için 1MB (64 misli) biraz overkill ancak belki bank switching tadında bir şeyler yapılıp ta kullanılabilir. Avantajı şu simm memory modülü içinde hali hazırda çipler organize edildiği için 23 doğrudan bağlantı ile işi kurtarıyorum. Diğer türlü 2 misli bağlantı var. Güzel tarafı elimde simm soket de var. (Sıcak hava tabancası ile board'dan sökmem şartıyla :) )

Simm belleğin pinout'u aşağıdaki şekilde. (A0..A6 arası kullanılacak adres hatlarından, parity kullanılmayacak)


*1 VCC +5 VDC
*2 /CAS Column Address Strobe
*3 DQ0 Data 0
*4 A0 Address 0
*5 A1 Address 1
*6 DQ1 Data 1
*7 A2 Address 2
*8 A3 Address 3
*9 VSS Ground
*10 DQ2 Data 2
*11 A4 Address 4
*12 A5 Address 5
*13 DQ3 Data 3
*14 A6 Address 6
 15 A7 Address 7
*16 DQ4 Data 4
17 A8 Address 8
18 A9 Address 9
19 A10 Address 10
*20 DQ5 Data 5
*21 /WE Write Enable
*22 VSS Ground
*23 DQ6 Data 6
*24 A11 Address 11
*25 DQ7 Data 7
26 QP* Data parity out
*27 /RAS Row Address Strobe
28 /CASP* Parity Column Address Strobe
29 DP* Data parity in
*30 VCC +5 VDC


Konu Başlığı: Ynt: Texas Instruments'a hürmetlerimizle
Gönderen: i_r_on üzerinde Aralık 24, 2015, 22:40:40 ÖS
Derken... çiplerin datasheet'leri ile simm standardı arasında fark olduğunu görüyoruz :) Simm standardında input ve output aynı hatta indirilmiş durumda :( Elimdeki simm modülünün üstünde de 8 yerine 9 çip var zaten. Ucuz da olsa parite koymuşlar diyordum ama işin rengi farklı demekki.

ps: Din ve Dout'ları birbirine bağlamış olmalılar bu arada.. Örnek devrede 74245 ve R/W sinyali ile ayrılmış.