《数字逻辑新编》PPT课件.ppt_第1页
《数字逻辑新编》PPT课件.ppt_第2页
《数字逻辑新编》PPT课件.ppt_第3页
《数字逻辑新编》PPT课件.ppt_第4页
《数字逻辑新编》PPT课件.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/50,教学内容 数据对象、数据类型、运算符和表达式 常用顺序语句、并行语句 VHDL常用的库、程序包 教学重点 数据对象、数据类型、运算符和表达式 常用顺序语句、并行语句,本节教学内容及重点,2/50,VHDL标识符 基本标识符由字母、数字和下划线组成 第一个字符必须是字母 最后一个字符不能是下划线 不允许连续2个下划线 保留字(关键字)不能用于标识符 大小写等效,3.3 数据对象、数据类型、 运算符和表达式,3/50,VHDL标识符 有效的标识符 A_h_1 show_new_state COUNTER_A decode3_8 counter 非法的标识符 A%h_1 show-new-state COUNTER_ T_ _1 3_8decoder IS DOWNTO,3.3 数据对象、数据类型、 运算符和表达式,4/50,3.3.1 数据对象,VHDL语言数据对象 常量(CONSTANT) 变量(VARIABLE) 信号(SIGNAL),5/50,常量(Constant) 固定值,不能在程序中被改变 增强程序的可读性,便于修改程序 在综合后,连接到电源和地 可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定 常数的描述格式: CONSTANT 常量名:数据类型:=表达式 如:Constant data_bus_width: integer := 8;,3.3.1 数据对象,6/50,变量(Variable) 临时数据,没有物理意义 只能在Process和Function中定义,并只在其内部有效 要使其全局有效,先转换为Signal 一旦赋值,立即生效 变量的描述格式: VARIABLE 变量名:数据类型 :=表达式 如:variable result : std_logic := 0;,3.3.1 数据对象,7/50,信号(Signals) 代表连线,Port也是一种信号 没有方向性,可给它赋值,也可当作输入 在Entity中和Architecture中定义 设定的初始值只是在仿真开始设定了一个起始值,在综合时没有用。 信号的描述格式: SIGNAL 信号名:数据类型 :=初始值 signal count:bit_vector(3 downto 0):=“0011”;,3.3.1 数据对象,8/50,信号赋值语句格式 目标信号名=表达式; q=count; irq=0; aa=dx1; bb=dx2; s1=s2 AFTER 10ns,3.3.1 数据对象,9/50,信号与变量的区别,信号赋值可以有延迟时间,变量赋值无时间延迟 信号除当前值外还有许多相关值,如历史信息等,变量只有当前值 进程对信号敏感,对变量不敏感 信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见 信号可以看作硬件的一根连线,但变量无此对应关系 赋值的形式不同;声明的位置不同,10/50,信号与变量的区别,architecture rtl of start is signal count : integer range 0 to 7; begin process(clk) begin if (clkevent and clk=1) then count = count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;,architecture rtl of start is begin process(clk) variable count : integer range 0 to 7; begin if (clkevent and clk=1) then count := count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;,11/50,VHDL标准数据类型 IEEE标准数据类型 用户自定义数据类型,3.3.2 数据类型,12/50,VHDL标准数据类型,13/50,VHDL标准数据类型,1、整数(INTEGER) 范围:-2147483547-2147483646,用range限定数的范围,如:variable a: integer range 0 to 9; 2、实数(REAL) 范围:-1.0E38-1.0E38 (仿真器中可用,综合器不支持)书写时一定要有小数。如:1.0 8#43.6#e+4 3、位(BIT) 数字系统中,信号经常用位的值表示,位的值 用带单引号的1和0来表示。,14/50,VHDL标准数据类型,4、位矢量(BIT_VECTOR) 位矢量是用双引号括起来的一组位数据 如:“010101” 5、布尔量(BOOLEAN) 只有“真”和“假”两个状态,可以进行关系运算 6、字符(CHARACTER) 字符量通常用单引号括起来,对大小写敏感。A 与a不同。明确说明1是字符时: CHARACTER(1),15/50,VHDL标准数据类型,7、字符串(STRING) 字符串是双引号括起来的由字母、数字或、 %、$组成的一串字符。区分大小写。 如:“laksdklakld” “1010101010” 8、时间(TIME) 时间的单位:fs,ps,ns,ms,sec,min,hr 例:10 ns 整数数值和单位之间应有空格,16/50,VHDL标准数据类型,9、错误等级(SEVERITY LEVEL) 在VHDL仿真器中,错误等级用来表示系统的状态,共有4种:NOTE(注意)、ERROR(错误)、FAILURE(失败)、WARNING(警告) 10、自然数(NATURAL) 正整数(POSITIVE) 自然数是整数的一个子类型,包括0和正整数;正整数也是整数的一个子类型。,17/50,IEEE标准数据类型,在IEEE库的程序包std_logic_1164中定义了两个非常重要的数据类型: 1 、标准逻辑位(std_logic) 取值:0,1,Z,X,W,L,H等9种 注意:使用时必须大写,若用小写z表示取值 高阻是错误的,必须用大写Z。 2、标准逻辑矢量(Std_logic_vector) 标准一维数组,数组中每个元素的数据类型均为标准逻辑位类型。,Entity eqcomp4 is Port(a, b: in std_logic_vector(3 downto 0); equal:out std_logic ); End eqcomp4;,18/50,IEEE标准数据类型,注 意: 1、在使用“std_logic”和“std_logic_vector”时,在程序中必须声明库及程序包说明语句,即LIBRARY IEEE和std_logic_1164.ALL这两句在程序中必不可少。 2、 std_logic有多个取值,与标准数据类型bit不同,在编程时应注意考虑全所有情况。,19/50,VHDL运算符 逻辑运算符 AND、OR、NAND、NOR、XOR、NOT 关系运算符 =、/=、= 算术运算符 +、-、*、/ 并置(连接)运算符 &,3.3.3 VHDL运算符与表达式,20/50,21/50,22/50,运算符优先级,3.3.3 VHDL运算符与表达式,23/50,注意:在C语言中逻辑运算有左右优先级顺序的规定,而在VHDL语言中,左右没有优先级差别。需加括号表示优先级。,如:X=a AND b OR c; - -错误 X=(a AND b) OR c;- -正确,但若一个逻辑表达式中只有“AND”,”OR”,”XOR”运算符,那么改变运算顺序将不会导致逻辑的改变。此时,括号可以省略。,逻辑运算符的使用,如: x=a AND b AND c AND d; x=a OR b OR c OR d; x=a XOR b XOR c;,24/50,注意:而在VHDL语言中,关系运算符= 也用于信号的赋值,要根据上下文判断符号= 是用于赋值还是小于等于。,关系运算符的使用,architecture rtl of start is signal count : integer range 0 to 7; begin process(clk) begin if (clkevent and clk=1) then count = count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl;,25/50,并置运算符“”用于位的连接。 并置运算可用于位的连接,形成位矢量; 并置运算符可用于矢量的连接,形成新的矢量; 并置运算可用于位和矢量的连接,形成新的矢量,SIGNAL a,b :STD_LOGIC_VECTOR( 3 DOWNTO 0); SIGNAL q :STD_LOGIC_VECTOR( 7 DOWNTO 0); q ab;,并置运算符的使用,SIGNAL a,b,c,d :STD_LOGIC; SIGNAL q :STD_LOGIC_VECTOR( 3 DOWNTO 0); q abcd;,26/50,表达式 VHDL语言中的表达式与其他高级程序设计语 言非常相似,同样是由运算符将基本元素连接起 来的式子。 一个表达式,需要有两个要素:运算符和基 本元素。基本元素包括对象名、文字、函数调用 等的表达式。 例如:ab,b (6)b (5)b (4), (AB)*B+(A REM B),7 REM (2)等。,3.3.3 VHDL运算符与表达式,27/50,3.3.4 基本顺序描述语句,顺序语句: 每一条顺序语句的执行顺序都和它们的书写顺序基本一致。只能出现在进程和子程序中。,常用顺序语句 赋值语句 IF 语句 CASE 语句 (针对本门课程及教材列出的常用顺序语句),28/50,3.3.4 基本顺序描述语句,1. 赋值语句 信号赋值语句 格式: 目的信号量=信号量表达式 例: a=b; 注意: 限定在进程、函数过程等顺序区域使用 进程结束时起作用 与小于等于的关系操作符的差别 赋值符号两边的变量及表达式的数据类型和长度必须保持一致,29/50,3.3.4 基本顺序描述语句,1. 赋值语句 变量赋值语句 格式: 目的变量:=表达式 例: c:=a+b; D:=3; 注意: 限定在进程、函数、过程等顺序区域使用 变量赋值无延时特性,立即生效 变量值具有局部性 赋值符号两边的变量及表达式的数据类型和长度必须保持一致,30/50,3.3.4 基本顺序描述语句,2. IF语句 格式一 IF 条件 THEN 顺序执行语句 END IF; 例:IF (a=1) THEN c=b; END IF;,31/50,3.3.4 基本顺序描述语句,2. IF语句 格式二 IF 条件 THEN 顺序执行语句 ELSE 顺序执行语句 END IF;,ARCHITECTURE rtl OF mux2 IS BEGIN PROCESS( a,b,sel) BEGIN IF ( sel = 1) THEN c = a; ELSE c = b; END IF; END PROCESS; END rtl;,32/50,3.3.4 基本顺序描述语句,2. IF语句 格式三 IF 条件 THEN 顺序执行语句 ELSIF 条件 THEN 顺序执行语句 : ELSIF 条件 THEN 顺序执行语句 ELSE 顺序执行语句 END IF;,33/50,3.3.4 基本顺序描述语句,3. CASE语句 格式: CASE 表达式 IS WHEN 条件表达式=顺序处理语句; END CASE; 其中WHEN的条件表达式可以有4种形式: WHEN 值=顺序处理语句; WHEN 值|值|值|值=顺序处理语句; WHEN 值 TO 值=顺序处理语句; WHEN OTHERS=顺序处理语句;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT(a,b,i0,i1,i2,i3:IN STD_LOGIC; q:OUT STD_LOGIC); END mux4; ARCHITECTURE mux4_behave OF mux4 IS SIGNAL sel:INTEGER RANGE 0 TO 3; BEGIN PROCESS(a,b,i0,i1,i2,i3) BEGIN selqqqq=i3; END CASE; END PROCESS; END mux4_behave ;,selqqqq=i3; END CASE;,34/50,3.3.5 基本并行描述语句,并行语句: 位于Process外面,同时执行,不分位置的先后顺序,常用并行语句 进程语句 并行信号赋值语句 端口说明语句 (针对本门课程及教材列出的常用并行语句),35/50,1. 进程语句 在一个结构体中多个PROCESS语句可以同时并行的执行,该语句有如下特点: 可以和其它进程语句同时执行,并可以存取构造体和实体中所定义的信号 进程中的所有语句都按照顺序执行 为启动进程,在进程中必须包含敏感信号表 进程之间的通信是通过信号量来实现的,3.3.5 基本并行描述语句,36/50,1. 进程语句 格式: 进程名: PROCESS 敏感信号表 变量说明语句; BEGIN 顺序处理语句; END PROCESS 进程名;,3.3.5 基本并行描述语句,Architecture behavioral of eqcomp4 is begin comp: process (a,b) begin if a=b then equal = 1; else equal =0; end if; end process comp; end behavioral ;,37/50,2. 并行信号赋值语句 简单信号赋值语句 条件信号赋值语句 选择信号赋值语句,3.3.5 基本并行描述语句,38/50,2. 并行信号赋值语句 简单信号赋值语句 格式: 目的信号量=信号量表达式 例: a=b; q=c+d; 信号赋值语句在进程中使用是顺序语句,但是在进程外即在结构体中使用时为并发语句。,3.3.5 基本并行描述语句,39/50,2. 并行信号赋值语句 条件信号赋值语句 格式: 目的信号量=表达式1 WHEN 条件1 ELSE 表达式2 WHEN 条件2 ELSE 表达式3 WHEN 条件3 ELSE : 表达式n;,3.3.5 基本并行描述语句,Signal a,b,c,d:std_logic; Signal w,x,y,z:std_logic; f = w when a=1 else x when b=1 else y when c=1 else z when d=1 else 0;,40/50,2. 并行信号赋值语句 选择信号赋值语句 格式: WITH 选择表达式 SELECT 赋值目标信号=表达式1 WHEN 条件1, 表达式2 WHEN 条件2 , : 表达式n WHEN 条件n;,3.3.5 基本并行描述语句,Signal s : std_logic_vector(1 downto 0); Signal a,b,c,d,f : std_logic; With s select f = a when “00”, b when “01”, c when “10”, d when “11”, X when others;,41/50,2. 并行信号赋值语句 注意: 条件信号赋值语句When-else语句条件语句可以是一个简单的表达式 选择信号赋值语句With-select-when则不能采用表达式作为条件 如: a = “0000” when state=idle and state=1 else “0001” when state=idle and state=0 else b when state=running and state=1 else a;,3.3.5 基本并行描述语句,42/50,3. 端口说明语句 PORT端口说明语句用于设计实体和外部电路的接口通道说明,包含对每一个接口通道的名称、模式和数据类型的说明。,3.3.5 基本并行描述语句,端口说明的一般格式为: PORT(端口名,端口名:端口模式 数据类型; 端口名,端口名:端口模式 数据类型);,43/50,几种语句的比较,44/50,在利用VHDL进行工程设计中,预先定义好的数据类型、子程序等设计单元的集合体(程序包),或预先设计好的各种设计实体(元件库程序包)等信息汇集在一个或几个库中以供调用。可以把库看成是一种用来存储预先完成的程序包和数据集合体的仓库。 库(LIBRARY)的语句格式如下: LIBRARY 库名; 这一语句即相当于为其后的设计实体打开了以此库名命名的库,以便设计实体可以利用其中的程序包。如语句“LIBRARY IEEE;”表示打开IEEE库。,3.4 VHDL的库和包,库(LIBRARY),45/50,常用库,IEEE库 IEEE库是VHDL设计中最为常见的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。IEEE库中的标准程序包主要包括STD_LOGIC_1164,NUMERIC_BIT和NUMERIC_STD等程序包。另外还包含了Synopsys 公司的STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED程序包。其中的STD_LOGIC_1164是最重要的最常用的程序包,大部分基于数字系统设计的程序包都是以此程序包中设定的标准为基础的

温馨提示

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

评论

0/150

提交评论