第3章 VHDL基础.ppt
《第3章 VHDL基础.ppt》由会员分享,可在线阅读,更多相关《第3章 VHDL基础.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VHDLVHDL与与EDAEDA3.1 VHDL 3.1 VHDL 基本语法基本语法 3.1.1 3.1.1 组合电路描述组合电路描述图图3-1 mux21a实体实体 图图3-2 mux21a结构体结构体 第第3 3章章 VHDL VHDL 基础基础VHDLVHDL与与EDAEDA3.1.1 3.1.1 组合电路描述组合电路描述【例例3-1】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGIN y=a WHEN s=0 ELSE b;EN
2、D ARCHITECTURE one;VHDLVHDL与与EDAEDA【例例3-2】ENTITY mux21a IS PORT(a,b,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;3.1.1 3.1.1 组合电路描述组合电路描述VHDLVHDL与与EDAEDA【例例3-3】ENTITY mux21a IS PORT(a,b,s:IN BIT;y:OUT
3、BIT);END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGIN PROCESS(a,b,s)BEGIN IF s=0 THEN y=a ELSE y=b;END IF;END PROCESS;END ARCHITECTURE one;3.1.1 3.1.1 组合电路描述组合电路描述VHDLVHDL与与EDAEDA图图3-3 mux21a功能时序波形功能时序波形 3.1.1 3.1.1 组合电路描述组合电路描述VHDLVHDL与与EDAEDA3.1 VHDL 3.1 VHDL 基本语法基本语法3.1.2 VHDL3.1.2 VHDL结构结构 【
4、例例3-4】ENTITY e_name IS PORT(p_name:port_m data_type;.p_namei:port_mi data_type);END ENTITY e_name;1.1.实体表达实体表达 VHDLVHDL与与EDAEDA3.1 VHDL 3.1 VHDL 基本语法基本语法2.2.实体名实体名 3.3.端口语句和端口信号名端口语句和端口信号名 4.4.端口模式端口模式 “IN”、“OUT”、“INOUT”、“BUFFER”5.5.数据类型数据类型 6.6.结构体表达结构体表达 【例例3-53-5】ARCHITECTURE arch_name OF e_name
5、IS 说说明明语语句句BEGIN (功能描述功能描述语语句句)END ARCHITECTURE arch_name;VHDLVHDL与与EDAEDA3.1 VHDL 3.1 VHDL 基本语法基本语法7.7.赋值符号和数据比较符号赋值符号和数据比较符号 IF a THEN.-注意,注意,a的数据类型必须是的数据类型必须是booleanIF(s1=0)AND(s2=1)OR(cb+1)THEN.8.8.逻辑操作符逻辑操作符 BIT、BOOLEAN、STD_LOGIC AND(AND(与与)、OR(OR(或或)、NAND(NAND(与非与非)、NOR(NOR(或非或非)、XOR(XOR(异异或或)
6、、XNOR(XNOR(同或同或)和和NOT(NOT(取反取反)9.9.条件语句条件语句 VHDLVHDL与与EDAEDA3.1 VHDL 3.1 VHDL 基本语法基本语法10.WHEN_ELSE10.WHEN_ELSE条件信号赋值语句条件信号赋值语句 赋值目标赋值目标 =表达式表达式 WHEN WHEN 赋值条件赋值条件 ELSEELSE表达式表达式 WHEN WHEN 赋值条件赋值条件 ELSEELSE .表达式表达式 ;z=a WHEN p1=1 ELSE b WHEN p2=1 ELSE c;VHDLVHDL与与EDAEDA3.1 VHDL 3.1 VHDL 基本语法基本语法11.11
7、.进程语句和顺序语句进程语句和顺序语句 12.12.文件取名和存盘文件取名和存盘 IF_THEN_ELSE_END IF;PROCESS.END PROCESS “.vhd”adder_f.vhd VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 3.2.1 D 3.2.1 D 触发器触发器 【例例3-6】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 ISPORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF D
8、FF1 ISSIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点类似于在芯片内部定义一个数据的暂存节点BEGIN PROCESS(CLK,Q1)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;END PROCESS;Q=Q1;-将内部的暂存数据向端口输出(双横线将内部的暂存数据向端口输出(双横线-是注释符号)是注释符号)END bhv;图图3-4 D触发器触发器 VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 3.2.23.2.2 时序描述时序描述VHDLVHDL规则规则 1.1.标准逻辑位数据类型
9、标准逻辑位数据类型 STD_LOGIC STD_LOGIC BITBIT数据类型定义:数据类型定义:TYPE BIT IS(0,1);-只有两种取值只有两种取值STD_LOGICSTD_LOGIC数据类型定义:数据类型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);-有有9种取值种取值 VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 2.2.设计库和标准程序包设计库和标准程序包 LIBRARY WORK;LIBRARY STD;USE STD.STANDARD.ALL;LIBRARY;USE.ALL;LIBRARY IEEE;USE I
10、EEE.STD_LOGIC_1164.ALL;3.3.信号定义和数据对象信号定义和数据对象 EVENT 4.4.上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENT EVENT VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 【例例3-7】ENTITY COMP_BAD IS PORT(a1,b1:IN BIT;q1:OUT BIT);END;ARCHITECTURE one OF COMP_BAD ISBEGIN PROCESS(a1,b1)BEGIN IF a1b1 THEN q1=1;ELSIF a1b1 THEN q1 b1 a1 b1 THEN
11、THEN q1=1;q1=1;ELSEELSE q1=0;q1=0;END IFEND IF;.图图3-6 例例3-8的电路图的电路图 VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 3.2.3 3.2.3 时序电路的不同表述时序电路的不同表述 【例例3-9】.PROCESS(CLK)BEGIN IF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF;END PROCESS;【例例3-10】.PROCESS(CLK)BEGIN IF CLK=1
12、 AND CLKLAST_VALUE=0 THEN Q=D;-同例同例3-9 END IF;END PROCESS;VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 【例例3-11】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 ISPORT(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)THEN-必
13、须打开必须打开STD_LOGIC_1164程序包程序包 Q1=D;END IF;END PROCESS;Q=Q1;-在此,赋值语句可以放在进程外,作为并行赋值语句在此,赋值语句可以放在进程外,作为并行赋值语句END;VHDLVHDL与与EDAEDA3.2.3 3.2.3 实现时序电路的不同表述实现时序电路的不同表述 【例例3-12】.PROCESS BEGIN wait until CLK=1 ;-利用利用wait语语句句 Q=D;END PROCESS;3.2 3.2 时序电路描述时序电路描述 VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 【例例3-13】.PRO
14、CESS(CLK)BEGIN IF CLK=1 THEN Q=D;-利用利用进进程的程的启启动动特性特性产产生生对对CLK的的边边沿沿检测检测 END IF;END PROCESS 图图3-7 例例3-13的时序波形的时序波形 VHDLVHDL与与EDAEDA3.2 3.2 时序电路描述时序电路描述 【例例3-14】.PROCESS(CLK,D)BEGIN IF CLK=1 THEN-电平触发型寄存器电平触发型寄存器 Q=D;END IF;END PROCESS;图图3-8 例例3-14的时序波形的时序波形 VHDLVHDL与与EDAEDA3.3 3.3 全加器的全加器的VHDLVHDL描述描
15、述3.3.1 3.3.1 半加器描述半加器描述coutainbinsumcinor2afedu3u2u1baccosoBcosoBh_adderAh_adderA图图3-9 3-9 全加器全加器f_adderf_adder电路图及其实体模块电路图及其实体模块aincoutbinsumcinf_adderVHDLVHDL与与EDAEDA3.3 3.3 全加器的全加器的VHDLVHDL描述描述 3.3.1 3.3.1 半加器描述半加器描述1001010110001100cosoba图图3-10 半加器半加器h_adder电路图及其真值表电路图及其真值表 coasobnotxnor2and2VHDL
16、VHDL与与EDAEDA3.3 3.3 全加器的全加器的VHDLVHDL描述描述3.3.1 3.3.1 半加器描述半加器描述【例例3-15】LIBRARY IEEE;-半加器描述半加器描述(1):布尔方程描述方法:布尔方程描述方法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 BEGIN so=NOT(a XOR(NOT b);co=a AND b;END ARCHI
17、TECTURE fh1;VHDLVHDL与与EDAEDA3.3 3.3 全加器的全加器的VHDLVHDL描述描述【例例3-16】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);-定义标准逻辑位矢量数据类定
18、义标准逻辑位矢量数据类型型BEGIN abc so=0;co so=1;co so=1;co so=0;co NULL;END CASE;END PROCESS;END ARCHITECTURE fh1;VHDLVHDL与与EDAEDA3.3 3.3 全加器的全加器的VHDLVHDL描述描述【例例3-17】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 o
19、r2a IS BEGIN c 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;3.3 3.3 全加器的全加器的VHDLVHDL描述描述【例例3-18】LIBRARY IEEE;-1位二进制全加器顶层设计描述位二进制全加器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder IS PORT(ain,bin,cin:IN STD_LOGIC;cou
20、t,sum:OUT STD_LOGIC);END ENTITY f_adder;coutainbinsumcinor2afedu3u2u1baccosoBcosoBh_adderAh_adderAVHDLVHDL与与EDAEDA3.3 3.3 全加器的全加器的VHDLVHDL描述描述3.3.2 CASE3.3.2 CASE语句语句 1.CASE语句语句 CASE ISWhen=;.;;When=;.;;.WHEN OTHERS=;END CASE;VHDLVHDL与与EDAEDA3.3 3.3 全加器的全加器的VHDLVHDL描述描述2.标准逻辑矢量数据类型标准逻辑矢量数据类型 B=01100
21、010;-B(7)为为 0 B(4 DOWNTO 1)=1101;-B(4)为为 1 B(7 DOWNTO 4)=A;-B(6)等于等于 A(2)SIGNAL C:BIT_VECTOR(3 DOWNTO 0);B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);或或 SIGNAL A:STD_LOGIC_VECTOR(1 TO 4)3.并置操作符并置操作符 SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a 连接端口名连接端口名,.);VHDLVHDL与与EDAEDA3.
22、4 3.4 计数器设计计数器设计 【例例3-19】ENTITY CNT4 IS PORT(CLK:IN BIT;Q:BUFFER INTEGER RANGE 15 DOWNTO 0);END;ARCHITECTURE bhv OF CNT4 ISBEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=Q+1;END IF;END PROCESS;END bhv;VHDLVHDL与与EDAEDA3.4 3.4 计数器设计计数器设计 1 1程序说明程序说明 表式表式Q=Q+1Q=Q+1的右项与左项并非处于相同的时刻内,对于的右项与左项并非处于相同的
23、时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的后者,即左项要获得当前的Q+1Q+1,需等待下一个时钟周期。需等待下一个时钟周期。2 2数据类型说明数据类型说明 1 十进制整数十进制整数0 十进制整数十进制整数35 十进制整数十进制整数10E3 十进制整数,等于十进制整数十进制整数,等于十进制整数100016#D9#十六进制整数,等于十六进制整数十六进制整数,等于十六进制整数D9H8#720#八进制整数,等于八进制整数八进制整数,等于八进制整数720O2#11010010#二进制整数,等于二进制
24、整数二进制整数,等于二进制整数11010010B Q:BUFFER NATURAL RANGE 15 DOWNTO 0;Q:BUFFER INTEGER RANGE 15 DOWNTO 0;VHDLVHDL与与EDAEDA3.4 3.4 计数器设计计数器设计 3 3计数器的其他表述方法计数器的其他表述方法【例例3-20】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWN
25、TO 0);END;ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1;END IF;END PROCESS;Q0);-计数器异步复位计数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿检测时钟上升沿 IF EN=1 THEN -检测是否允许计数(同步使能)检测是否允许计数(同步使能)IF CQI 0);-大于大于9,计数值清零,计数值清零 END IF;E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 VHDL基础 VHDL 基础
限制150内