EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. F4 {4 z2 o. m4 L
【Espier FPGA VHDL学习帖】第19帖 Procedure 1.语法学习
. ^0 Q/ I4 r+ E( K 6 U! e' _2 L: m# l
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版本自带的软件仿真,赶紧对于小程序仿真用起来好爽) 4 V9 V, X) P. {3 q3 |# L
2 |# } g4 o8 ^4 x6 u$ E' T7 y |