VHDL基础(精简)教程.ppt
《VHDL基础(精简)教程.ppt》由会员分享,可在线阅读,更多相关《VHDL基础(精简)教程.ppt(83页珍藏版)》请在三一办公上搜索。
1、第3章 VHDL基础,3.1 VHDL 基本语法,3.1.1 组合电路描述,图3-1 mux21a实体 图3-2 mux21a结构体,实体:描述电路的外部情况及各信号端口的基本性质,结构体:描述电路的内部逻辑功能和电路结构,3.1 VHDL 基本语法,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 IS BEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE one;,跳至3.2,
2、3.1 VHDL 基本语法,3.1.1 组合电路描述,【例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;BEGINd=a AND(NOT S);e=b AND s;y=d OR e;END ARCHITECTURE one;,3.1 VHDL 基本语法,【例3-3】ENTITY mux21a IS PORT(a,b,s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE
3、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;,3.1.1 组合电路描述,3.1 VHDL 基本语法,图3-3 mux21a功能时序波形,3.1.1 组合电路描述,3.1 VHDL 基本语法,3.1.2 VHDL结构,【例3-4】ENTITY e_name IS PORT(p_name:port_m data_type;.p_namei:port_mi data_type);END ENTITY e_name;,1.实体表达,
4、3.1 VHDL 基本语法,2.实体名,3.端口语句和端口信号名,4.端口模式,“IN”、“OUT”、“INOUT”、“BUFFER”,5.数据类型,3.1 VHDL 基本语法,6.结构体表达,【例3-5】ARCHITECTURE arch_name OF e_name IS 说明语句BEGIN(功能描述语句)END ARCHITECTURE arch_name;,3.1 VHDL 基本语法,9.条件语句,10.WHEN_ELSE条件信号赋值语句,赋值目标=表达式 WHEN 赋值条件 ELSE表达式 WHEN 赋值条件 ELSE.表达式;,z=a WHEN p1=1 ELSE b WHEN p
5、2=1 ELSE c;,3.1 VHDL 基本语法,7.赋值符号和数据比较符号,IF a THEN.-注意,a的数据类型必须是boolean IF(s1=0)AND(s2=1)OR(cb+1)THEN.,8.逻辑操作符,BIT、BOOLEAN、STD_LOGIC,AND(与)、OR(或)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)和NOT(取反),3.1 VHDL 基本语法,11.进程语句和顺序语句,12.文件取名和存盘,IF_THEN_ELSE_END IF;PROCESS.END PROCESS,“.vhd”,adder_f.vhd,3.2 时序电路描述,3.2.1
6、 D 触发器,跳至3.3,3.2 时序电路描述,3.2.2 时序描述VHDL规则,1.标准逻辑位数据类型 STD_LOGIC,BIT数据类型定义:TYPE BIT IS(0,1);-只有两种取值STD_LOGIC数据类型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);-有9种取值,3.2 时序电路描述,2.设计库和标准程序包,LIBRARY WORK;LIBRARY STD;USE STD.STANDARD.ALL;,LIBRARY;USE.ALL;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;,3.2 时序电路描述,3.信
7、号定义和数据对象,EVENT,4.上升沿检测表式和信号属性函数EVENT,5.不完整条件语句与时序电路,跳至3.3,3.2 时序电路描述,【例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=0;-未提及当a1=b1时,q1作何操作END IF;END PROCESS;END;,3.2 时序电路描述,图3-5 例3-7的电路图,3.2 时序
8、电路描述,图3-6 例3-8的电路图,【例3-8】.IF a1 b1 THEN q1=1;ELSE q1=0;END IF;.,3.2 时序电路描述,3.2.3 时序电路的不同表述,【例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;,3.2 时序电
9、路描述,【例3-11】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)-必须打开STD_LOGIC_1164程序包 THEN Q1=D;END IF;END PROCESS;Q=Q1;-在此,赋值语句可以放在进程外,作为并行赋值语句 END;,3.2 时序电路描述
10、,3.2.3 实现时序电路的不同表述,【例3-12】.PROCESS BEGIN wait until CLK=1;-利用wait语句 Q=D;END PROCESS;,3.2 时序电路描述,【例3-13】.PROCESS(CLK)BEGIN IF CLK=1 THEN Q=D;-利用进程的启动特性产生对CLK的边沿检测 END IF;END PROCESS,图3-7 例3-13的时序波形,3.2 时序电路描述,【例3-14】.PROCESS(CLK,D)BEGIN IF CLK=1-电平触发型寄存器 THEN Q=D;END IF;END PROCESS;,图3-8 例3-14的时序波形,3
11、.3 全加器的VHDL描述,3.3.1 半加器描述,图3-9 全加器f_adder电路图及其实体模块,3.3 全加器的VHDL描述,3.3.1 半加器描述,图3-10 半加器h_adder电路图及其真值表,3.3 全加器的VHDL描述,【例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
12、 abc:STD_LOGIC_VECTOR(1 DOWNTO 0);-定义标准逻辑位矢量数据类型BEGIN abc so so so so NULL;END CASE;END PROCESS;END ARCHITECTURE fh1;,【例3-18】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;ARCHITECTURE fd1 OF f_adder
13、 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;SIGNAL d,e,f:STD_LOGIC;-定义3个信号作为内部的连接线。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:or2
14、a PORT MAP(a=d,b=f,c=cout);END ARCHITECTURE fd1;,3.3 全加器的VHDL描述,跳至3.6,3.3 全加器的VHDL描述,3.3.2 CASE语句,1.CASE语句,CASE ISWhen=;.;;When=;.;;.WHEN OTHERS=;END CASE;,复习,3.3 全加器的VHDL描述,2.标准逻辑矢量数据类型,B=01100010;-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:O
15、UT STD_LOGIC_VECTOR(7 DOWNTO 0);或 SIGNAL A:STD_LOGIC_VECTOR(1 TO 4),复习,3.3 全加器的VHDL描述,3.并置操作符,SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a=10d(1)1;-元素与元素并置,并置后的数组长度为4.IF a d=101011 THEN.-在IF条件句中可以使用并置符,复习,3.3 全加器的VHDL描述,3.3.3 例化语句,COMPONENT 元件名 PORT(端口名表);END COMPON
16、ENT 文件名;,COMPONENT h_adder PORT(c,d:IN STD_LOGIC;e,f:OUT STD_LOGIC);END COMPONENT,例化名:元件名 PORT MAP(端口名=连接端口名,.);,跳至3.6,复习,3.4 计数器设计,【例3-19】ENTITY CNT4 IS PORT(CLK:IN BIT;Q:BUFFER INTEGER RANGE 15 DOWNTO 0);END;ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=Q+1;END I
17、F;END PROCESS;END bhv;,3.4 计数器设计,1程序说明,表式Q=Q+1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q+1,需等待下一个时钟周期。,3.4 计数器设计,2数据类型说明,1 十进制整数0 十进制整数35 十进制整数10E3 十进制整数,等于十进制整数100016#D9#十六进制整数,等于十六进制整数D9H8#720#八进制整数,等于八进制整数720O2#11010010#二进制整数,等于二进制整数11010010B,Q:BUFFER NATURAL RANGE 15 DOWNTO 0;,
18、Q:BUFFER INTEGER RANGE 15 DOWNTO 0;,3.4 计数器设计,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 DOWNTO 0);END;ARCHITECTURE bhv OF CNT4 ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK)BE
19、GIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1;END IF;END PROCESS;Q=Q1;END bhv;,3.5 一般计数器的VHDL设计方法,【例3-21】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT(CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE behav
20、 OF CNT10 ISBEGIN PROCESS(CLK,RST,EN)VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF RST=1 THEN CQI:=(OTHERS=0);-计数器异步复位 ELSIF CLKEVENT AND CLK=1 THEN-检测时钟上升沿 IF EN=1 THEN-检测是否允许计数(同步使能)IF CQI 0);-大于9,计数值清零 END IF;END IF;END IF;IF CQI=9 THEN COUT=1;-计数大于9,输出进位信号 ELSE COUT=0;END IF;CQ=CQI;-将计数值向端口
21、输出 END PROCESS;END behav;,3.5 一般计数器的VHDL设计方法,3.5.1 相关语法,SIGNAL d1:STD_LOGIC_VECTOR(4 DOWNTO 0);VARIABLE a1:STD_LOGIC_VECTOR(15 DOWNTO 0);.d1 0);a1:=(OTHERS=0);,d1 e(3),3=e(5),OTHERS=e(1);,f=e(1),3.5 一般计数器的VHDL设计方法,3.5.2 程序功能分析,图3-11 例3-21的RTL电路(Synplify综合),3.5 一般计数器的VHDL设计方法,3.5.2 程序功能分析,图3-12 例3-21
22、的工作时序,3.5 一般计数器的VHDL设计方法,3.5.3 移位寄存器设计,【例3-22】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT IS-8位右移寄存器 PORT(CLK,LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);QB:OUT STD_LOGIC);END SHFRT;ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS(CLK,LOAD)VARIABLE REG8:STD_LOGIC_VECTOR(7 DOWNTO 0);B
23、EGIN IF CLKEVENT AND CLK=1 THEN IF LOAD=1 THEN REG8:=DIN;-由(LOAD=1)装载新数据 ELSE REG8(6 DOWNTO 0):=REG8(7 DOWNTO 1);END IF;END IF;QB=REG8(0);-输出最低位 END PROCESS;END behav;,3.5 一般计数器的VHDL设计方法,3.5.3 移位寄存器设计,图3-13 例3-22的工作时序,3.6 数据对象,3.6.1 常数,CONSTANT 常数名:数据类型:=表达式;,CONSTANT FBT:STD_LOGIC_VECTOR:=010110;-标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 基础 精简 教程
链接地址:https://www.31ppt.com/p-5452181.html