Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library IEEE;
- USE IEEE.STD_LOGIC_1164.ALL;
- USE IEEE.NUMERIC_STD.ALL;
- USE IEEE.STD_LOGIC_UNSIGNED.ALL;
- ENTITY AbsValue IS
- PORT( In_num :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
- Hex3 :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
- Hex2 :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
- Hex1 :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
- Hex0 :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
- END AbsValue;
- ARCHITECTURE structure OF AbsValue IS
- SIGNAL s1,s2,s3, ABS_num :UNSIGNED(7 DOWNTO 0);
- SIGNAL num : UNSIGNED(7 DOWNTO 0);
- CONSTANT zero :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1000000";
- CONSTANT one :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111001";
- CONSTANT two :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0100100";
- CONSTANT three :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0110000";
- CONSTANT four :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0011001";
- CONSTANT five :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0010010";
- CONSTANT six :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000010";
- CONSTANT seven :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111000";
- CONSTANT eight :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000000";
- CONSTANT nine :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0010000";
- CONSTANT DASH :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0111111";
- CONSTANT EMPTY :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111111";
- BEGIN
- s1 <= ABS_num/100;
- s2 <= (ABS_num REM 100)/10;
- s3 <= ABS_num REM 10;
- num <= unsigned(In_num);
- PROCESS(num)
- BEGIN
- IF(num(7) = '1') THEN
- HEX3 <= DASH;
- ELSE
- HEX3 <= EMPTY;
- END IF;
- END PROCESS;
- PROCESS(num)
- BEGIN
- IF(num(7) = '1') THEN
- ABS_num <= NOT(num) + 1;
- ELSE
- ABS_num <= num;
- END IF;
- END PROCESS;
- PROCESS(s1)
- BEGIN
- CASE s1 IS
- WHEN "00000000" => Hex2 <= zero;
- WHEN "00000001" => Hex2 <= one;
- WHEN "00000010" => Hex2 <= two;
- WHEN "00000011" => Hex2 <= three;
- WHEN "00000100" => Hex2 <= four;
- WHEN "00000101" => Hex2 <= five;
- WHEN "00000110" => Hex2 <= six;
- WHEN "00000111" => Hex2 <= seven;
- WHEN "00001000" => Hex2 <= eight;
- WHEN "00001001" => Hex2 <= nine;
- WHEN "00111111" => Hex2 <= DASH;
- WHEN OTHERS => Hex2 <= EMPTY;
- END CASE;
- END PROCESS;
- PROCESS(s2)
- BEGIN
- CASE s2 IS
- WHEN "00000000" => Hex1 <= zero;
- WHEN "00000001" => Hex1 <= one;
- WHEN "00000010" => Hex1 <= two;
- WHEN "00000011" => Hex1 <= three;
- WHEN "00000100" => Hex1 <= four;
- WHEN "00000101" => Hex1 <= five;
- WHEN "00000110" => Hex1 <= six;
- WHEN "00000111" => Hex1 <= seven;
- WHEN "00001000" => Hex1 <= eight;
- WHEN "00001001" => Hex1 <= nine;
- WHEN "00111111" => Hex1 <= DASH;
- WHEN OTHERS => Hex1 <= EMPTY;
- END CASE;
- END PROCESS;
- PROCESS(s3)
- BEGIN
- CASE s3 IS
- WHEN "00000000" => Hex0 <= zero;
- WHEN "00000001" => Hex0 <= one;
- WHEN "00000010" => Hex0 <= two;
- WHEN "00000011" => Hex0 <= three;
- WHEN "00000100" => Hex0 <= four;
- WHEN "00000101" => Hex0 <= five;
- WHEN "00000110" => Hex0 <= six;
- WHEN "00000111" => Hex0 <= seven;
- WHEN "00001000" => Hex0 <= eight;
- WHEN "00001001" => Hex0 <= nine;
- WHEN "00111111" => Hex0 <= DASH;
- WHEN OTHERS => Hex0 <= EMPTY;
- END CASE;
- END PROCESS;
- END structure;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement