[工学]第四章_VHDL设计初步.ppt_第1页
[工学]第四章_VHDL设计初步.ppt_第2页
[工学]第四章_VHDL设计初步.ppt_第3页
[工学]第四章_VHDL设计初步.ppt_第4页
[工学]第四章_VHDL设计初步.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

第4章,VHDL设计初步,电信学院 张沛泓,教学目的及要求,本章通过几个简单、完整而典型的VHDL设计示例,使大家了解用VHDL表达和设计电路的方法,并对由此而引出的VHDL语言现象和语句规则加以有针对性的说明,以便大家能迅速从整体上把握VHDL程序的基本结构和设计特点。 通过对本章的学习,要求大家掌握VHDL设计的基本概念、基本结构和设计特点,掌握时序逻辑和组合逻辑电路的表达方式。,第4章 VHDL设计初步,教学重点: VHDL设计的基本结构和特点 时序逻辑和组合逻辑电路设计方法,第4章 VHDL设计初步,多路选择器VHDL描述,寄存器描述及其VHDL语言现象,1位二进制全加器的VHDL设计,1,2,3,第4章 VHDL设计初步,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 ;,实体,结构体,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d = a AND (NOT S); e = b AND s; y = d OR e; END ARCHITECTURE one;,. . . ARCHITECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s); END ARCHITECTURE one;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a; ELSE y = b; END IF; END PROCESS; END ARCHITECTURE one ;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ; END ARCHITECTURE one ;,ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a; ELSE y = b; END IF; END PROCESS; END ARCHITECTURE one ;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a; ELSE y = b; END IF; END PROCESS; END ARCHITECTURE one ;,mux21a功能时序波形,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,(1)实体表达,ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END ENTITY e_name;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,(1)实体表达,(2)实体名,(3)PORT语句和端口信号名,(4)端口模式,IN,OUT,INOUT,BUFFER,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,(1)实体表达,(2)实体名,(3)PORT语句和端口信号名,(4)端口模式,(5)数据类型BIT,(6)结构体表达,ARCHITECTURE arch_name OF e_name IS (说明语句) BEGIN (功能描述语句) END ARCHITECTURE arch_name ;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,(1)实体表达,(2)实体名,(3)PORT语句和端口信号名,(4)端口模式,(5)数据类型BIT,(6)结构体表达,(7)信号传输(赋值)符号和数据比较符号,IF s = 0 THEN y = a; ELSE y = b; END IF;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,(1)实体表达,(2)实体名,(3)PORT语句和端口信号名,(4)端口模式,(5)数据类型BIT,(6)结构体表达,(7)信号传输(赋值)符号和数据比较符号,(8)逻辑操作符AND、OR、NOT,(9)IF_THEN条件语句,(10)WHEN_ELSE条件信号赋值语句,赋值目标 = 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE . 表达式 ;,z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c ;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,(1)实体表达,(2)实体名,(3)PORT语句和端口信号名,(4)端口模式,(5)数据类型BIT,(6)结构体表达,(7)信号传输(赋值)符号和数据比较符号,(8)逻辑操作符AND、OR、NOT,(9)IF_THEN条件语句,(10)WHEN_ELSE条件信号赋值语句,(11)PROCESS进程语句和顺序语句,PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a; ELSE y = b; END IF; END PROCESS;,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,(1)实体表达,(2)实体名,(3)PORT语句和端口信号名,(4)端口模式,(5)数据类型BIT,(6)结构体表达,(7)信号传输(赋值)符号和数据比较符号,(8)逻辑操作符AND、OR、NOT,(9)IF_THEN条件语句,(10)WHEN_ELSE条件信号赋值语句,(11)PROCESS进程语句和顺序语句,(12)文件取名和存盘,4.1 多路选择器VHDL描述,4.1.1 2选1多路选择器的VHDL描述,第4章 VHDL设计初步,4.1.2 VHDL相关语句说明,4.1.3 VHDL设计的基本概念和语句小节,数据类型,信号赋值符,条件比较符, 延时,实体,结构体,端口定义,端口模式,逻辑操作符,IF条件语句,并行条件语句,进程语句,顺序语句,并行语句,文件取名,文件存盘,多路选择器VHDL描述,寄存器描述及其VHDL语言现象,1位二进制全加器的VHDL设计,1,2,3,第4章 VHDL设计初步,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF1 IS PORT (CLK,D : IN STD_LOGIC; Q : OUT STD_LOGIC ); END; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC; -类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D; END IF; Q = Q1; -将内部的暂存数据向端口输出 END PROCESS; END bhv;,D触发器,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,(1)标准逻辑位数据类型STD_LOGIC,BIT数据类型定义: TYPE BIT IS(0,1);,STD_LOGIC数据类型定义: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);,STD_LOGIC所定义的9种数据的含义是: U表示未初始化的; X表示强未知的; 0表示强逻辑0; 1表示强逻辑1; Z表示高阻态; W 表示弱未知的; L表示弱逻辑0; H表示弱逻辑1; -表示忽略。,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,(1)标准逻辑位数据类型STD_LOGIC,(2)设计库和标准程序包,使用库和程序包的一般定义表式是: LIBRARY ; USE ALL ; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,(1)标准逻辑位数据类型STD_LOGIC,(2)设计库和标准程序包,(3)SIGNAL信号定义和数据对象,ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ; END ;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,(1)标准逻辑位数据类型STD_LOGIC,(2)设计库和标准程序包,(3)SIGNAL信号定义和数据对象,(4)上升沿检测表式和信号属性函数EVENT,上升沿检测常用表式:CLKEVENT AND CLK=1 关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿:EVENT,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,(1)标准逻辑位数据类型STD_LOGIC,(2)设计库和标准程序包,(3)SIGNAL信号定义和数据对象,(4)上升沿检测表式和信号属性函数EVENT,(5)不完整条件语句与时序电路,IF CLKEVENT AND CLK = 1 THEN Q1 = D; END IF;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,(5)不完整条件语句与时序电路,ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 = 0 ; END IF; END PROCESS ; END ;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,(5)不完整条件语句与时序电路,ENTITY COMP_GOOD IS PORT(a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_GOOD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,4.2.3 实现时序电路的VHDL不同表达方式,. PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保CLK的变化是一次上升沿的跳变 END IF; END PROCESS ;,. PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,4.2.3 实现时序电路的VHDL不同表达方式,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q : OUT STD_LOGIC );END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,4.2.3 实现时序电路的VHDL不同表达方式,【例4-14】 . PROCESS BEGIN wait until CLK = 1; -利用wait语句 Q = D ; END PROCESS;,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,4.2.3 实现时序电路的VHDL不同表达方式,【例4-15】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS ;,边沿型触发器时序波形,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,4.2.3 实现时序电路的VHDL不同表达方式,【例4-16】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;,电平触发型寄存器的时序波形,第4章 VHDL设计初步,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,4.2.2 D触发器VHDL描述的语言现象说明,4.2.3 实现时序电路的VHDL不同表达方式,4.2.4 异步时序电路设计,【例4-17】. ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGIN PRO1: PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ; PRO2:PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; QQ = Q2 ; END PROCESS ;,多路选择器VHDL描述,寄存器描述及其VHDL语言现象,1位二进制全加器的VHDL设计,1,2,3,第4章 VHDL设计初步,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,全加器f_adder电路图,半加器h_adder电路图,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,半加器h_adder电路图,LIBRARY IEEE; -半加器描述(1) USE IEEE.STD_LOGIC_1164.ALL; ENTITY adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY adder; ARCHITECTURE fh1 OF adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,半加器h_adder电路图,【例4-20】 LIBRARY IEEE; -半加器描述(2) 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 = a ,PROCESS(abc) BEGIN CASE abc IS WHEN “00“ = so so so so NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,半加器h_adder电路图,【例4-20】 LIBRARY IEEE; -半加器描述(2) 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 = a ,【例4-21】 . -半加器描述(3) SIGNAL abc,cso : STD_LOGIC_VECTOR(1 DOWNTO 0 ); BEGIN abc cso cso cso cso=“10“ ; END CASE; END PROCESS; END ARCHITECTURE fh1;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,全加器f_adder电路图,【例4-18】 LIBRARY IEEE ;-或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a OR b ; END ARCHITECTURE fu1;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,全加器f_adder电路图,LIBRARY IEEE; -1位二进制全加器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,全加器f_adder电路图,ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,全加器f_adder电路图,SIGNAL d,e,f : STD_LOGIC; BEGIN u1 : h_adder PORT MAP(a=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;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,4.3.1 半加器描述和CASE语句,半加器h_adder逻辑功能真值表,PROCESS(abc) BEGIN CASE abc IS WHEN “00“ = so so so so NULL ; END CASE; END PROCESS;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,(1)CASE语句,CASE语句的一般表达式是:,CASE IS When = ; . ; ; When = ; . ; ; . END CASE ;,4.3.1 半加器描述和CASE语句,CASE abc IS WHEN “00“ = so so so so NULL ; END CASE;,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,(1)CASE语句,4.3.1 半加器描述和CASE语句,(2)标准逻辑矢量数据类型STD_LOGIC_VECTOR,在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,例如: B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4);,第4章 VHDL设计初步,4.3 1位二进制全加器的VHDL设计,(1)CASE语句,4.3.1 半加器描述和CASE语句,(2)标准逻辑矢量数据类型STD_LOGIC_VECTOR,(3)并置操作符 ,以下是一些并置操作示例:,SIGNAL a :

温馨提示

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

评论

0/150

提交评论