第5章 VHDL设计进阶

上传人:无*** 文档编号:243810784 上传时间:2024-09-30 格式:PPT 页数:67 大小:4.82MB
返回 下载 相关 举报
第5章 VHDL设计进阶_第1页
第1页 / 共67页
第5章 VHDL设计进阶_第2页
第2页 / 共67页
第5章 VHDL设计进阶_第3页
第3页 / 共67页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,EDA,技术实用教程,第,5,章,VHDL,设计进阶,图,3.2 VHDL,程序设计基本结构,复习:,5.1,数 据 对 象,5.1.1,常数,(CONSTANT),常数、变量、信号,常量代表数字电路中的电源、地、恒定逻辑值等常数;,常量数据类型必须与表达式的数据类型一致。,常量的可视性(作用范围):常量是全局量,其作用范围取决于常量被定义的位置。,库、程序包,实体(,Entity,),结构体(,1,),进程(,1,),结构体(,2,),进程(,2,),5.1,数 据 对 象,5.1.2,变量,(VARIABLE),变量代表暂存某些值的载体,常用于描述算法;变量是一个局部量,只能在进程和子程序中定义、使用。其作用范围仅限于定义了变量的进程和子程序中。,变量的初值可用于仿真,但综合时被忽略。,变量的赋值是一种理想化的数据传输,是立即发生,不存在任何延时的行为。,VHDL,语言规则不支持变量附加延时语句。变量常用在实现某种算法的赋值语句中。,5.1,数 据 对 象,5.1.2,变量,(VARIABLE),5.1,数 据 对 象,5.1.3,信号,(SIGNAL),信号代表物理设计中的某一硬件连接线,包括输入、输出端口。,信号初始值的设置不是必需的,而且初始值仅在,VHDL,的行为仿真中有效。,例:,signal,a,b:bit,;,signal,init:integer,:=-1;,signal s1:std_logic:=0;,signal s2:std_logic_vector(15,downto,0);,注,:(,1,)综合时初值被忽略;,(,2,)信号是全局量。可在结构体、实体、块中说明和使用信号。,(,3,)在进程和子程序中只能使用信号,不能说明信号。,5.1,数 据 对 象,5.1.3,信号,(SIGNAL),例:进程中信号与变量的使用,entity ex is,port(),end ex;,architecture,arch_ex,of ex is,signal,a,b:std_logic,;,begin,process(a,b,),variable,c,d:std_logic,;,begin,c:=,a+b,;,d:=a-b;,end process;,end,arch_ex,;,信号与端口的区别:,除没有方向说明外,信号与实体的“端口(,PORT,)”概念相似。端口是一种隐形的信号。,entity exam is,port(,signal,a,b:in,std_logic,;,signal,c:out,std_logic,),end exam;,端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。,信号本身无方向,可读可写。,赋值语句有两种,即信号赋值语句和变量赋值语句。,变量赋值与信号赋值的区别:,1,)赋值方式的不同:,变量:,=,表达式;,信号,=,表达式;,2,)硬件实现的功能不同,信号代表电路单元、功能模块间的互联,代表实际的硬件连线;,变量代表电路单元内部的操作,代表暂存的临时数据。,5.1,数 据 对 象,5.1.4,进程中的信号赋值与变量赋值,architecture,signal declarations,label1:process,variable declarations,label2:process,variable declarations,例:,3,)有效范围不同,信号:程序包、实体、结构体;全局量。,变量:进程、子程序,(,函数、过程,),;局部量。,4,)赋值行为的不同:,信号赋值延迟更新数值、时序电路。,变量赋值立即更新数值、组合电路。,5,)信号的多次赋值,a.,一个进程:最后一次赋值有效,b.,多个进程:,多源驱动,多源驱动只有线与、线或、三态三种情况可以综合成硬件电路,三态用的最多。,例:信号的多次赋值,architecture rt1 of ex is,signal,a:std_logic,;,begin,process(),begin,a=b;,a=c;,end process;,end rt1;,architecture rt1 of ex is,signal,a:std_logic,;,begin,process(),begin,a=b;,end process;,process(),begin,a=c;,end process;,end rt1;,例:信号赋值与变量赋值的比较,信号赋值:,architecture rt1 of sig is,signal,a,b:std_logic,;,-,定义信号,begin,process(a,b,),begin,a=b;,b=a;,end process;,end rt1;,-,结果是,a,和,b,的值互换,变量赋值:,architecture rt1 of,var,is,begin,process,variable,a,b:std_logic,;,-,定义变量,begin,a,:,=b;,b,:,=a;,end process;,end rt1;,-,结果是,a,和,b,的值都等于,b,的初值,process(indicator,sig,),variable,temp:std_logic,;,begin,temp:=0;,temp:=temp,xor,(sig(0) and indicator(0);,temp:=temp,xor,(sig(1) and indicator(1);,temp:=temp,xor,(sig(2) and indicator(2);,temp:=temp,xor,(sig(3) and indicator(3);,output=temp;,end process;,例:变量赋值实现循环语句功能,process(indicator,sig,),variable,temp:std_logic,;,begin,temp:=0;,for i in 0 to 3 loop,temp:=temp,xor,(,sig(i,) and,indicator(i,);,end loop;,output=temp;,end process;,以上语句等效为:,若改为信号,则无法实现原功能:,signal,temp:std_logic,;,process(indicator,sig,temp,),begin,temp=0;,temp=,temp,xor,(sig(0) and indicator(0);,temp=,temp,xor,(sig(1) and indicator(1);,temp=,temp,xor,(sig(2) and indicator(2);,temp=,temp,xor,(sig(3) and indicator(3);,output=temp;,end process;,5.1,数 据 对 象,5.1.4,进程中的信号赋值与变量赋值,只能放在进程内,放在进程内外均可,5.1,数 据 对 象,5.1.4,进程中的信号赋值与变量赋值,例,5-4,5.1,数 据 对 象,5.1.4,进程中的信号赋值与变量赋值,在同一进程中对一个信号进行赋值,只有最后一个执行,并且是在,end process,结束时才执行,所以,case,语句不能通过判断,muxval,的值来选通输入,5.2 VHDL,设计实例及其语法内涵,5.2.1,含同步,并行预置功能,的,8,位 移 位寄,存器设计,5.2 VHDL,设计实例及其语法内涵,5.2.1,含同步并行预置功能的,8,位移位寄存器设计,5.2 VHDL,设计实例及其语法内涵,5.2.2,移位模式可控的,8,位移位寄存器设计,接下页,5.2 VHDL,设计实例及其语法内涵,接上页,5.2 VHDL,设计实例及其语法内涵,5.2.2,移位模式可控的,8,位移位寄存器设计,5.2.3,位矢中,1,码个数统计电路设计,为什么不能定义为信号?,5.2 VHDL,设计实例及其语法内涵,5.2.3,位矢中,1,码个数统计电路设计,5.2 VHDL,设计实例及其语法内涵,5.2.3,位矢中,1,码个数统计电路设计,LOOP,语句的常用表达方式有两种:,(,1,)单个,LOOP,语句,VHDL,重复执行,loop,循环内的语句,直至遇到,exit,语句结束循环。,特点:,循环变量是,loop,内部自动声明的局部量,仅在,loop,内可见;不需要指定其变化方式。,循环次数范围(离散范围)必须是可计算的整数范围:,整数表达式,to,整数表达式,整数表达式,downto,整数表达式,(,2,),FOR_LOOP,语句,5.2 VHDL,设计实例及其语法内涵,5.2.3,位矢中,1,码个数统计电路设计,补充:,3,),whileloop,语句,例:,sum:=0;,i:=0;,abcd:while(i,10) loop,sum:=,sum+i,;,i:=i+1;,end loop,abcd,;,注:循环变量,i,需事先定义、赋初值,并指定其变化方式。一般综合工具不支持,whileloop,语句。,标号,:,while,循环条件,loop,顺序处理语句;,end loop,标号,;,5.2 VHDL,设计实例及其语法内涵,5.2.4,三态门设计,5.2 VHDL,设计实例及其语法内涵,5.2.5,双向端口的设计方法,5.2 VHDL,设计实例及其语法内涵,5.2.5,双向端口的设计方法,波形错误,5.2 VHDL,设计实例及其语法内涵,5.2.5,双向端口的设计方法,5.2 VHDL,设计实例及其语法内涵,5.2.5,双向端口的设计方法,5.2.6,三态总,线电路设计,8,位,4,通道的三态总线驱动器,5.2 VHDL,设计实例及其语法内涵,5.2.6,三态总线电路设计,5.2 VHDL,设计实例及其语法内涵,5.2.6,三态总线电路设计,5.2 VHDL,设计实例及其语法内涵,5.2.7,双边沿触发时序电路设计讨论,错误!,5.3,顺序语句归纳,5.3.1,进程语句格式,进程说明部分:,定义一些局部量,可包括数据类型、常数、变量、属性、子程序等,敏感信号参数表:,多数,VHDL,综合器要求敏感信号表必须列出本进程中所有输入信号名,5.3,顺序语句归纳,5.3.3,进程要点,1. PROCESS,为一无限循环语句,2.,进程中的顺序语句具有明显的顺序和并行双重性,5.3,顺序语句归纳,5.3.3,进程要点,3.,进程语句本身是并行语句,5.3,顺序语句归纳,5.3.3,进程要点,4.,信号可以是多个进程间的通信线,5.,一个进程中只允许描述对应于一个时钟信号的同步,时序逻辑,即信号可以把信息带出进程,而变量不可以,5.4,并行赋值语句讨论,5.5 IF,语句概述,5.5 IF,语句概述,5.5 IF,语句概述,5.6,半整数与奇数分频电路设计,5.6,半整数与奇数分频电路设计,接下页,5.6,半整数与奇数分频电路设计,接上页,5.6,半整数与奇数分频电路设计,5.7,仿 真 延 时,5.7.1,固有延时,5.7,仿 真 延 时,5.7.2,传输延时,5.7.3,仿真,5.8 VHDL,的,RTL,表述,5.8.1,行为描述,如果,VHDL,的结构体只描述了所希望电路的功能或者说电路行为,而没有直接指明或涉及实现这些行为的硬件结构,则称为行为描述。,行为描述是以算法形式对系统模型、功能的描述,与硬件结构无关。抽象程度最高。,5.8 VHDL,的,RTL,表述,5.8.1,行为描述,5.8 VHDL,的,RTL,表述,5.8.1,行为描述,以描述数据流的流向为特征,。,数据流描述主要使用并行的信号赋值语句,既显式表示了该设计单元的行为,又隐含了该设计单元的结构。,当语句中任一输入信号的值发生改变时,赋值语句就被激活,随着这种语句对电路行为的描述,大量的有关这种结构的信息也从这种逻辑描述中“流出”。认为数据是从一个设计中流出,从输入到输出的观点称为数据流风格。数据流描述方式能比较直观地表述底层逻辑行为。,5.8 VHDL,的,RTL,表述,5.8.2,数据流描述,一位全加器的数据流描述。,LIBRARY IEEE,;,USE IEEE.STD_LOGIC_1164.ALL,;,ENTITY ADDER1B IS,PORT(AIN,,,BIN,,,CIN,:,IN BIT,;,SUM,,,COUT,:,OUT BIT),;,END ENTITY ADDER1B,;,ARCHITECTURE ART OF ADDER1B IS,SUM= AIN XOR BIN XOR CIN,;,COUNTAIN,B=BIN,CO=D,SO=E);,U2:H_ADDER,PORT MAP,(A=E,B=CIN,CO=F,SO=SUM);,U3:OR2,PORT,MAP,(A=D,B=F,C=COUT);,END,ART;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!