Ana cevabın dediği gibi, önerilen yöntem aşağıdaki gibidir:
use ieee.numeric_std.all;
...
my_slv <= std_logic_vector(to_unsigned(my_int, my_slv'length));
Bununla birlikte, bunun neden önerildiğini ve neden VHDL'nin tamsayıları std_logic_vectors biçimine dönüştürmenin bu kadar görünüşte kıvrımlı bir yolunu açıklamak istiyorum.
Bu türlerin araçlar tarafından nasıl göründüğü ortaya çıkıyor.
Bir standard_logic_vector kelimenin tam anlamıyla 1 ya da 0 bir demet. 10001 var. Bu sayı kaç? Şey, buna bağlı. İmzalı mı yoksa imzasız mı? Bu SLV bilmiyor ya da umursamıyor. Kaç bit SLV'niz ne kadar sürüyor?
Bir tamsayı imzalanır ve genellikle 32 bit (doğru hatırlıyorsam).
1. Aşama: Tamsayımı daha kısa ve imzasız hale getirin. Bu kısım:
to_unsigned(my_int, my_slv'length));
“Bu tam sayıya sahibim, imzasız olmasını istiyorum ve SLV'nin uzunluğuna sığmasını istiyorum.”
Aşama 2: Ardından, bu bitleri alın ve my_slv'yi çalıştırmak için bunları kullanın.
my_slv <= std_logic_vector(...)
"Bu bitleri al ve slv'imi sürmek için kullan"
( A <= B
VHDL'de terminoloji üzerine bir not, "A B tarafından sürülür" olarak okunur)
Kombine, bu sizi alır:
my_slv <= std_logic_vector(to_unsigned(my_int, my_slv'length));
Geleneksel bir programlama arka planından geldiğinde, programlama yolunda düşünmek çok kolaydır. Ancak VHDL'de yazdığınız kodun donanımda fiziksel etkileri vardır. Bu yöntemin neden işe yaradığını ve önerildiğini bilmek, donanım terimleriyle yazdıklarınızı düşünmeye bir adım daha yaklaşır.
Bonus ipucu: to_ önekindeki işlevler, işlenenleri kısaltan / değiştiren işlevlerdir. Onları imzasız veya belirli bir uzunlukta veya her ikisini de yaparlar. Bu yüzden to_unsigned, uzunluğu belirtmenizi gerektirir. To_ olmayan işlevler (bu örnekte düz std_logic_vector (...)), türler zaten doğrudan uyumlu olduğunda kullanılır. Msgstr "Bu bitleri al ve onları bu tipte doldur, değişiklik gerekmez." Bunların uzunluk argümanı yok çünkü iki taraf da aynı. Böylece böyle şeyler inşa ederken, yukarıdan bakmam gerekmiyor, sadece verileri nasıl değiştirdiğimi düşünüyorum.