第二章VHDL语言程序的基本结构备课3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第二章VHDL语言程序的基本结构2本章内容:VHDL语言设计的基本单元及其构成VHDL语言构造体的子结构描述块语句进程语句子程序语句包集合、库及配置3一个完整的VHDL语言程序通常可含有五个部分:实体(Entity):描述所设计系统的外部接口信号。构造体(Architecture):用于描述系统内部的结构和行为。包集合(package):存放各设计模块都能共享的数据类型、常数和子程序等。配置(configuration):用于从库中选取所需单元来组成系统设计的不同版本。库(library):存放已经编译的实体、构造体、包集合和配置。可由用户生成或由ASIC芯片制造商提供。4实体说明(ENTITY)结构体(ARCHITECTURE)进程或其它并行结构配置(CONFIGURATION)库、程序包VHDL程序5一、VHDL语言设计的基本单元及其构成VHDL语言程序是用于描述硬件连接的结构性程序,采用文本文件编写。电路模块具有外部接口和内部结构。6VHDL用程序模块表达硬件模块:设定外部端口、设计内部结构。outputninput1inputnoutput1EntitySymbolCLRNENADQclkclrmux_outadsel2bcArchitectureSchematicVHDL语言程序设计的基本单元由实体说明(entitydeclaration)和构造体(Architecturebody)两部分构成。实体说明部分:规定设计单元的输入输出接口信号或引脚。构造体部分:定义设计单元的具体构造和操作(行为)。9entitymuxisgeneric(m:time:=1ns);port(d0,d1,sel:inbit;q:outbit);endmux;architectureconnectofmuxissignaltmp:bit;begincale:process(d0,d1,sel)variabletmp1,tmp2,tmp3:bit;begintmp1:=d0andsel;tmp2:=d1and(notsel);tmp3:=tmp1ortmp2;tmp=tmp3;q=tmpafterm;endprocess;endconnect;二选一电路的VHDL语言描述101、实体说明1)实体说明基本格式:entity实体名is[类属参数说明];--确定局部常量或实体时限[端口说明];--确定输入/输出端口数量及类型end实体名;entitymuxisgeneric(m:time:=1ns);port(d0,d1,sel:inbit;q:outbit);endmux;11VHDL语言不区分大小写除了第一行entity…is以外,每一句以分号“;”结束;编写程序时,一行可以含若干句(以分号间隔),一句也可以写若干行;在一句结束后,可以用“--”符号后接说明文字,这些文字用于帮助理解程序,不会对编译产生影响;单词之间必须使用空格;并列信号间使用逗号;根据不同的层次关系最好设定不同的缩进。122)类属参数说明格式:generic([类属常量名:类型[:=静态表达式];……[类属常量名:类型[:=静态表达式]);要点:1generic为关键字,静态表达式为可选项2类属说明必须在端口说明之前,为设计实体和外部环境提供静态数据传输通道。3示例:generic(m:time:=1ns);q=tmpafterm;133)端口说明格式:格式:port(端口名[,端口名]:方向数据类型名;……端口名[,端口名]:方向数据类型名);端口说明是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称,数据类型和输入、输出方向的描述。14端口说明语法要点(1)port为关键字端口名是赋予每个外部引脚的名称命名规则:英文字母和数字构成,字母开头;可在名称中使用单个下划线符号_;字母不分大小写;名称应具有意义,方便记忆;名称不能重复使用;VHDL中的关键字保留字不能用做名称。注:该命名规则适用于实体、端口、信号、变量、文件的命名15端口说明语法要点(2)端口方向:定义外部引脚的信号方向是输入还是输出。常用端口方向:1输入端口(in):仅允许信号从端口输入到构造体。2输出端口(out):仅允许信号从构造体内经端口输出。输出端口信号不能用于实体内部信号的反馈。3缓冲端口(buffer):用于输出及构造体内部反馈。4双向端口(inout):可作为in\out\buffer使用。16端口说明语法要点(3)所有端口都必须规定其数据类型,VHDL语言中有10种数据类型,在数字电路设计中最常用的类型为:bit和bit_vector。Bit:单个逻辑量Bit_vector:逻辑数组、总线逻辑量在VHDL语言的标准库IEEE库当中的包集合std_logic_1164提供的std_logic和std_logic_vector分别与bit和bit_vector对应,完全等效。只是在使用时要声明使用了该包集合。下面给出一个例子。17例2-1EntitymuisPort(d0,d1,sel:inbit;q:outbit;bus:outbit_vector(7downto0));Endmu;例2-2Libraryieee;Useieee.std_logic_1164.allEntitymuisPort(d0,d1,sel:instd_logic;q:outstd_logic;bus:outstd_logic_vector(7downto0));Endmu;实体说明示例18练习编写一个n选1数据选择器的实体实体说明,端口数据类型使用std_logic和std_logic_vector。libraryieee;useieee.std_logic_1164.allentitykmux_nisgeneric(n:integer:=4;m:integer:=2);port(d:instd_logic_vector(n-1downto0);a:instd_logic_vector(m-1downto0);s:instd_logic;y:outstd_logic);endkmux_n;19练习Libraryieee;Useieee.std_logic_1164.all;Entitykdecoder38isport(din:instd_logic_vector(2downto0);en:instd_logic;dout:outstd_logic_vector(7downto0));Endkdecoder38;为3-8线译码器编写实体说明202、构造体(结构体)具体指明基本设计单元的行为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。1)构造体的基本格式:architecture构造体名of实体名is[定义语句];--内部信号,常数,数据类型,函数等的定义begin[并行处理语句];--构造体中所有语句同时执行,不以书写顺序为执行顺序。end构造体名;212)构造体的命名每个构造体必须属于一个实体;每个构造体必须有一个名称:命名要符合命名规则命名可根据设计者采用何种描述方式来描述模块的功能来命名,给阅读程序的人带来方便。如:beh(行为描述,基本设计单元的数学模型描述)rtl(寄存器传输描述,数据流描述)str(结构描述,逻辑元件的连接)例:architecturestrofmux2_1is223)定义语句位于is--begin之间:typedeclarations;类型说明signaldeclarations;信号说明constantdeclarations;常量说明componentdeclarations;元件说明functiondefinitions;函数说明proceduredefinitions;过程说明例:architecturebehofmux2_1issignalnes1:bit;--内部连接信号无须说明方向…begin…endbeh;234)并行处理语句例:entitymuxisport(d0,d1,sel:inbit;q:outbit);endmux;architecturedataflowofmuxisbeginq=(d0andsel)or(notselandd1);enddataflow;begin---end之间语句部分是各种并行语句,具体地描述了构造体的行为及其连接关系,各语句处于并列状态,执行时不分先后次序:信号赋值语句数据流描述元件例化语句结构描述进程语句行为描述24二、VHDL语言构造体的子结构描述一个构造体可以用几个子结构来构成,即使用相对比较独立的几个模块来构成。VHDL有以下三种形式的子结构描述语句:block块语句结构;process进程语句结构;subprograms子程序结构procedure过程Function函数251、block块语句结构描述architectureconnectofmuxissignaltmp1,tmp2,tmp3:bit;begincale:blockbegintmp1=d0andsel;tmp2=d1and(notsel);tmp3=tmp1ortmp2;q=tmp3;endblockcale;endconnect;1)格式:块结构名:block[并发语句];endblock块结构名;entitymuxisport(d0,d1,sel:inbit;q:outbit);endmux;262)block块和子原理图的关系273)block中语句的并发性begin到endblockcale之间的语句为并发语句。4)卫式block(guardedblock)格式:block[卫式布尔表达式]entitylatchisport(d,clk:inbit;q,qb:outbit);endlatch;architecturelatch_guardoflatchisbeging1:block(clk=’1’)beginq=guardeddafter5ns;qb=guardednot(d)after7ns;endblockg1;endlatch_guard;卫式块不能进行逻辑综合282、process进程语句结构描述1)格式:[进程名:]process(敏感量列表)[声明部分];begin[顺序语句];endprocess;architectureconnectofmuxisbegincale:process(d0,d1,sel)variabletmp1,tmp2,tmp3:bit;begintmp1:=d0andsel;tmp2:=d1and(notsel);tmp3:=tmp1ortmp2;q=tmp3;endprocess;endconnect;entitymuxisport(d0,d1,sel:inbit;q:outbit);endmux;292)进程中语句的顺序性process结构中的语句是按顺序一条一条向下执行的,与C语言的执行一样。3)进程的启动敏感量列表中任意一个信号发生变化就可以启动这个进程的执行30abselcCLRNENADQdclkclrqsensitivitylistincludesallinputsusedinthecombinatoriallogicsensitivitylistdoesnotincludethedinput,onlytheclockor/andcontrolsignals•SequentialProcess–SensitivetoSpecificInputs(i.e.Clockand/orControlSignals)•ExamplePROCESS(clr,clk)•CombinatorialProcess–SensitivetoAllInputs•ExamplePROCESS(a,b,sel)TypesofProcesses31例:具有两

1 / 58
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功