EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- c6 B$ d9 [2 H5 F8 E. X【Espier FPGA VHDL学习帖】第19帖 Procedure 1.语法学习
2 T$ O9 K( ?( J6 u2 B" U3 F; U/ d8 @ $ P0 `6 t: h1 @) b& ~6 j
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 ut 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版本自带的软件仿真,赶紧对于小程序仿真用起来好爽)
. D- Z# Y Y" ]
; O9 _5 a8 Y1 [! X( X Q! G) J |