收藏 分销(赏)

第6章VHDL硬件描述语言-电子设计自动化.ppt

上传人:w****g 文档编号:14671966 上传时间:2026-10-27 格式:PPT 页数:107 大小:3.92MB 下载积分:10 金币
下载 相关
第6章VHDL硬件描述语言-电子设计自动化.ppt_第1页
第1页 / 共107页
第6章VHDL硬件描述语言-电子设计自动化.ppt_第2页
第2页 / 共107页


点击查看更多>>
资源描述
,第 6 章 VHDL硬件描述语言,版权所有 侵权必究,电子设计,电子设计,自动化,自动化,EDA Electronic Design Automation,第 6 章 VHDL 硬件描述语言,6.1,VHDL,基本结构,6.2,VHDL,语言的数据类型及运算操作符,6.3,VHDL,结构体的描述方式,6.4,VHDL,主要描述语句,6.5 组合逻辑电路设计示例,6.6 时序逻辑电路设计示例,版权所有 侵权必究,6.1 VHDL基本结构,一个完整的VHDL源程序通常包括实体(Entity)、结构体(Architecture)、配置(Configuration)、程序包(Package)和库(Library)五部分。,6.1.1,VHDL,最小结构,6.1.2,VHDL,基本结构,6.1.3 基本语句,版权所有 侵权必究,6.1.1 VHDL最小结构,VHDL,最小结构由实体和结构体构成。一般格式如下:,Entity 实体名 Is,Port();,End 实体名;,Architectrue 结构体名 Of 实体名,End 结构体名;,实体部分说明了设计模块的输入/输出接口信号或引脚。,结构体部分定义了设计模块的具体逻辑功能。,实体,结构体,6.1.2 VHDL基本结构,VHDL,基本结构由程序包、实体和结构体三部分构成。一般格式如下:,Library 库名;,Use 库名.逻辑体名;,Entity 实体名 Is,Port();,End 实体名;,Architectrue 结构体名 Of 实体名,End 结构体名;,实体部分说明了设计模块的输入/输出接口信号或引脚。,结构体部分定义了设计模块的具体逻辑功能。,实体,结构体,程序包,程序包中列出了,VHDL,语言中所要用到的信号定义、常数定义、数据类型、函数定义等。,VHDL基本结构,6.1.2,【样例】,四选一数据选择器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX2 IS,PORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;,q:OUT STD_LOGIC);,END EX2;,ARCHITECTURE EX2_A OF EX2 IS,SIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);,BEGIN,sel=b,q=i0 WHEN sel=00 ELSE,i1 WHEN sel=01 ELSE,i2 WHEN sel=10 ELSE,i3 WHEN sel=11 ELSE,X;,END EX2_A;,实体,结构体,程序包,表明使用,IEEE,库中,STD_LOGIC_1164,标准程序包。,实体名为,EX2,,说明输入信号为,i0、i1、i2、i3,和,a、b。,结构体名为,EX2_A,,它说明了四选一数据选择器逻辑。,6.1.3 基本语句,在,VHDL,基本结构中,常用的基本语句有:,实体说明语句,端口说明语句,结构体说明语句,库使用说明语句,PROCESS(,进程)语句,6.1.3,ENTITY EX1 IS,样例,PORT(d0,d1:IN BIT;,sel:IN BIT;,q:OUT BIT);,END EX1;,ARCHITECTURE EX1_A OF EX1 IS,BEGIN,q=(d0 AND sel)OR(NOT sel AND d1);,END EX1_A;,基本语句 实体说明语句,实体,实体名为,EX1。,ENTITY,EX1,IS,PORT(d0,d1:IN BIT;,sel:IN BIT;,q:OUT BIT);,END,EX1,;,ARCHITECTURE EX1_A OF EX1 IS,BEGIN,q=(d0 AND sel)OR(NOT sel AND d1);,END EX1_A;,实体名为,EX1。,d0、d1,为输入信号,数据类型为“,bit”。,ENTITY EX1 IS,PORT(,d0,d1:IN BIT;,sel:IN BIT;,q:OUT BIT);,END EX1;,ARCHITECTURE EX1_A OF EX1 IS,BEGIN,q=(d0 AND sel)OR(NOT sel AND d1);,END EX1_A;,实体名为,EX1。,d0、d1,为输入信号,数据类型为“,bit”。,sel,为输入信号,数据类型为“,bit”。,ENTITY EX1 IS,PORT(d0,d1:IN BIT;,sel:IN BIT;,q:OUT BIT);,END EX1;,ARCHITECTURE EX1_A OF EX1 IS,BEGIN,q=(d0 AND sel)OR(NOT sel AND d1);,END EX1_A;,实体名为,EX1。,d0、d1,为输入信号,数据类型为“,bit”。,sel,为输入信号,数据类型为“,bit”。,q,为输出信号,数据类型为“,bit”。,ENTITY EX1 IS,PORT(d0,d1:IN BIT;,sel:IN BIT;,q:OUT BIT);,END EX1;,ARCHITECTURE EX1_A OF EX1 IS,BEGIN,q=(d0 AND sel)OR(NOT sel AND d1);,END EX1_A;,四选一数据选择器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX2 IS,PORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;,q:OUT STD_LOGIC);,END EX2;,ARCHITECTURE EX2_A OF EX2 IS,SIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);,BEGIN,sel=b,q=i0 WHEN sel=00 ELSE,i1 WHEN sel=01 ELSE,i2 WHEN sel=10 ELSE,i3 WHEN sel=11 ELSE,X;,END EX2_A;,结构体,结构体是对实体的具体描述。它描述了实体内部具体完成的逻辑功能。,基本语句 结构体,6.1.3,ARCHITECTURE,结构体名,OF,实体名,IS,定义语句;,BEGIN,并行处理语句;,顺序处理语句;,进程语句;,END,结构体名,;,ARCHITECTURE EX2_A OF EX2 IS,SIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);,BEGIN,sel=b,q=i0 WHEN sel=00 ELSE,i1 WHEN sel=01 ELSE,i2 WHEN sel=10 ELSE,i3 WHEN sel=11 ELSE,X;,END EX2_A;,ARCHITECTURE,结构体名,OF,实体名,IS,定义语句;,BEGIN,并行处理语句;,顺序处理语句;,进程语句;,END,结构体名;,ARCHITECTURE EX2_A OF EX2 IS,SIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);,BEGIN,sel,=b,q=i0 WHEN,sel,=00 ELSE,i1 WHEN,sel,=01 ELSE,i2 WHEN,sel,=10 ELSE,i3 WHEN,sel,=11 ELSE,X;,END EX2_A;,定义语句位于,ARCHITECTURE,和,BEGIN,之间,用于对结构体内部所使用的信号等进行定义。,ARCHITECTURE,结构体名,OF,实体名,IS,定义语句;,BEGIN,并行处理语句;,顺序处理语句;,进程语句;,END,结构体名;,ARCHITECTURE EX2_A OF EX2 IS,SIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);,BEGIN,sel=b,q=i0 WHEN sel=00 ELSE,i1 WHEN sel=01 ELSE,i2 WHEN sel=10 ELSE,i3 WHEN sel=11 ELSE,X;,END EX2_A;,并行处理语句、顺序处理语句或进程语句位于,BEGIN,和,END,之间,这些语句具体描述了结构体的行为以及连接关系。,基本语句 进程语句,6.1.3,PROCESS,语句典型使用格式为,PROCESS,(信号1,信号2,),BEGIN,END PROCESS;,PROCESS 通常带有若干个信号,这些信号无论哪一个发生变化,都将启动该 PROCESS 语句。,语句启动后,PROCESS 语句将从上到下逐句执行。,当最后一个语句执行完毕后,返回到开始的 PROCESS 语句,等待下一次变化出现。,6.2 VHDL语言的数据类型及运算操作符,VHDL硬件描述语言像其它高级程序设计语言一样,具有多种数据类型,例如变量、常量、信号和枚举类型等。,6.2.1 数据对象,6.2.2 数据类型,6.2.3 逻辑操作符,6.2.4 关系操作符,6.2.5 算术操作符,6.2.6 并置操作符,版权所有 侵权必究,6.2.1 数据对象,VHDL,的数据对象有,变量(,Variable),常量(,Constant),信号(,Signal),信号用于说明全局量。,变量用于说明局部量。,数据对象 信号,6.2.1,二选一数据选择器,ENTITY EX3 IS,PORT(,d0,d1,sel:IN BIT;,q:OUT BIT);,END EX3;,ARCHITECTURE EX3_A OF EX3 IS,SIGNAL tmp1,tmp2,tmp3:BIT;,BEGIN,tmp1=d0 AND sel;,tmp2=d1 AND(NOT sel);,tmp3=tmp1 OR tmp2;,q=tmp3 after 10 ns;,END EX3_A;,d0、d1、sel为电路输入信号,q为电路输出信号,应在实体中定义。,内部节点信号为tmp1、tmp2和tmp3,应在结构体中定义。,信号tmp1、tmp2和tmp3在ARCHITECTUREEND EX3_A整个结构体中都有效。,数据对象 变量,6.2.1,变量类似于信号,但在定义和使用中具有如下特点:,Variable 变量名:数据类型;,或,Variable 变量名:数据类型:=初始值;,变量是一个局部量,它只能在进程和函数,、,过程中使用。,在对变量赋值时采用“:=”符号。,不同于信号,变量赋值不能产生附加延时。,一般变量定义格式为,数据对象 变量,6.2.1,二选一数据选择器,ENTITY EX4 IS,PORT(d0,d1,sel:IN BIT;,q:OUT BIT);,END EX4;,ARCHITECTURE EX4_A OF EX4 IS,SIGNAL tmp:BIT;,BEGIN,MODULE:,PROCESS(d0,d1,sel),VARIABLE tmp1,tmp2,tmp3:BIT;,BEGIN,tmp1:=d0 AND sel;,tmp2:=d1 AND(NOT sel);,tmp3:=tmp1 OR tmp2;,tmp=tmp3;,q=tmp;,END PROCESS;,END EX4_A;,信号tmp在结构体开始定义,在整个结构体(ARCHITECTUREEND EX4_A)中有效。,二选一数据选择器,ENTITY EX4 IS,PORT(d0,d1,sel:IN BIT;,q:OUT BIT);,END EX4;,ARCHITECTURE EX4_A OF EX4 IS,SIGNAL tmp:BIT;,BEGIN,MODULE:,PROCESS(d0,d1,sel),VARIABLE tmp1,tmp2,tmp3:BIT;,BEGIN,tmp1:=d0 AND sel;,tmp2:=d1 AND(NOT sel);,tmp3:=tmp1 OR tmp2;,tmp=tmp3;,q=tmp;,END PROCESS;,END EX4_A;,变量tmp1、tmp2和tmp3在进程开始定义,它们只在进程(PROCESSEND PROCESS)中有效。,变量赋值时采用“:=”符号。,信号赋值时采用“=”符号。,数据对象 常量,6.2.1,常量是指那些在逻辑设计描述中不会变化的值。,Constant 常量名:数据类型:=表达式;,常量通常用来改善,VHDL,源文件的可读性。,常量是全局量,它在实体,、,结构体,、,程序包,、,进程和函数,、,过程中都可使用。,一般常量定义格式为,6.2.2 数据类型,VHDL,中的信号、变量、常量都要指定数据类型,,VHDL,语言标准定义的标准数据类型一般有以下十种:,整数类型、实数类型或浮点类型、位类型、位矢量类型、布尔类型、字符类型、时间类型、错误类型、字符串类型和自然数类型。,此外,还可引用,IEEE,标准数据类型,Std_logic,和,Std_logic_ vector,。,数据类型2 位矢量,6.2.2,在数字逻辑电路设计时,有时将几个信号合成一组进行考虑。,在位矢量定义时,必须注明位数多少和最高位、最低位位置。,在对位矢量标识符赋值时,必须使用双引号括起来。,Bit_Vector,是基于,Bit,数据类型的数组,即用多位,Bit,表示。,在使用时要特别注意以下两点:,数据类型2 位矢量,6.2.2,八选一数据选择器,ENTITY ex7 IS,PORT(i0,i1,i2,i3,i4,i5,i6,i7:IN BIT;,sel0,sel1,sel2:IN BIT;,q:OUT BIT);,END ex7;,ARCHITECTURE ex7_a OF ex7 IS,SIGNAL sel:BIT_VECTOR(2 DOWNTO 0);,BEGIN,sel=sel2,q=i0 WHEN sel=000 ELSE /当sel=000时,输出q=i0。,i1 WHEN sel=001 ELSE /当sel=001时,输出q=i1。,i2 WHEN sel=010 ELSE /当sel=010时,输出q=i2。,i3 WHEN sel=011 ELSE /当sel=011时,输出q=i3。,i4 WHEN sel=100 ELSE /当sel=100时,输出q=i4。,i5 WHEN sel=101 ELSE /当sel=101时,输出q=i5。,i6 WHEN sel=110 ELSE /当sel=110时,输出q=i6。,i7 WHEN sel=111 ELSE /当sel=111时,输出q=i7。,0;/当sel值不定时,输出q=0。,END ex7_a;,八选一数据选择器,ENTITY ex7 IS,PORT(i0,i1,i2,i3,i4,i5,i6,i7:IN BIT;,sel0,sel1,sel2:IN BIT;,q:OUT BIT);,END ex7;,ARCHITECTURE ex7_a OF ex7 IS,SIGNAL sel:BIT_VECTOR(2 DOWNTO 0);,BEGIN,sel=sel2,q=i0 WHEN sel=000 ELSE /当sel=000时,输出q=i0。,i1 WHEN sel=001 ELSE /当sel=001时,输出q=i1。,i2 WHEN sel=010 ELSE /当sel=010时,输出q=i2。,i3 WHEN sel=011 ELSE /当sel=011时,输出q=i3。,i4 WHEN sel=100 ELSE /当sel=100时,输出q=i4。,i5 WHEN sel=101 ELSE /当sel=101时,输出q=i5。,i6 WHEN sel=110 ELSE /当sel=110时,输出q=i6。,i7 WHEN sel=111 ELSE /当sel=111时,输出q=i7。,0;/当sel值不定时,输出q=0。,END ex7_a;,定义信号 sel 为 3 位矢量,并按降序排列。,八选一数据选择器,ENTITY ex7 IS,PORT(i0,i1,i2,i3,i4,i5,i6,i7:IN BIT;,sel0,sel1,sel2:IN BIT;,q:OUT BIT);,END ex7;,ARCHITECTURE ex7_a OF ex7 IS,SIGNAL sel:BIT_VECTOR(2 DOWNTO 0);,BEGIN,sel=sel2,q=i0 WHEN,sel=000,ELSE /当sel=000时,输出q=i0。,i1 WHEN,sel=001,ELSE /当sel=001时,输出q=i1。,i2 WHEN,sel=010,ELSE /当sel=010时,输出q=i2。,i3 WHEN,sel=011,ELSE /当sel=011时,输出q=i3。,i4 WHEN,sel=100,ELSE /当sel=100时,输出q=i4。,i5 WHEN,sel=101,ELSE /当sel=101时,输出q=i5。,i6 WHEN,sel=110,ELSE /当sel=110时,输出q=i6。,i7 WHEN,sel=111,ELSE /当sel=111时,输出q=i7。,0;/当sel值不定时,输出q=0。,END ex7_a;,将三个逻辑输入sel0、sel1和sel2构成一个位矢量数据类型。,数据类型3 整数,6.2.2,在,VHDL,逻辑设计中将信号定义为整数,主要是为了方便数值运算。,整数与数学中的整数定义相同,但不能看作是位矢量,不能单独对某一位进行操作。,整数不能用于逻辑运算,而只能用于算术运算。,数据类型4 标准逻辑,6.2.2,Bit,数据类型取值只能为“0”和“1”,不能说明任意态“,X”,和高阻状态“,Z”。,在,IEEE STD1164 VHDL,语言标准中,定义了一个新型数据类型,即,Std_logic。,在,VHDL,标准中定义了,Std_logic 9,种不同的值,例如“1”(高电平)、“0”(低电平)、“,Z”(,高阻)、“,X”(,任意态)等,我们可以直接引用。,使用,Std_logic,类型时,在程序中必须写出库说明语句和使用程序包集合说明语句:,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,数据类型5 标准逻辑矢量,6.2.2,Std_logic_vector,是,Std_logic,的矢量表示。,Std_logic,和,Std_logic_vector,两种数据类型是在,VHDL,逻辑设计中最常用的数据类型。,使用,Std_logic_vector,类型时,在程序中必须写出库说明语句和使用程序包集合说明语句:,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,6.2.3 逻辑操作符,逻辑操作符用于逻辑运算。,运 算 符,举 例,说 明,NOT,NOT A,A 取反,AND,A AND B,A 与 B,OR,A OR B,A 或 B,NAND,A NAND B,A 与非 B,NOR,A NOR B,A 或非 B,XOR,A XOR B,A 异或 B,XNOR,A XNOR,A 异或非 B,运 算 符,举 例,说 明,NOT,NOT A,A 取反,AND,A AND B,A 与 B,OR,A OR B,A 或 B,NAND,A NAND B,A 与非 B,NOR,A NOR B,A 或非 B,XOR,A XOR B,A 异或 B,XNOR,A XNOR,A 异或非 B,运 算 符,举 例,说 明,NOT,NOT A,A 取反,AND,A AND B,A 与 B,OR,A OR B,A 或 B,NAND,A NAND B,A 与非 B,NOR,A NOR B,A 或非 B,XOR,A XOR B,A 异或 B,XNOR,A XNOR,A 异或非 B,运 算 符,举 例,说 明,NOT,NOT A,A 取反,AND,A AND B,A 与 B,OR,A OR B,A 或 B,NAND,A NAND B,A 与非 B,NOR,A NOR B,A 或非 B,XOR,A XOR B,A 异或 B,XNOR,A XNOR,A 异或非 B,运 算 符,举 例,说 明,NOT,NOT A,A 取反,AND,A AND B,A 与 B,OR,A OR B,A 或 B,NAND,A NAND B,A 与非 B,NOR,A NOR B,A 或非 B,XOR,A XOR B,A 异或 B,XNOR,A XNOR,A 异或非 B,运 算 符,举 例,说 明,NOT,NOT A,A 取反,AND,A AND B,A 与 B,OR,A OR B,A 或 B,NAND,A NAND B,A 与非 B,NOR,A NOR B,A 或非 B,XOR,A XOR B,A 异或 B,XNOR,A XNOR,A 异或非 B,运 算 符,举 例,说 明,NOT,NOT A,A 取反,AND,A AND B,A 与 B,OR,A OR B,A 或 B,NAND,A NAND B,A 与非 B,NOR,A NOR B,A 或非 B,XOR,A XOR B,A 异或 B,XNOR,A XNOR,A 异或非 B,逻辑操作符只适用于,BIT、STD_LOGIC,和,STD_LOGIC_VECTOR,等数据类型。,在逻辑操作运算符中,,NOT,优先级高于其它逻辑操作运算符,其它 6 个优先级相同。,逻 辑 操 作 符,6.2.3,二输入“与”逻辑门和“或”逻辑门逻辑电路,ENTITY ex8 IS,PORT(a,b:IN bit;,and_out,or_out:OUT bit);,END ex8;,ARCHITECTURE ex8_a OF ex8 IS,BEGIN,and_out =a AND b;,or_out =a OR b;,END ex8_a;,a 与 b 逻辑设计。,二输入“与”逻辑门和“或”逻辑门逻辑电路,ENTITY ex8 IS,PORT(a,b:IN bit;,and_out,or_out:OUT bit);,END ex8;,ARCHITECTURE ex8_a OF ex8 IS,BEGIN,and_out =a AND b;,or_out =a OR b;,END ex8_a;,a 与 b 逻辑设计。,a 或 b 逻辑设计。,6.2.4 关系操作符,关系操作符用于关系运算。,运 算 符,举 例,说 明,=,A=B,A 等于 B,/=,A/=B,A 不等于 B,A B,A 小于 B,=,A,A B,A 大于 B,=,A=B,A 大于等于 B,运 算 符,举 例,说 明,=,A=B,A 等于 B,/=,A/=B,A 不等于 B,A B,A 小于 B,=,A,A B,A 大于 B,=,A=B,A 大于等于 B,运 算 符,举 例,说 明,=,A=B,A 等于 B,/=,A/=B,A 不等于 B,A B,A 小于 B,=,A,A B,A 大于 B,=,A=B,A 大于等于 B,运 算 符,举 例,说 明,=,A=B,A 等于 B,/=,A/=B,A 不等于 B,A B,A 小于 B,=,A,A B,A 大于 B,=,A=B,A 大于等于 B,运 算 符,举 例,说 明,=,A=B,A 等于 B,/=,A/=B,A 不等于 B,A B,A 小于 B,=,A,A B,A 大于 B,=,A=B,A 大于等于 B,运 算 符,举 例,说 明,=,A=B,A 等于 B,/=,A/=B,A 不等于 B,A B,A 小于 B,=,A,A B,A 大于 B,=,A=B,A 大于等于 B,在进行关系运算时,左右两边操作数的数据类型必须相同。,关 系 操 作 符,6.2.4,四位二进制数值比较器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY ex9 IS,PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,a_eq_b,a_gt_b,a_lt_b:OUT STD_LOGIC);,END ex9;,ARCHITECTURE ex9_a OF ex9 IS,BEGIN,a_eq_b=1 WHEN a=b ELSE 0;,a_gt_b b ELSE 0;,a_lt_b=1 WHEN ab ELSE 0;,END ex9_a;,当a=b,则a_eq_b=1,否则a_eq_b=0。,四位二进制数值比较器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY ex9 IS,PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,a_eq_b,a_gt_b,a_lt_b:OUT STD_LOGIC);,END ex9;,ARCHITECTURE ex9_a OF ex9 IS,BEGIN,a_eq_b=1 WHEN a=b ELSE 0;,a_gt_b b ELSE 0;,a_lt_b=1 WHEN ab,则a_gt_b=1,否则a_gt_b=0。,四位二进制数值比较器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY ex9 IS,PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,a_eq_b,a_gt_b,a_lt_b:OUT STD_LOGIC);,END ex9;,ARCHITECTURE ex9_a OF ex9 IS,BEGIN,a_eq_b=1 WHEN a=b ELSE 0;,a_gt_b b ELSE 0;,a_lt_b=1 WHEN ab ELSE 0;,END ex9_a;,当ab,则a_lt_b=1,否则a_lt_b=0。,6.2.5 算术操作符,算术操作符用于算术运算。,运 算 符,举 例,说 明,A,B,减 法,+,A+B,加 法,*,A*B,乘 法,运 算 符,举 例,说 明,A,B,减 法,+,A+B,加 法,*,A*B,乘 法,A,B,减 法,+,A+B,加 法,*,A*B,乘 法,VHDL,实际可以综合逻辑电路的算术运算符如下:,算 术 操 作 符,6.2.5,四位二进制数运算器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_ARITH.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY ex10 IS,PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,q1:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);,q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,END ex10;,ARCHITECTURE ex10_a OF ex10 IS,BEGIN,PROCESS(a,b),BEGIN,q1=a+b;,q2=a-b;,END PROCESS;,END ex10_a;,使用 IEEE 库中 STD_ LOGIC_1164程序包,内含标准数据类型的定义。,四位二进制数运算器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_ARITH.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY ex10 IS,PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,q1:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);,q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,END ex10;,ARCHITECTURE ex10_a OF ex10 IS,BEGIN,PROCESS(a,b),BEGIN,q1=a+b;,q2=a-b;,END PROCESS;,END ex10_a;,使用 IEEE 库中 STD_ LOGIC_ARITH程序包,内含标准数据类型运算和比较。,四位二进制数运算器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_ARITH.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY ex10 IS,PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,q1:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);,q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,END ex10;,ARCHITECTURE ex10_a OF ex10 IS,BEGIN,PROCESS(a,b),BEGIN,q1=a+b;,q2=a-b;,END PROCESS;,END ex10_a;,使用 IEEE 库中 STD_ LOGIC_UNSIGNED程序包,内含无符号类型的函数。,四位二进制数运算器,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_ARITH.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY ex10 IS,PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);,q1:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);,q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,END ex10;,ARCHITECTURE ex10_a OF ex10 IS,BEGIN,PROCESS(a,b),BEGIN,q1=a+b;,q2=a-b;,END PROCESS;,END ex10_a;,四位二进制数加、减运算。,6.2.6 并置操作符,并置操作符用于并置运算。,运算符,举 例,说 明,&,D3&D2&D1&D0,表示4位二进制数D3D2D1D0,并置运算符“&”用于位(,BIT),的连接。例如,将 4 个位用并置运算符“&”连接起来,就可以构成一个具有 4 位长度的位矢量。,6.3 VHDL结构体的描述方式,结构体(Architecture)部分定义了设计模块的具体逻辑功能。,6.3.1 结构体的行为描述方式,6.3.2 结构体的数据流描述方式,6.3.3 结构体的结构化描述方式,版权所有 侵权必究,对数字系统进行逻辑描述,可以采用三种不同风格的结构体描述方式。这三种描述方式主要是从不同角度对数字系统进行行为和功能描述。,6.3.1 结构体的行为描述方式,行为描述,只描述输入与输出的逻辑转换关系,而不涉及具体逻辑电路结构等信息。一般用进程语句进行逻辑描述较多。,LIBRARY IEEE;,8位数值比较器,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX13 IS,PORT(A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);,G:OUT STD_LOGIC);,END EX13;,ARCHITECTURE EX13_A OF EX13 IS,BEGIN,PROCESS(A,B),BEGIN,IF A=B THEN G=1;,ELSE G=0;,END IF;,END PROCESS;,END EX13_A;,当两个输入数值相等时,输出G=1。,LIBRARY IEEE;,8位数值比较器,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX13 IS,PORT(A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);,G:OUT STD_LOGIC);,END EX13;,ARCHITECTURE EX13_A OF EX13 IS,BEGIN,PROCESS(A,B),BEGIN,IF A=B THEN G=1;,ELSE G=0;,END IF;,END PROCESS;,END EX13_A;,当两个输入数值不相等时,输出G=0。,LIBRARY IEEE;,8位数值比较器,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX13 IS,PORT(A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);,G:OUT STD_LOGIC);,END EX13;,ARCHITECTURE EX13_A OF EX13 IS,BEGIN,PROCESS(A,B),BEGIN,IF A=B THEN G=1;,ELSE G=0;,END IF;,END PROCESS;,END EX13_A;,在结构体中,对实体功能的描述没有设计到任何有关电路结构。结构体的行为描述是用一个进程语句“PROCESS(A,B)END PROCESS”来完成的。,6.3.2 结构体的数据流描述方式,数据流描述,明确描述了数据信号的流动路径、流动方向和流动结果。一般采用除进程语句外的其他并发语句描述。,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX16 IS,PORT(d0,d1,sel:IN STD_LOGIC;,q:OUT STD_LOGIC);,END EX16;,ARCHITECTURE EX16_A OF EX16 IS,SIGNAL TMP1,TMP2,TMP3:STD_LOGIC;,BEGIN,TMP1=d0 AND sel;,TMP2=d1 AND(NOT sel);,TMP3=TMP1 OR TMP2;,q=TMP3;,END EX16_A;,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX16 IS,PORT(d0,d1,sel:IN STD_LOGIC;,q:OUT STD_LOGIC);,END EX16;,ARCHITECTURE EX16_A OF EX16 IS,SIGNAL TMP1,TMP2,TMP3:STD_LOGIC;,BEGIN,TMP1=d0 AND sel;,TMP2=d1 AND(NOT sel);,TMP3=TMP1 OR TMP2;,q=TMP3;,END EX16_A;,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX16 IS,PORT(d0,d1,sel:IN STD_LOGIC;,q:OUT STD_LOGIC);,END EX16;,ARCHITECTURE EX16_A OF EX16 IS,SIGNAL TMP1,TMP2,TMP3:STD_LOGIC;,BEGIN,TMP1=d0 AND sel;,TMP2=d1 AND(NOT sel);,TMP3=TMP1 OR TMP2;,q=TMP3;,END EX16_A;,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX16 IS,PORT(d0,d1,sel:IN STD_LOGIC;,q:OUT STD_LOGIC);,END EX16;,ARCHITECTURE EX16_A OF EX16 IS,SIGNAL TMP1,TMP2,TMP3:STD_LOGIC;,BEGIN,TMP1=d0 AND sel;,TMP2=d1 AND(NOT sel);,TMP3=TMP1 OR TMP2;,q=TMP3;,END EX16_A;,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY EX16 IS,PORT(d0,d1,sel:IN STD_LOGIC;,q:OUT STD_LOGIC);,END EX16;,ARCHI
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服