Bir omuz sırt çantası
Bu ne kadar zor?
Bir şans ver!
_
Uzun basın tanıma
FPGA ile sentezlenen devrelerin tamamı çipin içindedir, temelde sinyali bir osiloskop veya mantık analizörü ile ölçmek imkansızdır, bu nedenle xilinx gibi üreticiler yerleşik bir mantık analizörü icat etmiştir. Vivado'da ILA (Integrated Logic Analyzer), daha önce ISE'de ChipScope olarak adlandırılıyordu. Temel ilke, bir mantık analizörü oluşturmak için FPGA içindeki geçit devresini kullanmak ve sinyal hattını algılamak için birçok probu genişletmek için onu bir ILA çekirdeğine entegre etmektir.
Aşağıda, esas olarak ILA'ya odaklanarak çevrimiçi hata ayıklama süreci adım adım açıklanmaktadır. saat alanı Doğru kullanım.
İlk bölüm test edilen sinyal hattını ekler
Genellikle iki yol vardır:
1. Koda böyle bir cümle (* MARK_DEBUG = "TRUE" *) ekleyin. Reg veya tel tipi olup olmadığına bakılmaksızın, arayüz sinyalleri veya dahili değişkenler eklenebilir.
2. Kurulum Hata Ayıklama sürecinde, doğrudan Netlist'i ekleyin
Genelde genel sinyaller için DEBUG logosunu eklerim, geçici ölçüm için manuel olarak net eklerim, gerekirse eklerim ve gerekmiyorsa silerim.
İkinci kısım ILA modülleri oluşturmaktır
Sentezi tamamladıktan sonra, Sentez Tasarımını Aç, Hata Ayıklamayı Kur'u tıklayın.
Gerektiği gibi birini seçin
Girdikten sonra, test edilen ağı ekleyebilir / silebilirsiniz. Referans saatin olmadığı sorulursa, sağ tıklayın ve uygun bir saat seçin
FIFO derinliğini seçin. Bu derinlik çok büyük seçilebilir ve test edilen her sinyal o kadar büyük bir FIFO alacaktır, bu nedenle mantık analizörü çok fazla kaynak tüketir! Tetikleme koşulunu makul şekilde ayarlayın, böylece çok büyük FIFO seçmenize gerek kalmaz.
Bir önceki adımda saat alanını seçme kısmına geri dönmeme ve saat alanını seçmenin önemini göstermek için yukarıdaki FIFO'yu birleştirmeme izin verin.
Saat alanının seçimi iki ana yönü etkileyecektir: kaç tane ILA çekirdeği üretilir ve ne kadar zaman tespit edilebilir.
1) 3 saat seçerseniz, kesinlikle 3 ILA çekirdeği üreteceksiniz Sonuçta, D flip-floplar için clk farklıdır;
2) FIFO'nun referans saati farklıdır ve bu, FIFO'nun ne kadar süreyle dolu olacağını doğrudan belirler;
Örneğin, benim tasarımımda, IIC için 50mhz'den 20mhz'ye ve 8mhz'den 400khz'ye gelen 3 saat var. IIC'nin referansı 50 mhz ise scl sda'nın FIFO'su bir anda dolacaktır Tetiklemeden sonra FIFO görevi tamamlanır, ancak bir sinyal geçişi bile göremiyoruz. 400 khz'ye başvurursanız, başlangıç koşulundan 8 bit veriye, durdurma durumuna kadar yakalanabilir.
FIFO'da depolanan veriler, referans sinyal saatine dayanır ve bir clk'den sonra yalnızca 1 bitlik veri depolanır.
Doğru saat alanını seçmek çok önemlidir çünkü sonuçta kaynak işgalini etkileyecektir. ILA çekirdek sayısı, FIFO sayısı (genellikle yakalanacak 500 hatta 1000 sinyal vardır. Neden bu kadar çok! Örneğin, 32 bit adresiniz, 32 bit veriyolunuz ve ayrı ayrı okuyun ve yazın, birkaç tane yavaş Daha fazla toplamak için yavaş, fpga'nın asıl işlevi hızı artırmak için paralel veri yolu ilkesini kullanmaktır).
Örneğin, aşağıdaki ayarda 3 ILA çekirdeği kesinlikle üretilecek ve 3 dalga formu arayüzünde görüntülenecektir. Aslında, kaynaklar gerçekten yeterliyse, farklı arayüzlerde görüntülenebilmeleri için bunları ana işlevlere göre ayırmanız ve ardından her biri için tetikleme koşullarını ayarlamanız önerilir.
Sinyal dalga formunun üçüncü bölümü
Jtag'i bağlayın, hedef panoyu açın ve ardından bit ve ltx dosyalarını programlayın.
Tetikleme koşulunu ayarlayın. İşte osiloskopla aynı kullanım, çalıştırabilir veya tetikleyebilirsiniz.
Sağ düğmenin birçok işlevi vardır: kısa görünen ad, renk ayarı, temel dönüştürme, gruplama vb. Bunun hakkında düşünebilirsiniz.
Örneğin
Aşağıda ölçülen sinyal 20 mhz clk'dir, ancak görüntülenen dalga biçimi tek tip bir kare dalga değildir! neden? 50 mhz saat ile toplandığı için, bu kadar, bunda yanlış bir şey yok. Yine, saat alanı seçimi çok önemlidir.