VHDL语言教程实用教案

上传人:深*** 文档编号:122466115 上传时间:2022-07-20 格式:PPTX 页数:113 大小:3.03MB
收藏 版权申诉 举报 下载
VHDL语言教程实用教案_第1页
第1页 / 共113页
VHDL语言教程实用教案_第2页
第2页 / 共113页
VHDL语言教程实用教案_第3页
第3页 / 共113页
资源描述:

《VHDL语言教程实用教案》由会员分享,可在线阅读,更多相关《VHDL语言教程实用教案(113页珍藏版)》请在装配图网上搜索。

1、会计学1VHDL语言语言(yyn)教程教程第一页,共113页。HDL-Hardware Description Language 一种用于描述数字电路的功能(gngnng)或行为的语言。目的是提为电路设计效率,缩短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。常用(chn yn)的HDL语言:VHDL、Verilog HDL 第1页/共112页第二页,共113页。VHDL是美国国防部在20世纪80年代初为实现(shxin)其高速集成电路硬件VHSIC计划提出的描述语言;IEEE从1986年开始致力于VHDL标准化工作,融合了其它ASIC芯片制造商开发的硬件描述语言的优点,于9

2、3年形成了标准版本(IEEE.std_1164)。1995年,我国国家技术监督局推荐VHDL做为电子设计自动化硬件描述语言的国家标准。VHDL 概述(i sh):VHDL VHSIC Hardwarter Description Language Very High speed integrated circuitVHSIC第2页/共112页第三页,共113页。覆盖面广,系统硬件描述(mio sh)能力强,是一个多层次的硬件描述(mio sh)语言;VHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解;VHDL语言可以与工艺无关编程;VHDL语言已做为一种IEEE的工业标准,便

3、于使用、交流和推广。VHDL语言的不足之处:设计(shj)的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。第3页/共112页第四页,共113页。标识符(Identifiers)要求:首字符必须是字母 末字符不能为下划线 不允许出现(chxin)两个连续的下划线 不区分大小写 VHDL定义的保留字(关键字),不能用作标识符 标识符字符最长可以是32个字符。注释由两个连续的虚线(xxin)()引导。3.1 VHDL语言(yyn)基础 标识符用来定义常数、变量、信号、端口、子程序或参数的名字,由字母(AZ,az)、数字(09)和下划线(_)字符组成。第4页/共112页第五页,共

4、113页。例如(lr):ABS,ACCESS,AFTER,ALL,AND,ARCHITECTURE,ARRAY,ATTRIBUTE,BEGIN,BODY,BUFFER,BUS,CASE,COMPONENT,CONSTANT,DISCONNECT,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,FILE,FOR,FUNCTION,GENERIC,GROUP,IF,INPURE,IN,INOUT,IS,LABEL,LIBRARY,LINKAGE,LOOP,MAP,MOD,NAND,NEW,NEXT,NOR,NOT,NULL,OF,ON,OPEN,OR,OTHERS,OUT,PA

5、CKAGE,POUT,PROCEDURE,PROCESS,PURE,RANGE,RECODE,REM,REPORT,RETURN,ROL,ROR,SELECT,SHARED,SIGNAL,SLA,SLL,SRA,SUBTYPE,THEN,TRANSPORT,TO,TYPE,UNAFFECTED,UNITS,UNTIL,USE,VARIABLE,WAIT,WHEN,WHILE,WITH,XOR,XNOR 关键字(保留字):关键字(keyword)是VHDL中具有特别含义的单词,只能(zh nn)做为固定的用途,用户不能用其做为标识符。第5页/共112页第六页,共113页。数据(shj)对象(Da

6、te Objects)常量(chngling)ConstantConstant bus_width:integer:=8;-定义总线宽度(kund)为常数8 数据对象包括常量、变量、信号和文件四种类型。常量是对某一常量名赋予一个固定的值,而且只能赋值一次。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。Constant 常数名:数据类型:表达式Constant Vcc:real:=5.0;-定义Vcc的数据类型是实数,赋值为5.0V常量所赋的值应和定义的数据类型一致;常量在程序包、实体、构造体或进程的说明性区域内必须加以说明。定义在程序包内的常量可供所含的任何实体、构造体所引用,定

7、义在实体说明内的常量只能在该实体内可见,定义在进程说明性区域中的常量只能在该进程内可见。第6页/共112页第七页,共113页。Variable 变量名:数据类型 :初始值;Variable count:integer 0 to 255:=20;-定义count整数变量,变化(binhu)范围0255,初始值为20。变量(binling)Variable 变量只能在进程语句、函数语句和过程语句结构中使用。变量的赋值是直接的,非预设的,分配给变量的值立即成为当前值,变量不能表达“连线”或存储元件,不能设置(shzh)传输延迟量。变量赋值语句:目标变量名 :=表达式;变量定义语句:x:=10.0;-

8、实数变量赋值为10.0Y:=1.5+x;-运算表达式赋值,注意表达式必须与目标变量的数据类型相同A(3 to 6):=(“1101”);-位矢量赋值第7页/共112页第八页,共113页。Signal 信号(xnho)名:数据类型:初始值Signal clock:bit:=;-定义时钟(shzhng)信号类型,初始值为0 信号(xnho)Signal 信号表示逻辑门的输入或输出,类似于连接线,也可以表达存储元件的状态。信号通常在构造体、程序包和实体中说明。信号定义语句:Signal count:BIT_VECTOR(3 DOWNTO 0);-定义count为4位位矢量信号赋值语句:目标信号名 =

9、表达式;x=9;Z=x after 5 ns;-在5ns后将x的值赋予z第8页/共112页第九页,共113页。数据类型l 布尔:(Boolean)l 位:(Bit)TYPE BIT IS(0,1);-取值为0和1,用于逻辑运算 l 位矢量(shling):(Bit_Vector)l TYPE BIT_VECTOR IS ARRAY(Natural range)OF BIT;-基于Bit类型的数l 组,用于逻辑运算 l SIGNAL a:Bit_Vector(0 TO 7);SIGNAL a:Bit_Vector(7 DOWNTO 0)VHDL的预定(ydng)义数据类型 在VHDL标准程序包S

10、TANDARD中定义好,实际使用(shyng)过程中,已自动包含进VHDL源文件中,不需要通过USE语句显式调用。TYPE BOOLEAN IS(FALSE,TRUE);-取值为FALSE和TRUE,不是数值,不 能运算,一般用于关系运算符第9页/共112页第十页,共113页。l 整数:(Integer)l 取值范围 -(231-1)(231-1),可用32位有符号的二进制数表示l variable a:integer range-63 to 63l 在实际应用中,VHDL仿真器将Integer做为有符号数处理,而VHDL综合器将Integer做为无符号数处理;l 要求用RANGE子句(z j

11、)为所定义的数限定范围,以便根据范围来决定表示此信号或变量的二进制数的位数。l 字符(z f):(Character)l TYPE CHARACTER IS(NUL,SOH,STX,!,);-通常用引起 l 来,区分大小写;l 字符串:(String)lVARIABLE string_var:STRING(1 TO 7);lstring_var:=“A B C D”;-通常用“”引起(ynq)来,区分大小写;第10页/共112页第十一页,共113页。l 实数(shsh):(Real)l 取值范围 -1.0E38+1.0E38,仅用于仿真不可综合l 1.0 -十进制浮点数l 843.6e+4 -

12、八进制浮点数l 43.6E-4 -十进制浮点数l 时间:(Time)l 物理量数据,完整的包括整数和单位两个部分,用至少一个(y)空格隔开,仅用于仿真不可综合;l fs,ps,ns,us,ms,sec,min,hrl 错误等级(dngj)(Severity Level):l 表示系统状态,仅用于仿真不可综合;lTYPE severity_level IS(NOTE、WARNING、ERROR、FAILURE);第11页/共112页第十二页,共113页。l 标准(biozhn)逻辑位(Std_Logic)l 标准(biozhn)逻辑位矢量(Std_Logic_vector)基于Std_Logic

13、类型的数组;使用Std_Logic和 Std_Logic_Vector要调用IEEE库中的Std_Logic_1164 程序包;就综合而言,能够在数字器件中实现的是“、0、1、Z”四种状态。在条件语句中,必须要全面考虑Std_Logic的所有可能取值情况,否则综合器可能会插入不希望的锁存器。U:Uninitialized;X:Forcing Unkown;0:Forcing 0 1:Forcing 1 Z:High Impedance W:Weak UnknownL:Weak 0 H:Weak 1 :Dont care第12页/共112页第十三页,共113页。枚举(mi j):type sta

14、tes is(idle,decision,read,write);type boolean is(false,true);type bit is(0,1);数组:type value_type is array(127 downto 0)of integer;type matrix_type is array(0 to 15,0 to 31)of std_logic;用户(yngh)自定义l TYPE 数据类型名 IS 数据类型定义(dngy)OF 基本数据类型l 或 TYPE 数据类型名 IS 数据类型定义(dngy)l SUBTYPE 子类型名 IS 基本数据类型定义 RANGE 约束范围

15、subtype digit is integer range 0 to 9;第13页/共112页第十四页,共113页。数据(shj)类型转换VHDL为强定义类型语言,不同(b tn)类型的数据不能进行运算和直接赋值。l 类型(lixng)标记法Variable A:integer;Variable B:real;A=integer(B);B=real(A);l 函数法Conv_interger(A);-由std_logic转换为integer型,在std_logic_unsigned包。l 常数转换法/常量转换法Type conv_table is array(std_logic)of bit

16、;Constant table:conv_table:=(0|L=0,1|H=1,others=0);Signal a:bit;signal b:std_logic;A=table(b);-将std_logic型转换为bit型具有转换表性质的常数第14页/共112页第十五页,共113页。在“STD_LOGIC_1164”、“STD_LOGIC_ARITH”和 “STD_LOGIC_UNSIGNED”的程序包中提供(tgng)的数据类型变换函数。第15页/共112页第十六页,共113页。属性提供的是关于信号、类型等的指定(zhdng)特性。event:若属性对象有事件发生(fshng),则生成布

17、尔值“true”,常用来检查时钟边沿是否有效。上升沿:Clock EVENT AND Clock=1 range:生成一个限制性数组对象的范围left:生成数据类型或数据子类型的左边界值;right,high,low,lengthrange:“0 to n”;reverse_range:“n downto 0”第16页/共112页第十七页,共113页。l 算术(sunsh)运算符:,*,/,MOD,REM,SLL,SRL,SLA,SRA,ROL,ROR,*,ABSl 关系(gun x)运算符:,/,=l 逻辑(lu j)运算符:AND,OR,NAND,NOR,XNOR,NOT,XORl 赋值运

18、算符:l 其他运算符:,&第17页/共112页第十八页,共113页。并置操作符 SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a =10d(1)1 ;-元素与元素并置,并置后的数组长度(chngd)为4.IF a d=101011 THEN.-在IF条件句中可以使用并置符 第18页/共112页第十九页,共113页。运算符优先(yuxin)级别逻辑(lu j)、算术运算符(NOT,*,ABS)乘法(chngf)运算符(/,MOD,REM,*)正负运算符:,加减、并置运算符:,&关系运算符:

19、,/,=逻辑运算符:AND,OR,NAND,NOR,XNOR,NOT,XOR第19页/共112页第二十页,共113页。移位运算符的左边为一维数组,其类型必须是BIT或BOOLEAN,右边(yu bian)必须是整数移位次数为整数的绝对值。移位(y wi)运算符操作示意图“1100”SLL1=“1000”“1100”SRL1=“0110”“1100”SLA1=“1000”“1100”SRA1=“1110”“1100”ROL1=“1001”“1100”ROR1=“0110”SLL:将位向量(xingling)左移,右边移空位补零;SRL:将位向量(xingling)右移,左边移空位补零;SLA:将

20、位向量(xingling)左移,右边第一位的数值保持原值不变;SRA:将位向量(xingling)右移,左边第一位的数值保持原值不变;ROL和ROR:自循环左右移位。第20页/共112页第二十一页,共113页。取余运算(a REM b)的符号与a相同(xin tn),其绝对值小于b的绝对值。例如:(-5)REM 2=(-1)5 REM 2=(1)取模运算(yn sun)(a MOD b)的符号与b相同,其绝对值小于b的绝对值。例如:(-5)MOD 2=1 5 MOD(-2)=(-1)第21页/共112页第二十二页,共113页。实体(Entity):描述所设计的系统的外部(wib)接口信号,定义

21、电路设计中所有的输入和输出端口;结构体(Architecture):描述系统内部的结构和行为;包集合(Package):存放各设计模块能共享的数据类型、常数和子程序等;配置(Configuration):指定实体所对应的结构体;库(Library):存放已经编译的实体、结构体、包集合和配置。第22页/共112页第二十三页,共113页。LIBRARY IEEE;-库、程序包的说明调用 ENTITY FreDevider IS -实体声明(shngmng)PORT(Clock:IN Std_logic;Clkout:OUT Std_logic);END;ARCHITECTURE Behavior

22、OF FreDevider IS -结构体定义SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock)THEN Clk=NOT Clk;END IF;END PROCESS;Clkout=Clk;END;VHDL的基本设计单元(dnyun)结构:程序包说明、实体说明和结构体说明三部分。第23页/共112页第二十四页,共113页。ENTITY 实体(sht)名 IS GENERIC(常数名:数据类型:设定值)PORT(端口名1:端口方向 端口类型;端口名2:端口方向 端口类型;.端口名n:端口方向 端口类型);END

23、 实体(sht)名;实体(sht)描述了设计单元的输入输出接口信号或引脚,是设计实体(sht)经封装后对外的一个通信界面。第24页/共112页第二十五页,共113页。ENTITY FreDevider ISPORT(Clock:IN Std_logic;Clokout:OUT Std_logic);END;实体(sht)名最后一条端口声明语句(yj)无分号端口方向(fngxing)端口类型端口名 实体名由设计者自由命名,用来表示被设计电路芯片的名称,但是必须与VHDL程序的文件名称相同。要与文件名一致;第25页/共112页第二十六页,共113页。例如:GENERIC(wide:integer:

24、=32);-说明(shumng)宽度为32 GENERIC(tmp:integer:=1ns);-说明(shumng)延时1 ns 类属说明(shumng)类属为设计实体(sht)与外界通信的静态信息提供通道,用来规定端口的大小、实体(sht)中子元件的数目和实体(sht)的定时特性等。格式:GENERIC(常数名:数据类型:设定值;常数名:数据类型:设定值);第26页/共112页第二十七页,共113页。端口方向(fngxing):IN,OUT,INOUT,BUFFERINOUTINOUTBUFFER“OUT”和“BUFFER”都可定义输出(shch)端口;若实体内部(nib)需要反馈输出信号

25、,则输出端口必须被设置为“BUFFER”,而不能为“OUT”。第27页/共112页第二十八页,共113页。同方向、同类型的端口可放在同一个说明(shumng)语句中。ENTITY Full_adder IS PORT(a,b,c:IN BIT;sum,carry:OUT BIT );END Full_adder;第28页/共112页第二十九页,共113页。ARCHITECTURE 结构体名 OF 实体名 IS 声明(shngmng)语句BEGIN 功能描述语句END 结构体名;用于声明该结构体将用到的信号、数据类型、常数、子程序和元件(yunjin)等。声明的内容是局部的。具体描述结构体的功能

26、和行为。结构体定义了设计单元具体的功能,描述了该基本设计单元的行为、元件和内部的连接关系。一个实体可对应多个结构体,每个结构体代表该实体功能的不同实现方案或不同实现方式。同一时刻只有一个结构体起作用,通过CONFIGURATION决定用哪个结构体进行仿真或综合。在结构体描述中,具体给出了输入、输出信号之间的逻辑关系。第29页/共112页第三十页,共113页。ARCHITECTURE Behavior OF FreDevider IS -结构(jigu)体定义SIGNAL Clk:Std_Logic;-信号声明BEGIN PROCESS(Clock)BEGIN IF rising_edge(Cl

27、ock)THEN Clk=NOT Clk;END IF;END PROCESS;Clkout=Clk;END;功能描述语句进程顺序语句第30页/共112页第三十一页,共113页。LIBRARY 库名;USE 库名.程序包名.项目(xingm)名;调用(dioyng)此程序包中所有的资源LIBRARY IEEE;;第31页/共112页第三十二页,共113页。并行(bngxng)语句在结构体中的执行是同时(tngsh)进行,执行顺序与书写顺序无关。第32页/共112页第三十三页,共113页。l 简单(jindn)赋值语句目标(mbio)信号名=表达式目标信号的数据类型与右边表达式一致ARCHITE

28、CTURE Behavior OF FreDevider IS SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock)BEGIN IF rising_edge(Clock)THEN Clk=NOT Clk;END IF;END PROCESS;Clkout=Clk;第33页/共112页第三十四页,共113页。l 选择信号(xnho)赋值语句WITH 选择(xunz)表达式 SELECT赋值目标信号=表达式1 WHEN 选择(xunz)值1,表达式2 WHEN 选择(xunz)值1,表达式n WHEN OTHERS;选择值要覆盖所有(suyu)可能情况,若不能一一指定

29、,用OTHERS为其他情况找个出口;选择值必须互斥,不能出现条件重复或重叠的情况。第34页/共112页第三十五页,共113页。LIBRARY IEEE;ENTITY MUX ISPORT(Data0,Data1,Data2,Data3:IN Std_Logic_VECTOR(7 DOWNTO 0);Sel:IN Std_Logic_Vector(1 DOWNTO 0);DOUT:OUT Std_Logic_Vector(7 DOWNTO 0);END;ARCHITECTURE DataFlow OF MUX ISBEGIN WITH Sel SELECT DOUT=Data0 WHEN“00”

30、,Data1 WHEN“01”,Data2 WHEN“10”,Data3 WHEN“11”,“00000000”WHEN OTHERS;END;地址选线地址选线Sel输出输出DOUT00Data001Data110Data211Data34X1多路选择器第35页/共112页第三十六页,共113页。第36页/共112页第三十七页,共113页。赋值目标(mbio)信号=表达式1 WHEN 赋值条件1 ELSE 表达式2 WHEN 赋值条件2 ELSE 表达式n WHEN 赋值条件n ELSE 表达式;各赋值语句有优先级的差别,按书写(shxi)顺序从高到低排列;各赋值条件可以重叠。第37页/共11

31、2页第三十八页,共113页。8输入优先编码器I7I6I5 A2I4 A1I3 A0 I2I1I0高低优先级LIBRARY IEEE;ENTITY Priority_Encoder ISPORT(I:IN Std_Logic_VECTOR(7 DOWNTO 0);A:OUT Std_Logic_Vector(2 DOWNTO 0);END;ARCHITECTURE DataFlow OF Priority_Encoder ISBEGIN A=“111”WHEN I(7)=1 ELSE “110”WHEN I(6)=1 ELSE “101”WHEN I(5)=1 ELSE “100”WHEN I(

32、4)=1 ELSE “011”WHEN I(3)=1 ELSE “010”WHEN I(2)=1 ELSE “001”WHEN I(1)=1 ELSE “000”WHEN I(0)=1 ELSE “111”;END;第38页/共112页第三十九页,共113页。第39页/共112页第四十页,共113页。进程(jnchng)语句l 进程本身是并行语句,但内部是顺序语句;l 进程只有在特定的时刻(敏感信号(xnho)发生变化)才会被激活。进程标号(bioho):PROCESS(敏感信号参数表)声明区;BEGIN 顺序语句END PROCESS 进程标号(bioho);在进程中起作用的局部变量 一个进

33、程可以有多个敏感信号,任一敏感信号发生变化都会激活进程 进程语句定义顺序语句模块,用于将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。第40页/共112页第四十一页,共113页。当某个敏感信号的值发生变化时,每个进程语句立即完成进程内顺序语句所定义(dngy)的功能行为。执行(zhxng)过程终止 顺序语句所定义的功能行为的结果可以赋值给信号,并通过信号被其他的进程读取或赋值。第41页/共112页第四十二页,共113页。在每个上升沿启动一次进程(执行进程内所有(suyu)的语句)。上升(shngshng)沿描述:Clock EVENT AND Clock=1下降沿描述:Clock

34、EVENT AND Clock=0上升沿描述:rising_edge(Clock)下降沿描述:falling_edge(Clock)第42页/共112页第四十三页,共113页。LIBRARY IEEE;ENTITY FreDevider ISPORT(Clock:IN Std_logic;Clkout:OUT Std_logic);END;ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk:Std_Logic;BEGIN PROCESS(Clock)将时钟作为进程的敏感(mngn)信号BEGIN IF rising_edge(Clock)THEN

35、 Clk=NOT Clk;在时钟上升沿执行Clk=NOT Clk END IF;END PROCESS;Clkout=Clk;END;第43页/共112页第四十四页,共113页。LIBRARY IEEE;ENTITY Counter ISPORT(RESET:IN Std_Logic;异步复位信号 Clock:IN Std_logic;时钟信号 NUM:BUFFER Integer RANGE 0 TO 3);计数器输出(shch)值END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS(RESET,Clock)将复位、时钟作为进程的敏感信号

36、BEGIN IF RESET=1 THEN Num=0;复位时Num清0 ELSIF rising_edge(Clock)THEN IF Num=3 THEN Num=0;如果Num3就清0 ELSE Num=Num+1;否则自加1 END IF;END IF;END PROCESS;END;第44页/共112页第四十五页,共113页。仿真(fn zhn)波形:第45页/共112页第四十六页,共113页。LIBRARY IEEE;ENTITY Counter ISPORT(clr:IN Std_Logic;inl:in std_logic_vector(3 downto 0);outl:out

37、 std_logic_vector(3 downto 0)计数器输出(shch)值);END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS(clr,inl)进程的敏感信号BEGIN IF(clr=1 or inl=“1001”)THEN outl=“0000”;ELSE outl=inl+1;END IF;END PROCESS;END;重载(zhn zi)符号,在库IEEE.Std_Logic_unsigned中预先声明第46页/共112页第四十七页,共113页。LIBRARY IEEE;ENTITY Counter ISPORT(clr

38、,clk:IN Std_Logic;cnt:buffer std_logic_vector(3 downto 0)计数器输出(shch)值);END;ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS BEGINWait until clkevent and clk=1;IF(clr=1 or cnt=9)THEN cnt=“0000”;ELSE cnt output output output output=s1;END CASE;END IF;END PROCESS;END;第48页/共112页第四十九页,共113页。l 进程本身是并行语句,

39、但内部为顺序语句;l 进程在敏感信号(xnho)发生变化时被激活,在使用了敏感表的进程中不能含wait语句;l 在同一进程中对同一信号(xnho)多次赋值,只有最后一次生效;l 在不同进程中,不可对同一信号(xnho)进行赋值;l 一个进程不可同时对时钟上、下沿敏感。l 进程中的信号(xnho)赋值是在进程挂起时生效的,而变量赋值是即时生效。l 相对于结构体而言,信号(xnho)具有全局性,是进程间进行并行联系的重要途径。l 进程为综合器支持,且其建模方式直接影响仿真和综合结果,综合后对应于进程的硬件结构对进程中所有可读入信号(xnho)都是敏感的。SIGNAL A,B:Integer RAN

40、GE 0 TO 7;:PROCESS(Clock)BEGIN IF rising_edge(Clock)THEN :B=A+1;B连接端口名,);要插在电路系统板上的芯片较大的电路系统电路板上准备接受芯片的插座元件定义语句元件例化语句列出对外通信的各端口名 当前系统与准备接入的元件对应端口相连的通信端口。名字关联方式:port map语句中位置可以任意;位置关联方式:端口名和关联连接符号可省去,连接端口名的排列方式与所需例化的元件端口定义中的端口名相对应。第50页/共112页第五十一页,共113页。LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY

41、nd2 ISPORT(a,b:IN Std_Logic;c:out std_logic);END;ARCHITECTURE nd2behv OF nd2 IS BEGIN yc1,c=y,b=d1);名字关联方式u3:nd2 PORT MAP(x,y,c=z1);混和关联方式END;元件例化:第51页/共112页第五十二页,共113页。1位二进制全加器内部(nib)端口外部(wib)端口第52页/共112页第五十三页,共113页。外部(wib)端口内部(nib)端口端口连线(lin xin)第53页/共112页第五十四页,共113页。顺序语句仅出现(chxin)在进程和子程序中。顺序语句综合后

42、,映射为实际的门电路,系统一上电,门电路开始工作。电路可实现逻辑上的顺序执行,实际上所有门电路是并行工作的。l 赋值语句l 流程控制语句l 空操作语句l 等待(dngdi)语句l 子程序调用语句l 返回语句第54页/共112页第五十五页,共113页。ENTITY TEST_Signal ISPORT(Reset,Clock:IN Std_logic;NumA,NumB:OUT Integer RANGE 0 TO 255);END;ARCHITECTURE TEST OF TEST_Signal IS SIGNAL A,B:Integer RANGE 0 TO 255;BEGIN PROCES

43、S(RESET,Clock)VARIABLE C:Integer RANGE 0 TO 255;BEGIN IF RESET=1 THEN A=0;B=2;C:=0;ELSEIF rising_edge(Clock)THEN C:=C+1;A=C+1;B=A+2;END IF;END PROCESS;Num A=A;NumB=B;END;第55页/共112页第五十六页,共113页。流程(lichng)控制语句l IF语句(yj):IF 条件式 THEN 顺序(shnx)语句END IF;IF 条件式 THEN 顺序语句ELSE 顺序语句END IF;IF 条件式 THEN 顺序语句ELSEIF

44、 条件式2 THEN 顺序语句 ELSE 顺序语句END IF;有优先级第56页/共112页第五十七页,共113页。用IF语句描述组合(zh)逻辑电路时,务必涵盖所有的情况,否则综合后将引入锁存器!ENTITY Encoder ISPORT(En:IN Std_logic;I:IN Std_logic_Vetor(7 DOWNTO 0);A:OUT Std_logic_Vetor(2 DOWNTO 0);Idle:OUT Std_logic);END;ARCHITECTURE Behavior OF Encoder IS BEGIN PROCESS(En,I)BEGIN IF En=1 THE

45、N IF I(7)=1 THEN A=“111”;Idle=0;ELSIF IF I(6)=1 THEN A=“110”;Idle=0;ELSIF IF I(5)=1 THEN A=“101”;Idle=0;ELSIF IF I(4)=1 THEN A=“100”;Idle=0;ELSIF IF I(3)=1 THEN A=“011”;Idle=0;ELSIF IF I(2)=1 THEN A=“010”;Idle=0;ELSIF IF I(1)=1 THEN A=“001”;Idle=0;ELSIF IF I(0)=1 THEN A=“000”;Idle=0;ELSE A=“000”;Idl

46、e b1 THEN q1=1;ELSIF a1 b1 THEN q1 b1 THEN q1=1;ELSE q1 顺序语句;WHEN 选择值|选择值=顺序语句;WHEN OTHERS=顺序语句;END CASE;l 选择值不可(bk)重复或重叠;l 当CASE语句的选择值无法覆盖所有的情况时,要用OTHERS指定未能列出的其他所有情况的输出值;第61页/共112页第六十二页,共113页。LIBRARY IEEE;ENTITY MUX ISPORT(Data0,Data1,Data2,Data3:IN Std_Logic_VECTOR(7 DOWNTO 0);Sel:IN Std_Logic_Ve

47、ctor(1 DOWNTO 0);DOUT:OUT Std_Logic_Vector(7 DOWNTO 0);END;ARCHITECTURE DataFlow OF MUX IS BEGIN CASE Sel IS WHEN“00”=DOUT DOUT DOUT DOUT DOUTNULL;END CASE;END IF;END PROCESS;第66页/共112页第六十七页,共113页。WAIT语句(yj)在进程(jnchng)或过程中执行到WAIT语句时,程序将被挂起,并设置好再次执行的条件。WAIT ON 信号表UNTIL 条件(tiojin)表达式FOR 时间表达式;WAIT;未设置

48、停止挂起的条件,表示永远挂起。WAIT ON 信号表;敏感信号等待语句,敏感信号的变化将结束挂起,再次启动进程。WAIT UNTIL 条件表达式;条件表达式为中所含的信号发生变化,且满足WAIT语句所设条件,则结束挂起,再次启动进程。WAIT FOR 时间表达式;超时等待语句,从执行当前的WAIT语句开始,在此时间段内,进程处于挂起状态,超过这一时间段后,程序自动恢复执行。第67页/共112页第六十八页,共113页。Configuration 配置(pizh)名 of 实体名 is 配置(pizh)说明End 配置(pizh)名;配置(pizh)语句 配置主要为顶层设计实体指定结构(jigu)

49、体,或为参与例化的元件实体指定所希望的结构(jigu)体,以层次方式来对元件例化做结构(jigu)配置。第68页/共112页第六十九页,共113页。Configuration 配置(pizh)名 of 实体名 is 配置(pizh)说明End 配置(pizh)名;为顶层设计实体指定(zhdng)结构体Entity nand is port(a,b:in std_logic;c:out std_logic);End entity nand;Architecture one of nand is begin c=not(a and b);End architecture one;Architect

50、ure two of nand is begin cs,b=qf,c=q);u2:nand PORT MAP(a=q,b=r,c=qf);END rsf;Configuration sel of rs is for rsf for u1,u2:nand use entity work.nand(two);end for;end for;End sel;为参与例化的元件实体指定(zhdng)所希望的结构体,以层次方式来对元件例化做结构配置。第70页/共112页第七十一页,共113页。3.4 状态机在VHDL中的实现(shxin)Moore 状态机的VHDL描述(mio sh)输出(shch)仅取

51、决于其所处的状态。第71页/共112页第七十二页,共113页。LIBRARY IEEE;USE IEEE.Std_ Logic_1164.ALL;ENTITY Moore ISPORT(Reset,Clock,DIN:IN Std_Logic;DOUT:OUT Std_Logic_Vetor(2 DOWNTO 0);END;ARCHITECTURE Mooremachine OF Moore ISTYPE State_type IS(S0,S1,S2,S3);定义State_type为枚举型数据类型SIGNAL State:State_type;BEGINChange_State:PROCES

52、S(Reset,Clock)时序逻辑(lu j)进程BEGINIF Reset=1 THEN State=S0;第72页/共112页第七十三页,共113页。ELSEIF rising_edge(Clock)THEN CASE State IS WHEN S0=IF DIN=1 THEN State=S1;END IF;WHEN S1=IF DIN=1 THEN State=S2;END IF;WHEN S2=IF DIN=1 THEN State=S3;END IF;WHEN S3=IF DIN=1 THEN State=S0;ELSE StateDOUT DOUT DOUT DOUT=“11

53、1”;END CASE;END PROCESS;END;第73页/共112页第七十四页,共113页。仿真(fn zhn)波形图:第74页/共112页第七十五页,共113页。时钟(shzhng)同步Moore状态机结构图:第75页/共112页第七十六页,共113页。LIBRARY IEEE;USE IEEE.Std_ Logic_1164.ALL;ENTITY Moore ISPORT(Reset,Clock,DIN:in Std_Logic;DOUT:out Std_Logic_Vetor(2 DOWNTO 0);END;ARCHITECTURE Mooremachine OF Moore I

54、S TYPE State_type IS(S0,S1,S2,S3);SIGNAL PresentState,NextState:State_type;定义状态(zhungti)转换信号 BEGINState_Reg:PROCESS(Reset,Clock)状态(zhungti)寄存器 BEGIN IF Reset=1 THEN 异步复位 PresentState=S0;ELSEIF rising_edge(Clock)THEN PresentState=NextState;时钟上升沿,转换至下一状态(zhungti)END IF;END PROCESS;第76页/共112页第七十七页,共113

55、页。Change_State:PROCESS(PresentState,DIN)组合逻辑(lu j)进程BEGIN CASE Present State IS WHEN S0=if DIN=1 then NextState=S1;else NextState=S0;end if;DOUT=“001”;WHEN S1=if DIN=1 then NextState=S2;else NextState=S1;end if;DOUT=“011”;WHEN S2=if DIN=1 then NextState=S3;else NextState=S2;end if;DOUT=“101”;WHEN S3

56、=if DIN=1 then NextState=S0;else NextState=S1;end if;DOUT=“111”;END CASE;END PROCESS;END;第77页/共112页第七十八页,共113页。仿真(fn zhn)波形图:第78页/共112页第七十九页,共113页。Mealy 状态机的VHDL描述(mio sh):输出由当前状态与输入共同决定。第79页/共112页第八十页,共113页。LIBRARY IEEE;USE IEEE.Std_ Logic_1164.ALL;ENTITY MealyMachine ISPORT(Reset,Clock,DIN:IN Std_

57、Logic;DOUT:OUT Std_Logic_Vetor(2 DOWNTO 0);END;ARCHITECTURE Statemachine OF MealyMachine ISTYPE State_type IS(S0,S1,S2,S3);SIGNAL State:State_type;BEGINChange_State:PROCESS(Reset,Clock)BEGINIF Reset=1 THEN State=S0;第80页/共112页第八十一页,共113页。ELSIF rising_edge(Clock)THEN CASE State IS WHEN S0=IF DIN=1 THE

58、N State=S1;END IF;WHEN S1=IF DIN=1 THEN State=S2;END IF;WHEN S2=IF DIN=1 THEN State=S3;END IF;WHEN S3=IF DIN=1 THEN State=S0;ELSE StateIF DIN=0 THEN DOUT=“000”;ELSE DOUTIF DIN=0 THEN DOUT=“010”;ELSE DOUT IF DIN=0 THEN DOUT=“100”;ELSE DOUT IF DIN=0 THEN DOUT=“110”;ELSE DOUTState=Error;l 使状态(zhungti)机

59、从未定义的状态(zhungti)跳转到处理出错情况的状态(zhungti);l 直接回复到其他已设定的状态。第83页/共112页第八十四页,共113页。l 对于所有可能的输入条件,当进程中的输出信号如果(rgu)没有被完全地与之对应指定,此信号将自动被指定,即在未列出的条件下保持原值,这意味着引入了寄存器。l 在状态机中,如果存在一个或更多的状态没有被明确指定转换(zhunhun)方式,或者对于状态机中的状态值没有规定所有的输出值,就可能引入寄存器。第84页/共112页第八十五页,共113页。计数器:3.5 常用电路(dinl)的VHDL程序第85页/共112页第八十六页,共113页。比较(b

60、jio)器:第86页/共112页第八十七页,共113页。奇数倍分频(fn pn):第87页/共112页第八十八页,共113页。LIBRARY IEEE;ENTITY p_check IS PORT(a:IN STD_LOGIC_VECTOR(7 DOWNTO 0);y:OUT STD_LOGIC);END p_check;ARCHITECTURE opt OF p_check IS SIGNAL tmp:STD_LOGIC;BEGIN PROCESS(a)BEGIN tmp=0;FOR n IN 0 TO 7 LOOP-此循环语 句作为进程(jnchng)语句中的顺序语句使用tmp=tmp X

61、OR a(n);END LOOP;y=tmp END.PROCESS;END opt;第88页/共112页第八十九页,共113页。LIBRARY IEEE;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder IBEGIN so=(a OR b)AND(a NAND b);co=NOT(a NAND b);END ARCHITECTURE fh1;1位二进制半加器 半加器第89页/共112页第九十页,共113页。LIBRARY IEE

62、E;ENTITY CNT4B IS PORT(CLK:IN STD_LOGIC;RST:IN STD_LOGIC;ENA:IN STD_LOGIC;OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC );END CNT4B;ARCHITECTURE behav OF CNT4B IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP_REG:PROCESS(CLK,RST,ENA)BEGIN P_REG:PRO

63、CESS(CLK,RST,ENA)BEGIN IF RST=1 THEN CQI=0000;ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN CQI=CQI+1;ELSE CQI=0000;END IF;END IF;OUTY=CQI;END PROCESS P_REG;COUT=CQI(0)AND CQI(1)AND CQI(2)AND CQI(3);-进位(jnwi)输出END behav;第90页/共112页第九十一页,共113页。表决器:第91页/共112页第九十二页,共113页。三态门:三态总线(zn xin):第92页/共112页第九十三页,共

64、113页。八位(b wi)锁存器:第93页/共112页第九十四页,共113页。第94页/共112页第九十五页,共113页。移位(y wi)寄存器:第95页/共112页第九十六页,共113页。第96页/共112页第九十七页,共113页。第97页/共112页第九十八页,共113页。第98页/共112页第九十九页,共113页。3.6 VHDL仿真(fn zhn)仿真(Simulation,也称模拟),不接触具体的硬件系统利用计算机对电路设计的逻辑行为和运行功能进行(jnxng)模拟检测,较大规模的VHDL系统设计的最后完成必须经历多层次的仿真测试过程,包括针对系统的VHDL行为仿真、分模块的时序仿真

65、和硬件仿真,直至最后系统级的硬件仿真测试。对VHDL源文件进行(jnxng)语法及语义检查,将其转换为中间数据格式。保存中间数据结果,提供VHDL源程序中需要的设计库和程序包。功能仿真是在未经布线和适配前,用VHDL源程序综合后的文件进行仿真。时序仿真是将设计综合后,由适配器完成具体芯片的映射后得到的文件进行仿真。第99页/共112页第一百页,共113页。第100页/共112页第一百零一页,共113页。SIGGEN的仿真(fn zhn)输出波形 用VHDL写一个波形(b xn)信号发生器 方法(fngf)一第101页/共112页第一百零二页,共113页。将波形信号发生器与ADDER4组装为一个

66、VHDL仿真测试(csh)模块BENCH仿真(fn zhn)波形图第102页/共112页第一百零三页,共113页。利用仿真器的波形设置命令施加激励(jl)信号 force命令的格式如下:force ,-repeat force a 10 0,5 200,8 400force b 3 0,4 100,6 300BENCH仿真波形图 初始化仿真过程后,在命令行中输入命令:执行RUN命令。对ADDER4的结构体进行仿真:第103页/共112页第一百零四页,共113页。8位计数器源程序:第104页/共112页第一百零五页,共113页。Elseif CE=1 then if DIR=1 thenif COUNTER=255 then COUNTER:=0;else COUNTER:=COUNTER+1;end if;else if COUNTER=0 then COUNTER:=255;else COUNTER:=COUNTER-1;end if;end if;end if;end if;end if;COUNT CLK,RESET=RESET,CE=CE,LOAD=LOAD,DIR=DIR,D

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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