《《VHDL的基本语法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL的基本语法》PPT课件.ppt(53页珍藏版)》请在金锄头文库上搜索。
1、第三讲 VHDL硬件描述语言教学课时:教学课时:2学时学时教学内容:教学内容:1、VHDL基本结构(基本结构(1学时)学时)2、 VHDL的基本语法(的基本语法(1学时)学时)(1)数据对象)数据对象(2)数据类型)数据类型(3)运算操作符)运算操作符(4)并行赋值语句)并行赋值语句概述 数字系统设计分为硬件设计和软件设计, 但是随着计算机技术、超大规模集成电路(CPLD、FPGA)的发展和硬件描述语言(HDL, Hardware Description Language)的出现,软、硬件设计之间的界限被打破,数字系统的硬件设计可以完全用软件来实现,只要掌握了HDL语言就可以设计出各种各样的数
2、字逻辑电路。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux2_1ISPORT(A,B:INSTD_LOGIC;S:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDmux2_1;ARCHITECTUREoneOFmux2_1ISBEGINprocess(A,B,S)beginIf(S=0)thenY=A;ElseY=B;endif;endprocess;ENDone;IEEE库说明库说明实实体体结结构构体体例例1:一一个个简简单单的的例例子子,2选选1数数据选择器的描述据选择器的描述数据输数据输入入选择选择输出输出ABSY 01AB
3、端口图ABSY1、VHDL语言的基本结构语言的基本结构 VHDL设计实体的基本结构由库、程序包、实体、结构体和配置等部分构成。其中,实体和结构体是设计实体的基本组成部分,它们可以构成最基本的VHDL程序。根据VHDL语法规则,在VHDL程序中使用的数据对象、数据类型都需要预先定义。为了方便使用VHDL编程,IEEE将预定义的数据类型、元件调用声明以及一些常用子程序收集在一起,形成程序包,供VHDL设计实体共享和调用。若干个程序包则形成库。常用的VHDL库有IEEE标准库、STD库和WORK库。IEEE标准库包括STD_LOGIC_1164程序包,它是最重要和最常用的程序包,大部分数字系统设计都
4、是以此程序包设定的标准为基础的。1.1、实体、实体设计实体设计实体是一个完整的、独立的语言模块。是一个完整的、独立的语言模块。它相当于电路中的一个器件。它相当于电路中的一个器件。实体由实体声明部分和结构体组成。实体由实体声明部分和结构体组成。实体声明部分指定了设计单元的输入输出端口或引实体声明部分指定了设计单元的输入输出端口或引脚,它是设计实体对外的一个通信界面,是外界可脚,它是设计实体对外的一个通信界面,是外界可以看到的部分。以看到的部分。结构体用来描述设计实体的逻辑结构和逻辑功能,它由VHDL语句构成,是外界看不到的部分。一个实体可以拥有一个或多个结构体。ENTITY实体名实体名ISGEN
5、ERIC(类属表)类属表);PORT(端口表)端口表);ENDENTITY实体名实体名; 例:例:ENTITYor2ISPORT(a,b:INSTD_LOGIC;C:OUTSTD_LOGIC);ENDENTITYor2;实体语句结构如下:实体语句结构如下:注意:注意:Quartus开发开发工具中实体名与保工具中实体名与保存该实体的存该实体的VHDL源源文件名必须是一样文件名必须是一样的。的。在层次化系统设计中,实体说明是整个模块或整个系统的在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(输入输出(I/O)接口;在一个器件级的设计中,实体说接口;在一个器件级的设计中,实体说明是一个芯
6、片的输入输出(明是一个芯片的输入输出(I/O)。)。1.1.11.1.1类属表类属表(GENERIC)类类属属参参量量是是实实体体说说明明中中的的可可选选项项,放放在在端端口口说说明明之之前前,其其一般格式为:一般格式为:GENERIC(常数名:数据类型:(常数名:数据类型:=设定值;设定值;.); 类属表是一种端口界面常数,常用来规定端口的类属表是一种端口界面常数,常用来规定端口的大小、实体中子元件的数目及实体的定时特性等。它大小、实体中子元件的数目及实体的定时特性等。它和常数不同,常数只能从设计实体的内部得到赋值且和常数不同,常数只能从设计实体的内部得到赋值且不能改变,而类属表的值可由设计
7、实体的外部提供。不能改变,而类属表的值可由设计实体的外部提供。因此设计者可以从外面通过类属表的重新设定而容易因此设计者可以从外面通过类属表的重新设定而容易的改变一个设计实体或一个元件的内部电路结构和规的改变一个设计实体或一个元件的内部电路结构和规模。模。例:例:GENERIC(trise,tfall:TIME:=1ns;Addrwidth:INTEGER:=16);PORT(a0,a1:INSTD_LOGIC;Add_bus:OUTSTD_LOGIC_VECTOR(Addrwidth-1DOWNTO0);这里类属表中参数这里类属表中参数trise为上升沿宽度,为上升沿宽度,tfall为下降为下
8、降沿宽度,用于仿真模块的设计;定义地址总线的宽度沿宽度,用于仿真模块的设计;定义地址总线的宽度为为Addrwidth位,类属值位,类属值Addrwidth的改变将使结构体的改变将使结构体中所有相关的总线定义同时改变,由此使整个设计实中所有相关的总线定义同时改变,由此使整个设计实体的硬件结构发生变化。体的硬件结构发生变化。1.1.2 端口说明端口说明(PORT) 端端口口的的功功能能相相当当电电路路图图符符号号中中的的外外部部引引脚脚。端端口口可可以以被赋值,也可以当做逻辑变量用在逻辑表达式中。被赋值,也可以当做逻辑变量用在逻辑表达式中。其一般书写格式为:其一般书写格式为:PORT(端口名(端口
9、名:端口方向:端口方向数据类型;数据类型;端口名端口名:端口方向:端口方向数据类型;数据类型;);); 其中端口名是设计者为实体的每一个引脚所取的名字,其中端口名是设计者为实体的每一个引脚所取的名字,通常为通常为英文字母加数字英文字母加数字,名字的定义有一定的,名字的定义有一定的惯例,惯例,如如clk表示时钟,表示时钟,D开头的端口名表示数据,开头的端口名表示数据,A开头的端口名表示开头的端口名表示地址。端口方向地址。端口方向是指这些通道上的数据流动的方式,如是指这些通道上的数据流动的方式,如输输入或输出入或输出等。等。端口方向有以下几种类型:端口方向有以下几种类型:1输入(输入(IN)允许信
10、号进入实体,主要用于时钟输入、控制输入(如允许信号进入实体,主要用于时钟输入、控制输入(如load、reset、enable、clk)和单向的数据输入(如地址数和单向的数据输入(如地址数据信号据信号address)等。等。2输出(输出(OUT)输出模式只允许信号离开实体,常用于计数输出、单向输出模式只允许信号离开实体,常用于计数输出、单向数据输出、被设计实体产生的控制其他实体的信号等。注意:数据输出、被设计实体产生的控制其他实体的信号等。注意:输出模式不能用于被设计实体的内部反馈,因为输出端口在输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看做是可读的。实体内不能看做是可读的。
11、 3双向模式(双向模式(INOUT)双向模式允许信号双向传输(既可以进入实体,也可以离开双向模式允许信号双向传输(既可以进入实体,也可以离开实体),双向模式端口允许引入内部反馈。实体),双向模式端口允许引入内部反馈。 4缓冲(缓冲(BUFFER)缓缓冲冲模模式式允允许许信信号号输输出出到到实实体体外外部部,但但同同时时也也可可以以在在实实体体内内部部引引用用该该端端口口的的信信号号。缓缓冲冲端端口口既既能能用用于于输输出出也也能能用用于于反反馈馈。缓缓冲冲模模式式用用于于在在实实体体内内部部建建立立一一个个可可读读的的输输出出端端口口,例例如如计计数数器器输输出出、计数器的现态用来决定计数器的
12、次态。计数器的现态用来决定计数器的次态。端口模式可用图下说明,图中方框代表一个设计实体或模块。端口模式可用图下说明,图中方框代表一个设计实体或模块。在在VHDL设计中,通常将设计中,通常将输入信号输入信号端口指定为端口指定为输输入模式入模式,输出信号输出信号端口指定为端口指定为输出模式输出模式,而双向数,而双向数据通信信号,如计算机据通信信号,如计算机PCI总线的总线的地址地址/数据复用总数据复用总线线,DMA控制器控制器数据总线数据总线等纯双向的信号采用等纯双向的信号采用双向双向端口模式端口模式。从端口的名称、模式就能一目了然地知。从端口的名称、模式就能一目了然地知道信号的用途、性质、来源和
13、去向。道信号的用途、性质、来源和去向。1.2、结构体结构体 结构体是用来描述设计实体的内部结构与实体端口间的结构体是用来描述设计实体的内部结构与实体端口间的逻辑关系的,在电路上相当于器件的内部电路结构。逻辑关系的,在电路上相当于器件的内部电路结构。结构体结构体是对实体功能的具体描述,因此它一定要跟在实是对实体功能的具体描述,因此它一定要跟在实体的后面体的后面。结构体一般由两大部分组成:结构体一般由两大部分组成:1信信号号声声明明部部分分,用用于于结结构构体体内内部部使使用用的的信信号号名名称称及及信信号号类型的说明;类型的说明;2功能语句部分,描述实体的逻辑行为。功能语句部分,描述实体的逻辑行
14、为。结构体的语句格式为:结构体的语句格式为:ARCHITECTURE结构体名结构体名OF实体名实体名IS定义语句定义语句BEGIN功能描述语句;功能描述语句;END结构体名;结构体名; 1. 2.1结构体名结构体名 结构体名由设计者自行定义,结构体名由设计者自行定义,OF后面的实体名后面的实体名指明了该结构体所对应的是哪个实体。有些设计实指明了该结构体所对应的是哪个实体。有些设计实体有多个结构体,这些结构体的结构体名不可相同。体有多个结构体,这些结构体的结构体名不可相同。1.2.2结构体的信号定义语句结构体的信号定义语句 结构体的信号定义语句必须放在关键词结构体的信号定义语句必须放在关键词AR
15、CHITECTURE和和BEGIN之间之间,用于对结构体内部将要使用的信号、常数、,用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加以说明。需要注意的是实体说数据类型、元件、函数和过程加以说明。需要注意的是实体说明中定义的信号是外部信号,明中定义的信号是外部信号,而结构体定义的信号为该结构体而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中的内部信号,它只能用于这个结构体中。结构体中的信号定义和端口说明一样,应有信号名称和数结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是据类型定义。因为它是内部连接用的信号,因此内部连接用的信号,因此不需要方
16、向不需要方向说说明明。ARCHITECTURErtlOFmujISSIGNALs1:BITSIGNALs2,s3:STD_LOGIC_VECTOR(0TO3); BEGIN ENDrtl; 实体名实体名结构体名结构体名功能描述语句功能描述语句结构体信号定义语句结构体信号定义语句例:结构体的信号定义实例。例:结构体的信号定义实例。1.2.3结构体功能描述语句结构体功能描述语句结构体功能描述语句位于结构体功能描述语句位于BEGIN和和END之间,之间,具体地描述了构造体的行为及其连接关系。结构具体地描述了构造体的行为及其连接关系。结构体的功能描述语句可以含有体的功能描述语句可以含有5种不同类型的并
17、行种不同类型的并行语句,如图所示。每一语句结构内部可以使用并语句,如图所示。每一语句结构内部可以使用并行语句,也可以是顺序语句。行语句,也可以是顺序语句。结构体结构体(ARCHITECTURE)说明语句说明语句功能描述语句功能描述语句块语句(块语句(BLOCKBLOCK)进程语句(进程语句(PROCESSPROCESS)信号赋值语句信号赋值语句子程序调用语句子程序调用语句元件例化语句元件例化语句结构体构造图结构体构造图: 例题演示例1:用VHDL文本输入法描述2输入与门,并仿真验证其功能。具体演示见操作。library ieee;use ieee.std_logic_1164.all;enti
18、ty and_2 isport(a,b:in std_logic;c:out std_logic);end and_2;architecture one of and_2 isbeginprocess(a,b)beginc=a and b;end process;end one;2、VHDL的基本语法VHDL是一种计算机编程语言,其语言要素包括数据对象、数据类型和运算操作符。2.1 数据对象数据对象包括变量、信号和常数。(1)变量变量是局部量,只能用于进程、函数和子程序中,任何变量都要声明后才能使用。其语法格式为:variable 变量名:数据类型:=初始值;例:variable A:bit;
19、variable B:boolean:=false;variable D,E:integer:=2;为变量取名时,须遵循为变量取名时,须遵循以下规则:以下规则:以英文字母开头。以英文字母开头。英文字母,数字和下英文字母,数字和下划线是有效的字符。划线是有效的字符。关键字不能作为标识关键字不能作为标识符使用。符使用。见见P231.变量赋值语句的格式为:变量赋值语句的格式为:变量名:变量名:=表达式;表达式;例:例:A:=0;D:=5;(2)信号信号VHDL中的信号类似于硬件电路中的连接线。中的信号类似于硬件电路中的连接线。信信号只能在结构体中声明(不能在进程和子程序中号只能在结构体中声明(不能在
20、进程和子程序中声明),声明),信号语句包括信号声明语句和信号赋值信号语句包括信号声明语句和信号赋值语句。语句。信号声明语句的其格式为:信号声明语句的其格式为:signal 信号名:数据类型:信号名:数据类型:=初始值;初始值;例:例:signal X,Y:integer:=3;信号赋值语句的格式为:信号赋值语句的格式为:信号名信号名=表达式;表达式;例:例:X=5;例:信号声明与赋值语句举例。architecture one of hadder issignal y:bit;beginy=A xor B;S=y;y=A and B;C0=y;end one;(3)常数VHDL设计实体中的常数可
21、以使程序容易阅读设计实体中的常数可以使程序容易阅读和修改。定义常数后,程序中所有用到该常数和修改。定义常数后,程序中所有用到该常数值的地方都用定义的常数名表示,需要修改该值的地方都用定义的常数名表示,需要修改该常数时,只要在该常数名定义处修改即可。常常数时,只要在该常数名定义处修改即可。常数定义的语法格式为数定义的语法格式为:constant 常数名:数据类型:常数名:数据类型:=表达式;表达式;例:例:constant Delay:time:=25ns;2.2 数据类型VHDL有多种标准的数据类型,并且允许有多种标准的数据类型,并且允许用户自定义数据类型。用户自定义数据类型。一、标准数据类型
22、一、标准数据类型VHDL标准程序包标准程序包STANDARD中定义,中定义,在应用中自动包含进在应用中自动包含进VHDL的源文件,的源文件,不不需要需要USE语句显示调用语句显示调用。标准数据类型。标准数据类型说明如下。说明如下。1.整数(整数(INTEGER) 整数包括正、负整数和零,可以使用预定义运算操作符,整数包括正、负整数和零,可以使用预定义运算操作符,如加如加“”、减、减“”、乘、乘“”、除、除“”进行算术运进行算术运算。在算。在VHDL语言中,整数的表示范围为语言中,整数的表示范围为21474836472147483647,即从,即从(2311)到到(2311)。2.实数(实数(R
23、EAL)实实数数的的定定义义值值范范围围为为1.0E+38+1.0E+38。实实数数有有正正负负数数,书写时一定要有小数点。例如:书写时一定要有小数点。例如:1.0,+2.5,1.0E+383.位位(BIT)位值用字符位值用字符0或者或者1(将值放在引号中)表示。(将值放在引号中)表示。4.位矢量位矢量(BIT_VECTOR)位位矢矢量量是是用用双双引引号号括括起起来来的的一一组组数数据据。例例如如:“001100”,X“00bb”。在在这这里里位位矢矢量量前前面面的的X表表示示是是十十六六进进制制。用用位位矢矢量量数数据据表表示示总总线线最最形形象象也也最最方方便便,在在VHDL程程序序中中
24、将将会会经经常常遇遇到到。使使用用位位矢矢量量时时必必须须注注明明位位宽宽,即即数数组组中中元元素素个个数数和和排排列,例如:列,例如:SIGNALS:BIT_VECTOR(15DOWNTO0););SIGNAL Y:BIT_VECTOR(0 TO 7););5.布尔量布尔量(BOOLEAN)取值是取值是TRUE或者或者FALSE。6.字符字符(CHARACTER)字符也是一种数据类型,所定义的字符也是一种数据类型,所定义的字符量通常用单引号括起字符量通常用单引号括起来,来,如如a。一般情况下一般情况下VHDL对大小写不敏感,但对字符对大小写不敏感,但对字符量中的大小写则认为是不一样的。例如,
25、量中的大小写则认为是不一样的。例如,B不同于不同于b。字符量中的字符可以是从字符量中的字符可以是从a到到z中的任一个字母,从中的任一个字母,从0到到9中的任中的任一个数以及空格或者特殊字符,如一个数以及空格或者特殊字符,如$,%等等。包集合等等。包集合standard中给出了预定义的中给出了预定义的128个个ASC码字符,不能打印的用码字符,不能打印的用标识符给出。字符标识符给出。字符1与整数与整数1和实数和实数1.0都是不相同的,当都是不相同的,当要明确指出要明确指出1的字符数据的字符数据时,则可写为:时,则可写为:CHARACTER(1)。)。7.字符串字符串(STRING)字字符符串串是
26、是由由双双引引号号括括起起来来的的一一个个字字符符序序列列,也也称称字字符符矢矢量量或或字字符串组。字符串常用于程序的提示和说明。字符串举例如下:符串组。字符串常用于程序的提示和说明。字符串举例如下:VATIABLEstring_1:STRING(0TO3); string_1:=“abcd”;8.时间时间(TIME)时时间间是是一一个个物物理理量量数数据据。完完整整的的时时间间量量数数据据应应包包含含整整数数和和单单位位两两部部分分,而而且且整整数数和和单单位位之之间间至至少少应应留留一一个个空空格格的的位位置置。例例如如55sec,2min等等。在在包包集集合合STANDARD中中给给出出
27、了了时时间间的的预预定定义义,其其单单位位为为fs,ps,ns,s,ms,sec,min和和hr。例例如如:20s,100ns,3sec。在在系系统统仿仿真真时时,时时间间数数据据特特别别有有用用,用用它它可可以以表表示示信信号号延延时时,从而使模型系统能更逼近实际系统的运行环境。从而使模型系统能更逼近实际系统的运行环境。9.错误等级错误等级(SEVERITYLEVEL)错错误误等等级级类类型型数数据据用用来来表表征征系系统统的的状状态态,共共有有4种种:note(注注意意),warning(警警告告),error(出出错错),failure(失失败败)。在在系系统统仿仿真真过过程程中中可可以
28、以用用这这4种种状状态态来来提提示示系系统统当当前前的的工工作作情情况况,从从而而使使设设计计人人员员随随时时了了解解当当前前系系统统工工作作的的情情况况,并并根根据据系统的不同状态采取相应的对策。系统的不同状态采取相应的对策。10.大大于于等等于于零零的的整整数数(自自然然数数)(NATURAL),正正整整数数(POSITIVE)这这两两种种数数据据是是整整数数的的子子类类,NATURAL类类数数据据为为取取0和和0以以上上的的正整数;而正整数;而POSITIVE则只能为正整数。则只能为正整数。二二、IEEE标准化数据类型标准化数据类型IEEE的的STD_LOGIC_1164程程序序包包中中
29、定定义义了了两两种种应应用用十十分分广广泛泛的的数数据据类类型,其定义如下所示:型,其定义如下所示:(1)TYPEstd_logicIS(U,-初始值初始值X,-不定不定0,-01,-1Z,-高阻高阻W,-弱信号不定弱信号不定L,-弱信号弱信号0H,-弱信号弱信号1-不可能情况不可能情况););(2)std_logic_vector:标准逻辑失量型,是标准逻辑失量型,是多个多个std_logic型数据型数据的组合。的组合。三、用户自定义的数据类型三、用户自定义的数据类型 可以由用户定义的数据类型有:可以由用户定义的数据类型有:用用户户可可以以选选择择VHDL标标准准数数据据类类型型的的一一个个
30、子子集集作作为为自定义数据类型,例如:自定义数据类型,例如:typedigitisintegerrange0to9;它定义它定义digit的数据类型是的数据类型是0-9的整数。的整数。2.3 VHDL的运算操作符在在VHDL语言可以进行语言可以进行逻辑运算逻辑运算(LOGICAL)算术运算算术运算(ARITHMETIC)关系运算关系运算(RELATIONAL)使用操作符时,应注意操作符和操作数使用操作符时,应注意操作符和操作数类型匹配。类型匹配。一、逻辑运算符运算功能说明AND与运算OR或运算NAND与非运算NOR或非运算XOR异或运算NOT非运算表中各运算符的表中各运算符的优先级由低到高优先
31、级由低到高排列。排列。二、算术运算+加-减*乘/除MOD取模REM取余+正-负*指数ABS取绝对值&并置并置运算符用于将并置运算符用于将位或位失量组合起位或位失量组合起来来.如如0&1的的结果是结果是01表中各运算符的表中各运算符的优先级由低到高优先级由低到高排列。排列。三、关系运算=等于/=不等于大于=大于等于比较相同类型的数比较相同类型的数据,比较结果为据,比较结果为true或或false.表中各运算符的优先级由低到高排列。表中各运算符的优先级由低到高排列。2.4 并行赋值语句VHDL语言提供三种形式的并行信号赋值语句:(1)简单信号赋值语句;(2)条件信号赋值语句;(3)选择信号赋值语句
32、。这三种信号赋值语句的共同特点是:赋值目标都必须是信号。所有并行赋值语句在结构体内的执行是并发的,与它们书写的顺序没有关系。2.4.1 简单信号赋值语句格式:赋值目标=表达式;式中,赋值目标的数据对象必须是信号,它的数据类型必须与表达式的数据类型一致。如:F=A+B;Q=“0000”;例:基本RS触发器的VHDL描述entity RS isport(R,S:in bit; Q:buffer bit);end RS;architecture one of RS issignal Q_NOT:bit;beginQ_NOT=R nand Q;Q=S nand Q_NOT;end one;2.4.2
33、条件信号赋值语句格式: 赋值目标=表达式1 when 赋值条件1 else 表达式2 when 赋值条件2 else .表达式n; 例:使用条件信号赋值语句描述4选1数据选择器entity mux4_1 isport(d0,d1,d2,d3:in bit;s0,s1:in bit;y:out bit);end mux4_1;architecture one of mux4_1 issignal s:bit_vector(1 downto 0);begins=s1&s0;y= d0 when s=00 else d1 when s=01 else d2 when s=10 else d3 ;en
34、d one;4选选1数据选择器:从数据选择器:从4个输入中选个输入中选1个作为输个作为输出。因此,该电路有:出。因此,该电路有:输入信号:输入信号:4个,可命名为个,可命名为d0,d1,d2,d3选择信号:选择信号:2个,可命名为个,可命名为s0,s1输出信号:输出信号:1个,可命名为个,可命名为y2.4.3 选择信号赋值语句格式: with 表达式 select 信号=表达式1 when 值1, 表达式2 when 值2, . 表达式n when 值n;例:使用选择信号赋值语句描述3-8译码器entity dec3_8 isport(a:in bit_vector(2 downto 0);y
35、:out bit_vector(7 downto 0);end dec3_8;architecture one of dec3_8 isbeginwith a selecty=11111110 when 000, 11111101 when 001, 11111011 when 010, 11110111 when 011, 11101111 when 100, 11011111 when 101, 10111111 when 110, 01111111 when 111;end one;3-8译码器电路有:译码器电路有:3个输入信号,可以失个输入信号,可以失量形式命名为量形式命名为a2.08
36、个输出信号,以失量个输出信号,以失量形式命名为形式命名为y7.0a=“000”时,时,y=“11111110”;a=“001”时,时,y=“11111101”;.a=“111”时,时,y=“01111111”.请在作业纸上按格式:作业1姓名: 学号:1、VHDL设计文件通常包含几个基本结构?其中,哪两个基本结构是必须的?2、分析下面的VHDL源程序,说明设计电路的功能。entity lx3_2 isport(a1,a0:in bit;d3,d2,d1,d0:out bit);end lx3_2;architecture one of lx3_2 issignal a:bit_vector(1
37、downto 0);signal d:bit_vector(3 downto 0);begina=a1&a0;d=1110 when a=00 else 1101 when a=01 else 1011 when a=10 else 0111 ;d3=d(3);d2=d(2);d1=d(1);d0=d(0);end one;3、编写、编写8选选1数据选择器的数据选择器的VHDL源程序,源程序,设电路的设电路的8位数据输入失量为位数据输入失量为d7.0,3位选择输入信号失量为位选择输入信号失量为s2.0,数据选择数据选择输出为输出为y.提示:电路有提示:电路有8个数据输入信号,个数据输入信号,3个选择个选择输入信号,输入信号,1个数据输出信号。可用条件个数据输出信号。可用条件赋值语句或选择赋值语句实现。赋值语句或选择赋值语句实现。