第七章ⅦD中的量 重载:指同样名称的子程序或运算符可以用不同的数据类型作为它们的输入参数 而被定义多次;即当多个子程序或运算符具有同一名称的时候,该子程序 或运算符就会被重载。 ●重载的形式: (1)子程序重载 允许子程序使用不同数据类型的参数; (2)运算符重载載 允许对不同类型的数据进行相同的运算操作; ●重载的好处 (1)避免了为实际上进行同一操作的子程序或运算符必须生成无数个不同的 名字; (2)使得VHD程序易于维护、易于共享。 71子程序的重载 允许设计人员用同一个名字编写两个或多个子程序,但这些子程序的参数类型、 参数数目和返回值可能不同。 7.11参数类型的重载 指被重载的子程序参数类型不同
第七章 VHDL中的重载 ⚫重载:指同样名称的子程序或运算符可以用不同的数据类型作为它们的输入参数 而被定义多次;即当多个子程序或运算符具有同一名称的时候,该子程序 或运算符就会被重载。 ⚫重载的形式: (1)子程序重载 允许子程序使用不同数据类型的参数; (2)运算符重载 允许对不同类型的数据进行相同的运算操作; ⚫重载的好处 (1)避免了为实际上进行同一操作的子程序或运算符必须生成无数个不同的 名字; (2)使得VHDL程序易于维护、易于共享。 7.1 子程序的重载 允许设计人员用同一个名字编写两个或多个子程序,但这些子程序的参数类型、 参数数目和返回值可能不同。 7.1.1参数类型的重载 指被重载的子程序参数类型不同
例 exam nple程序包 library ieee use ieee std_logic_1164.al; package example is function max(i1 i2: std_logic_vector)return std_logic_vector; function max i1 i2: bit_vector return bit_vector; function max(i1, i2: integer)return integer; end example package body example is function max(i1 12: std_logic_vector) return std_logic_vector is variable tmp: std_logic_vector(il range) begin if i1>i2 then tmp: =il; else tmp endif retutn (tm end max
library ieee; use ieee.std_logic_1164.all; package example is function max(i1,i2:std_logic_vector) return std_logic_vector; function max(i1,i2:bit_vector) return bit_vector; function max(i1,i2:integer) return integer; end example; package body example is function max(i1,i2:std_logic_vector) return std_logic_vector is variable tmp:std_logic_vector(i1’range); begin if i1>i2 then tmp:=i1; else tmp:=i2; end if; return (tmp); end max; 例:example程序包
function max(i1, i2: bit-vector)return bit-vectoris variable tmp: bit-vector(i1 range) ifi>12 then tmp:=i1; else p: -l endif; return(tmp) end max function max( 11, i2 integer)retutn integer is vanable tmp:integer; ifi>i2 then else tmp:=12; d if: return(tmp); end max end example
function max(i1,i2:bit_vector) return bit_vector is variable tmp:bit_vector(i1’range); begin if i1>i2 then tmp:=i1; else tmp:=i2; end if; return (tmp); end max; function max(i1,i2:integer) return integer is variable tmp:integer; begin if i1>i2 then tmp:=i1; else tmp:=i2; end if; return (tmp); end max; end example;
重载函数调用举例 max value. vhdl library ieee; use ieee std_logic_1164.all; use work. example.all; entity max_value is port(a1, a2: in std _ logic_vector(7 downto 0); b1, b2: in bit_vector(7 downto O) cl, c2: ininteger; a: out std logic_vector(7 downto O): b: out bit-vector(7 downto 0 c: outinteger end max value architecture one of max value is a<=max(a1, a2); b<=max(b1, b2) <=max(c1,c2); end one:
重载函数调用举例(max_value.vhd): library ieee; use ieee.std_logic_1164.all; use work.example.all; entity max_value is port(a1,a2:in std_logic_vector(7 downto 0); b1,b2:in bit_vector (7 downto 0); c1,c2: in integer; a:out std_logic_vector(7 downto 0); b:out bit_vector( 7 downto 0); c:out integer; end max_value; architecture one of max_value is begin a<=max(a1,a2); b<=max(b1,b2); c<=max(c1,c2); end one;
●程序包调用的方法: (1)将程序包与实体文件合并于一个VHDL文件中,如 library ieee; use ieee std_logic_1164. all package example is end exampl des package body examples end max library ieee use ieee std _ logic_1164. all; use work. example. all; entity max-value 1s d architecture one of max value is end one
⚫程序包调用的方法: (1)将程序包与实体文件合并于一个VHDL文件中,如: library ieee; use ieee.std_logic_1164.all; package example is … end example; package body example is … end max; library ieee; use ieee.std_logic_1164.all; use work.example.all; entity max_value is … end max_value; architecture one of max_value is … end one;