讲VHDL入门

上传人:油条 文档编号:1616652 上传时间:2017-06-28 格式:PPT 页数:56 大小:241.50KB
返回 下载 相关 举报
讲VHDL入门_第1页
第1页 / 共56页
讲VHDL入门_第2页
第2页 / 共56页
讲VHDL入门_第3页
第3页 / 共56页
讲VHDL入门_第4页
第4页 / 共56页
讲VHDL入门_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《讲VHDL入门》由会员分享,可在线阅读,更多相关《讲VHDL入门(56页珍藏版)》请在金锄头文库上搜索。

1、1,EDA技术与VHDL,第4讲第3章 VHDL 入门,HQUEDA中心,2,3.1 简单组合电路的VHDL描述,3.1.1 多路选择器的VHDL描述,图3-1 mux21a实体 图3-2 mux21a结构体,3,3.1 简单组合电路的VHDL描述,3.1.1 多路选择器的VHDL描述,【例3-1】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 AR

2、CHITECTURE one ;,4,3.1 简单组合电路的VHDL描述,3.1.1 多路选择器的VHDL描述,【例3-2】 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; BEGINd = a AND (NOT S) ;e = b AND s ;y = d OR e ; END ARCHITECTURE one ;,5,3.1 简单组合电路的VHDL描述,3.1.1 多路选择器的

3、VHDL描述,【例3-3】 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 ;,6,3.1 简单组合电路的VHDL描述,3.1.1 多路选择器的VHDL描述,图3-3 mux21a功能时序波形,7,3.1 简单组合电路的VHDL描述,1

4、. 实体表达,【例3-4】ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END ENTITY e_name;,8,3.1 简单组合电路的VHDL描述,2. 实体名,3. 端口语句和端口信号名,4. 端口模式,“IN”、“OUT”、“INOUT”、“BUFFER”,5. 数据类型,9,3.1 简单组合电路的VHDL描述,6. 结构体表达,【例3-5】ARCHITECTURE arch_name OF e_name IS 说明语句BEGIN (功能描述语句)END ARCHIT

5、ECTURE arch_name ;,10,3.1 简单组合电路的VHDL描述,7. 赋值符号和数据比较符号,IF a THEN . - 注意,a的数据类型必须是boolean IF (s1=0)AND(s2=1)OR(cb+1) THEN .,8. 逻辑操作符,BIT、BOOLEAN、STD_LOGIC,11,3.1 简单组合电路的VHDL描述,9. 条件语句,10. WHEN_ELSE条件信号赋值语句,赋值目标 = 表达式 WHEN 赋值条件 ELSE表达式 WHEN 赋值条件 ELSE . 表达式 ;,z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c

6、 ;,12,3.1 简单组合电路的VHDL描述,11. 进程语句和顺序语句,12. 文件取名和存盘,IF_THEN_ELSE_END IF;,“.vhd”,adder_f.vhd,13,【例3-6】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂

7、存节点 BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ;Q = Q1 ; -将内部的暂存数据向端口输出(双横线-是注释符号) END bhv;,3.2 简单时序电路的VHDL描述,3.2.1 D触发器,图3-4 D触发器,14,3.2 简单时序电路的VHDL描述,3.2.2 D触发器VHDL描述的语言现象说明,1. 标准逻辑位数据类型STD_LOGIC,BIT数据类型定义: TYPE BIT IS(0,1); -只有两种取值STD_LOGIC数据类型定义: TYPE

8、STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);,15,3.2 简单时序电路的VHDL描述,3.2.2 D触发器VHDL描述的语言现象说明,2. 设计库和标准程序包,LIBRARY WORK ;LIBRARY STD ; USE STD.STANDARD.ALL ;,LIBRARY ; USE .ALL ;,LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;,16,3.2 简单时序电路的VHDL描述,3.2.2 D触发器VHDL描述的语言现象说明,3. 信号定义和数据对象,EVENT,4. 上升沿检测表式和信号属性函数EVENT,5. 不完

9、整条件语句与时序电路,17,3.2 简单时序电路的VHDL描述,3.2.2 D触发器VHDL描述的语言现象说明,【例3-7】ENTITY COMP_BAD IS PORT( a1,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 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; .,20,3.2 简单时序电路的VHDL描述,3.2.3 实现时序电

10、路的不同表述,【例3-9】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保CLK的变化是一次上升沿的跳变 END IF; END PROCESS ;【例3-10】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例3-9 THEN Q = D ; END IF; END PROCESS ;,21,3.2 简单时序电路的VHDL描述,3.2.3 实现时序电路的不同表述,【例3-11】LIBRARY IEEE ;USE IEEE.S

11、TD_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) - 必须打开STD_LOGIC_1164程序包 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -在此,赋值语句可以放在进程外,作为并行赋值语句 END ;,22,3.2 简单时序电路

12、的VHDL描述,3.2.3 实现时序电路的不同表述,【例3-12】.PROCESS BEGIN wait until CLK = 1 ; -利用wait语句 Q = D ;END PROCESS;,23,3.2 简单时序电路的VHDL描述,3.2.3 实现时序电路的不同表述,【例3-13】.PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS,图3-7 例3-13的时序波形,24,3.2 简单时序电路的VHDL描述,3.2.3 实现时序电路的不同表述,【例3-14】.PROCE

13、SS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;,图3-8 例3-14的时序波形,25,3.2 简单时序电路的VHDL描述,3.2.4 异步时序电路设计,【例3-15】 . ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1: 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; END PROCESS ; QQ = Q2 ; .,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号