PCI I/O KART DİZAYNI

Başlatan silgilikalem, 05 Mayıs 2007, 04:10:13

KORHAN

Ben PCI kartın tasrımı yapan arkadaşa devamlı uğradığım için gördüğüm safhaları anlatmaya çalıştım konuyu bilenlerin cümleleri toparlaması zor olamsa gerek diye düşünüyorum burda amacım Formdan ben devamlı yardım alıyorum bu konudada bildiklerimi ve projenin bir ara içindede olduğum için öylesine belki işine yarayan olur diye anlatmak istedim sözlerimin adresi yok PCI 32 Bit 33MHz. Real Time çalışan bu projedeki I/O karta ilave olarak kartın programlanması daha önce formlarda bunalmis,hakkitanir ve bende olabilirim verilen C programlama dili fonksiyon ve motodları ile olmaktadır.Aslında projedeki kartın çalışması için o kartın takılı olduğu pc de PCI Bus kontrol fonksiyonlarının herhangibir programlama dili altında kullanılıyor olmasıda yeterli idi.

Göktuğ

Örnek cümle,
"Ve 5 Volt olanı anakartların %98 indedir.3.3volt olanı teoride var 1-2 anakart modeli (markası değil) harici yokda."

Anlatımda sorun yok diyorsan yoktur.
Ancak anlattıklarının bir kısmında hatalar var. Uzerine konusabilirdik....

files

Bu dediğiniz kartları PCI yerine USB olarak yapmak daha kolay. USB yerine PCI ile uğraşmanın ne gibi avantajları var? öğrenebilir miyiz?

KORHAN

files,

Aslında USB2.0 bir kart tasarımını bu sıralar bende yapmayı düşünüyorum.
USB2.0 projesinde PC programını C#.Net altında yazacağız C# da Com nesnesi olarak hazır bulunup USB2.0 seri porta veri gönderme ve alma gibi iş yapan metod ve fonksiyonlar var projenin bu ayağını çözdüm.Yalnız pc dışındaki elektronik kart üzerinde USB2.0 haberleşmesinde kullanacağımız işlemciyi belirleyemedik burda bize en yakın olarak Pic18F serisi çipler gözüküyor bunlarıda C18 ile programlamam gerek ve ben C18 ve Pic18F serisi bir çiple hiç uğraşmadım.

Sorunuzu cevaplamaya çalışayım Pic18F ve benzeri çipler USB2.0 ile 12MBit/sn (1.43MByte/sn yapar herhalde) hızlarda haberleşebiliyor ama USB2.0 port bu hızlara hiç bir zaman çıkmaz deniliyor ve testleri öyle gösteriyor.Günümüzde 64 Bit sistemlerde daha çok olmak üzere güçlü PC donanımlarında USB2.0 480 MBit/sn (57MByte/sn) veri taransfer hızlarına çıkabilmekte ama burdada pc dışı elektronik kart üzeri çip ne olacak sorunu var ve burda işlemci işi bu hızlarda kotaramayıp iş FPGA lara kalmakta.PCI bus haberleşme 32 Bit paralel olduğundan ve veri transfer hızı hızı 132 MByte/sn. olduğundanbunun kullanım alanı biraz daha farklı ayrıca PCI Busta işin içine DMA ve IRQ denen donanım kesmeleride Interruptlarda giriyor bunlarda bir avantaj tabi yerine göre.Ama ikisninde kullanım alanları farklı tabi.Şimdi PLC mantığında bir saha kontrol Scada yazılımıyla pc dene dış ortam kontrolü gerkiyorsa burda PCI tabiki avantajlıdır.Yok proje diğerine göre daha alt düzeyde yalnızca bir pc ile
bir elektronik kart haberleştirilecekse ve seri data sorunu olayı karmaşıklaştırmıyorsa tabiki USB2.0 hem maliyeti PCI karta göre çokda ucuzdur sonuçta tek taraflı bir kart tasarlanacak.Projede pc den devamlı on line gerçek zamanlı olark geniş boyularda veri alınıp verilecekse ve bu veri hayati ve ekonomik analmada önemki ise bu işinde muhakkak pc ile yapılması gerekiyorsa iş USB ye değilde PCI a bırakılır.

files Şimdi ben size bir kaç soru sormak istiyorum müsadenizle, bizim pc yazılımında USB2.0 üzerine bir program yazımında eksiğimiz yokda Siz USB olarak bu tip kartları yapmak daha kolay derken böyle bitmiş kullandığınız bir projeniz varmı?Varsa USB2.0 seri portu üzerindenmi haberleşiyor.?Son olarak önemli olanı pc dışında elektronik kartta haberleşmede hangi işlemci veya çipi kullandınız.Yoksa PCI da pc kasası içine kart yapmak gerekiyor bunda o sorun yokmu demek istediniz?
Cevaplandırırsanız Sevinirim.
Varsa

files

usb 2.0 veya 1.1. uyumlu dizaynlarım var. 400 e yakın sayıda sattım hala da satılıyor. Bu cihazda Full speed 12Mbit/sn veya high speed gereksinimi olmadığı için low speed olarak çalışıyor.  çipi istersek usb 2.0  olarak da programlayabliyoruz .  ama gerekmediği  için ve eski pclerle uyumlu olması için  1.1. olarak gösterdim.  pic + başka bir çip kullanıldı. bunların maliyeti USBli pic ile aynı (18f2550 vs) . hemde doğru dürüst çalışıyor.  

Bu tip projelerde belirleyici olan gerekli hız  gibi duruyor. io kartı için hız nedir ? Sadece picle de yapılabilir belki. Sırf  usb picle denedim işim görülmedi. picin kendi sorunları var. usb hizmetini ve yapacağı işi aksatıyor veya aynı anda yapamıyordu. Belki de bu pici programlama becerimiz yetersiz kaldı ondan olmuş olabilir.

KORHAN

files,

anladım son yazdıklarınızı PCI 32 Bit 33MHz clock hızlı Bus veri transfer hızı en fazla (saniyede hem alınan hemde verilen data toplamları için bu, yalnızca kartan dışarıya çıkış yada dışarıdan PCI karta giriş şeklinde olabilir.) 132MByte/sn. dir.
dediğim gibi PCI I/O kartın kullanım yeride var USB kartın yeride illa biri denemez herhlade ama PCI I/O kart USB kartın yaptığı işleride fazlasıyla daha yüksek hızlarda görebilir (100 kat gibi bir hızdan bahsediyoruz burda) Benim sizden DSPIC30F serisinde USB2.0 haberleşmesi için ara entegre olarak kullanılan FT2232 USB-RS232 dönüştürücü IC si dışında
yardım almam mümkünmüdür.PCI I/O kartı kesinlikle gerçek zamanlı çalışma olarak Pic lerin hiç bir modeliyle yapılamaz buna DSPIC33F seriside dahil.

files

Seri üretim  yaparken sineğin yağını hesap ettik. Hiç bir gereksiz masraf yapılmaması için uğraştık. Buna mecburuz. şimdi siz 132MByte/sn hızını boşverin. ihtiyacınız olan hız nedir? elinizde bir iş mi var veya düşündüğünüz proje mi var? ve nekadar hız gerekiyor? Dışarıdan gelecek veriler ve gönderceğiniz veriler için frekans nedir?  Buna göre cihazı usb olarak rahatlıkla şekillendirebilirsiniz.

USB cihaz için hızlar sabit. 12Mbit/sn  ve 480Mbit/sn low speed için 1.2Mbit/sn olması lazım yanlış hatırlamıyorsam.  bize en düşüğü yetmişti.

Hızlar bundan ibaret Bunun dışında hız yok zaten. ama siz bu hızın tamamını kullanmıyorsunuz. Kesintili olarak verileri gönderiyor ve alıyorsunuz.  isterseniz saniyede 1 bayt bile gönderirsiniz.  

Gereksiz masrafa gerek yok. Seri üretimde  1$lık masraf ilave olsa bu size birkaç yüz$ olarak yansıyor.

Fakat elinizde tek tek üretilen güzel işler varsa bilemiyorum pahalı çözüme gidlebilir. masraftan kaçmamak lazım. benim cihazlar ucuzdu. Bizim çipleri söyleyemiyorum. ( üzerini kazıyoruz  ) Zaten sizin yüksek hızlara  uymaz gibi.

132MByte/sn çok yüksek hız. Muhtemelen buna ihtiyacınız yok. Çipi seçtiniz.  tabi çipe datayı nereden göndereceksiniz ? Eğer skop gibi birşey yapacaksanız böyle yapılmıyor. veri önce işlenip "görünebilecek " kısmı usbden gönderiliyor.


size 132MByte/ sn hız gerekiyorsa usb ile yapamazsınız. pci'i bilmiyorum belki onda bile yapamazsınız.   132MByte/ sn hzıa ihtiyacınız olduğundan emin misiniz? bence size bu hızda veri transferi gerekli değildir.

KORHAN

files,
Sizin yaptığınız kart şu anda USB1.0 - USB1.1 ve USB2.0 seri portlarında çalışabilen daha doğrusu bütün USB port çeşitlerinde çalışabilen ve maksimum data tarnsfer hızı 1.2MBit/sn (0.14MByte veya  146KByte yapar) olan bir kart değilmi ve bu hızın üstüne çıkamıyor doğrumudur.He belki üstüne çıkanı yapılabilir ama şu anki elinizde çalışan kartınız bu özelliklerde beni doğrularmısınız.

Sorunuza cevap vereyim.PCI I/O kartla USB I/O kart farklı alanlarda kullanılabilecek donanımlar.PCI busta işlemci PCI porta C dilinde yazayım

outport(adres,data);

fonksiyonunu verdimi sistem bunu hiç beklemeden 30 nanosaniyede PCI porta yani PCI karta iletir.

gelendata=Inport(adres);

fonksiyonu yazıldımı sistem hiç beklemeden PCI bustan 30 nanosaniyede
bilgi okuması yapar.

burdaki fonksiyonlarda verilen adres PCI kartın sisteme tanıtıldığı adres olup int tiptedir ve pratikte boş olan 0X00000000; ila 0XFFFFFFFF; adresleri arasından seçilip sisteme tanıtılır.Data ise 32 bitlik çıkışa verilmek istenen herhangibir değerdir.gelen data ise adresi verilen donanımdan burda PCI I/O kart olarak düşünün 32 bitlik bilgiyi okuyup programda değerlendirilmek üzere int tipinde tanımlanan gelendata değişkenine aktarır.

USB de bilgi seri protokol şeklinde gittiğinden toplamda hangi hızlara çıkılabiliyorsa o hızda veri transfer edilir ama bu tarsfer datalarının hepsi gerçek kullanılması gereken bilgiler değildir.ve bu maksimum transfer hızına sistem hiçbir zaman çıkmaz.Ama USB kullanılmamalı iyi değildir anlamında kesinlikle değil o transfer hızlarındada yapılabilecek çok işler var.

Yalnız belirttiğim gibi biz USB I/O kartı 12MBit/sn hızda yapmak istiyoruz.

Saygılar.Sevgiler.

files

Bizim hız 146kByte/sn bile değil. Gerekmiyor zaten.

12Mbit/sn hızı USB haberleşme protokol vs için kullanılabilri. ancak dışarıdan girdiğiniz bilgiler bu hızda gidemez sanıyorum.

USB I/O kartı 12MBit/sn hızda yapmak için yeterli sebebiniz varsa birşey diyemem. Zaten tek başına 18f2550 ve benzer  mikrolar bu hzı destekliyor.

tek çiple bile yaparsanız, 12MBit/sn  hızda çalışabilen usb çipi  ne ile besleyeceksiniz? veriyi buna nereden göndereceksiniz?  ksımını halletmeniz lazım.  

Sürekli halde gelen  12Mbit/sn datayı hafızada alıp bekleterek işlemek dallandırmak işinize yaracak şekilde göstermek veya kullanmak ise ayrı bir  maharet gerektiriyor.  

Projeyi bana söyleme. hemen yapıp senden önce piyasaya çıkarabilirm  8)

KORHAN

files,
ne projesi be arkadaşım ben daha bugüne kadar Pic işlemcili bir proje yapıp para kazanmış değilim.Bizim çalışmalarımız yine elektrik ve elektronikle ilgili alanlarda oldu ama direkt bu pic programlama işi yapıp para kazanmış değiliz.Bilsisayarda Visual programlama dilini iyi denebilir şekilde biliyoruz.Hatta araştırmalarımız kadarıyla USB porttan veri yazıp okumada bilgisayar programı açısından bir sorunumuz yok.Bizim sorunumuz elektronik ve işlemciyle bu işi yapmada.Burda yardım için zaten habire forma yazı yazıp duruyoruz.Biz projeyi USB 12MBit/sn data hızlarında yapalım Pic işlemcisi odataları yakalayıp ohızda verebilsin o hıza USB portu çıkamıyorsa sorun orda olsun bizde düşük hızda çalışırız ozaman ama direk işlemcide 1.2MBİt/sn hızla proje yapılmaz günümüzde belki 3-4 sene önce olabilirdi ama şimdi sıfırdan bir proje ile uğraşılacaksa hızlar kart için 12MBit/sn üzerinden düşünülmeli.Ortada kaptırılacak bir projede yok zaten kapan bu yazılardan kapcağını kaparda sorun o değil sorun ben arkadaşımla birlikte dsPIC33F lerde bu işi nasıl kotarabilirim araya çip girmek gerekmeden.İlla bir çip girecekse çipin çıkışı rs232 protokolüyle olmadan.yoksa Pic18F lsre girmek zorunda kalacağız ordada şu saat itibariyle zaten herşey internette açık verilmiş durumda.

files

neden  sıfırdan bir proje ile uğraşılacaksa hızlar kart için 12MBit/sn üzerinden düşünülmeli  bilmiyorum. ama benim gördüğüm yapmışken eniyisini yapmak gerekmiyor. Nek kadar gerekliyse okadar  yapmak lazım. Bu uapılan kartın bir hedefi olması  halinde işiniz kolaylaşır.  

usbyi destekleyen belli projeler için özel picler olduğunu biliyorum. Mesela Mass storage class gibi audio gibi işler için hazır çipler var. Video desen o da öyle. belirli bir hedef varsa  önce o hedifin hazır çipi olmadığına bakılmasını öneriyorum. süper ucuz oluyor. Misal  usb webcami dikkate alalaım. tek çip.

12MBit/sn için düşünülecek pek birşeyyok. üretici firmaların  hazır kodları var. al kullan. asıl sorun bu değil.  bu hızı kullanılarak hangi işin nasıl yapılacağı ?  

dsPIC  işinde istikbal görünüyor. Bana zor geldiği ve gerekmediği için kullanmadım. bu serilerde direk usbyi destekleyen de var olması laızm. Dijital ses kayıt aleti  yapmaya yarayan tek  çip. Dışarıdan sadece hafıza ekleniyor olması lazım. Böylece ister 1 saat ister 10 saat oluyor .

1.2MBİt/sn hızla proje yapılmaz  düşüncen gerçekçi değil. Bu projeyi çerçeveleyip duvara asmayacaksan, satmayı düşünüyorsan, gereksiz masraf yapmamalısın. Piyasada en klasından usb fare al.  adamlar son model yapıcaz diye 480Mbit/sn mi kullanmışlar? Hayır. Çünkü gerekmiyor.
Kolay gelsin

KORHAN

dsPIC lerin hiçbir modelinde hatta Microchipin Pic18F serisi 5-6 çipi haricinde USB haberleşme modülü direkt çip bünyesinde verilmemiş ve araya birtakım entegreler girilerek bu işin kotarılması tavsiye edilmiş.
Zaten baktığınızda istesenizde artık benim gördüğüm 12MBit/sn hızı altında USB ara entegreler bulunmuyor.Hepsi fix. High Speed 12MBit/sn hızında.Mecburen proje buna göre yapılıyor.Bana 1.2MBit/sn hızlı çalışan şu anda hali hazırda satılan bir çip kodu verebiliyormusunuz 5-6 sene önce varmış otip entegreler ama şu anda hepsi ister seri ister paralel çalışsın USB2.0 porta D+ ve D- iki pin üzerinden bağlanıp hızlarıda 12MBİt/sn. olarak sunuluyor internette aratma yapıldığında en az 6-7 USB çip üreticisinde durum bu.12MBit/sn yapılması gerekliliği projenin burdan kaynaklanıyor.Sen 12MBit/sn yapta istersen1.2MBit/sn çalıştır.Donanım kesinlikle Pic içinde olsun ayrı bir USB çipi kullanmak üzere olsun fix.12MBit/sn dir Günümüzde.480MBit/sn hıza gelince burda bilgisayar çok güçlü ve pahalı olmalı 64 bit mimaride bu hızları destekleyen sistemin durumu bu.Diyelim bilgisayar tamam USB ile haberleşen eleman ne olacak burda yazdımya burda en güçlü DSP işlemcisi bile yetersiz kalır.Ancak FPGA türü özel elemanlar gerekir veya benim bilmediğim bir çip varsa o gerekir FPGA hem USB hemde normal rutin işleri yapar ya diğer çip USB haberleşmesi harici işleri ne yapacak.o işe özel bir çiptir ve normalde programsal olarak ayarlanıp diğer işleri yapmaz herhalde varsa yapanı kodunu yazın inceleyeyim.FPGA e gelince farklı bir çipi ve mantığı programlamayı öğrenmek gerekir bu bir USB haberleşmeli bir kart için saçma olur.diyelim FPGA yıda öğrendik USB projesini kotardık.fiyatı FPGA in 200-300$ bunuda yazmıştım.Xilinx için Virtex2 ve üstü çip gerekir Spartan serisi o hızlara çıkamaz.Teoride şu an için 480MBit/sn hızlar hikaye onların kullanım alanları özel alnlardır.bu hızlarada USB nin çıkmadığı en azından süreklü bu hızda dataları işletmediği yazılarda verilmiş ama bir anlık bu hıza sistem çıkarsa diye şartlar uygunsa karşı çip bunu kaçırmasın diye bu hızlarda çip seçmek gerekli oda ancak FPGA olur.işlemcinin bu hızlarda veri yakalamsı söz konusu bile değil.PCI paralel çalışma olduğundan DSP işlemcileri ve özel bir çok çip üretilmiş bu sorun onlarda yok.Siz projenizi hangi işlemci ve entegre kullanarak yaptınız?

KORHAN

Hiç yazma arkadaşım zahmet olmasın ben senin projenin nasıl olduğunu anladım low speed Pic16F serisi benzer projeler kodları ile birlikte zaten hazır bulunuyor onlara ulaşmamızda sorun yok bizim sorun benim bilgisayar programımın Com nesnesinin Full speed 12Mb/sn desteklemesi ve altına inmemesi.buda büyük ihtimalle Pic18F e yönlendirecek bizi.Sana iyi çalışmalar hayatta başarılar dilerim.
Bay.

Mechatron

CY7C68000 çok rahat bir biçimde bu işi hallediyor.
Aslında ne işleyeceksiniz bu çok önemli ben mesela burada çok yüksek
çözünürlükte görüntü taraması yapıp vektör kontrolü yapıyorum ve bu chip ile transferim yaklaşık saniye 80MB oldukçada başarılı ilgilenen olur ise yardımcı olabilirim. Spartanlara virtex lere  falan ihtiyacınız olacağını zannetmiyorum çünkü çogu sistemde 48MHz lik 16Bitlik işlemciler çalışıyor ve bu hızlarda rahatlıkla çalışıyorlar. Örnegin CY7C68000 in kristal frekansı 24-25 MHz aralığında ama saniyede 80MB üflemeyi başarıyor. Ha bide SATA olaylarını inceleyin orada hızlar daha yüksek fakat 64 bit mimariside kullanmadan çalışabiliyor. Gigabitler basan ethernet kartları çıkıyor piyasaya ve onların işlemcileri hiçte öyle güçlü işlemciler değiller ve PCI bus üzerinden veri transferi yapıyorlar.

uguryendi

birkaç gündür forumda ethernet protokolüyle pic ile pc bağlantısı yapmaya çalıştığımdan bahsediyorum  henüz doyurucu bilgilere ulaşamadım bu nedenle  önce PCI slotunu öğrenmeye karar verdim ve PCI standardında PC tarafında çok fazla işim yok benim için önemli olan Pic tarafındaki ethernet kartım ve bunu pic'e bağlayan PCI yolu

ustalar sizce  yapmak istediğim(ethernet kartını pice bağlamak ve bilgisayar ağına dahil etmek) mümkün mü ?
pci standartını  araştırmaya devam etmelimiyim (:  slotta ki her pinin belli görevi var bunları kullanarak  işime yarıcak bir sistem dizayn edebilrim gibime geliyor...   ancak ufacık bi sıkıntı seziyorum  pic 8 bit ethernet kartı  öyle tahmin ediyorum ki 32 bit