
《第三章 VHDL基础》由会员分享,可在线阅读,更多相关《第三章 VHDL基础(76页珍藏版)》请在文档大全上搜索。
1、第三章第三章组合电路的组合电路的VHDLVHDL设计设计3.1 3.1 多路选择器及其多路选择器及其VHDLVHDL描述描述图图3-1 mux21a实体实体用用VHDLVHDL综合器直接综合出综合器直接综合出实现既定功能的逻辑函数实现既定功能的逻辑函数电路模型或元件图电路模型或元件图图图3-2 mux21a结构体结构体 【例例3-13-1】ENTITY mux21a IS PORT ( a, b, s : IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE bhv OF mux21a IS BEGINPROCESS (a,b,s) BEGI
2、N IF s = 0 THEN y = a ; ELSE y = b ; END IF; END PROCESS;END ARCHITECTURE bhv ; 实体:实体:描述了电路器描述了电路器件的外部情况及各信件的外部情况及各信号端口的基本性质号端口的基本性质结构体:结构体:描述电路描述电路器件的内部逻辑功器件的内部逻辑功能和电路结构能和电路结构3.1 3.1 多路选择器及其多路选择器及其VHDLVHDL描述描述【例例3-1】ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTU
3、RE bhv OF mux21a ISBEGIN PROCESS (a,b,s) -进程起始语句进程起始语句 BEGIN IF s = 0 THEN y = a ; ELSE y = b ; END IF; END PROCESS;END ARCHITECTURE bhv ; 必须以语句必须以语句“END END IFIF;”结束结束数据类型数据类型端口模式端口模式红色是关键字红色是关键字不分大小写不分大小写标识符,不区标识符,不区分大小写分大小写3.1 3.1 多路选择器及其多路选择器及其VHDLVHDL描述描述注释符注释符敏感信号表敏感信号表当某一敏感信号当某一敏感信号发生变化时,将启发生
4、变化时,将启动此进程语句动此进程语句IN:输入端口:输入端口端口模式:端口模式:OUT:输出端口:输出端口INOUT:输入输出双向端口:输入输出双向端口BUFFER:缓冲端口:缓冲端口3.1 3.1 多路选择器及其多路选择器及其VHDLVHDL描述描述3.1 3.1 多路选择器及其多路选择器及其VHDLVHDL描述描述【例例】 ENTITY mux21a ISPORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT;BEGIN d = a AND
5、(NOT S); e = b AND s; y = d OR e;END ARCHITECTURE one; 实体实体结构体结构体图图3-3 mux21a功能时序波形功能时序波形 3.1 3.1 多路选择器及其多路选择器及其VHDLVHDL描述描述3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 I113coasob1001010110001100cosobanotxnor2and2【例例3-2】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so
6、 : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = a XOR b; co = a AND b ; END ARCHITECTURE fh1; 实体实体结构体结构体设计库和程设计库和程序包调用序包调用3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 ENTITYENTITY e_name e_name ISIS PORTPORT ( p_name : port_m data_type; ( p_name : po
7、rt_m data_type; . . p_namei : port_mi data_type ); p_namei : port_mi data_type );END ENTITYEND ENTITY e_name; e_name; 1. 1. 实体实体: : 描述电路器件的端口构成和信号属性描述电路器件的端口构成和信号属性 实体名实体名实体名实体名端口信号名端口信号名数据类型:必须预先定数据类型:必须预先定义好要使用的数据类型,义好要使用的数据类型,如如bit, std_logic, bit, std_logic, boolean, integerboolean, integer端口模式:
8、定义端口数据的流向,端口模式:定义端口数据的流向,一般可综合的端口有四种,一般可综合的端口有四种,ININ,OUTOUT,INOUTINOUT,BUFFERBUFFER红色是关键字红色是关键字不分大小写不分大小写必须包含实必须包含实体和结构体体和结构体3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 2. 2. 结构体表达结构体表达 ARCHITECTUREARCHITECTURE arch_name arch_name OFOF e_name e_name ISIS 说明语句说明语句 BEGINBEGIN ( (功能描述语句功能描述语句) )END ARCHITECTUREEND
9、 ARCHITECTURE arch_name arch_name ; 红色是描述结红色是描述结构体的关键字构体的关键字结构体名结构体名实体名实体名说明和定义数据对象、说明和定义数据对象、数据类型、元件调用数据类型、元件调用声明等,不是必需的。声明等,不是必需的。结构体名结构体名3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 VHDLVHDL基本构成基本构成VHDL设计设计VHDL文件文件程序包(程序包(Packages)声明在设计或实体中将用到的常数,数据类型,声明在设计或实体中将用到的常数,数据类型,元件及子程序等元件及子程序等实体(实体(Entities) 声明到其他实体及
10、其声明到其他实体及其他设计的接口,即定义他设计的接口,即定义本设计的输入本设计的输入/出端口出端口结构体结构体(Architectures) 定义了实体的实现。即定义了实体的实现。即电路的具体描述电路的具体描述结构体(结构体(ArchitectureArchitecture)结构体(结构体(Architecture)声明区声明区(Declarations)信号声明;声明用于该结构体的类型,信号、常数,元件,子程序信号声明;声明用于该结构体的类型,信号、常数,元件,子程序.并发语句并发语句信号赋值信号赋值(Signal Assignments计算结果,并赋值给信号计算结果,并赋值给信号元件例化元
11、件例化(Component Instantiations)调用另一个实体所描述的电路。调用另一个实体所描述的电路。即元件调用即元件调用过程调用过程调用(Procedure Calls调调用一个预先定义好的一个算用一个预先定义好的一个算法。法。进程进程(Processes)定义一个新算法实现电路功定义一个新算法实现电路功能。在过程中赋值顺序语句能。在过程中赋值顺序语句。语句按放置的顺序执行。语句按放置的顺序执行。3. 3. 标准逻辑位数据类型标准逻辑位数据类型 STD_LOGIC STD_LOGIC BITBIT数据类型定义:数据类型定义: TYPE BIT IS(0,1); -TYPE BIT
12、 IS(0,1); -只有两种取值只有两种取值STD_LOGICSTD_LOGIC数据类型定义:数据类型定义: TYPE STD_LOGIC IS TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-); -(U,X,0,1,Z,W,L,H,-); -有有9 9 - -种取值种取值 3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 强强XX“强强”未知的(综合后为不确定值)未知的(综合后为不确定值)0“0“强强”逻辑逻辑0 0 (综合后为(综合后为0 0)1“1“强强”逻辑逻辑1 1 (综合后为(综合后为1 1)Z Z 高阻态(综合后为三态缓冲器)高阻态(综合后
13、为三态缓冲器)W“W“弱弱”未知的未知的L“L“弱弱”逻辑逻辑0 0H“H“弱弱”逻辑逻辑1 1- - 忽略忽略弱弱可综合可综合驱动能力驱动能力驱动能力驱动能力UU 未初始化的未初始化的 其它五种不可综合的值主要用于其它五种不可综合的值主要用于仿真仿真。 3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 当两个或两个以上数字逻辑电路的输出端连接在同一当两个或两个以上数字逻辑电路的输出端连接在同一个节点上时,这个节点上的电平应该是什么呢?个节点上时,这个节点上的电平应该是什么呢? 既与两者当前的既与两者当前的输出电平值输出电平值有关,也与两者的有关,也与两者的驱动能驱动能力强弱力强弱
14、有关有关 。 X01ZWLH_X XXXXXXXX0 X0X0000X1 XX11111XZ X01ZWLHXW X01WWWWXL X01LWLWXH X01HWWHX_ XXXXXXXX【例例3-2】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = a XOR b; co = a AND b ;
15、 END ARCHITECTURE fh1; 4.4.赋值符号和逻辑操作符赋值符号和逻辑操作符赋值符号,两边信号的赋值符号,两边信号的数据类型必须一致数据类型必须一致赋值操作并非立即发赋值操作并非立即发生,要经历一个模拟生,要经历一个模拟器的最小分辨时间器的最小分辨时间3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 操作对象的数据类型有操作对象的数据类型有BIT、BOOLEAN、STD_LOGIC 3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 赋值符号:赋值符号:逻辑操作符逻辑操作符5. 5. 设计库和标准程序包设计库和标准程序包 LIBRARY WORK ;LI
16、BRARY STD ;USE STD.STANDARD.ALL ; LIBRARY LIBRARY ;USE USE .ALL .ALL ; LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; 工作库工作库标准库标准库可综合可综合默认打开默认打开程序包程序包类类型定义、函数、型定义、函数、过程、常量等过程、常量等定义定义STD_LOGIC数据类型数据类型3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 6. 6. 文件取名和存盘文件取名和存盘 文件后缀扩展名必须是文件后缀扩展名必须是“.vhd” .vhd” 如:如:adder_f.vhd 建议:
17、程序的文件名尽可能与该程序的实建议:程序的文件名尽可能与该程序的实 体名相同。体名相同。3.2 3.2 半加器及其半加器及其VHDLVHDL描述描述 7. 7. 规范的程序书写和存盘规范的程序书写和存盘3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3.1 43.3.1 4选选1 1多路选择器及多路选择器及CASECASE语句表达方式语句表达方式LIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX41A IS PORT (a,b,c,d,s0,s1 : IN STD_LOGIC; y : OUT STD_
18、LOGIC); END ENTITY MUX41A; ARCHITECTURE bhv OF MUX41A is SIGNAL s : STD_LOGIC_VECTOR(1 DOWNTO 0) ; BEGIN S y y y y NULL ; END CASE; END PROCESS; END bhv; 器件内部节点,不器件内部节点,不必定义端口模式必定义端口模式关键词关键词VHDL中,被定义中,被定义的标识符必须定的标识符必须定义为某类数据对象,义为某类数据对象,某种数据类型某种数据类型数据对象有数据对象有3 3类:信号(类:信号(SIGNALSIGNAL)、变量)、变量(VARIABLE
19、VARIABLE)、常量()、常量(CONSTANTCONSTANT)标准逻辑位与矢量标准逻辑位与矢量CASE ISWhen = ; ;When = ; ;.WHEN OTHERS = ;END CASE ; 不是操作符,它的含义相当不是操作符,它的含义相当于于THEN(或(或“于是于是”)3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3.2 CASE3.3.2 CASE语句语句CASE语句使用中注意以下几点:语句使用中注意以下几点: WHEN条件语句中的选择值或标识符所代表的条件语句中的选择值或标识符所代表的 值必须在表达式的取值范围内。值必须在表达
20、式的取值范围内。 除非所有条件语句中的选择值能完全覆盖除非所有条件语句中的选择值能完全覆盖 CASE语句中表达式的取值,否则最末一个条件语句中表达式的取值,否则最末一个条件 句中的选择必须加上句中的选择必须加上WHEN OTHERS = ; CASE语句中的选择值只能出现一次,不允许语句中的选择值只能出现一次,不允许 由相同选择值的条件语句出现。由相同选择值的条件语句出现。 CASE语句执行中必须选中,且只能选中所列语句执行中必须选中,且只能选中所列 条件语句中的一条。条件语句中的一条。3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 选择值选择值 |选择值选
21、择值 单个普通数值,如单个普通数值,如6。 数值选择范围,如数值选择范围,如(2 TO 4)(2 TO 4),表示取值为,表示取值为2 2、3 3或或4 4。 并列数值,如并列数值,如3 3 5 5,表示取值为,表示取值为3 3或者或者5 5。 混合方式,以上三种方式的混合。混合方式,以上三种方式的混合。 多条件选择值的一般表达式:多条件选择值的一般表达式:选择值的选择值的4 4种不同的表达式:种不同的表达式:3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3 43.3
22、4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3.3 IEEE3.3.3 IEEE库预定义标准逻辑位与库预定义标准逻辑位与 B = 01100010 ; - B(7)为为 0 B(4 DOWNTO 1) = 1101 ; - B(4)为为 1 B(7 DOWNTO 4) = A ; - B(6)等于等于 A(2) SIGNAL C :BIT_VECTOR(3 DOWNTO 0); B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4) 定义在定义在STD_LOGIC_116
23、4STD_LOGIC_1164程序包中程序包中 可以表达电路中并列的多通道端口或节点,或者总线可以表达电路中并列的多通道端口或节点,或者总线BUSBUS 必须注明其数组宽度,即位宽必须注明其数组宽度,即位宽3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3.4 其他预定义标准数据类型其他预定义标准数据类型 无符号型无符号型(UNSIGNED)有符号型有符号型(SIGNED)小整型小整型(SMALL_INT) LIBRARY IEEE ;USE IEEE.STD_LOIGC_ARITH.ALL ; 3.3 43.3 4选选1 1多路选择器及其多路选择器及其
24、VHDLVHDL描述描述 1. 无符号数据类型无符号数据类型(UNSIGNED TYPE) UNSIGNED(1000) VARIABLE var : UNSIGNED(0 TO 10) ;SIGNAL sig : UNSIGNED(5 downto 0) ; 2. 有符号数据类型有符号数据类型(SIGNED TYPE) SIGNED(0101) 代表代表 +5,5SIGNED(1011) 代表代表 5 VARIABLE var :SIGNED(0 TO 10); 3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3.6 3.3.6 并置操作符并置操作符
25、SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;.a = 1 0 d(1) 1 ; - 元素与元素并置,并置后的数元素与元素并置,并置后的数 -组长度为组长度为4.IF a d = 101011 THEN . - 在在IF条件句中可以使用并条件句中可以使用并 -置符置符 表示将操作数或是数组合并起来形成新的数组。表示将操作数或是数组合并起来形成新的数组。3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3.5 3.3.5 信号定义和数据对
26、象信号定义和数据对象练习:用练习:用CASECASE语句描述半加器语句描述半加器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ; BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ;
27、 END CASE; END PROCESS; END ARCHITECTURE fh1 ; 3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3.7 43.3.7 4选选1 1多路选择器的多路选择器的VHDLVHDL不同描述方式不同描述方式标准逻辑位与矢量标准逻辑位与矢量并行语句并行语句3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 1. WHEN_ELSE1. WHEN_ELSE条件信号赋值语句条件信号赋值语句 赋值目标赋值目标 =
28、= 表达式表达式 WHEN WHEN 赋值条件赋值条件 ELSEELSE 表达式表达式 WHEN WHEN 赋值条件赋值条件 ELSEELSE . . 表达式表达式 ; z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c ; 当当p1p1和和p2p2同时为同时为11时,时,z z的赋值的赋值?a 条件信号赋值语句中的第一句具有最高赋值优先级条件信号赋值语句中的第一句具有最高赋值优先级3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 必须有必须有elseelse条件测试有顺序性条件测试有顺序性允许有条件重叠现象允许有条件重叠现
29、象练习:用练习:用WHEN_ELSEWHEN_ELSE条件信号赋值条件信号赋值语句描述一个二选一选择器语句描述一个二选一选择器 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ; 3.3 43.3 4选选1 1多路选择器及其多路选择器及其VHDLVHDL描述描述 3. 选择信号赋值语句选择信号赋值语句 WITH 选择
30、表达式选择表达式 SELECT 赋值目标信号赋值目标信号 ain,b=bin,co=d,so=e); u2 : h_adder PORT MAP(a=e, b=cin, co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1; 3.4 3.4 全加器及其全加器及其VHDLVHDL表述表述 3.4.1 3.4.1 全加器设计及例化语句应用全加器设计及例化语句应用【例例3-10】 LIBRARY IEEE ; -或门逻辑描述或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY
31、or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c 连接端口名连接端口名,.); 声明(定义)语句声明(定义)语句 元件例化语句元件例化语句 端口列表将元件预定义的端口和实端口列表将元件预定义的端口和实例化时的实际端口关联起来。例化时的实际端口关联起来。3.4 3.4 全加器及其全加器及其VHDLVHDL表述表述 3.4.2 VHDL3.4.2 VHDL例化语句例化语句在一个设计中调用一个模为在一个设计中调用一个模为1010的计数器
32、的计数器cntm10cntm10和和一个七段译码器一个七段译码器decode47decode47构成如下电路:构成如下电路:元件及元件例化元件及元件例化顶层文件为顶层文件为cntvh10cntvh10 library IEEE; use IEEE.std_logic_1164.all; entity cntvh10 IS port ( Rd, ci, clk : in std_logic; co : out std_logic; qout : out std_logic_vector(6 downto 0); end cntvh10;元件及元件例化元件及元件例化ARCHITECTURE arc
33、h OF cntvh10 IS -元件声明元件声明 Component decode47 is port (adr : in std_logic_vector(3 downto 0); decodeout : out std_logic_vector(6 downto 0); end Component; Component cntm10 is port ( ci : IN std_logic; nreset: IN std_logic; clk : IN std_logic; co : out std_logic; qcnt: buffer std_logic_vector(3 downto
34、 0); end Component;signal qa : std_logic_vector(3 downto 0);BEGIN u1: cntm10 port map (ci, Rd, clk, co, qa); -元件例化元件例化 u2: decode47 port map (decodeout = qout, adr = qa);END arch;元件及元件例化元件及元件例化u1: cntm10 port map (ci, Rd, clk, co, qa); -元件例化元件例化 u2: decode47 port map (decodeout = qout, adr = qa);元件例
35、化时的端口列表可按元件例化时的端口列表可按位置关联方法位置关联方法,如,如u1u1,这种方法要求的实参(该设计中连接到端口的实际这种方法要求的实参(该设计中连接到端口的实际信号,如信号,如ci, Rdci, Rd等)所映射的形参(元件的对外接等)所映射的形参(元件的对外接口信号)的位置同元件声明中一样;口信号)的位置同元件声明中一样;元件及元件例化元件及元件例化2. 2. 元件例化时的端口列表也可按元件例化时的端口列表也可按名称关联方法名称关联方法映射实映射实参与形参,如参与形参,如u2u2。格式为(形参。格式为(形参1=1=实参实参1 1,形参,形参2=2=实参实参2 2,.)。这种方法与位
36、置无关。)。这种方法与位置无关。3.4 3.4 全加器及其全加器及其VHDLVHDL表述表述 3.4.3 83.4.3 8位加法器设计及算数操作符应用位加法器设计及算数操作符应用重载函数重载函数3.4 3.4 全加器及其全加器及其VHDLVHDL表述表述 3.4.3 83.4.3 8位加法器设计及算数操作符应用位加法器设计及算数操作符应用3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.1 3.5.1 统计位矢中含统计位矢中含1 1个数的电路模块设计个数的电路模块设计变量,变量, 用于用于数据的暂存数据的暂存变量赋值变量赋值循环语句循环语句没有没有else(1) 单个单个L
37、OOP语句,其语法格式如下:语句,其语法格式如下: LOOP标号:标号: LOOP 顺序语句顺序语句 END LOOP LOOP标号标号 ; . L2 : LOOP a := a+1; EXIT L2 WHEN a 10 ; - 当当a大于大于10时跳出循环时跳出循环 END LOOP L2; .3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.2 for_loop3.5.2 for_loop循环语句用法循环语句用法LOOP标号标号:FOR 循环变量循环变量 IN 循环次数范围循环次数范围 LOOP 顺序语句顺序语句END LOOP LOOP标号标号; 是是临时临时变量,属
38、变量,属LOOPLOOP语句的语句的局部局部变量,变量,不必先定义,每不必先定义,每执行一次执行一次LOOPLOOP自动加自动加1 1只能作为只能作为赋值源赋值源,不能被赋值,不能被赋值,由由LOOPLOOP语句自动定义语句自动定义(2) FOR_LOOP语句,语法格式如下:语句,语法格式如下: LOOPLOOP语句范围内语句范围内不要再使用不要再使用与此循环变量与此循环变量同名同名的标识符的标识符LOOPLOOP循环的范围最循环的范围最好以好以常数常数表示表示3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.2 for_loop3.5.2 for_loop循环语句用法循环
39、语句用法3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.3 3.5.3 移位相加型乘法器的移位相加型乘法器的VHDLVHDL表述方法表述方法例例3-133-13LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY MULT4B IS GENERIC (S: INTEGER := 4);-定义参数定义参数S为整数类型为整数类型4PORT (R : OUT STD_LOGIC_VECTOR (2*S DOWNT
40、O 1); A, B : IN STD_LOGIC_VECTOR (S DOWNTO 1); END ENTITY MULT4B; 参数传递说明语句参数传递说明语句ARCHITECTURE ONE OF MULT4B is SIGNAL A0 : STD_LOGIC_VECTOR (2*S DOWNTO 1); BEGIN A0 0); FOR i IN 1 TO S LOOP IF (B(i)=1) THEN R1:= R1+TO_STDLOGICVECTOR(TO_BITVECTOR(A0) SLL (i-1); END IF; END LOOP; R = R1; END PROCESS;
41、 END ARCHITECTURE ONE ; 数据类型转换函数数据类型转换函数省略赋值操作符省略赋值操作符3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.4 GENERIC3.5.4 GENERIC参数定义语句参数定义语句 GENERIC( 常数名常数名 : 数据类型数据类型 := 设定值设定值 ;常数名常数名 : 数据类型数据类型 := 设定值设定值 ) ; 类属值可由设计实类属值可由设计实体外部提供体外部提供放在实体或块结构体放在实体或块结构体前的说明部分前的说明部分常数常数只能从设计只能从设计实体的内部实体的内部得到赋值,且得到赋值,且不能不能改变改变,而,而类属
42、值类属值可以由设计可以由设计实体外部实体外部提供。提供。 3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.5 3.5.5 整数数据类型整数数据类型Q : BUFFER NATURAL RANGE 15 DOWNTO 0; 整数包含正整数、负整数和零。整数包含正整数、负整数和零。 在在VHDLVHDL中,整数用中,整数用3232位有符号数表示。位有符号数表示。 通常通常VHDLVHDL仿真器将整数类型作为有符号数处理,仿真器将整数类型作为有符号数处理, 而而VHDLVHDL综合器则将整数作为无符号数处理。综合器则将整数作为无符号数处理。 在使用整数时,在使用整数时,VHDL
43、VHDL综合器要求必须使用综合器要求必须使用RANGERANGE 子句所定义的数限定范围。子句所定义的数限定范围。 自然数类型自然数类型NATURALNATURAL是整数类型的一个子类型。是整数类型的一个子类型。 Q : BUFFER INTEGER RANGE 15 DOWNTO 0; 3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.6 3.5.6 省略赋值操作符省略赋值操作符 SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a
44、1 := (OTHERS=0) ; d1 e(3),3=e(5), OTHERS=e(1) ); f = e(1) & e(5) & e(1) & e(3) & e(1) ; d1 1,4=1, OTHERS=0 ); 3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.7 3.5.7 移位操作符移位操作符SLL、SRL、SLA、SRA、ROL、ROR 标识符标识符 移位操作符移位操作符 移位位数移位位数 ; 必须是必须是BITBIT、BIT_VECTORBIT_VECTOR、BOOLEANBOOLEAN逻辑移位,补逻辑移位,补0算术移位,补首位算术移位,补首位循环移位循环移
45、位3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.7 3.5.7 移位操作符移位操作符3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.8 3.5.8 各类运算操作对数据类型的要求各类运算操作对数据类型的要求对于乘法操作,操作数是对于乘法操作,操作数是STD_LOGIC_VECTORSTD_LOGIC_VECTOR时,时,必须指定是无符号还是有符号。必须指定是无符号还是有符号。对于加法操作,操作数是对于加法操作,操作数是STD_LOGIC_VECTORSTD_LOGIC_VECTOR时,时,总是认定为无符号。总是认定为无符号。同同3-153-15同同3
46、-163-16类类 型型操作符操作符功功 能能操作数数据类型操作数数据类型算术操作符算术操作符 + +加加 整数整数 减减 整数整数 & &并置并置 一维数组一维数组 * *乘乘 整数和实数整数和实数( (包括浮点数包括浮点数) ) / /除除 整数和实数整数和实数( (包括浮点数包括浮点数) )MOD取模取模 整数整数 REM取余取余 整数整数 SLL逻辑左移逻辑左移 BIT或布尔型一维数组或布尔型一维数组 SRL逻辑右移逻辑右移 BIT或布尔型一维数组或布尔型一维数组 SLA算术左移算术左移 BIT或布尔型一维数组或布尔型一维数组 SRA算术右移算术右移 BIT或布尔型一维数组或布尔型一维
47、数组 ROL逻辑循环左移逻辑循环左移 BIT或布尔型一维数组或布尔型一维数组 ROR逻辑循环右移逻辑循环右移 BIT或布尔型一维数组或布尔型一维数组 *乘方乘方 整数整数 ABS取绝对值取绝对值 整数整数类类 型型操作符操作符功功 能能操作数数据类型操作数数据类型关系操作符关系操作符 = =等于等于任何数据类型任何数据类型 /= /=不等于不等于任何数据类型任何数据类型 大于大于枚举与整数类型,及对应的一维数组枚举与整数类型,及对应的一维数组 = = =大于等于大于等于枚举与整数类型,及对应的一维数组枚举与整数类型,及对应的一维数组逻辑操作符逻辑操作符 AND与与BIT,BOOLEAN,STD
48、_LOGIC OR或或BIT,BOOLEAN,STD_LOGIC NAND与非与非BIT,BOOLEAN,STD_LOGIC NOR或非或非BIT,BOOLEAN,STD_LOGIC XOR异或异或BIT,BOOLEAN,STD_LOGIC XNOR异或非异或非BIT,BOOLEAN,STD_LOGIC NOT非非BIT,BOOLEAN,STD_LOGIC符号操作符符号操作符 +正正 整数整数 负负 整数整数运算符运算符优先级优先级NOT,ABS,* 最高优先级最高优先级* ,/ ,MOD, REM+(正号正号), (负号负号) + , , & SLL, SLA, SRL, SRA, ROL,
49、 ROR =, /=, , , = AND, OR, NAND, NOR, XOR, XNOR最低优先级最低优先级 严格遵循在基本操作符间操作数是同数据类型。严格遵循在基本操作符间操作数是同数据类型。 严格遵循操作数的数据类型必须与操作符所要严格遵循操作数的数据类型必须与操作符所要 求的数据类型完全一致。求的数据类型完全一致。3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.8 3.5.8 各类运算操作对数据类型的要求各类运算操作对数据类型的要求3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.9 3.5.9 数据类型转换函数数据类型转换函数3.5 3.
50、5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.9 3.5.9 数据类型转换函数数据类型转换函数3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.9 3.5.9 数据类型转换函数数据类型转换函数3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.10 GENERIC3.5.10 GENERIC参数传递映射语句参数传递映射语句GENERIC MAP(类属表类属表) 描述相应元件类属参数间的衔接和传送方式。描述相应元件类属参数间的衔接和传送方式。 用于设计从外部端口改变元件内部参数或结构用于设计从外部端口改变元件内部参数或结构 规模的元件,称类属元件。规模的元件,称类属元件。 3.5 3.5 乘法器及其乘法器及其VHDLVHDL表述表述 3.5.10 GENERIC3.5.10 GENERIC参数传递映射语句参数传递映射语句