📄 main_package.vhd
字号:
-- Purpose: This package defines supplemental types, subtypes,
-- constants, and functions
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package main_package is
--implements essentially a big OR across an std_logic_vector
function is_one_on(elements: std_logic_vector) return std_logic;
--converts a hex number to the led configuration needed for the
--seven segment display
function hex_to_led(hex: std_logic_vector(3 downto 0)) return std_logic_vector;
--converts a number on the seven segment display back to a hex (4 bit)
--digit if possible, or returns 0000
function led_to_hex(led: std_logic_vector(7 downto 0)) return std_logic_vector;
end main_package;
package body main_package is
function is_one_on(elements: std_logic_vector) return std_logic is
variable res: std_logic;
variable i: natural;
begin
res := '0';
for i in elements'low to elements'high loop
res := res or elements(i);
end loop;
return res;
end;
function hex_to_led(hex: std_logic_vector(3 downto 0)) return std_logic_vector is
begin
case hex is
when "0001" => return "10011111"; --1
when "0010" => return "00100101"; --2
when "0011" => return "00001101"; --3
when "0100" => return "10011001"; --4
when "0101" => return "01001001"; --5
when "0110" => return "01000001"; --6
when "0111" => return "00011111"; --7
when "1000" => return "00000001"; --8
when "1001" => return "00001001"; --9
when "1010" => return "00010001"; --A
when "1011" => return "11000001"; --b
when "1100" => return "01100011"; --C
when "1101" => return "10000101"; --d
when "1110" => return "01100001"; --E
when "1111" => return "01110001"; --F
when others =>
return "00000011"; --rest - 0
end case;
end;
function led_to_hex(led: std_logic_vector(7 downto 0)) return std_logic_vector is
begin
case led(7 downto 1) is
when "1001111" => return "0001";
when "0010010" => return "0010";
when "0000110" => return "0011";
when "1001100" => return "0100";
when "0100100" => return "0101";
when "0100000" => return "0110";
when "0001111" => return "0111";
when "0000000" => return "1000";
when "0000100" => return "1001";
when "0001000" => return "1010";
when "1100000" => return "1011";
when "0110001" => return "1100";
when "1000010" => return "1101";
when "0110000" => return "1110";
when "0111000" => return "1111";
when others =>
return "0000";
end case;
end;
end main_package;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -