当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第七章 VHDL中的重载(蔡喜平)

资源类别:文库,文档格式:PPT,文档页数:25,文件大小:179.5KB,团购合买
一、重载:指同样名称的子程序或运算符可以用不同的数据类型作为它们的输入参数而被定义多次;即当多个子程序或运算符具有同一名称的时候,该子程序或运算符就会被重载。
点击下载完整版文档(PPT)

第七章Ⅶ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;

(2建立工程( max value),在 assignments/etng/Fl中在 filename中选择添加 /./example. vhd 例:分频器 常用来对数字电路中的时钟信号分频,用以得到较低频率的时钟信号、选通信号 中断信号等。 ●偶数分频器 如果输入信号的频率为f,则分频器的输出信号为f/2n,n=1,2 分频系数为2的整数次幂的分频器 分频系数N=2n 如2分频(a=1)、4分频(n=2)、8分频(n=3) 可采用模为n的计数器实现如n=3 clk Q2 Q1 ↑↑↑↑个个↑ R00000000 S00000000 0 11111111 0 0 00110011 0

(2)建立工程(max_value),在assignments/setting/Files中在filename中选择添加 /../example.vhd. 例:分频器 常用来对数字电路中的时钟信号分频,用以得到较低频率的时钟信号、选通信号、 中断信号等。 ⚫偶数分频器 如果输入信号的频率为f,则分频器的输出信号为f/2n, n=1,2,… ➢分频系数为2的整数次幂的分频器 分频系数N=2n 如2分频(n=1)、4分频(n=2)、8分频(n=3) 可采用模为n的计数器实现,如n=3 clk R S EN Q2 Q1 Q0 ↑ 0 0 1 0 0 0 ↑ 0 0 1 0 0 1 ↑ 0 0 1 0 1 0 ↑ 0 0 1 0 1 1 ↑ 0 0 1 1 0 0 ↑ 0 0 1 1 0 1 ↑ 0 0 1 1 1 0 ↑ 0 0 1 1 1 1

counter lk-时钟 di2-2分频输出端 cIk div 2 di4-4分频输出端 diva div8-8分频输出端 div rary1eee 分频系数是2的整数次幂分频器的电路符号 use ieee std_logic_1164. all; use ieee std _logic_unsigned.all; entity counter 1s port(clk:in std_logic; div2 out std _logic;-2分频输出 div4 outsid logic;-41分频输出 div8: out std _logic);-:8分频输出 end counters architecture one of counter 1s signalcnt std _logic_vector(2 downto 0) B egin process(clk) if clk event and clk= hen +1; end if nd pr en rocess div 2<=cnt t(1);di8<=cnt(2; end one:

分频系数是2的整数次幂分频器的电路符号 counter clk div2 clk –时钟 div2 – 2分频输出端 div4- 4分频输出端 div4 div8 div8- 8分频输出端 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is port(clk:in std_logic; div2:out std_logic; --2分频输出 div4:out std_logic; --4分频输出 div8:out std_logic); --8分频输出 end counter; architecture one of counter is signal cnt: std_logic_vector(2 downto 0); Begin process (clk) begin if clk’event and clk=‘1’ then cnt<=cnt+1; end if; end process; div2<=cnt(0);div4<=cnt(1);div8<=cnt(2); end one;

分频系数不是2的整数次幂的分频器 例:12分频器 cnt12 clk div 12 clkx-时钟 div12-12分频输出端 分频系数为12的分频器的电路符号 raryleees use ieeestd logic_1164.all; use ieee std _logicunsigned. all; entity cnt12is port(clk:in std_logic; div12 out std _ log;-12分频输出 end cnt12

➢分频系数不是2的整数次幂的分频器 例:12分频器 分频系数为12的分频器的电路符号 clk div12 clk –时钟 div12 – 12分频输出端 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt12 is port(clk:in std_logic; div12:out std_logic); --12分频输出 end cnt12; cnt12

architecture one of cnt12 is signal cnt std _ logic_vector(2 downto O); signalclk_tmp: std_logic constant m: Integer:=5;-控制计数器的常量m=n/2-1 gin p b if clk event and clk=·1′then if cnt=m then clk notc cnt<=“000 else nt+1: end if: end if: d process div 12<=clk_tm

architecture one of cnt12 is signal cnt: std_logic_vector(2 downto 0); signal clk_tmp: std_logic; constant m:integer:=5; --控制计数器的常量m=n/2-1 begin process (clk) begin if clk’event and clk=‘1’ then if cnt=m then clk_tmp<= not clk_tmp; cnt<=“000”; else cnt<=cnt+1; end if; end if; end process; div12<=clk_tmp; end one;

占空比不是1:1的偶数分频器 如:分频系数为6、占空比为1:5的偶数分频器 cnt clk div6 clkx-时钟 div6-6分频输出端 分频系数为6的分频器的电路符号 library ieee use ieee std logic_1164.all; use ieee std _logic_unsigned. all; entity cnto 1S port(clk:in std_ logic; div6: out std logic);-6分频输出 end cnto

➢占空比不是1:1的偶数分频器 如:分频系数为6、占空比为1:5的偶数分频器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt6 is port(clk:in std_logic; div6:out std_logic); --6分频输出 end cnt6; 分频系数为6的分频器的电路符号 clk div6 clk –时钟 div6 – 6分频输出端 cnt6

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共25页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有