-VHDL的基本元素

上传人:豆** 文档编号:115008299 上传时间:2022-06-30 格式:PPT 页数:56 大小:1.15MB
收藏 版权申诉 举报 下载
-VHDL的基本元素_第1页
第1页 / 共56页
-VHDL的基本元素_第2页
第2页 / 共56页
-VHDL的基本元素_第3页
第3页 / 共56页
资源描述:

《-VHDL的基本元素》由会员分享,可在线阅读,更多相关《-VHDL的基本元素(56页珍藏版)》请在装配图网上搜索。

1、第6讲: VHDL的基本元素 n1 标识符n2 数据对象n3 数据类型n4 操作符n5 端口模式漂亮的程序(回顾)Fengzhuang_kaishiport ( IN1:in ;IN2:in ;IN3:in ;IN4:in ;OUT4:out )Fengzhuang_jieshuGongneng_kaishisignal T1,T2;OUT4 = T1 or T2;T2 = IN3 and IN4;T1 = IN1 and IN2;Gongneng_jieshu1、为了用起来像个函数的样子,不妨加个port关键词,把输入输出引脚象参数一样排列起来。2、很好地表达了4个输入引脚,1个输出引脚。3

2、、提供给别人调用。1、内部功能实现的细节2、T1、T2似乎有点奇怪,哪来的?3、那我们也规定先定义,后使用! Library IEEE; Use IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT(d0,d1,sel:in bit; q:out bit);END mux;Architecture dataflow of mux issignal tmp1,tmp2,tmp3:bit;Begintmp1=d0 and sel; tmp2=d1 and (not sel); tmp3=tmp1 or tmp2;q=tmp3;End dataflow;d0d1se

3、lq&1qd0d1selVHDLVHDL语言如何做的?语言如何做的?( (回顾回顾) )实体声明(回顾)实体声明(回顾)n实体声明语法:实体声明语法: ENTITY 实体名实体名 IS 类属参数说明类属参数说明; 端口说明端口说明; END 实体名;实体名;n举例:举例: nENTITY mux ISPORT(d0,d1,sel:IN BIT; q:OUT BIT );END mux;d0d1selq结构体的一般书写格式(回顾)结构体的一般书写格式(回顾) ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句内部信号,常数,数据类型,函数等的定义;内部信号,常

4、数,数据类型,函数等的定义; BEGIN 功能描述语句功能描述语句并行处理语句并行处理语句; END 结构体名结构体名;实体名必须是所在设计实体的名字,结构体名由设计者定义,但当一个实体具有多个结构体时,结构体的取名不可重复。PROCESS语句语句(回顾)(回顾)进程名进程名: PROCESS (敏感信号表敏感信号表) IS变量说明语句变量说明语句变量说明语句变量说明语句BEGIN 进程内逻辑语句进程内逻辑语句 END PROCESS 进程名进程名;process语句使用的类型、常量、变量、子程序声明、子程序体、属性声明等,但不能有信号声明*可有可无,区分不同进程1 1 标识符标识符n标识符规

5、则是VHDL语言中符号书写的一般规则。不仅对电子系统设计工程师是一个约束,同时也为各种各样的EDA工具提供了标准的书写规范。nVHDL语言有两个标准版:VHDL87版和VHDL93版。VHDL87版的标识符语法规则经过扩展后,形成了VHDL93版的标识符语法规则。n前一部分称为短标识符,扩展部分称为扩展标识符。VHDL93版含有短标识符和扩展标识符两部分。短标识符短标识符(1)(1)n 短标识符短标识符n在VHDL语言中使用的名字,如信号名、实体名、结构体名、变量名、各种进程标记、块标记等命名时,采用短标识符要遵守以下规则:n(1) 必须以英文字母打头。n(2) 字符可以是大小写的字符、数字(

6、09)和下划线(_)。n(3) 下划线前后都必须有英文字母或数字。n(4) 短标识符不区分大小写。n一般地,对VHDL的保留字:ENTITY,ARCHITECTURE,END,BUS,USE,WHEN,WAIT,IS在程序书写时,一般要求大写或黑体,使得程序易于阅读,易于检查错误。短标识符短标识符(2)(2)n下面是合法的标识符:nmulti_screens、 Multi_screensnMulti_Screens、 MULTI_SCREENSn下面的书写是不合法的:nillegal%name illegal-name illegal-namen命名规则举例:nSIGNAL sel: INTE

7、GER;nSIGNAL PCI_BUS: STD_LOGIC_VECTOR(31 DOWNTO O);nSIGNAL 8_BUS:. -数字开头,是错误的名字nSIGNAL PCI_BUS:. -是非法符号nSIGNAL PCI_BUS_:. - 结尾不能用连字符扩展标识符扩展标识符n扩展标识符是VHDL93版增加的标识符书写规则:n(1) 扩展标识符用反斜杠来定界。nmulti_screens, eda_centrol等都是合法的扩展标识符。n(2) 允许包含图形符号、空格符。例如: mode A, $100, p%name等。n(3) 反斜杠之间的字符可以用保留字。例如: buffer,

8、entity, end等。n(4) 扩展标识符的界定符两个斜杠之间可以用数字打头。如: 100$, 2chip, 4screens等。n(5) 扩展标识符中允许多个下划线相连。例如:n Four_screens, TWO_Computer_sharptor等。n(6) 扩展标识符区分大小写。例如: EDA 与eda不同。n(7) 扩展标识符与短标识符不同。例如:COMPUTER 与Computer不同。 2 2 数据对象数据对象n在VHDL语言中,凡是可以赋予一个值的客体叫对象。nVHDL对象包含有专门数据类型,主要有4个基本类型:常量(CONSTANT)、信号(SIGNAL)、变量(VARI

9、ABLE)和文件(FILES)。其中文件类型是VHDL93标准中新通过的。 n信号和变量可以连续的赋予不同的值。n常量只在它被说明时赋值,在整个器件工作期间值不变化。试图对常量多次赋值是错误的。n文件可以用参数向子程序传递数据,通过子程序对文件进行读和写操作。文件不可以通过赋值来更新文件的内容,文件参数没有模式。 数据对象声明举例数据对象声明举例n对象说明的一般书写格式为:n对象类别 标识符表 : 子类型标识:=初值;n对象说明举例:nCONSTANT T1,T2:time := 30ns;-常量说明nVARIABLE SUM:read; -变量说明nSIGNAL CLOCK:bit; -信号

10、说明常量常量n常量(constant)是设计者给实体中某一常量名赋予的固定值。一般地,常量赋值在程序开始前进行说明,数据类型在实体说明语句中指明。常量说明的一般格式如下:nCONSTANT CONSTANT 常数名:数据类型常数名:数据类型: :表达式;表达式;n根据上面的格式,举例如下:n8位寄存器宽度指定:nCONSTANTCONSTANT regw:integer:8;n设计实体的电源供电电压指定:nCONSTANTCONSTANT Vcc:real:5.0;n某一模块信号输入/输出的延迟时间:nCONSTANTCONSTANT DALY:time:100ns;常量常量n常量标识符、WI

11、DTH,VCC,DALY,PBUS等在VHDL程序中多处有用,其值在运行中不变。若要改变常量值,必须要改变设计,改变实体中的常量说明,然后重新编译。n常数所赋的值应和定义的数据类型一致;n常量必须在程序包、实体、结构体或进程的说明区域中对常量的标识符、类型、常量值进行指定。n定义在程序包中的常量由所在的实体或结构体调用。n定义在实体内的常量仅在实体内使用,定义在进程内的常量仅在进程内使用。变量变量n变量(variables)仅用在进程语句、函数语句、过程语句中的结构中使用,变量是一个局部量,变量的赋值立即生效,不产生赋值延时。变量书写的一般格式为:nVARIABLES VARIABLES 变量

12、名:数据类型变量名:数据类型 约束条件约束条件: :表达式;表达式;n根据上述格式,举例如下:nVARIABLESVARIABLES result: std_logic:0;变量赋初值nVARIABLESVARIABLES x,y,z : integer;nVARIABLESVARIABLES count: integer range 0 TO 255 :10;n变量不能加附加延时,如”after 10 ns”。变量变量n在VHDL语言中,变量的使用规则和限制范围说明如下:n变量赋值是直接非预设的。在某一时刻仅包含了一个值。n变量赋值和初始化赋值符号用“:”表示。n变量不能用于硬件连线和存储元

13、件。n在仿真模型中,变量用于高层次建模。n在系统综合时,变量用于计算,作为索引载体和数据暂存。n在进程中,变量的使用范围在进程之内。若将变量用于进程之外,必须将该值赋给一个相同类型的信号,即进程之间传递数据靠的是信号。信号信号n信号(signal)是电子电路内部硬件实体相互连接的抽象表示。信号通常在构造体、包集合和实体说明中使用,其一般书写格式为:nSIGNAL SIGNAL 信号名:数据类型、约束条件信号名:数据类型、约束条件: :表达式;表达式;使用上述格式举例如下:nSIGNAL sys_clk : BIT :=SIGNAL sys_clk : BIT :=0 0; -系统时钟信号nSI

14、GNAL count : bit_vector(7 downto 0);-计数器宽度 信号信号n有关信号的使用规则说明如下:n“:=:=”表示对信号直接赋值,表示信号初始值不产生延时。n“=”表示代入赋值,是变量之间信号的传递,代入赋值法允许产生延时。例如:T1 = T2; n在仿真中,初始化能保证信号设定在指定值上。对于存储元件的加电初始状态,应该设计复位或予置位机构,而不是通过信号指定初始化值来实现。n在EDA工具综合时,信号应在结构体中描述清楚。n在进程中,变量的使用范围在进程之内。若将变量用于进程之外,必须将该值赋给一个相同类型的信号,即进程之间传递数据靠的是信号。信号和变量代入的区别

15、信号和变量代入的区别n声明的形式与位置不同:信号在结构体中声明;变量在进程中声明。n赋值符号不同:count=“00000000”;n data:=“00000000”;n进程对信号敏感,对变量不敏感n作用域不同:信号可以是多个进程的全局信号;变量只在定义后的顺序域可见。信号和变量代入的区别信号和变量代入的区别客体客体信号信号变量变量代入符代入符=: :操作操作过程过程由于信号代入语句是并行处理的,下一条语句执行时,仍使用原来的信号值。变量的赋值语句不是并行的,在执行下一条语句时,变量的值就为上一句新赋的值。举举例例PROCESS(A,B,C)BEGIN D=A; X=B+D; D=C; Y=

16、B+D;END PROCESS;结果:结果:X=B+C;Y=B+C;PROCESS(A,B C)VARIABLE D:STD_LOGIC; BEGIN D:=A; X=B+D; D:=C; Y=B+D;END PROCESS;结果:结果:X=B+A;Y=B+C;数据对象赋值的补充说明数据对象赋值的补充说明n可用函数调用的方法给对象赋初值。 CONSTANT Bus_number:Integer :My_function(True,6);n如果在同一个对象说明语句中,对多个同一类型的对象指定初始值,则多个对象同时取得了这一指定值。n信号和变量的默认值。当信号和变量没有指定初始值或没有给信号变量赋

17、值时,即信号和变量的值在对象说明语句中默认时,信号变量的取值称为默认值。一般地,若变量、信号为数值型变量,则取初始值,默认值为0. 3 3 数据类型数据类型nVHDL语言标准定义了10种标准的数据类型。为了方便设计,允许用户自定义数据类型。nVHDL语言程序是系统行为的描述、功能的说明和结构的组织,使用规范化语言,有着很强的约束性。不同的数据类型不能直接代入,相同的类型,位长不同也不能代入。EDA工具在编译、综合时会报告类型错。数据类型(数据类型(2 2)nVHDL语言标准所定义的标准数据类型n(1) 整数类型(INTEGER TYPE) p36n(2) 实数类型或浮点类型(REAL TYPE

18、 FLOATING TYPE)n(3) 位类型(BIT TYPE) std_logicstd_logicn(4) 位矢量类型(BIT_VECTOR TYPE) std_logic_vectorstd_logic_vectorn(5) 布尔类型(BOOLEAN TYPE)n(6) 字符类型(CHARACTER TYPE)n(7) 时间类型或物理类型(Time type physical type)n(8) 错误类型(NOTE,WARNIING,ERROR,FAILURE TYPE)n(9) 自然数、整数类型(NATURAL TYPE)n(10) 字符串类型(TRING TYPE)数据类型数据类型

19、字符型字符型n字符(CHARACTER)n字符在VHDL语言中编程时用单引号括起来。A,a,B,b,都认为是不同的字符。nVHDL语言对大小写英文字母不敏感,但区分字符量中的大小写。字符1,2仅是符号。n字符包括AZ,az,09,空格及一些特殊字符。 数据类型数据类型字符串型字符串型n字符串(STRING)n字符串是由双引号括起来的一个字符序列。例如“VHDL”,“STRING”,“MULTI_SCREEN COMPUTER”等。n字符串一般用于给位向量赋值、程序的提示、结果的说明等场合。n字符为单引号括起来的ASCII字符:n 例如1,A,F。n WR = 1;n字符串为双引号括起来的图形字

20、符序列。n例如:“PCI BUS interface”,n “This string constain an information”。 n Bus = “01011100”; 数据类型数据类型-整型整型n整数(INTEGER)n在VHDL语言中,整数范围从(2311)到(2311),例如: 128,5,12,。n在电子系统中,整数可以用进制来表示。n整数不能看作矢量,不能单独对某一位操作。n整数不能用于逻辑运算,只能用于算术运算。n对象的数据类型定义为整数时,范围应有约束。例如:nVARIABLE A: INTEGER RANGE 128 TO 128;n在电子系统设计过程中,整数可以用来抽

21、象地表达总线的状态。n常用的整数常量的书写方式如下:n 2,10E3;-十进制整数n 16#D2#;-十六进制整数n 2#10101010#; -二进制整数数据类型数据类型布尔型布尔型n布尔量(BOOLEAN)n布尔量是二值枚举量,每一个布尔量具有两个可能的值:“真”或者“假”。n布尔量没有数量多少的概念,不能进行算术运算,只能进行逻辑运算。n布尔量常用来表达信号的状态,或者总线上的控制权,仲裁情况,忙、闲状态等。n若某个客体被定义为布尔量,则EDA工具对设计进行仿真时,自动地对其赋值情况进行核查。 数据类型数据类型比特型比特型n位( (BIT) )n位通常用来表示一个信号的值。n位通常用单引

22、号来括号引其位的值。 如: TYPE BIT IS (0,1);n位的值0,1可以表示信号的状态;n位数据类型取值0和1;整数中的1和0表示数值,布尔量的值TRUE和FLASE没有数值含义,三者的意义不一样n位数据类型可以参与逻辑运算,结果任然为BIT。数据类型数据类型位向量型位向量型n位向量( (BIT_VECTOR) )n位矢量只是基于位矢量只是基于BIT数据类型的数组数据类型的数组n位矢量可以进行算术运算。位矢量可以进行算术运算。n位矢量通常用来表示总线状态。位矢量通常用来表示总线状态。n声明:声明:n SIGNAL b:BIT_VECTOR (3 DOWNTO 0);n位矢量常量是用位

23、矢量常量是用双引号双引号括起来的一组位数据。括起来的一组位数据。 如:如: B”001100” -B表示二进制表示二进制 X”00BB” -X表示十六进制表示十六进制 O”3705” -O表示八进制表示八进制n在在VHDL语言中,实数范围为语言中,实数范围为1.0E38到到1.0E38。n实数有正负数,书写时一定要有小数点。实数有正负数,书写时一定要有小数点。n在有关文献中,实数类型也称为在有关文献中,实数类型也称为浮点类型浮点类型。但大多。但大多数数EDA工具不支持浮点运算,仅用于仿真,因为太工具不支持浮点运算,仅用于仿真,因为太复杂,电路规模难以承受。复杂,电路规模难以承受。n书写方式举例

24、:书写方式举例:2.22, 44.5E-4; -十进制浮点数十进制浮点数8#44.5E-4; -八进制浮点数八进制浮点数数据类型数据类型-实数型(实数型(REALREAL)类型转换类型转换 (1)(1)n在VHDL程序设计中,不同类型的对象不能代入。对于某一数据类型的变量、信号、常量、文件赋值时,类型一定要一致,否则EDA工具进行综合、仿真等过程中不能通过。n为了进行不同类型的数据变换,可以有3种方法:n类型标记法n函数转换法n常数转换法。 类型转换类型转换 (2)(2)n用用类型标记类型标记法实现类型转换法实现类型转换n类型标记就是类型的名称。类型标记法仅适用于关系密切的标量类型之间的类型转

25、换,即整数和实数的类型转换。若:nvariable i :integer;nvariable r :real;n则有:ni:integer(r);nr:real(i); 类型转换类型转换 (3)(3)n用函数法进行数据类型转换,VHDL语言标准中的程序包提供的变换函数来完成这个工作。这些程序包有3种:nSTD_LOGIC_1164程序包定义的转换函数:n函数 TO_STDLOGICVECTORTO_STDLOGICVECTOR(A) -由位矢量 BIT_VECTOR 转换为 STD_LOGIC_VECTORn函数 TO_BITVECTORTO_BITVECTOR(A); -由标准逻辑矢量STD

26、_LOGIC_VECTOR转换为BIT_VECTORn函数 TO_STDLOGICTO_STDLOGIC (A); -由BIT转换为STD_LOGICn函数 TO_BITTO_BIT(A); -由标准逻辑STD_LOGIC转换BIT类型转换类型转换 (3)(3)nSTD_LOGIC_ARITH包集合定义的转换函数:n函数: CONV_STD_LOGIC_VECTOR(A,位长);-由INTEGER,SINGED,UNSIGNED转换成STD_LOGIC_VECTORn函数: CONV_INTEGER(A);-由SIGNED,UNSIGNED转换成INTEGERn STD_LOGIC_UNSIG

27、NED包集合定义的转换函数:n USE IEEE.STD_LOGIC_UNSIGNED.ALL; -USE IEEE.STD_LOGIC_UNSIGNED.ALL; -增加声明增加声明n函数:CONV_INTEGER(A);-由STD_LOGIC_VECTOR转换成INTEGER 逻辑标准值逻辑标准值n与BIT类型不同,VHDL93标准定义了STD_LOGIC 9种不同的值,增加了不定状态“X”、高阻状态“Z”。不定状态方便了系统仿真,高阻状态方便了双向总线的描述。nU -初始值nX X -不定,未知;不定,未知;nO O -0-0n1 1 -1-1nZ Z -高阻高阻nW -弱信号不定,未知

28、nL -弱信号0nH -弱信号1n-不可能情况n使用时需要写出库说明语句和使用的包集合说明语句nUSE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL常用的类型包常用的类型包n建议库资源同时声明三个,会省很多事:nlibrary ieee;library ieee;nuse ieee.std_logic_1164.all;use ieee.std_logic_1164.all;nuse ieee.std_logic_arith.all;use ieee.std_logic_arith.all;nuse ieee.std_logic_unsi

29、gned.all;use ieee.std_logic_unsigned.all;nieee是库,std_logic_XXXX是程序包,all是项目名nstd_logic_arith程序包,它预先编译在ieee库中,是在std_logic_1164程序包的基础上扩展了三个数据类型unsigned、signed和small_int,并且定义了相关的算术运算符和数据类型转换函数。程序注释程序注释n为了提高VHDL语言设计程序的可读性,像其他高级语言那样,在每一程序行后可以增加注释。n注释从“-”符号开始,到该行末尾结束。n注释文字不产生硬件电路结构,不描述电路行为,在综合、仿真、验证过程中,EDA

30、工具对注释行不进行处理。n举例:Trant = Frame & idle & irdy & devsel; -XXX -PCI总线数据传输译码逻辑之一。 第6讲: VHDL的基本元素 n1 标识符n2 数据对象n3 数据类型n4 操作符n5 端口模式4 4 运算操作符运算操作符nVHDL语言的操作符有4种:n(1) 逻辑运算符(LOGICAL)n(2) 关系运算符(RELATIONAL)n(3) 算术运算符(ARITHMETIC)n(4) 并置运算(CONCATENATION) 逻辑运算符逻辑运算符n在VHDL中,逻辑运算符有6种,列表如下:n(1) NOT取反n(2) AND与n(3) OR

31、或n(4) NAND与非n(5) NOR或非n(6) XOR异或;n逻辑运算符左右无优先级,下面语句的括号去掉后不同;nX=(a and b) or (not c and d);n逻辑运算符用于bit类型的逻辑操作以及条件组合。n关于逻辑运算符,在关于逻辑运算符,在VHDL程序设计中有如下程序设计中有如下规则:规则:(1)适用变量类型:)适用变量类型:STD_LOGIC、BIT等逻辑型数据、等逻辑型数据、 STD_LOGIC_VECTOR及布尔型数据;及布尔型数据;(2)运算符的左边和右边,以及代入的信号的数据类型必运算符的左边和右边,以及代入的信号的数据类型必须是相同的须是相同的;(3)一个

32、逻辑式中,先做括号里的运算,再做括号外运算;)一个逻辑式中,先做括号里的运算,再做括号外运算;(4)表达式中只有)表达式中只有“AND”、“OR”、“XOR”中的一种中的一种运算符,则改变顺序不影响结果,括号可省略。运算符,则改变顺序不影响结果,括号可省略。逻辑运算符说明逻辑运算符说明SIGNAL A,B,C : STD_LOGIC_VECTOR (3 DOWNTO 0);SIGNAL D,E,F,G : STD_LOGIC_VECTOR (1 DOWNTO 0);SIGNAL H,I,J,K : STD_LOGIC;SIGNAL L,M,O,P :BOOLEAN;A=B AND C; -B、

33、C相与向相与向A赋值,同属赋值,同属4位长的位矢量位长的位矢量D=E OR F OR G;-两个操作符相同,不需要括号两个操作符相同,不需要括号H=(I NAND J) NAND K;-不属于与、或、异或,所以需要括号不属于与、或、异或,所以需要括号L=(M XOR N)AND(O XOR P); -操作符不同,所以需括号操作符不同,所以需括号H=I AND J AND K;-都是与,可以不用括号都是与,可以不用括号H=I AND J OR K;-错误错误,操作符不同需要括号,操作符不同需要括号A=B AND E;-错误错误,位长度不同,位长度不同H=I OR L;-错误错误,数据类型不同,数

34、据类型不同逻辑运算符举例逻辑运算符举例n在在VHDL93版中,增加了版中,增加了6种新的逻辑运算符:种新的逻辑运算符:nSLL逻辑左移逻辑左移nSRL逻辑右移逻辑右移nSLA算术左移算术左移nSRA算术右移算术右移nROL逻辑循环左移逻辑循环左移nROR逻辑循环右移逻辑循环右移移空的位补零移空的位由最初首位补移出的位依次填补移空的位移位运算符移位运算符( (新增逻辑运算符新增逻辑运算符) )n“1001001” SLL 1 “0010010”n“1001001” SRL 1 “0100100”n“1001001” SLA 1 “0010011”n“1001001” SRA 1 “1100100

35、”n“1001001” ROL 1 “0010011”n“1001001” ROR 1 “1100100”移位运算符举例移位运算符举例关系运算符(关系运算符(1 1)n关系运算符是两个对象在比较运算时,将两个操作数比较的结果表示出来所使用的符号,列表如下:n -等于n/ -不等于n -小于n -小于等于n -大于n -大于等于关系运算符(关系运算符(2 2)n两个对象进行比较时,数据类型一定要相同。n(等于)和/(不等于)适用于所有数据类型的对象之间的比较。n大于、小于、大于等于、小于等于适用于整数、实数位、位矢量、数组类型的比较。n=符号有两种含义:代入符和小于等于符,要根据上下文判断。n两

36、个位矢量类型的对象比较时,自左至右,按位比较。算术运算符算术运算符nVHDL算术运算符的例表如下:n(1) -加运算n(2) -减运算n(3) * -乘运算n(4) / -除运算n(5) MOD -求模运算n(6) REM -取余运算n(7) -正n(8) -负n(9) * -指数运算n(10)ABS -取绝对值算术运算符的使用规则算术运算符的使用规则n+,-(正负)操作,即一元运算,可以是整数,实数,物理量;n+,-(加减)运算符的适用范围可以是整数、实数。而且对于加、减运算的两个操作数必须类型相同;n*,/(乘除)法的操作数可以同为整数和实数,物理量乘或除以整数仍为物理量,物理量除以相同的

37、物理量,商为整数或实数;nMOD,REM(求模、取余)运算的操作数必须是同一整数类型的数据;n加、减、乘能综合为电路,其余运算综合成电路很困难,或者是完全不可能的。算术运算符举例算术运算符举例1) 加减运算VARIABLE a,b,c,d,e,f:INTEGER RANGE 0 TO 255;a:=b+c;d:=e-f;2)混合运算SIGNAL a,b: INTEGER RANGE -8 TO 7;SIGNAL c: INTEGER RANGE 0 TO 15;SIGNAL d: INTEGER RANGE 0 TO 3;a=ABS(b);c=2*d;并置运算符(并置运算符(4.3.34.3.

38、3)n在VHDL程序设计中,并置运算符“”用于位的连接。并置运算符的使用规则如下:n并置运算符可用于位的连接,形成位矢量。n并置运算符可连接两个位矢量构成更大的位矢量。n位的连接,可以用并置符连接法,也可用集合体连接法。举例如下:nDATA_C = D0 & D1 & D2 & D3;nDATA_C = (D0,D1,D2,D3);n集合体连接法不可用于向量的连接。操作符的运算优先级操作符的运算优先级n在VHDL程序设计中,逻辑运算、关系运算、算术运算、并置运算优先级是不相同的,各种运算的操作不可能放在一个程序语句中,所以把各种运算符排成统一的优先顺序表意义不明显。n其次,VHDL语言的结构化

39、描述,在综合过程中,程序是并行的,没有先后顺序之分,写在不同程序行的硬件描述程序同时并行工作。nVHDL语言程序设计者不要理解程序是逐行执行,运算是有先后顺序的,这样是不利于VHDL程序的设计。n运算符的优先顺序仅在同一行的情况下来讨论的,不同行的程序是同时的。 5 5 端口模式(复习)端口模式(复习)n输入(Input) :clk、reset、en、addr等n输出(Output):输出信号,不能内部引用n双向(Inout) :可代替所有其它模式,用于设计双向总线n缓冲(Buffer):与Output类似,但允许该管脚名作为一些逻辑的输入信号nEntity test1 isn port(a:

40、 in std_logic;n b,c: out std_logicn ); end test1;n architecture a of test1 isn beginn b = not(a);n c = b;-Errorc = b;-Errorn end a;nEntity test2 is port(a: in std_logic; b : buffer std_logic; c: out std_logic ); end test2; architecture a of test2 is begin b = not(a); c = b;c = b; end a;习 题n请检索 SN74LS10 器件手册n完成以下要求:给出该器件的外形照片;给出该器件的封装图,并注明齐引脚编号;给出每个引脚的功能说明;请使用VHDL给出完整描述该器件功能的代码实体名称请定义为XHnnnn,其中nnnn为自己的学号。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!