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

第七章Ⅶ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
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第六章 VHDL中属性的描述及定义语句(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第五章 VHDL的库、程序包和配置(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第四章 VHDL的基本描述语句(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第四章 VHDL的基本描述语句(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第四章 VHDL的基本描述语句(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第三章 VHDL的基本元素(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第二章 VHDL的基本模型结构(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第十章 数字系统设计范例(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第八章 综合(Synthesis)(蔡喜平).ppt
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第一章 绪论(蔡喜平).ppt
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第9章 多态性.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第8章 多态性.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第7章 继承与派生.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第6章 类与对象.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第5章 数组与指针.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第4章 函数.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第3章 C++控制语句.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第2章 数据类型与表达式.ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第1章 C++与面向对象程序概述(主编:杨国兴、张东玲).ppsx
- 中国水利水电出版社:《C++语言程序设计》课程电子教案(PPT教学课件)第10章 输入输出流.ppsx
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》PDF电子书(共四章)(蔡喜平).pdf
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》第3章 VHDL 入门(蔡喜平).pdf
- 黑龙江大学物理科学与技术学院:《EDA教程——EDA技术及应用》VHDL语言详解(蔡喜平).pdf
- 《VISUAL C++程序设计基础》(PPT教学课件)第一章 软件设计概述.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第七章 动态内存分配.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第三章 结构化程序设计.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第九章 流类库和输入.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第二章 C++基础知识(课件).ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第五章 类与对象.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第八章 继承与多态.ppt
- 《VISUAL?C++程序设计基础》(PPT教学课件)第六章 指针与数组.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第十一章 标准模板库(STL).ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第十章 异常处理.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第四章 函数.ppt
- 《实用网络配置指南》参考书籍PDF电子书(初级篇).doc
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十章 指针.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十一章 结构体与共用体.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十二章 位运算.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十三章 文件.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十四章 常见错误和程序调试.ppt