Qu'est-ce que la négation (pas) d'un vecteur de bits en VHDL
Que signifie faire une négation d'un vecteur de bits en VHDL? Par exemple si j'ai 10100111 qui est un vecteur de bits appelé temp et je fais quelque chose comme temp := temp que sera ma sortie?
Vous pouvez utiliser le bouton "non" sur les vecteurs. Il suffit d'exécuter le programme ci-dessous avec ModelSim ou ISim et l'inversion de l'/niée vecteur de bits sera imprimé dans la console.
LIBRARY ieee;USE ieee.numeric_bit.ALL;entity test isendentity test;architecture beh of test isfunction vec_image(arg :bit_vector)returnstringis-- original author Mike Treseler (http://mysite.ncnetwork.net/reszotzl/)-- recursive function call turns ('1','0','1') into "101"-------------------------------------------------------------------------------constant arg_norm :bit_vector(1to arg'length):= arg;constant center :natural:=2;-- 123variable bit_image :string(1to3);-- '0'variable just_the_number :character;beginif(arg'length>0)then
bit_image :=bit'image(arg_norm(1));-- 3 chars: '0'
just_the_number := bit_image(center);-- 1 char 0return just_the_number -- first digit& vec_image(arg_norm(2to arg_norm'length));-- rest the same wayelsereturn"";-- until "the rest" is nothingendif;endfunction vec_image;begin
demo:processisvariable bitvec :bit_vector(7downto0):="10100111";beginreport vec_image(bitvec);report vec_image(not bitvec);-- not bit vectorwait;endprocess demo;endarchitecture beh;
En général en VHDL (LRM 7.2.1): "Pour l'opération unaire not défini sur une dimension de la matrice de types, l'opération est effectuée sur chaque élément de l'opérande, et le résultat est un tableau avec le même indice de gamme que l'opérande."
Vous pouvez utiliser le bouton "non" sur les vecteurs. Il suffit d'exécuter le programme ci-dessous avec ModelSim ou ISim et l'inversion de l'/niée vecteur de bits sera imprimé dans la console.
OriginalL'auteur Hendrik
Un bit par bit d'inversion.
En général en VHDL (LRM 7.2.1): "Pour l'opération unaire
not
défini sur une dimension de la matrice de types, l'opération est effectuée sur chaque élément de l'opérande, et le résultat est un tableau avec le même indice de gamme que l'opérande."OriginalL'auteur Jan Decaluwe
Si vous voulez vraiment nier un vecteur, vous devez utiliser un vecteur qui a certaines propriétés définies pour elle. Plus précisément:
bit_vector
oustd_logic_vector
, qui sont des collections de bits)De la
ieee.numeric_std
package, vous devez utiliser lesigned
type pour cette:OriginalL'auteur Martin Thompson