📄 functions.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE WORK.TYPES.ALL;
-------------------
--函数声明
-------------------
PACKAGE FUNCTIONS IS
--算术左移
FUNCTION SHL( V0 : KEY_DATA ; fill : STD_LOGIC ) RETURN KEY_DATA;
FUNCTION PST(Par: BITS_8; Index:INTEGER ) RETURN STD_LOGIC;
--合并显示命令
FUNCTION Create_LCD_CMD(LCD_RS : STD_LOGIC; LCD_RW :STD_LOGIC; Data: KEY_DATA) RETURN LCD_CMD;
END ;
---------------------------------------------
-----函数实体描述--------
---------------------------------------------
PACKAGE BODY FUNCTIONS IS
--------------------------------------------------------------------------
FUNCTION PST(Par: BITS_8; Index:INTEGER ) RETURN STD_LOGIC IS
VARIABLE v1 :BITS_8;
VARIABLE return_val: STD_LOGIC;
BEGIN
v1:=Par;
CASE Index IS
WHEN 0 => return_val:=v1(7);--信号赋值滞后一个时钟周期
WHEN 1 => return_val:=v1(6);
WHEN 2 => return_val:=v1(5);
WHEN 3 => return_val:=v1(4);
WHEN 4 => return_val:=v1(3);
WHEN 5 => return_val:=v1(2);
WHEN 6 => return_val:=v1(1);
WHEN 7 => return_val:=v1(0);
WHEN OTHERS => return_val:='X';
END CASE;
RETURN return_val;
END PST;
------------------------------------------------------------------------
FUNCTION SHL( V0 : KEY_DATA ; fill :STD_LOGIC ) RETURN KEY_DATA IS
-- 左移
VARIABLE v1: KEY_DATA;
VARIABLE shift_val: KEY_DATA;
VARIABLE I: integer;
BEGIN
v1 := V0;
FOR I IN v1'high DOWNTO (v1'low + 1) LOOP
shift_val(I) := v1(I - 1);
END LOOP ;
shift_val(v1'low) := fill;
RETURN shift_val;
END SHL;
-----------------------------------------------------------------------------------------------------
FUNCTION Create_LCD_CMD(LCD_RS : STD_LOGIC; LCD_RW :STD_LOGIC; Data: KEY_DATA) RETURN LCD_CMD IS
VARIABLE command :LCD_CMD;
BEGIN
command:=LCD_RS & LCD_RW & Data;
RETURN command;
END Create_LCD_CMD;
----------------------------
END ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -