O
omara007
Guest
Hi guys ..
Saya merancang VHDL kembali sebuah fungsi yang dipotong-vector efektif dari berbagai menandatangani sebuah vector.Dengan kata lain, pemotongan dilakukan pada ukuran terkecil vector yang dapat berisi nilai yang menandatangani tanpa duplikasi ke tanda sedikit.Berikut adalah fungsi:
Kode:
-------------------------------------------------- --------------------------
- TRUNCATE_EFFECTIVE
-------------------------------------------------- --------------------------
fungsi TRUNCATE_EFFECTIVE (INPUT_VECTOR: Signed; TRUNCATION_SIZE: positif) kembali menandatangani adalah
konstan Nas: Signed (1 downto 0): = (others =>'0 ');
HASIL variabel: Signed (TRUNCATION_SIZE-1 downto 0);
variabel ZERO_INDEX: integer;
variabel ONE_INDEX: integer;
mulai
if (INPUT_VECTOR'length <1) maka
kembali Nas;
elsif INPUT_VECTOR'length = TRUNCATION_SIZE kemudian
kembali INPUT_VECTOR;
elsif INPUT_VECTOR'length <TRUNCATION_SIZE kemudian
HASIL: = RUBAH UKURAN (INPUT_VECTOR, TRUNCATION_SIZE);
HASIL kembali;
elsif INPUT_VECTOR'length> TRUNCATION_SIZE kemudian
jika INPUT_VECTOR (INPUT_VECTOR'left) ='0 'maka - ( ve) input vector
ONE_INDEX: = ONE_FIRST_OCCURANCE (INPUT_VECTOR);
jika ONE_INDEX = -1 maka
HASIL: = (others =>'0 ');
elsif ONE_INDEX <= TRUNCATION_SIZE-1 kemudian
HASIL: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
lain
HASIL: = INPUT_VECTOR (ONE_INDEX 1 downto ONE_INDEX-TRUNCATION_SIZE 2);
end if;
elsif INPUT_VECTOR (INPUT_VECTOR'left) ='1 'maka - (-ve) input vector
ZERO_INDEX: = ZERO_FIRST_OCCURANCE (INPUT_VECTOR);
jika ZERO_INDEX = -1 maka
HASIL: = (others =>'1 ');
elsif ZERO_INDEX <= TRUNCATION_SIZE-1 kemudian
HASIL: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
lain
HASIL: = INPUT_VECTOR (ZERO_INDEX 1 downto ZERO_INDEX-TRUNCATION_SIZE 2);
end if;
end if;
HASIL kembali;
end if;
akhir TRUNCATE_EFFECTIVE;
-------------------------------------------------- --------------------------
Saya merancang VHDL kembali sebuah fungsi yang dipotong-vector efektif dari berbagai menandatangani sebuah vector.Dengan kata lain, pemotongan dilakukan pada ukuran terkecil vector yang dapat berisi nilai yang menandatangani tanpa duplikasi ke tanda sedikit.Berikut adalah fungsi:
Kode:
-------------------------------------------------- --------------------------
- TRUNCATE_EFFECTIVE
-------------------------------------------------- --------------------------
fungsi TRUNCATE_EFFECTIVE (INPUT_VECTOR: Signed; TRUNCATION_SIZE: positif) kembali menandatangani adalah
konstan Nas: Signed (1 downto 0): = (others =>'0 ');
HASIL variabel: Signed (TRUNCATION_SIZE-1 downto 0);
variabel ZERO_INDEX: integer;
variabel ONE_INDEX: integer;
mulai
if (INPUT_VECTOR'length <1) maka
kembali Nas;
elsif INPUT_VECTOR'length = TRUNCATION_SIZE kemudian
kembali INPUT_VECTOR;
elsif INPUT_VECTOR'length <TRUNCATION_SIZE kemudian
HASIL: = RUBAH UKURAN (INPUT_VECTOR, TRUNCATION_SIZE);
HASIL kembali;
elsif INPUT_VECTOR'length> TRUNCATION_SIZE kemudian
jika INPUT_VECTOR (INPUT_VECTOR'left) ='0 'maka - ( ve) input vector
ONE_INDEX: = ONE_FIRST_OCCURANCE (INPUT_VECTOR);
jika ONE_INDEX = -1 maka
HASIL: = (others =>'0 ');
elsif ONE_INDEX <= TRUNCATION_SIZE-1 kemudian
HASIL: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
lain
HASIL: = INPUT_VECTOR (ONE_INDEX 1 downto ONE_INDEX-TRUNCATION_SIZE 2);
end if;
elsif INPUT_VECTOR (INPUT_VECTOR'left) ='1 'maka - (-ve) input vector
ZERO_INDEX: = ZERO_FIRST_OCCURANCE (INPUT_VECTOR);
jika ZERO_INDEX = -1 maka
HASIL: = (others =>'1 ');
elsif ZERO_INDEX <= TRUNCATION_SIZE-1 kemudian
HASIL: = INPUT_VECTOR (TRUNCATION_SIZE-1 downto 0);
lain
HASIL: = INPUT_VECTOR (ZERO_INDEX 1 downto ZERO_INDEX-TRUNCATION_SIZE 2);
end if;
end if;
HASIL kembali;
end if;
akhir TRUNCATE_EFFECTIVE;
-------------------------------------------------- --------------------------