EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件

上传人:E**** 文档编号:89373264 上传时间:2019-05-24 格式:PPT 页数:132 大小:487.50KB
返回 下载 相关 举报
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件_第1页
第1页 / 共132页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件_第2页
第2页 / 共132页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件_第3页
第3页 / 共132页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件_第4页
第4页 / 共132页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件_第5页
第5页 / 共132页
点击查看更多>>
资源描述

《EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件》由会员分享,可在线阅读,更多相关《EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0 第5章EDA课件(132页珍藏版)》请在金锄头文库上搜索。

1、2019/5/24,第5章 基本逻辑电路设计,5.1 组合逻辑电路设计 5.2 时序逻辑电路设计 5.3 存储器设计 5.4 状态机的VHDL设计,2019/5/24,第5章基本逻辑电路设计,教学目标 教学重点 教学过程,2019/5/24,掌握组合逻辑电路的设计 掌握总线接口电路的设计 掌握存储器和状态机的设计 通过若干数字电路设计实例 掌握复杂逻辑电路的设 计方法,第5章教学目标,2019/5/24,第5章 教学重点,掌握组合逻辑电路的设计 掌握总线接口电路的设计 掌握存储器和状态机的设计,2019/5/24,5.1 组合逻辑电路设计,5.1.1 基本门电路 1.基本门电路的VHDL语言描

2、述 基本门电路用VHDL语言来描述十分方便。为方便起见,在下面的两输入模块中,使用VHDL中定义的逻辑运算符,同时实现一个与门、或门、与非门、或非门、异或门及反相器的逻辑。,本节的组合逻辑电路设计主要有:基本门电路、3-8译码器、8-3线优先编码器、8位比较器、多路选择器、三态门电路、单向总线驱动器、双向总线缓冲器等设计实例。,2019/5/24,【例5.1.1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY GATE IS PORT (A,B:IN STD_LOGIC; YAND,YOR,YNAND,YNOR,YNOT,YXOR:OUT

3、STD_LOGIC); END GATE; ARCHITECTURE ART OF GATE IS,2019/5/24,BEGIN YAND=A AND B; -与门输出 YOR=A OR B; -或门输出 YNAND=A NAND B; -与非门输出 YNOR=A NOR B; -或非门输出 YNOT=A NOT B; -反相器输出 YXOR=A XOR B; -异或门输出 END ART;,2019/5/24,2.3-8译码器 下面我们分别以4种方法描述一个3-8译码器。 【例5.1.2】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEE

4、E.STD_LOGIC_UNSIGNED_ALL; ENTITY DECODER IS PORT(INP:IN STD_LOGIC_VECTOR(2 DOWNTO 0); OUTP:OUT BIT_VECTOR (7 DOWNTO 0); END DECODER;,2019/5/24,方法1:使用SLL逻辑运算符 ARCHITECTURE ART1 OF DECODER IS BEGIN OUTP= “11111110“ SLL (CONV_INTEGER(INP);-输出低有效译码 END ART1;,2019/5/24,方法2:使用PROCESS语句 ARCHITECTURE ART2 O

5、F DECODER IS BEGIN PROCESS(INP) BEGIN OUTP1) -对输出所有位全赋0 OUTP(COVN_INTEGER(INP)=1 -仅对其中的一位赋值 END PROCESS; END ART2,2019/5/24,方法3:使用CASE_WHEN 语句 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DECODER IS PORT(SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0); EN: IN STD_LOGIC; -加使能控制端 Y:OUT BIT_VECTOR (7 DOWNTO 0

6、); ARCHITECTURE ART3 OF DECODER IS BEGIN PROCESS(SEL,EN) BEGIN Y=”11111111”; IF(EN=1) THEN,2019/5/24,CASE SEL IS WHEN “000“=Y(0) Y(1) Y(2) Y(3) Y(4) Y(5) Y(6) Y(7)NULL; END CASE; END PROCESS; END ART3;,2019/5/24,方法4:使用条件选择WHEN ELSE 语句 ARCHITECTURE ART4 OF DECODER IS BEGIN Y(0)=0 WHEN (EN=1AND SEL=“0

7、00“) ELSE1; Y (1)=0 WHEN (EN=1AND SEL=“001“) ELSE1; Y (2)=0 WHEN (EN=1AND SEL=“010“) ELSE1; Y (3)=0 WHEN (EN=1AND SEL=“011“) ELSE1; Y (4)=0 WHEN (EN=1AND SEL=“100“) ELSE1; Y (5)=0 WHEN (EN=1AND SEL=“101“) ELSE1; Y (6)=0 WHEN (EN=1AND SEL=“110“) ELSE1; Y (7)=0 WHEN (EN=1AND SEL=“111“) ELSE1; END ART4

8、;,2019/5/24,3. 8-3线优先编码器 下面我们用三种方法设计8-3线优先编码器。 8-3线优先编码器,输入信号为y0、y1、y2、y3、y4、y5、y6和y7,输出信号为OUT0、OUT1和OUT2。输入信号中y0的优先级别最低,依次类推,y7的优先级别最高。 【例5.1.3】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ENCODER IS PORT (y0,y1,y2,y3,y4,y5,y6,y7:IN STD_LOGIC; OUT0,OUT1,OUT2:OUT STD_LOGIC); END ENCODER;,2019/

9、5/24,方法1:使用条件赋值语句 ARCHITECTURE ART1 OF ENCODER IS SIGNAL OUTS:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN OUTS (2 DOWNTO 0)= “111“ WHEN y7=1 ELSE “110“ WHEN y6=1 ELSE “101“ WHEN y5=1 ELSE “100“ WHEN y4=1 ELSE “011“ WHEN y3=1 ELSE “010“ WHEN y2=1 ELSE “001“ WHEN y1=1 ELSE “000“ WHEN y0=1 ELSE “XXX“; OUT0=OUT

10、S(0); OUT1=OUTS(1); OUT2=OUTS(2); END ART1;,2019/5/24,方法2:使用IF语句 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ENCODER IS PORT(IN1:IN STD_LOGIC_VECTOR(7 DOWNTO 0); OUT1:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END ENCODER; ARCHITECTURE ART2 OF ENCODER IS BEGIN PROCESS(IN1),2019/5/24,BEGIN IF IN1(7)=1 T

11、HEN OUT1=“111“; ELSIF IN1(6)=1 THEN OUT1=“110“; ELSIF IN1(5)=1 THEN OUT1=“101“; ELSIF IN1(4)=1 THEN OUT1=“100“; ELSIF IN1(3)=1 THEN OUT1=“011“; ELSIF IN1(2)=1 THEN OUT1=“010“; ELSIF IN1(1)=1 THEN OUT1=“001“; ELSIF IN1(0)=1 THEN OUT1=“000“; ELSE OUT1=“XXX“; END IF ; END PROCESS; END ART2;,2019/5/24,4

12、.加法器带进位的4位加法器 【例5.1.4】用FOR-LOOP语句实现 LIBRARY IEEE; 方法1: USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADDER4 IS PORT (A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CIN:IN STD_LOGIC; SUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUNT:OUT STD_LOGIC); END ADDER4;,2019/5/24,ARCHITECTURE ART OF ADDER4IS SIGNAL C :STD_LOGIC_VECTOR(

13、4 DOWNTO 0); BEGIN PROCESS(A,B,CIN,C) BEGIN C(0)=CIN; FOR I IN 0 TO 3 LOOP -用FOR循环语句实现多位相加 SUM(I)=A(I) XOR B(I) XOR C(I); C(I+1) =(A(I) AND B(I) OR (C(I) AND (A(I) OR B(I); END LOOP;,2019/5/24,COUNT=C(4); -总的进位输出 END PROCESS; END ART; 方法2:直接使用加法“+”函数 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IE

14、EE.STD_LOGIC_UNSIGNED_ALL; ENTITY ADDER4_OP IS,2019/5/24,PORT (A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CIN:IN STD_LOGIC; SUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUNT:OUT STD_LOGIC); END ADDER4_OP; ARCHITECTURE ART OF ADDER4_OP IS SIGNAL C :STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(A,B,CIN,C) BEGIN END

15、 PROCESS; SUM=C(3 DOWNTO 0) COUT=C(4) END ART,2019/5/24,5.8位比较器 比较器可以比较两个二进制是否相等,下面是一个8位比较器的VHDL描述。有两个8位二进制数,分别是A和B,输出为EQ,当A=B时,EQ=1,否则EQ=0。 【例5.1.5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_VECTOR(7 DOWNTO 0); ENTITY COMPARE IS PORT (A,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EQ:OUT STD_LOGIC); END COMPARE; ARCH

16、ITECTURE ART OF COMPARE IS BEGIN EQ =1 WHEN A=B ELSE 0; END ART;,2019/5/24,6.多路选择器 选择器常用于信号的切换,前面用IF语句、CASE语句、条件赋值语句、选择赋值语句分别描述过4选1 选择器。 5.1.2 三态门及总线缓冲器 三态门和总线缓冲器是驱动电路经常用到的器件,VHDL语言通过指定大写的Z 值表示高阻状态。 A: STD_LOGIC; B_BUS: STD_LOGIC_VECTOR(7 DOWNTO 0); 指定高阻状态如下: A=Z; A_BUS=“ZZZZZZZZ”;,2019/5/24,【例5.1.6】三态门描述电路 LIBRARY IEEE; USE IEEE.STD_LOGIC_

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

当前位置:首页 > 高等教育 > 大学课件

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