Zephyrnet Logosu

GEM TSU Örnek Tasarım

Tarih:

Bu örnek tasarımın amacı, GEM3'te Zaman Damgası Birimi'ni (TSU) ayarlamak için basit C kodu kullanmak ve TSU kayıtlarının/sayaçlarının seri konsoldaki kayıt değerlerini artırdığını ve yazdırdığını görmektir. 

Bu örnek tasarımda, Vitis™ kurulum dizininde ZCU102 Değerlendirme kartını hedefleyen Vitis™ ve sağlanan XSA dosyasını kullanacağız.

Vitis'te Uygulama Oluşturma

Öncelikle Vitis’in 2020.2 sürümünü başlatın ve “Uygulama Projesi Oluştur”a tıklayın. “Platform” sayfasında zcu102.xsa'yı seçin.

Varsayılan olarak GEM3, ZCU102 Değerlendirme panosunda etkindir ve RJ45 üzerinden geçen RGMII MIO arayüzü ile yerleşik TI PHY'ye bağlanır.

image2021-7-1_15-15-50.png

Daha sonra sondaki “Boş Uygulama”yı seçmek için “İleri”ye tıklayın.

image2021-7-1_15-23-52.png

Artık Vitis GUI'deki “src” klasörüne sağ tıklayıp ardından “Kaynakları içe aktar” seçeneğine tıklayarak xttcps_rtc_example.c dosyasını indirdiğiniz dizine giderek dosyayı ekleyebiliriz. proje.

Daha sonra uygulamayı oluşturmak için “oluştur” düğmesine tıklayın.

image2021-7-1_15-33-44.png

Koda Genel Bakış

İşte kodun hızlı bir anlık görüntüsü:

#define TSU_TIMER_INCR_GEM3 *((unsigned long *)0xff0e01dc)
#define TSU_TIMER_INCR_SUB_NS_GEM3 *((unsigned long *)0xff0e01bc)
#define TSU_TIMER_SEC_GEM3 *((unsigned long *)0xff0e01d0)
#define TSU_TIMER_NS_GEM3 *((unsigned long *)0xff0e01d4)
#define GEM_TSU_REF_CTRL *((unsigned long *)0xff5e0100) /*
* Set up the Ticker timer
*/
Status = SetupTicker();
if (Status != XST_SUCCESS) {
return Status;
} GEM_TSU_REF_CTRL = 0x00010600;
GEM_TSU_REF_CTRL |= 0x01000000;
printf("%8.8lxnn", GEM_TSU_REF_CTRL); TSU_TIMER_INCR_GEM3 = 0x4;
TSU_TIMER_INCR_SUB_NS_GEM3 = 0; Status = WaitForDutyCycleFull();
if (Status != XST_SUCCESS) {
return Status;
} printf("%8.8xn", TSU_TIMER_SEC_GEM3);
printf("%8.8xnn", TSU_TIMER_NS_GEM3); GEM_TSU_REF_CTRL &= 0x0feffffff;
/*
* Stop the counters
*/

Bu kodda yapılanlar oldukça basittir. GEM_TSU_REF_CTRL kaydı doğru bir şekilde ayarlandıktan sonra, zamanlayıcının saymaya başlayabilmesi için zamanlayıcı sn ve nsec kayıtlarını geçerli saat veya sistem saati ve ayrıca delta ile başlatmamız gerekir.

Tıpkı diğer zamanlayıcılar gibidir. Lütfen bunun Linux sürücüsünde tamamen desteklendiğini unutmayın. Burada bunu yalnızca çıplak metal ortamda gösteriyoruz. 

Zamanlayıcı dolduğunda, tüm paketler/tüm PTP paketleri/PTP olay paketleri (genellikle protokol) için PTP zaman damgası eklenebilir. Zaman damgası BD'lere eklenir ve ardından bir PTP olay paketi geldiğinde PTP kaydında da yakalanır.

ZCU102 kartında çalışıyor

Uygulamaya sağ tıklayın, “Farklı Çalıştır”a ve ardından “Yapılandırmaları Çalıştır…”a tıklayın.

image2021-7-1_15-43-26.png

Seri konsolda aşağıdaki çıktıyı gözlemlemelisiniz. 

image2021-7-1_15-50-9.png

MPSoC'da TSU Desteği

TSU/PTP'yi GEM ile kullanmaya başlamadan önce lütfen bkz. (Xilinx Cevap 67239) temel donanım kurulumu için. 

Burada ZynqMP kullanıcılarının başvurabileceği bir yapılandırma tablosu bulunmaktadır. 

TSU Saat Kaynağı Denenmiş Vivado Yapılandırması Yapılandırmayı kaydedin Sinyal Bağlantıları
GEM_CLK_CTRL (0xFF180308) GEM_TSU_REF_CTRL (0xFF5E0100) MIO_PIN_XX MIO 50/51 emio_enet0_tsu_clk emio_enet0_tsu_inc_ctrl[1:0]  fmio sinyal bağlantısı (GUI'de “TSU BUFG ve PL'den Saat” seçeneği etkinleştirildiğinde) emio_enetx_tsu_timer_cmp_val
PLL Evet Varsayılan – seçim yok. TSU frekansını değiştirebilir. Varsayılan 250MHz kaynak IOPLL'dir. bit[22] = 0 veya 1 (fmio sinyalinin geri döngüye alınıp alınmadığına bakın) bit[2:0] = 000 veya 010 NA Maruz bırakılmamalı Maruz bırakılmamalı 0b11 Kullanıcıya bağlı:
fmio_gem_tsu_clk_to_pl_bufg ve fmio_gem_tsu_clk_from_pl geri döngüye alınabilir veya açık bırakılabilir
TSU zamanlayıcı karşılaştırması geçerli sinyal. Kullanıcının bağlantısı. 
bit[21:20] = 0b00 Bölenleri saat seçimine göre ayarlayın
1PPS sinyali açıkta olan PLL (GEM0 kullanırken)  Evet Varsayılan – seçim yok. TSU frekansını değiştirebilir. Varsayılan 250MHz kaynak IOPLL'dir. bit[22] = 0 veya 1 (fmio sinyalinin geri döngüye alınıp alınmadığına bakın) bit[2:0] = 000 veya 010 NA Maruz bırakılmamalı Maruz bırakılmamalı 0b11 Kullanıcıya bağlıdır, genellikle fmio_gem_tsu_clk_to_pl_bufg ve fmio_gem_tsu_clk_from_pl geri döngüye alınır

TSU zamanlayıcı karşılaştırması geçerli sinyal. Kullanıcının bağlantısı.

bit[21:20] = 0b00 Bölenleri saat seçimine göre ayarlayın tsu_timer_cnt[93:0] kullanın → Bit 45'in tersi 1PPS sinyalidir
MIO 50 veya 51 HAYIR, test edilecek donanım yok G/Ç yapılandırması → Harici TSU Saati→ MIO → 50/51 bit[22] = 0 veya 1 (fmio sinyalinin geri döngüye alınıp alınmadığına bakın) bit[24]=0 MIO_PIN_50/51 bit[1] = 1 kullanıcı seçimine göre Seçilen MIO kartta mevcut olmalı ve harici kaynağa bağlanabilmelidir Maruz bırakılmamalı 0b11 Kullanıcıya bağlı:
fmio_gem_tsu_clk_to_pl_bufg ve fmio_gem_tsu_clk_from_pl geri döngüye alınabilir veya açık bırakılabilir
TSU zamanlayıcı karşılaştırması geçerli sinyal. Kullanıcının bağlantısı.
Saat konfigürasyonu → GEM_TSU_CLK → Değeri girin bit[21:20] = 0b11
EMIO Evet G/Ç yapılandırması → Harici TSU Saati → EMIO bit[22] = 1 bit[24]=0 MIO_PIN_50/51, GEM TSU saati için YAPILANDIRILMAMALIDIR. Bu şekilde saat otomatik olarak EMIO'dan seçilir. Maruz bırakılmamalı DRC'de açığa çıkarılmalı ve bağlantı açısından kontrol edilmelidir 0b11 veya kullanılan seçime göre fmio_gem_tsu_clk_to_pl_bufg ve fmio_gem_tsu_clk_from_pl geri döngüye alınmalıdır TSU zamanlayıcı karşılaştırması geçerli sinyal. Kullanıcının bağlantısı.
Saat konfigürasyonu → GEM_TSU_CLK → Değeri girin bit[21:20] = 0b11
  • GEM_CLK_CTRL, MIO[50] veya MIO[51] olarak seçilirse ve karşılık gelen pin kaydı GEM_TSU_CLK kaynağı olarak yapılandırılmazsa, seçim ZynqMP tasarımına göre otomatik olarak varsayılan olarak EMIO'ya ayarlanacaktır.
    Bu, Vivado GUI ve PCW'de ele alınmalıdır. Şu anda yukarıdaki mantığın MIO[26] için geçerli olmadığını unutmayın. GEM_CLK_CTRL'nin MIO[26] kullandığı testlerde herhangi bir çalışma yolu gözlemlenmedi.
  • Versal için, PMC'nin MIO[24] ve MIO[25]'i ve LPD'nin MIO[50] ve MIO[51]'i MIO TSU kaynakları olarak mevcuttur.
    Bu durumda, PL/EMIO seçeneği yalnızca GEM_CLK_CTRL bit[21:20]'i 01 veya 11 olarak ayarlamak olacaktır ve MIO kayıtları yapılandırılmamalıdır. 

Plato Ai. Web3 Yeniden Düşünüldü. Güçlendirilmiş Veri Zekası.
Erişmek için buraya tıklayın.

Kaynak: https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/GEM-TSU-Example-Design/ba-p/1259619

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?