【Espier FPGA VHDL学习帖】第19帖 Procedure
1.语法学习
PS:
参数表中参量可以是变量、信号、常数(默认)
参数的方向可以是IN、OUT、INOUT
举例说明:
PROCEDURE pro1 (VARIABLE a, b : INOUT REAL) ;
PROCEDURE pro2 ( CONSTANT a1 : IN INTEGER
VARIABLEb1 : OUT INTEGER ) ;
PROCEDURE pro3 (SIGNAL sig : INOUT BIT) ;
过程 pro1 定义了两个实数双向变量a 和b 过程 pro2 定义了两个参量第一个是常数它的数据类型为整数流向模式是IN 第二个参量是变量信号模式和数据类型分别是OUT 和整数过程pro3 中只定义了一个信号参量即sig 它的流向模式是双向INOUT 数据类型是BIT 一般地可在参量表中定义三种流向模式即IN OUT和INOUT 如果只定义了IN 模式而未定义目标参量类型则默认为常量若只定义了INOUT 或OUT 则默认目标参量类型是变量
2.程序
library ieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entity swapis
port
(
data :in std_logic_vector(7 downto 0);
q :out std_logic_vector(7 downto 0)
);
end entity;
architecturertl of swap is
procedureswap1(a :inout std_logic_vector(7 downto0))is
variabletemph,templ :std_logic_vector(3 downto0);
begin
templ:=a(3 downto 0);
temph:=a(7 downto 4);
a:=templ&temph;
end swap1;
begin
process(data)
variable b:std_logic_vector(7 downto 0);
begin
b:=data;
swap1(b);
q<=b;
end process;
end rtl;
3.仿真波形(采用了QuartusII9.0版本自带的软件仿真,赶紧对于小程序仿真用起来好爽)