版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 学习子领域学习子领域2:2:数字电路的数字电路的EDAEDA设计设计 项目(学习情境)3 数据选择器电路设计 2资讯分析任务、确定数据选择器电路的功能和技术要求 3任务要求: 使用EDA实验箱上开关设置模块的K4、K3、K2、K1开关作为四选一数据选择器的4个输入,K8、K7开关作为四选一数据选择器的两个选择控制端。实验箱上输出指示模块中的OUT1红色LED(发光二极管)作为四选一数据选择器的输出。 数据选择器工作原理 数据选择器是从多路输入数据中选择一路,送到数据总线上的电路,它的作用类似于一个单刀多掷开关,其示意图,如下图所示。4选1数据选择器逻辑图 6 (1)VHDL程序的基本结构
2、(2)VHDL程序的库使用与实体部分描述方法 (3)VHDL程序的结构体部分描述方法 (4)when_else并行语句与with_select并行语句以及在数据选择器电路中的应用决策计划 7基本结构包括基本结构包括: 实体(Entity) 结构体(Architecture) 配置(Configuration) 库(Library)、程序包(Package)一、一、VHDLVHDL程序基本结构程序基本结构8 库、程序包 实体(Entity) 结构体 (Architecture) 进程 或其它并行结构 配置(Configuration)91 1、实体(说明)、实体(说明) 实体(说明): 定义系统
3、的输入输出端口 语法: ENTITY IS Generic Declarations Port DeclarationsEND ; (1076-1987 version)END ENTITY ; ( 1076-1993 version)10(1 1)类属说明)类属说明 类属说明: 确定实体或组件中定义的局部常数。模 块化设计时多用于不同层次模块之间信息的 传递。可从外部改变内部电路结构和规模。 类属说明必须放在端口说明之前。 Generic ( 常数名称:类型 := 缺省值 常数名称:类型 := 缺省值 );11类属常用于定义: 实体端口的大小、 设计实体的物理特性、 总线宽度、 元件例化的数
4、量等。例: entity mck is generic(width: integer:=16); port(add_bus:out std_logic_vector (width-1 downto 0); 12例:2输入与门的实体描述 entity and2 is generic(risewidth: time:= 1 ns; fallwidth: time:= 1 ns); port(a1: in std_logic; a0: in std_logic; z0: out std_loigc); end entity and2; 注:数据类型 time 用于仿真模块的设计。 综合器仅支持数据类
5、型为整数的类属值。13其中,端口模式: in: 输入型,此端口为只读型。 out: 输出型,只能在实体内部对其赋值。 inout:输入输出型,既可读也可赋值。 buffer: 缓冲型,与 out 相似,但可读。Port ( 端口名称,端口名称:端口模式 数据类型; 端口名称,端口名称:端口模式 数据类型 );(2 2)端口声明)端口声明端口声明:确定输入、输出端口的数目和类型。14out 和 buffer 的区别:inout 和 buffer 的区别:15 指端口上流动的数据的表达格式。为预先定义好的数据类型。 如:bit、bit_vector、integer、 std_logic、std_l
6、ogic_vector 等。例:entity nand2 is entity m81 is port ( port( a,b:in bit; a:in bit_vector(7 downto 0); z: out bit sel:in bit_vector(2 downto 0); ) ; b:out bit); end entity nand2; end entity m81;(3 3)数据类型:)数据类型:16作用:定义系统(或模块)的行为、元件及内部 的连接关系,即描述其逻辑功能。两个组成部分: 对数据类型、常数、信号、子程序、元件等 元素的说明部分。 以各种不同的描述风格描述的系统的逻
7、辑功 能实现的部分。常用的描述风格有:行为描 述、数据流描述、 结构化描述。2、结构体、结构体17结构体结构体说明结构体功能描述 常数说明 数据类型说明 信号说明 例化元件说明 子程序说明 块语句 进程语句 信号赋值语句 子程序调用语句 元件例化语句 18实体与结构体的关系:设计实体结构体1结构体2结构体3结构体n。 一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。19注:同一实体的结构体不能同名。定义语句中的 常数、信号不能与实体中的端口同名。architecture 结构体名称 of 实体名称 is 说明语句内部信号、常数、 数据类型、子程序(函数、过程)、 元件
8、等的说明; begin 并行处理(功能描述)语句; end architecture 结构体名称;结构体的语法:20例:结构体中错误的信号声明21例:一个完整描述(3 bit 计数器)223bit计数器的等效描述(out与buffer的区别):233 3、配置、配置设计实体结构体1结构体2结构体3结构体n。一个设计实体的多种实现方式配置:从某个实体的多种结构体描述方式中选择 特定的一个。24configuration 配置名 of 实体名 is for 选配结构体名 end for ;end 配置名;简单配置的语法:25 library ieee; use ieee.std_logic_116
9、4.all; entity nand is port(a: in std_logic; b: in std_logic; c: out std_logic); end entity nand; architecture art1 of nand is begin c=not (a and b); end architecture art1;例:一个与非门不同实现方式的配置如下: 26architecture art2 of nand is begin c=1 when (a=0) and (b=0) else 1 when (a=0) and (b=1) else 1 when (a=1) a
10、nd (b=0) else 0 when (a=1) and (b=1) else 0; end architecture art2;27configuration first of nand is for art1; end for; end first; configuration second of nand is for art2 end for; end second;28例:一个对计数器实现多种形式的配置如下:2930程序包:程序包: 已定义的常数、数据类型、元件调用说明、子程序的一个集合。 目的:方便公共信息、资源的访问和共享。库:库: 多个程序包构成库。 4 4、 程序包、库程
11、序包、库31程序包说明的内容: 常量说明; VHDL数据类型说明; 元件说明; 子程序说明;程序包的结构包括: 程序包说明(包首) 程序包主体(包体)32包声明项可由以下语句组成: use 语句(用来包括其它程序包); 类型说明;子类型说明;常量说明; 信号说明;子程序说明;元件说明。 package 程序包名 is 包说明项 end 程序包名;(1 1)程序包说明(包首)程序包说明(包首)语法:33例:程序包说明34包体说明项可含: use 语句;子程序说明;子程序主体;类型说明;子类型说明;常量说明。 package body 程序包名 is 包体说明项 end 程序包名;(2 2)程序包
12、包体)程序包包体程序包的内容:子程序的实现算法。包体语法:35程序包首与程序包体的关系: 程序包体并非必须,只有在程序包中要说明子程序时,程序包体才是必须的。 程序包首可以独立定义和使用。如下: 36package seven is subtype segments is bit_vector(0 to 6); type bcd is range 0 to 9;end seven; library work;use work.seven.all;entity decoder is port(input: in bcd; drive: out segments);end decoder;arch
13、itecture art of decoder isbegin37 with input select drive=B“1111110” when 0, B“0110000” when 1, B“1101101” when 2, B“1111001” when 3, B“0110011” when 4, B“1011011” when 5, B“1011111” when 6, B“1110000” when 7, B“1111111” when 8, B“1111011” when 9, B“0000000” when others;end architecture art;abcdefg3
14、8(3 3)库的种类)库的种类 VHDL库可分为 5种: 1 1)IEEE IEEE 库库 定义了四个常用的程序包: std_logic_1164 std_logic_1164 (std_logic types & related functions) std_logic_arithstd_logic_arith (arithmetic functions) std_logic_signed std_logic_signed (signed arithmetic functions) std_logic_unsigned std_logic_unsigned (unsigned arithme
15、tic functions) 39 Type STD_LOGIC: 9 logic value system (U, X, 0, 1, Z, W, L, H, -) W, L, H” weak values (Not supported by Synthesis) X - (not x)used for unknown Z - (not z) used for tri-state - Dont Care 40 2 2)STD STD 库(默认库)库(默认库) 库中程序包为:standard, 定义最基本的数据类型: Bit,bit_vector ,Boolean, Integer,Real,a
16、nd Time 注:Type Bit 2 logic value system (0, 1) 3 3)面向)面向ASICASIC的库的库 4 4)WORKWORK库(默认库)库(默认库) 5 5)用户定义库)用户定义库41(4 4)库及程序包的使用)库及程序包的使用 库及程序包的说明总是放在实体单元前面,默认库及程序包可不作说明。用关健字library 说明要使用的库,用关健字 use 说明要使用的库中的程序包。 库及程序包的作用范围:仅限于所说明的设计实体。 每一个设计实体都必须有自已完整的库及程序包说明语句。42 库、程序包 实体(Entity) 结构体 (Architecture) 进程
17、 或其它并行结构 配置(Configuration)43库的使用语法:程序包的使用有两种常用格式: 例: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.conv_integer; library 库名; use 库名程序包名项目名 use 库名程序包名All;44四类语言要素:四类语言要素: 数据对象(Data Object) 数据类型(Data Type) 操作数(Operands) 操作符(Operator)二、二、 VHDLVHDL语言要素语言要素451 1、VHDLVHDL文字规则文字规则(
18、1)数字型文字 1)整数文字:十进制整数 如:5,678,156E2(=15600), 45_234_287 (=45234287) 2)实数文字:带小数的十进制数 如:23.34,2.0,44.99E-2(=0.4499) 8_867_551.23_909(8867551.23909)46 3)以数制基数表示的文字 格式: 如:10#170#(=170) 2#1111_1110#(=254) 16#E#E1(=2#1110_0000# =224) 或:(=1416=224) 16#F.01#E+2 (=(15+1/(1616)1616=3841.00) 基数#数字文字#E指数47 4)物理量
19、文字 如:60 s、100 m、 177 mA 注:整数可综合实现; 实数一般不可综合实现; 物理量不可综合实现;48(2)字符串型文字(文字串和数字串) 按字符个数多少分为: 字符:用单引号引起来的ASCII字符,可以 是数值,也可以是符号或字母。 如:A,*,Z 字符串:用双引号引起来的一维字符数组49字符串分为: 1)文字字符串:“文字” 如:“ERROR”, “XXXXXXXX”, “ZZZZZZZZ”, “X”, “BOTH S AND Q EQUAL TO L”。 502)数位字符串: 称为位矢量,代表二进制、八进制、十六进 制的数组。其位矢量的长度为等值的二进制数的 位数。 格式
20、: 其中基数符号有三种: B:二进制基数符号。 O:八进制基数符号,每一个八进制数 代表一个3位的二进制数。基数符号 “数值”51 X:十六进制基数符号,每一个十六进制数代表 一个4位的二进制数。 如: B“1_1101_1110”:二进制数数组,长度为9 O“34” : 八进制数数组,长度为6 X“1AB”: 十六进制数数组,长度为12 52 基本标识符的要求(87标准): 以英文字母开头; 不连续使用下划线“_”; 不以下划线“_”结尾; 由26个大小写英文字母、数字0-9及 下划线“_”组成的字符串。 (3 3)标识符)标识符 定义常数、变量、信号、端口、子程序或 参数的名字。53基本标
21、识符中的英文字母不分大小写;VHDL的保留字不能作为标识符使用。 合法标识符_Decoder_1、2FFT、Sig_#N、Not-Ack、ALL_RST_、data_BUS、return、entitymy_counter、Decoder_1、FFT、Sig_N、Not_Ack、State0、entity1不合法标识符54扩展标识符(93标准): 以反斜杠来界定,免去了87标准中基本标识符的一些限制。 可以以数字打头, 允许包含图形符号, 允许使用VHDL保留字, 区分字母大小写等。 如:74LS163、 Sig_#N、 entity、ENTITY55(4)下标名及下标段名 下标名:用于指示数组
22、型变量或信号的某一个 元素。 格式: 下标段名:用于指示数组型变量或信号的某一 段元素。 格式: 如:a : std_logic_vector(7 downto 0) a(7), a(6) a(0) a(7downto0), a(7 downto 4), a(5 downto 3) 标识符(表达式)标识符(表达式 to/downto 表达式)562 2、数据对象、数据对象 三种对象:常量(Constant) 变量(Variable) 信号(Signal) 三种对象的物理含义: 常量代表数字电路中的电源、地、恒定逻 辑值等常数; 变量代表暂存某些值的载体,常用于描述 算法; 信号代表物理设计中的
23、某一条硬件连接线, 包括输入、输出端口。57三种对象的特点及说明场合: 信号:全局量, 用于architecture、 package、entitiy。 变量:局部量,用于process、function、 procedure。 常量:全局量,可用于上面两种场合。58(1 1)常量说明)常量说明 常量说明:对某一个常量名赋予一个固定的值。 格式: 例: constant data:bit_vector(3 downto 0):=“1010” constant width: integer: = 8; constant x: new_bit: = x; 常量数据类型必须与表达式的数据类型一致。
24、constant 常数名:数据类型:= 表达式;59常量的可视性(作用范围): 库、程序包 实体(Entity) 结构体1 进 程1 结构体2 进 程2 常量是全局量,其作用范围取决于常量被定义的位置。60(2 2)变量说明)变量说明 变量是一个局部量,只能在进程和子程序中定义、使用。其作用范围仅限于定义了变量的进程和子程序中。格式:例: variable a, b : bit; variable count:integer range 0 to 255:= 10; 变量的初值可用于仿真,但综合时被忽略。variable 变量名:数据类型 约束条件:= 表达式;61(3 3)信号说明)信号说明
25、 电子硬件系统运行的基本特性: 各部分电路工作的并行特性; 信号传输过程中的延时特性; 多驱动源的总线特性; 时序电路中触发器的记忆特性等。 信号是电子系统内部硬件连接和硬件特性的抽象表示。用来描述硬件系统的基本特性。格式: signal 信号名:数据类型 约束条件: 表达式;62例: signal a, b : bit; signal init : integer := -1; signal s1: std_logic := 0; signal s2: std_logic_vector(15 downto 0);注:a. 综合时初值被忽略。 b. 信号是全局量。可在结构体、实体、块中 说明和
26、使用信号。 c. 在进程和子程序中只能使用信号,不能说 明信号。63例:进程中信号与变量的使用entity ex is port(.);end ex;architecture arch_ex of ex is signal a, b :std_logic;begin process(a, b) variable c, d : std_logic; begin c:= a + b; d:= a - b; end process;end arch_ex; 64信号与端口的区别: 除没有方向说明外,信号与 实体的“端口(PORT)” 概念相似。端口是一种隐形的信号。 entity exam is p
27、ort(signal a, b: in std_logic; signal c: out std_logic); end exam; 端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。 信号本身无方向,可读可写。653 3、VHDLVHDL数据类型数据类型 VHDL是一种强数据类型语言。 要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。 VHDL数据类型分为四大类: 标量类型(SCALAR TYPE); 复合类型(COMPOSITE TYPE); 存取类型(ACCES
28、S TYPE); 文件类型(FILES TYPE)66又分为: 预定义数据类型、 用户自定义数据类型(1 1)VHDLVHDL的预定义数据类型的预定义数据类型 1 1)布尔量()布尔量(booleanboolean) 布尔量具有两种状态:false 和 true 常用于逻辑函数,如相等(=)、比较() 等中作逻辑比较。 如,bit 值转化成boolean 值: boolean_var := (bit_var = 1);672 2)位()位(bitbit) bit 表示一位的信号值。 放在单引号中,如 0 或 1。3 3)位矢量)位矢量 (bit_vectorbit_vector) bit_ve
29、ctor 是用双引号括起来的一组位数据。 如: “001100” X“00B10B”4 4)字符()字符(charactercharacter) 用单引号将字符括起来。 variable character_var : character; . . Character_var : = A;685 5)整数()整数(integerinteger) integer 表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整数范围为: -(231-1) to (231-1) VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。 如:signal s : integer
30、range 0 to 15; 信号 s 的取值范围是0-15,可用4位二进制数表示,因此 s 将被综合成由四条信号线构成的信号。696 6)自然数()自然数(naturalnatural)和正整数()和正整数(positivepositive) natural是integer的子类型,表示非负整数。 positive是integer的子类型,表示正整数。 定义如下: subtype natural is integer range 0 to integerhigh; subtype positive is integer range 1 to integerhigh;707 7)实数()实数(
31、REALREAL) 或称浮点数 取值范围:-1.0E38 - +1.0E38 实数类型仅能用于VHDL仿真器,一般综合器 不支持。8 8)字符串()字符串(stringstring) string 是 character 类型的一个非限定 数组。用双引号将一串字符括起来。如: variable string_var : string(1 to 7); string_var := “Rosebud”;719 9)时间()时间(TIMETIME) 由整数和物理单位组成 如:55 ms,20 ns1010)错误等级()错误等级(SEVERITY_LEVELSEVERITY_LEVEL) 仿真中用来指
32、示系统的工作状态,共有四种: NOTE(注意)、 WARNING(警告)、 ERROR(出错)、 FAILURE(失败)72(2 2)IEEEIEEE预定义标准逻辑位与矢量预定义标准逻辑位与矢量 1 1)std_logic std_logic 类型类型 由 ieee 库中的std_logic_1164 程序 包定义,为九值逻辑系统,如下: (U,X,0,1,Z,W,L,H,-) U:未初始化的, X:强未知的, 0:强0, 1:强1, Z:高阻态, W:弱未知的, L:弱0, H:弱1, -:忽略73 由 std_logic 类型代替 bit 类型可以完成电子系统的精确模拟,并可实现常见的三态
33、总线电路。2 2)std_logic_vector std_logic_vector 类型类型 由 std_logic 构成的数组。定义如下: type std_logic_vector is array(natural range) of std_logic; 赋值的原则:相同位宽,相同数据类型。74(3 3)用户自定义类型)用户自定义类型 用户自定义类型是VHDL语言的一大特色。 可由用户定义的数据类型有: 枚举类型、 整数和实数类型、 数组类型、 记录类型、 子类型75 用类型定义语句TYPE和子类型定义语句SUBTYPE实现用户自定义数据类型。 TYPE语句格式:例:type byte
34、 is array(7 downto 0) of bit; variable addend : byte; type week is (sun, mon, tue, wed, thu, fri, sat);type 数据类型名 is 数据类型定义 of 基本数据类型;76SUBTYPE语句格式:例: subtype digits is integer range 0 to 9; 由subtype 语句定义的数据类型称为子类型。subtype 子类型名 is 基本数据类型 约束范围;771 1)枚举类型)枚举类型 枚举该类型的所有可能的值。格式:如:type std_logic is(U,X,0
35、,1, Z,W,L,H,-)如:type color is(blue,green,yellow, red); type my_logic is (0, 1, U, Z); variable hue : color; signal sig : my_logic; hue := blue; sig = Z;type 类型名称 is (枚举文字,枚举文字);78枚举类型的编码: 综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0,以后的依次加1。编码用位矢量表示 ,位矢量的长度将取所需表达的所有枚举元素的最小值。如:type color is(blue,green,yellow,
36、red); 编码为: blue=“00”; green=“01”; yellow=“10”; red=“11”;79限定数组限定数组: 其索引范围有一定的限制。格式: 非限定数组非限定数组:数组索引范围被定义成一个类型范围。格式:例:type bit_vector is array(integer range ) of bit; variable my_vector:bit_vector (5 downto -5);type 数组名 is array(数组范围) of 数据类型;type 数组名 is array(类型名称 range ) of 数据类型;80属性:属性: VHDL为多种类型定
37、义了属性。 语法如下: 对象属性 VHDL为数组预先定义的属性: left right high low length range reverse_range81对应变量: variable my_vector : bit_vector (5 downto -5);各属性如下: my_vectorleft 5 my_vectorright -5 my_vectorhigh 5 my_vectorlow -5 my_vectorlength 11 my_vectorrange (5 downto -5) my_vectorreverse_range (-5 to 5)822 2)记录类型)记录类
38、型 记录是不同类型的名称域的集合。 格式如下: 访问记录体元素的方式:记录体名.元素名type 记录类型名 is record 元素名:数据类型名; 元素名:数据类型名; end record;83例: constant len:integer:= 8 ; subtype byte_vec is bit_vector(len-1 downto 0); type byte_and_ix is record byte : byte_vec; ix : integer range 0 to len; end record ; signal x, y, z : byte_and_ix ; signal
39、 data : byte_vec ; signal num : integer ; . x.byte = “11110000” ; x.ix = 2 ; data = y.byte ; num = y.ix ; z = x ; 843 3)子类型)子类型 子类型是已定义的类型或子类型的一个子集。格式: 例: bit_vector 类型定义如下: type bit_vector is array (natural range ) of bit; 如设计中只用16bit;可定义子类型如下: subtype my_vector is bit_vector(0 to 15);注:子类型与基(父)类型具
40、有相同的操作符和子 程序。可以直接进行赋值操作。subtype 子类型名 is 数据类型名范围;85(4 4)数据类型转换)数据类型转换 VHDL是一种强类型语言,不同类型的数据对象必须经过类型转换,才能相互操作。1)类型转换函数方式 通过调用类型转换函数,使相互操作的数据对象的类型一致,从而完成相互操作。86 library ieee; library dataio; use ieee.std_logic_1164.all; use dataio.std_logic_ops.all; entity cnt4 is port(clk: in std_logic; p: inout std_lo
41、gic_vector(3 downto 0); end cnt4; architecture behv of cnt4 is begin process(clk) begin if clkevent and clk=1 then p=to_vector(2, to_integer(p)+1); end if; end process; end behv;872)直接类型转换方式 对相互间非常关联的数据类型(如整型、浮点型),可进行直接类型转换。格式: 数据类型标识符(表达式)如:variable a, b : real; variable c, d : integer; a:= real(c)
42、; d:= integer(b);884 4、VHDLVHDL中的表达式中的表达式 表达式:表达式:由操作符和操作数构成,完成算术或 逻辑运算。(1 1)操作符)操作符 VHDL操作符的分类: 逻辑操作符(Logical Operator)、 关系操作符(Relational Operator)、 算术操作符(Arithmetic Operator)、 重载操作符(Overloading Operator) 891 1)逻辑操作符)逻辑操作符 6种:and、or、nand、nor、xor、not 要求:操作数类型必须相同。可为如下类型: bit、bit_vector、std_logic、 st
43、d_logic_vector、boolean 数组操作数的维数、大小必须相同。 注:当有两个以上的逻辑表达式时,左右没有 优先级差别,必须使用括号,如: x=( a and b )or( not c and d ); 例外:当逻辑表达式中只有“and”、“or”、 “xor”运算符时,可以省略括号。如:90 a = b and c and d and e; a = b or c or d or e; a = b xor c xor d xor e;2 2)关系操作符)关系操作符 6 种:=、/=、= 用于比较相同父类的两个操作数,返回 boolean值。913 3)加减操作符)加减操作符 加操
44、作符“+”、减操作符“-”、 串联(并置)操作符“&” 串联操作符“&”通过连接操作数来建立新的数组。操作数可以是一个数组或数组中的一个元素。例:signal a,d: bit_vector (3 downto ); signal b,c,g: bit_vector (1 downto 0); signal e: bit_vector(2 downto 0); signal f, h, i : bit; a = not b & not c; - array & array d = not e & not f; - array & element g = not h & not i; - ele
45、ment & element924 4) 一元操作符一元操作符 仅有一个操作数的操作符。 包括:“+”、“-”5 5) 乘除操作符乘除操作符 用于整数类型:“*”、“/”、“mod”、“rem” 综合的限制:“/”、“mod”、“rem” 三种操作 符的右操作数必须为 2 的正整数次幂,即 2n。 实际电路用移位实现。93(2 2)操作数)操作数 操作数: 操作符进行运算时所需的数据。 操作数的种类: 标志符;集合;属性;表达式;函数 调用;索引名;文字;限定表达式;记 录和域;片段名;类型转换 94(3 3)重载操作符)重载操作符 VHDL是强类型语言,相同类型的操作数才能进行操作。VHDL
46、自身定义的算术和布尔函数仅对内部数据类型(standard 程序包中的数据类型)有效。即: 算术运算符+,-, = 仅对integer类型有效。逻辑运算符AND, OR, NOT仅对 bit 类型有效。 如: variable a,b,c :integer; variable x,y,z :bit; c := a + b; z := x and y;问题:a, b, c 与 x, y, z 之间,或与 std_logic 等其它数据类型之间能否相互操作?95重载操作符定义:重载操作符定义: 对已存在的操作符重新定义,使其能进行不同类型操作数之间的运算,称为重载操作符。定义重载操作符的函数称为重
47、载函数。 重载操作符由原操作符加双引号表示。如 “+” 重载操作符的定义见 IEEE 库的程序包: std_logic_arith、 std_logic_unsigned、 std_logic_signed9697重载操作符的使用:98二、二、 并行信号赋值语句并行信号赋值语句包括三种: 简单并行信号赋值; 条件信号赋值; 选择信号赋值。共同特点: 1、赋值目标必须是信号,与其它并行语句同时执行,与书写顺序及是否在块语句中无关。 2、每一信号赋值语句等效于一个进程语句。所有输入信号的变化都将启动该语句的执行。991 1、简单并行信号赋值语句、简单并行信号赋值语句 即:信号 = 表达式例:以下两
48、种描述等价architecture behav of a_var is begin output=a(i);end behav;architecture behav of a_var is begin process(a, i) begin output=a(i); end process; end behav;一个简单并行信号赋值语句是一个进程的缩写。100等效:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex1 IS PORT(a, b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex1;ARCHITEC
49、TURE rtl OF ex1 IS SIGNAL c : STD_LOGIC;BEGIN c = a and b; y = c;END rtl;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex2;ARCHITECTURE rtl OF ex2 IS SIGNAL c : STD_LOGIC;BEGIN process1: PROCESS(a, b) BEGIN c = a and b; END PROCESS process1; p
50、rocess2: PROCESS(c) BEGIN y = c; END PROCESS process2;END rtl;101不等效:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex1 IS PORT(a, b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex1;ARCHITECTURE rtl OF ex1 IS SIGNAL c : STD_LOGIC;BEGIN c = a and b; y = c;END rtl;LIBRARY ieee;USE ieee.std_logic_1164.all;E
51、NTITY ex2 IS PORT(a,b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex2;ARCHITECTURE rtl OF ex2 IS SIGNAL c : STD_LOGIC;BEGIN PROCESS(a, b, c) BEGIN c = a and b; y = c; END PROCESS;END rtl;1022 2、条件信号赋值语句、条件信号赋值语句 格式: 目的信号量 = 表达式1 when 条件1 else 表达式2 when 条件2 else 表达式3 when 条件3 else 表达式n;103例:用条件信号赋值语句描述四选一电路 entity mux4 is port(i0, i1, i2, i3, a, b : in std_logic; q : out std_logic); end mux4; architecture rtl of mux4 is signal sel : std_logic_vector (1 downto 0); begin sel=b & a; q=i0 when sel = “00” else i1 when sel = “01” else i2 when sel = “10” else i3 when sel = “11”; end rtl;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026电池pack结构件轻量化材料应用与性能测试报告
- 2026固态电池产业化进程与技术路线竞争分析报告
- 2026金融租赁行业市场发展现状及创新策略报告
- 2026中国天然气脱碳膜组件性能测试与国际标准对标报告
- 2026中国液体化工物流服务质量标准制定研究报告
- 2026葡萄种植保险产品设计及风险分摊机制研究报告
- 2026跨国润滑油企业在华本土化战略比较研究
- 2026中国医疗科研仪器共享平台建设与效益评估
- 2026中国量子计算技术研发投入与商业化应用场景探索
- 2026生物医药CXO行业竞争态势与未来增长潜力分析报告
- 抽水蓄能电站竣工验收报告
- 小学科学一年级上册《借助工具观察》核心素养教学设计
- 中国炸鸡行业政策、市场规模及投资前景研究报告(智研咨询发布)
- 2025至2030中国有机食品行业市场现状消费趋势及渠道布局战略研究报告
- 大模型私有化部署配套开发合同
- 2025中国移动校园招聘笔试历年题库(11300+)附答案解析
- 性激素六项解读课件
- 医院数据安全培训
- 二零二五年度农产品陆运运输合同模板
- 安全理念培训课件
- DB43-T 2662-2023 悬挂式单轨运输系统车辆通.用技术条件
评论
0/150
提交评论