




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.6 子程序,子程序由一组顺序语句组成,是为了在程序中重复使用而设立的。 在结构体中定义的子程序对于该结构体来说是局部的,即不能被其它设计层次的结构体调用。如果要在其它结构体中调用同一个子程序,就需要把子程序定义到程序包中。,VHDL中的子程序有两类: 过程(PROCEDURE):过程通过其接口返回0个或多个值。 函数(FUNCTION):函数直接返回单个值。 子程序包含两部分:即子程序声明和主体部分。 在程序包中声明子程序时,子程序声明必须要在程序包首中,子程序主体必须要在程序包体中。,一、函数的定义与引用,函数语句的作用是输入若干参数,通过函数运算求值,最后返回一个值。 函数语句的格式为: FUNCTION 函数名 (参数表) RETURN 数据类型; -函数首 FUNCTION 函数名 (参数表) RETURN 数据类型 IS -函数体 子程序声明部分; BEGIN 顺序语句; END 函数名;,函数首是程序包与函数的接口界面。如果要将一个函数组织成程序包入库,则必须定义函数首,且函数首应放在程序包的说明部分,而函数体应放在程序包的包体内。如果只在一个结构体中定义并调用函数,则只需定义函数体即可。 参数表中为参数名、参数类别及数据类型,函数的参数为信号或常数,默认情况为常数; 在RETURN后面的数据类型为函数返回值的类型; 子程序声明项用来说明函数体内引用的对象和过程; 顺序语句就是函数体,用来定义函数的功能。,LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY fun IS PORT (A: IN std_logic _Vector(0 TO 2); M : OUT std_logic _Vector(0 TO 2); END fun; ARCHITECTURE art OF fun IS FUNCTION sam (X,Y,Z: BIT) RETURN BIT IS BEGIN RETURN(X AND Y) OR Z; END sam;,函数应用实例,函数应用在结构体中,BEGIN PROCESS(A) BEGIN M(0)=sam(A(0), A(1), A(2); M(1)=sam(A(2), A(0), A(1); M(2)=sam(A(1), A(2), A(0); END PROCESS; END art;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE packexp IS -定义程序包 FUNCTION max( a,b : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR ; -定义函数首 - FUNCTION func1 ( a,b,c : REAL ) RETURN REAL ; -定义函数首 - FUNCTION “*“ ( a ,b : INTEGER ) RETURN INTEGER ; -定义函数首 - FUNCTION as2 (SIGNAL in1 ,in2 : REAL ) RETURN REAL ; -定义函数首 END ;,函数定义在程序包中,PACKAGE BODY packexp IS FUNCTION max( a,b : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS -定义函数体 BEGIN IF a b THEN RETURN a; ELSE RETURN b; END IF; END FUNCTION max; -结束FUNCTION语句 END; -结束PACKAGE BODY语句,LIBRARY IEEE; - 函数应用实例 USE IEEE.STD_LOGIC_1164.ALL; USE WORK.packexp.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN out1 = max(dat1,dat2); -用在赋值语句中的并行函数调用语句 PROCESS(dat3,dat4) BEGIN out2 = max(dat3,dat4); -顺序函数调用语句 END PROCESS; END;,二、过程的定义与引用,过程的作用是传递信息,即通过参数进行内外的信息传递。其中参数需说明(信号、变量及常量)类别、类型及传递方向。 过程定义的格式为: PROCEDURE 过程名 (参数声明) IS 子程序声明部分; BEGIN 顺序语句; END PROCEDURE 过程名 ; 其中:参数声明指明了输入、输出端口的数目和类型。参数声明的语法格式为:参数名:方式 方式参数类型有inoutinoutbuffer 等四种。,在PROCEDURE结构中,参数可以是输入也可以是输出。在没有特别指定的情况下,“IN”作为常数;而“OUT”和“INOUT”则看作“变量”进行拷贝。 在过程语句执行结束后,如没有特别说明,输出和输入输出参数将按变量对待将值传递给调用者的变量。如果调用者需要输出和输入输出作为信号使用,则在过程参数定义时要指明是信号。 例如:PROCEDURE shift (din: IN STD_LOGIC_VECTOR; SIGNAL dou: OUT STD_LOGIC_VECTOR; q: INOUT INTEGER) IS BEGIN . . . END shift;,LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY fun IS PORT (A: IN std_logic _Vector(0 TO 2); M : OUT std_logic _Vector(0 TO 2); END fun; ARCHITECTURE art1 OF fun IS PROCEDURE sam1 (X,Y,Z: IN BIT; N:OUT BIT) IS BEGIN N:=(X AND Y) OR Z; END sam1;,过程应用实例,BEGIN sam1(A(0), A(1), A(2), N(0); sam1(A(2), A(0), A(1), N(1); sam1(A(1), A(2), A(0), N(2); M(0)= N(0); -等效于:M= N(2),在PROCEDURE结构中,参数可以是输入也可以是输出。而FUNCTION语句中括号内的所有参数都是输入参数或输入信号,因此在括号内指明端口方向的“IN”可以省略。 FUNCTION的输入值由调用者拷贝到输入参数中,如果没有特别指定,在FUNCTION语句中按常数处理。 通常各种功能的FUNCTION语句的程序都被集中在包集合(Package)中。,3.7 VHDL的描述风格,行为描述方式 数据流描述方式(RTL描述方式) 结构化描述方式,VHDL语言是通过结构体具体描述整个设计实体的逻辑功能。,通常结构体有四种不同的描述方式:,VHDL通过这四种不同的描述方式从不同的侧面描述结构体的功能。前三种是最基本的描述方式,他们组合起来就成为混合描述方式。,行为描述方式(behavior) 数据流描述方式(dataflow)或寄存器RTL描述方式 结构化描述方式(structural) 混合描述方式。,全加器的输入输出关系,全加器框图,下面结合一个全加器来说明这四种描述风格,全加器的端口示意图如图所示,其输入输出关系如表所示。,一、 行为描述方式,行为描述输入与输出间转换的行为,不需包含任何结构信息,它对设计实体按算法的路径来描述。,行为级描述,也称为算法级描述,它不是对某一个器件的描述,而是对整个设计单元的数学模型描述,所以属于一种高层次描述方式。,例:基于全加器真值表采用行为描述方式设计的全加器(1位二进制数全加),LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY full_adder IS GENERIC(tpd : TIME := 10 ns); PORT(x,y,c_in : IN STD_LOGIC; Sum, c_out : OUT STD_LOGIC); END full_adder;,ARCHITECTURE behav OF full_adder IS BEGIN PROCESS (x, y, c_in) VARIABLE n: INTEGER; CONSTANT sum_vector: STD_LOGIC_VECTOR (0 TO 3) := “0101”; CONSTANT carry_vector: STD_LOGIC_VECTOR (0 TO 3) := “0011”;,BEGIN n := 0; IF x = 1 THEN n := n+1; END IF;,IF y = 1 THEN n:=n+1; END IF; IF c_in = 1 THEN n:=n+1; END IF; sum = sum_vector (n) AFTER 2*tpd; c_out = carry_vector (n) AFTER 3*tpd; END PROCESS; END behav;,对照真值表解释程序,(0 TO 3),sum_vector初值为“0101”,carry_vector初值为“0011”,(0 TO 3),输入 输出 c_in x y c_out sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1,行为级描述只描述设计电路的功能或电路的行为,而没有指明或实现这些行为的硬件结构;或者说行为级描述只表示输入输出之间的转换行为,它不包含任何结构信息。 行为级描述通常指顺序语句描述,即含有进程的非结构化的逻辑描述。 行为级描述的设计模型定义了系统的行为,通常由一个或多个进程构成,每一个进程又包含了一系列的顺序语句。,数据流描述也叫RTL的描述方式,采用寄存器硬件一一对应的直接描述,或者采用寄存器之间的功能描述。 RTL描述方式建立在并行信号赋值语句描述的基础上,描述数据流的运动路径、运动方向和运动结果。 RTL描述方式是真正可以进行逻辑综合的描述方式。 RTL描述方式既可描述时序电路,又可描述组合电路。,二、 数据流描述方式,对于全加器,用布尔方程描述其逻辑功能如下:,s = x XOR y sum = s XOR c_in c_out = (x AND y) OR( s AND c_in),输入 输出 c_in x y c_out sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1,例:采用数据流描述方式的全加器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY full_adder IS GENERIC(tpd : TIME := 10 ns); PORT(x,y,c_in : IN STD_LOGIC; Sum, c_out : OUT STD_LOGIC); END full_adder;,ARCHITECTURE dataflow OF full_adder IS BEGIN s = x XOR y AFTER tpd; sum = s XOR c_in AFTER tpd; c_out = (x AND y) OR( s AND c_in) AFTER 2* tpd; END dataflow;,Architecture dataflow1 of eqcomp4 is begin equal = 1 when a=b else 0; end dataflow1;,Architecture dataflow2 of eqcomp4 is begin equal = not(a(0) xor b(0) and not(a(1) xor b(1) and not(a(2) xor b(2) and not(a(3) xor b(3); end dataflow2;,当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐,描述输入信号经过怎样的变换得到输出信号,使用RTL描述方式应注意问题,PROCESS(sel) BEGIN IF(sel=1)THEN y=0; ELSE y=1; END IF; END PROCESS;,PROCESS(sel) BEGIN IF(sel=0)THEN y=1; ELSE y=0; END IF; END PROCESS;,当sel=X时,前一个输出的y值为1,后一个却变成了0。,(一) “X”状态的传递: 所谓“X”状态的传递,不确定信号的传递,它将使逻辑电路产生不确定的结果。“不确定状态”在RTL仿真时是允许出现的,但在逻辑综合后的门级电路仿真中是不允许出现的。,PROCESS(sel) BEGIN IF(sel=1)THEN y=0; ELSIF (sel=0)THEN y=1; ELSE y=X; END IF; END PROCESS;,(二)寄存器RTL描述的限制: 禁止在一个进程中存在两个边沿检测 的寄存器描述; 禁止使用IF语句中的 ELSE 项; 寄存器描述中必须代入信号值。,PROCESS(clk1,clk2) BEGIN IF (clk1 EVENT AND clk1=1) THEN y=a; END IF; IF (clk2 EVENT AND clk2=1) THEN z=b; END IF; END PROCESS;,在一个进程中不允许引入两个边沿检测的寄存器进行描述!,PROCESS(clk) BEGIN IF (clkEVENT AND clk=1) THEN y=a; ELSE - 禁止使用 y=b; END IF; END PROCESS;,PROCESS(clk) VARIABLE tmp: STD_LOGIC; BEGIN IF (clkEVENT AND clk= 1) THEN tmp:=a; END IF; y=tmp; END PROCESS;,禁止使用ELSE!,必须代入信号值!,不可能有这样的硬件电路与之对应!,结构化描述方式就是在多层次的设计中,高层次的设计可以调用低层次的设计模块,或直接用门电路设计单元来构成一个复杂逻辑电路的方法。利用结构化描述方法将已有的设计成果方便地用于新的设计中,能大大提高设计效率。在结构化描述中,建模的焦点是端口及其互连关系。,结构化描述的建模步骤如下:,(1)元件说明 (2)元件例化 (3)元件配置,元件说明用于描述局部接口,元件例化是要相对于其他元件来放置该元件,元件配置用于指定元件所用的设计实体,三、 结构描述方式,architecture struct of eqcomp4 is begin U0:xnor2 port map(a(0),b(0),x(0); U1:xnor2 port map(a(1),b(1),x(1); U2:xnor2 port map(a(2),b(2),x(2); U3:xnor2 port map(a(3),b(3),x(3); U4:and4 port map(x(0),x(1),x(2),x(3),equal); end struct;,类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一一对应的关系。 一般用于大规模电路的层次化设计时。,结构体结构描述方式,对于上图给出的全加器端口结构,可以认为它是由两个半加器和一个或门组成的 。,基于上图所示的结构,可以写出全加器的结构化描述设计程序如下。,例:全加器的结构化描述,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY half_adder IS GENERIC(tpd:TIME:=10 ns); PORT(in1, in2: IN STD_LOGIC; sum, carry: OUT STD_LOGIC); END half_adder;,ARCHITECTURE behavioral OF half_adder IS BEGIN PROSESS (in1, in2) BEGIN sum = in1 XOR in2 AFTER tpd; carry = in1 AND in2 AFTER tpd; END PROCESS; END behavioral;,半加器设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or_gate IS GENERIC(tpd:TIME:=10 ns); PORT(in1, in2: IN STD_LOGIC; out1: OUT STD_LOGIC); END or_gate; ARCHITECTURE structural OF or_gate IS BEGIN out1 = in1 OR in2 AFTER tpd; END structural;,或门设计,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY full_adder IS GENERIC(tpd:TIME:=10 ns); PORT(x,y,c_in: IN STD_LOGIC; Sum, c_out: OUT STD_LOGIC); END full_ad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作站搬迁施工方案
- 防晒膜施工方案怎么写
- 端午节营销策划方案案例
- 2025年运动医学学科运动损伤诊断与康复方案设计模拟考试卷答案及解析
- 2025年绿色建筑行业绿色设计与可持续建筑研究报告
- 2025年人工智能行业智能机器人市场趋势分析报告
- 2025年数字阅读行业数字出版与文学产业研究报告
- 2025年快消品行业品牌营销策略研究报告
- 2025年外贸行业国际贸易数字化转型研究报告
- 2025年跨境电商行业海外市场开拓与国际物流服务优化研究报告
- 《山东省房屋市政施工安全监督要点》及《安全监督“二十要”》2025
- 2025年湖南环境生物职业技术学院单招职业技能考试题库带答案
- 生物安全管理体系文件
- 河道疏浚外运施工方案
- 银行职业介绍课件
- 辽宁省盘锦市大洼区田家学校2024-2025学年九年级上学期第四次质量检测语文试卷
- 广东省惠州市联考2024-2025学年上学期12月教学质量阶段性诊断八年级数学试卷(无答案)
- 工程结算协议书
- 砖砌围墙施工方案
- 2024-2030年中国痘痘贴行业营销动态及消费需求预测研究报告
- 《人工智能导论》(第2版)高职全套教学课件
评论
0/150
提交评论