FPGA ile DRAM arasındaki tellerde ne oluyor?
Bir Hacker News paylaşımı, FPGA ile DRAM arasındaki tellerde neler olup bittiğini ve bir DDR3+ arayüzünün neden açılışta ayarlanmak zorunda olduğunu anlatan bir bölümü öne çıkardı. Metne göre arayüzün iki yarısı var: komut ve adres hattı denetleyiciden DRAM'e tek yönlü gidiyor ve bir rank'taki tüm çiplerce paylaşılıyor. Veri hattı ise çift yönlü ve her biri kendi strobe'una sahip bayt şeritlerine bölünmüş durumda.
Habere göre SDR bellekler saat başına tek kelime aktarırken DDR bellekler her kenarda birer kelime, yani saat başına iki kelime taşıyor. Bu hızlarda denetleyicinin gönderdiği saate veriyi örneklemek için güvenilmez; kart ve çip gecikmeleri fazla büyük. Bu yüzden veri kendi saatiyle, yani DQS strobe'u ile birlikte yol alıyor. Makalede bu düzene kaynak eşlemeli arayüz dendiği belirtiliyor: iki sinyal aynı yolu izlediği için gecikmeleri birbirini götürüyor.
Yazma sırasında denetleyici DQS'i her bitin ortasına denk gelecek şekilde gönderiyor; okumada ise DRAM'in gönderdiği DQS bit geçişlerine hizalanıyor ve alıcı bunu çeyrek saat geciktiriyor. Aktarım öncesi ve sonrasında DQS, veri taşımadan bir ön ve arka sinyal olarak sürülüyor. Makaleye göre DDR3 ve DDR4'te saat, komut ve adres pinleri her çipin yanından sırayla geçen ve bir sonlandırmayla biten fly-by topolojisiyle yönlendiriliyor. Bu, yoğun yüklü sinyalleri yüksek hızlarda temiz tutuyor ama her çip saati bir öncekinden biraz daha geç alıyor.
Habere göre veri şeritleri noktadan noktaya bağlı olduğu için gecikmeleri saati takip etmiyor ve fly-by yönlendirmede ilk ile son çip arasındaki kayma bir saat periyodunu aşabiliyor. Bu yüzden her şeridin kendi DQS gecikmesine ihtiyacı var. Write leveling bu gecikmeyi ölçüyor; LiteDRAM'de ilgili kayıtlar ve BIOS taraması devreye giriyor. Artix-7'de çıkış gecikmesi bulunmadığı için makale, tek statik DQS fazıyla bazı şeritlerin koşulu karşılayamadığını söylüyor.