O
omara007
Guest
Hi guys ..
Jeg konstrueret en VHDL-funktion, der returnerer et trunkeret-vektoren fra en effektiv vifte af en underskrevet vektor.Med andre ord, trunkering sker på den mindste størrelse vektor, der kan indeholde, der underskrev værdi uden dobbeltarbejde at tegnet bit.Her er funktionen:
Code:
-------------------------------------------------- --------------------------
- TRUNCATE_EFFECTIVE
-------------------------------------------------- --------------------------
funktion TRUNCATE_EFFECTIVE (INPUT_VECTOR: UNDERSKREVET; TRUNCATION_SIZE: POSITIV) hjemrejse UNDERSKREVET er
konstant NAS: UNDERSKREVET (1 downto 0): = (andre =>'0 ');
variable RESULTAT: UNDERSKREVET (TRUNCATION_SIZE-1 downto 0);
variable ZERO_INDEX: INTEGER;
variable ONE_INDEX: INTEGER;
begynd
if (INPUT_VECTOR'length <1) derefter
tilbagevenden NAS;
elsif INPUT_VECTOR'length = TRUNCATION_SIZE derefter
tilbagevenden INPUT_VECTOR;
elsif INPUT_VECTOR'length <TRUNCATION_SIZE derefter
RESULTAT: = resize (INPUT_VECTOR, TRUNCATION_SIZE);
tilbagevenden RESULTAT;
elsif INPUT_VECTOR'length> TRUNCATION_SIZE derefter
hvis INPUT_VECTOR (INPUT_VECTOR'left) ='0 'dengang - ( ve) input vektoren
ONE_INDEX: = ONE_FIRST_OCCURANCE (INPUT_VECTOR);
hvis ONE_INDEX = -1 derefter
Resultat: = (andre =>'0 ');
elsif ONE_INDEX <= TRUNCATION_SIZE-1 derefter
RESULTAT: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
anden
RESULTAT: = INPUT_VECTOR (ONE_INDEX 1 downto ONE_INDEX-TRUNCATION_SIZE 2);
udgangen, hvis;
elsif INPUT_VECTOR (INPUT_VECTOR'left) ='1 'dengang - (-ve) input vektoren
ZERO_INDEX: = ZERO_FIRST_OCCURANCE (INPUT_VECTOR);
hvis ZERO_INDEX = -1 derefter
Resultat: = (andre =>'1 ');
elsif ZERO_INDEX <= TRUNCATION_SIZE-1 derefter
RESULTAT: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
anden
RESULTAT: = INPUT_VECTOR (ZERO_INDEX 1 downto ZERO_INDEX-TRUNCATION_SIZE 2);
udgangen, hvis;
udgangen, hvis;
tilbagevenden RESULTAT;
udgangen, hvis;
udgangen TRUNCATE_EFFECTIVE;
-------------------------------------------------- --------------------------
Jeg konstrueret en VHDL-funktion, der returnerer et trunkeret-vektoren fra en effektiv vifte af en underskrevet vektor.Med andre ord, trunkering sker på den mindste størrelse vektor, der kan indeholde, der underskrev værdi uden dobbeltarbejde at tegnet bit.Her er funktionen:
Code:
-------------------------------------------------- --------------------------
- TRUNCATE_EFFECTIVE
-------------------------------------------------- --------------------------
funktion TRUNCATE_EFFECTIVE (INPUT_VECTOR: UNDERSKREVET; TRUNCATION_SIZE: POSITIV) hjemrejse UNDERSKREVET er
konstant NAS: UNDERSKREVET (1 downto 0): = (andre =>'0 ');
variable RESULTAT: UNDERSKREVET (TRUNCATION_SIZE-1 downto 0);
variable ZERO_INDEX: INTEGER;
variable ONE_INDEX: INTEGER;
begynd
if (INPUT_VECTOR'length <1) derefter
tilbagevenden NAS;
elsif INPUT_VECTOR'length = TRUNCATION_SIZE derefter
tilbagevenden INPUT_VECTOR;
elsif INPUT_VECTOR'length <TRUNCATION_SIZE derefter
RESULTAT: = resize (INPUT_VECTOR, TRUNCATION_SIZE);
tilbagevenden RESULTAT;
elsif INPUT_VECTOR'length> TRUNCATION_SIZE derefter
hvis INPUT_VECTOR (INPUT_VECTOR'left) ='0 'dengang - ( ve) input vektoren
ONE_INDEX: = ONE_FIRST_OCCURANCE (INPUT_VECTOR);
hvis ONE_INDEX = -1 derefter
Resultat: = (andre =>'0 ');
elsif ONE_INDEX <= TRUNCATION_SIZE-1 derefter
RESULTAT: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
anden
RESULTAT: = INPUT_VECTOR (ONE_INDEX 1 downto ONE_INDEX-TRUNCATION_SIZE 2);
udgangen, hvis;
elsif INPUT_VECTOR (INPUT_VECTOR'left) ='1 'dengang - (-ve) input vektoren
ZERO_INDEX: = ZERO_FIRST_OCCURANCE (INPUT_VECTOR);
hvis ZERO_INDEX = -1 derefter
Resultat: = (andre =>'1 ');
elsif ZERO_INDEX <= TRUNCATION_SIZE-1 derefter
RESULTAT: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
anden
RESULTAT: = INPUT_VECTOR (ZERO_INDEX 1 downto ZERO_INDEX-TRUNCATION_SIZE 2);
udgangen, hvis;
udgangen, hvis;
tilbagevenden RESULTAT;
udgangen, hvis;
udgangen TRUNCATE_EFFECTIVE;
-------------------------------------------------- --------------------------