MachXO2 ile FPGA calismasi

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
8,081
Yillardir programlanabilir lojik ciplerle calismiyorum. Su siralar cok kucuk hacimli lojik devreler kurmam gerekiyor ve ayrik ciplerle calismak istemiyorum.

Akilli bidiga sordugumda bana MachXO2 serisini onerdi. Cip fiyatlarina baktigimda isimi gorecek cip 4...5 Euro araliginda. Yazilim gelistirme icin gerekli programa para vermek gerekmiyor.

1772132461540.png



Verilog ve sematik cizim ile tasarim yapilabiliyor.

Sizin onereceginiz daha uygun cipler var mi?

Tabiki gelistirme ortami icin derleyiciye vs para vermek istemiyorum.

Oneriniz varsa bilmek isterim.

Eger cip markasi icin baska bir oneri yoksa benim sectigim cipi kullanarak uyelerle formda kurs niteliginde bir calisma baslatabilirim.

Ilgilenenler gerekl yazilim ve donanimi aldiginda bir iki haftaya istedigi lojigi cipin icine atacak hale gelecektir.
 
bildiğim kadarıyla bu machXo2 çok eski bir seri. ben lattice ice40 serisi kullanıyorum. ama bunlar fpga ve tqfp kılıfta. fiyatları da gene 5K logic cell için 3-4 euro arası. avantajı 1.2 ve 3.3 ile besleyince basit bir kristal ile çalışabiliyor. development tools xilinx veya alteradaki gibi 100gb değil. çok daha makul ve ücretsiz. ice40 serisi hobiciler arası da çok yaygın ve kaynak bulmak kolay oluyor. bir de çinlilerin efinix ve gowin fpga'leri var.

bu arada ice40 serisinde jtag yok yani kod geliştirme biraz daha zahmetli. ama çoğu chipte dahili flash hafıza var. bu dahili flash ya da external spi flash kullanılabiliyor.

384 logic cell ice40 chip 1.9 euro. bunun 1k olanı da neredeyse aynı fiyatlardaydı.
 
Akilli bidik bu seriyi de dile getirdi ama ayrica flash (config flash) gerekiyor diyince kafama yatmadi. Bir de ben kartimda devasa bir cip istemiyorum az sayida pin isimi goruyor.
 
Akilli bidik bu seriyi de dile getirdi ama ayrica flash (config flash) gerekiyor diyince kafama yatmadi. Bir de ben kartimda devasa bir cip istemiyorum az sayida pin isimi goruyor.
  • iCE40UP (UltraPlus) Serisi: (Örn: iCE40UP5K)
    • Bu çiplerde dahili NVCM vardır. Ancak geliştiriciler genellikle harici flash kullanır çünkü NVCM hata kabul etmez (bir kez yazılır).
  • iCE40UL (UltraLite): (Örn: iCE40UL1K, iCE40UL640)
    • Yine NVCM (OTP) tabanlıdır.

iCE40 LP / HX (Standart Seri)​

Bu çiplerin çoğu (iCE40LP1K, iCE40HX8K gibi) saf SRAM tabanlıdır ve dahili flashları yoktur. Her zaman dışarıdan bir SPI Flash çipine ihtiyaç duyarlar.
 
Lattica CPLD lerle calisirken icinde flash barindiran modelleri kullanmis ve cok sevmistim.

Paralel porta (centronix) takilan basit bir programlayicisi vardi istedigim kadar sil yaz yapabiliyordum.

ICE40LP384-SG32 fiyati gercekten cok iyiymis fakat bir kez programlama olayi bu asamada isime gelmez.

Programlanabilir cipi STM islemci ile birlikte kullanacagim. FPGA kodunu da MCU icine yerlestirip datalari MCU ile SPI uzerinden cipe atmak dusunulebilir.

Bu dusundugumu yapabilmem icin (FPGA ramina kod yukleyebilmem icin) MCU'dan nekadar flash alani heba etmem gerekir?
 
Son düzenleme:
MCU'yu flash olarak kullanmak gercekten su anda cok cazip fikir.

iCE40 serisi kafama cok yatti. Benim olabildigince kucuk pakette bir cipe ihtiyacim var. Icinde devasa hucreler de gerekmiyor.

Lojik I/O pin ihtiyacim 20'den az. Clock frekansini da dogrudan STM den alacagim.

Nokta atisi ad vererek cipi secmemde yardimci olursan sevinirim.

ICE40LP384-SG32 olabilir mi? Calismam glue lojigin biraz otesinde.

Core Supply Voltage Min 1.14V
I/O Supply Voltage 3.46V denmis.

1.2v Core voltjini ben harici olarak mi uretecegim? Cipe 3v3 vermem yetmeyecek mi?
 
Son düzenleme:
benim yaptığım devrede 2 güç kaynağı vardı 3.3 ve 1.2 volt. pll için 2.5 volt da istiyor ama onu 3.3 voltdan bir diyot ile voltaj düşümü yaparak elde ediyor.

nokta atışı için kaç lut lazım onu bilmek gerek. 384le az değil ama bir uart mesela 80-90 LE harcıyordu. benim kullandığım chip ice40up5k ama bunu seçmemdeki sebep fiyat değil sürekli stok bulabilmekti ve görece diğer fpgalere kıyasla ucuzdu. bir de diğer firmalarda 5K chipler genelde 144pin veya daha büyük. bana ufak kılıf lazımdı.

ice40 serisi için icebreaker isimli donanım-yazılım desteği veren bir paket var. ben oradan örnek alarak devreleri ve beslemeleri yapmıştım. bu pakette ücretsiz bir sentezleyici de var ama şart deği. lattice bir mail ile lattice diamond yazılımına 1 yıl lisans veriyor.

fpga chipi çalıştırmak için temel şema bu. usb ve flash-ram kısmı şart değil. güç kaynakları cdone ve reset kısmı önemli. bir de clock.
https://github.com/icebreaker-fpga/...1.1c/ref/icebreaker-bitsy-v1.1c_schematic.pdf


şu seri ice40 fpgaleri güzel açıklıyor:
 
Son düzenleme:
Benim gercekten cok az lojige ihtiyacm var.

H bridge icin gate surucuye uygulanacak sinyalleri, akimdan ornekleme yapacak ani belirleyecek pencere araligi tespiti icin zamanlayici hepsi o kadar.
Harici bir iki opampla da UC3843 tarzi SMPS donanimi olusturacagim.

Ileride daha buyuk kapasitede cip gerekirse zaten o zamana kadar yeterli tecrube edinilecegi icin ayni aileden daha buyuk kapasitede cipe gecmek sorun olmayacaktir.

PLL ihtiyacim da olmayacagina gore Bu durumda sadece 1.2v regulator cipi ihtiyacim olacak.

Acemiligi atmak icin soyle bir kart buldum.

 
evet bu kart olur, ice40 içeren herhangi bir kart olur açıkçası. fpga içindeki state machinelerin çalışması için PLL veya bir clock sinyali gerekecek. ama konu sadece and-or vs. kapılarından bir logic yapı oluşturup bunları çıkışlara vermekse hiç clock sinyali olmadan da bu çalışır. sadece aklıma gelen bir handikap bu fpgaler anında boot etmiyor. ilk enerji geldiğinde stm32 açılacak - fpga içine bitsream atacak ve reset verip boot etmesini bekleyecek bu iş 100-150ms sürebilir. bu arada mosfetlerin kararsız kalmamasını sağlayacak bir yapı olmalı.

bir konu da sentezleyici bazen çok garip rotalardan sinyalleri route ediyor ve iki çıkış arasında ns farklar olabilir. ama bu farkları simulatör gösterebiliyor.
eğer state machineler olacaksa clock sinyali global clock olabilen pinlerden birine girilmeli. bu sayede clock senkron şekilde ve gecikmesiz tüm LE'lere ulaşabilir.
 
Gate suruculerin shutdown pini olanlari ile sozkonusu sorun kolayca cozulur.

Bu asamada o zaman bir developmant board alip hizlica IDE'ye ve VHDL'ye isinmak gerekecek.
Belki halen Lattice ABEL compiler veriyordur fakat VHDL ogrenmek istiyorum.

Ardindan da STM32 ile cipe kod atma isini halletmek gerekecek.
 
geçen sene qwen vhdl ile çok güzel kod yazıyordu. artık claude code ya da gemini bence bu işi de çözmüştür.
chipe kod atma kısmı aslında stm32 chip spi slave gibi davranacak ve bir flash chipi emule edecek. spi üzerinden byte byte ya da blok blok gelen adres-data requestlere yanıt verecek sadece. fpga tarafı ise bir serial flash chipten bu dataları okuduğunu varsayacak. bir de systemverilog var. verilogun C diline yakınlaştırılmış hali. mcu'dan geçenler için anlaşılması kod yazması daha kolay bir dil.
 
Hevesinizi hiç kaçırmak istemem, siz yine de FPGA öğrenin, ama yapmak istediğiniz şeyin stm32 çevre donanımlarıyla olmayacağından emin misiniz? Ne yapmak istediğinizi tam yazsanıza.
 

Forum istatistikleri

Konular
8,948
Mesajlar
145,375
Üyeler
3,604
Son üye
ranni

Son kaynaklar

Back
Top