FPGA, ilk adımlar


11

Eh bu aşkın FPGA üzerinde Soruma bir devamıdır burada .

Sonunda bir Spartan 6 FPGA ile bir Digilent Atlys seçtim , mikrodenetleyicilerle bir miktar iş yapmama rağmen FPGA'larla ilgili daha önce hiç deneyimim yok.

Son birkaç günü FPGA veri sayfalarını okuyarak geçirdim ve Verilog ile başlamak için iyi bir seçim olacağını düşünüyorum. Ben herhangi bir kod örnekleri bulamadı ve hatta veri sayfaları acemi dostu değildir.

Şimdi programlama, simülasyon, sentez üzerine biraz el yapmak istiyorum ve bunu yapmak istiyorum

  1. FPGA'dan (100Mhz saatte çalışır) 54Mhz gibi garip bir frekans oluşturun ve pimlerden birine yönlendirin. Muhtemelen bunun için DCM veya PLL kullanmak zorunda kalacaktım, ama buradan nasıl başlayacağımı bilmiyorum?

  2. FPGA'dan bir çeşit I2C okuma yazma işlemi uygulayın.

Aradığım şey, bir referans, muhtemelen çevrimiçi bir kitap veya DCM'ler, dilimleri, clb'ler gibi FPGA'da bulunan donanım bileşenlerinin her birinin kod örneklerini ve açıklamasını veren bir kitap.

Sanırım bu beni FPGA dünyasına sokmalı.

Yanıtlar:


13

Kod Örnekleri

Dışından'a geçin OpenCores ve açık kaynak projeleri onlarca bulacaksınız. Verilog'da çok sayıda yazılı ve G / Ç cihazlarından işlemcilere kadar olan gamı ​​kapsar.

Ayrıca, Xilinx'te bulunan birçok Uygulama Notunu da unutmayın. Kendi cihazlarında çok yardımcı oluyorlar.

Tasarım akışı

FPGA tasarımında yer alan adımlara genel bir bakış için tasarım akışıyla ilgili bir veya iki kitap alın. Özet olarak şunları içereceklerdir:

  1. Tasarım girişi - sizin durumunuzda Verilog.
  2. Fonksiyonel simülasyon - çeşitli araçlar kullanarak.
  3. Sentez - sizin durumunuzda, Xilinx ISE araçlarını kullanarak.
  4. Simülasyon - Verilog'un bazı yönleri sentezlenemediğinden sentez sonrası tasarımınızı doğrulamak için.
  5. Yer ve Rota - Xilinx ISE araçlarını kullanarak.
  6. Uygulama - tasarımın FPGA'ya indirilmesi.
  7. Test yapmak.

FPGA Bileşenleri

FPGA bileşenlerini kullanmaya gelince, bunları kullanmanın farklı yolları vardır. Ancak bir Verilog tasarım girişi kullandığınızı varsayarsak , farklı bileşenleri çıkarabilir veya başlatabilirsiniz .

Çıkarım genellikle ihtiyacınız olan işlevselliğe göre kullanılacak en iyi bileşenleri seçmek için sentez aracını almayı içerir. Buna en iyi örnek bir toplayıcı tasarlamak olacaktır.

Yaparak q <= a + bveya q = a + bbir toplayıcı çıkarım yapabilirsiniz. Her ikisi de toplayıcıyı çıkarır, ancak engelleme / engellemeyen sözdizimini kullandığınızda bir fark vardır.

Örnekleme genellikle koddaki tam kütüphane bileşeninin çağrılmasını içerir. DCM gibi bazı bileşenler kodda kolayca çıkarılamaz. Bununla ilgili daha fazla bilgi edinmek için İMKB araçlarını ve örneklerini kullanabilirsiniz.

Bileşenlerin gerçek listesi Kitaplıklar Kılavuzu'ndaki Xilinx tarafından sağlanır .

PROTIP

Bunu öğrenmenin en iyi yolu aslında kısa kod parçalarıyla denemek ve tükürdüğünü görmek için bunları İMKB sentezinde çalıştırmaktır. İMKB araç setinin kendisinde de çok sayıda örnek var.


5

Mutlak referanslarınız Spartan 6 kullanım kılavuzları olacaktır . Örneğin, Saatli Kaynaklar kılavuzu (UG382) DCM'lerin nasıl yapılandırılacağını kapsar. Gerçek kodun nasıl göründüğüne ilişkin örnekler için, İMKB'nin bir veritabanı vardır. Dil Şablonlarını (araç çubuğundaki ampul) açın, ardından dile bakın (VHDL veya Verilog) -> Cihaz İlkel Örneği -> yonga ailesi (Spartan-6) -> Saat Bileşenleri.

Anakartınıza özgü ayrıntılar Digilent'ten edinilebilir, özellikle UCF'yi (tüm IO'ları adlandırır) ve referans kılavuzunu (çevresel devreyi açıklar) istersiniz.

Bir bileşenin nasıl yapılacağı da dahil olmak üzere dilinizin genel yapısı muhtemelen kitaplardan ve örneklerden daha iyi alınır. Verilog'u kullanmadım, bu nedenle herhangi bir öneriniz yok. Yine de, şablonlar çeşitli genel yapıların parçacıklarını da içerir.


VHDL alanında uzman mısınız? UCF ile ilgili olarak, Digilent panosuyla çalışmak neden önemlidir?
Kevin Boyd

1
Bu şekilde uzmanlaşmıyorum - sadece Verilog üzerinde çalışmadım. UCF, portlarınızın hangi pinlere bağlandığını ve saat ölçüm taleplerini açıklayan dosyadır. Onsuz, pimler rastgele olarak atanır, bu da mevcut kartla eşleşmez.
Yann Vernier

Pim tahsis bölümünü anladım, saatli saat talepleri ne?
Kevin Boyd

1
Zamanlama kısıtlamaları saat frekansı, kurulum ve tutma süreleri gibi şeyleri kapsar. Zamanlama analizindeki bilgileri almaya devam edersiniz, ancak kısıtlamalar dosyasında gereksinimleri belirtmek, araçların ne zaman başarısız olduklarını algılamasını sağlar ve muhtemelen sınır çizgisi olduğunda ihtiyaçlarınızı karşılamak için daha fazla çabalar.
Yann Vernier

1

Saat için DLL / PLL megacore kullanın.


Spartan 6, henüz DLL bulunamadı, DCM ve PLL'lere sahiptir. Forumları aradıktan sonra Xilinx'in saat kaynakları üretmek için yapılandırılabilen Core Generator adlı bir aracı olduğunu buldum.
Kevin Boyd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.