数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例

上传人:E**** 文档编号:90982100 上传时间:2019-06-20 格式:PPT 页数:58 大小:1.78MB
返回 下载 相关 举报
数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例_第1页
第1页 / 共58页
数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例_第2页
第2页 / 共58页
数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例_第3页
第3页 / 共58页
数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例_第4页
第4页 / 共58页
数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例》由会员分享,可在线阅读,更多相关《数电组合逻辑电路设计设计05第五章CVHDL组合电路设计实例(58页珍藏版)》请在金锄头文库上搜索。

1、数字电路与逻辑设计,一、基于VHDL的组合逻辑分析 二、VHDL基本语素及语法 三、基于VHDL的组合逻辑设计,数字电路与逻辑设计,5-3-3 基于VHDL的组合逻辑设计,一、逻辑抽象 分析因果关系,确定输入/输出变量 定义逻辑状态的含意(赋值) 二、逻辑功能描述: 列出真值表,布尔表达式,HDL语言等 三、选定器件类型,根据具体器件进行调整: (基本逻辑门)对逻辑式化简 (中规模逻辑器件MSI)变换 (PLD)将HDL语句封装为完整程序代码 四、画出逻辑电路图,或下载到PLD,组合逻辑设计步骤,VHDL组合逻辑电路设计要领,一、逻辑抽象 分析逻辑问题,确定输入、输出逻辑变量; 理清输出变量如

2、何随输入变量变化(逻辑关系); 二、VHDL程序代码合成 通过VHDL语句的规定语义来勾画输出信号的逻辑行为(输出信号如何随输入信号变化)。,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity FBI is port(a,b,ci:in std_logic; y,cout:out std_logic); end FBI ;,实例1 试用VHDL语言设计1位全加器,architecture bh2 of FBI is beg

3、in y = a xor b xor ci; cout = (a and b) or (a and ci) or (b and ci); end bh2;,architecture bh1 of full_bit_adder is begin y = (not a)and (not b)and ci) or (not a)and (b) and (not ci) or (a)and (not b)and(not ci) or (a) and (b)and(ci); cout = (b and ci) or (a and ci) or (a and b); end bh1;,例2:(无法直接写出

4、逻辑表达式,2类) 设计一个3位二进制数的检测电路,当输入的3位二进制数为质数时,输出为1。,例2:组合逻辑设计 四舍五入电路 输入8421BCD码,输出F。,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity sswr is port(d:in std_logic_vector(3 downto 0); y:out std_logic); end sswr;,architecture behave of sswr is

5、begin y = 0 when 0=d and d5 else 1 when 5=d and d10 else Z; end behave;,例3:四位二进制数转换为BCD码。,entity bin2bcd is port(d: in std_logic_vector(3 downto 0); BH,BL: out std_logic_vector(3 downto 0); end bin2bcd; architecture aa of bin2bcd is Begin BL= d when d10 else d+6; BH= “0000” when d10 else “0001”; end

6、 aa;,entity bcd2b is port(d:in std_logic_vector(3 downto 0); Bh,Bl:out std_logic_vector(3 downto 0); end bcd2b; architecture aa of bcd2b is signal a,b:std_logic_vector(7 downto 0); begin a 9 else “0000“; Bl 9 else d; end ab;,例4:设计一位BCD码加法器,例4:sum: 0,18。,1,1,1,D4,entity bcd_adder is port(d1,d2:in std

7、_logic_vector(3 downto 0); Bh,Bl:out std_logic_vector(3 downto 0); end bcd_adder; architecture aa of bcd_adder is signal a,b,t,s:std_logic_vector(7 downto 0); begin a = “0000“,(1)三态输出电路(多位宽度) (2)比较器(位数) (3)数据选择器(单刀几掷?每一路位宽度) (4)编码器(位数,优先?) (5)译码器 (位数,有效电平),一、常用组合逻辑电路设计,(1)三态输出电路(1位宽度),EN=1 B=A; EN=0

8、 B=高阻态,library ieee; use ieee.std_logic_1164.all; entity triout is port (A: in std_logic; en: in std_logic; B: out std_logic); end triout;,architecture behave of triout is begin B = A when en=1 else Z; end behave; -注意此处的“Z”要大写;,三态输出电路(多位宽度),EN=1 B=A; EN=0 B=高阻态,8,8,library ieee; use ieee.std_logic_1

9、164.all; entity triout is port (A: in std_logic_vector(7 downto 0); en: in std_logic; B: out std_logic_vector(7 downto 0) ); end triout;,architecture behave of triout is begin B = A when en=1 else “ZZZZZZZZ“; end behave; -注意多位时用双引号;,(1)三态输出电路 (2)数据选择器 (3)比较器 (4)编码器 (5)译码器,一、常用组合逻辑电路设计,(2)数据选择器,MUX 8

10、选1(单刀八掷),?,?,?,?,(2)数据选择器,MUX 8选1(单刀八掷),0,0,0,?,(2)数据选择器,MUX 8选1(单刀八掷),1,0,1,?,library ieee; use ieee.std_logic_1164.all; entity mux81 is Port ( D: in std_logic_vector(0 to 7); sel : in std_logic_vector(2 downto 0); Y : out std_logic ); end mux81;,architecture archmux of mux41 is begin with sel sele

11、ct Y =D(0) when “000“, D(1) when “001“, D(2) when “010“, D(3) when “011“, D(4) when “100“, D(5) when “101“, D(6) when “110“, D(7) when others; end archmux;,中规模集成数据选择器74x151( 8选1 ),中规模集成数据选择器74x151( 8选1 ),应用1,中规模集成数据选择器74x151( 8选1 ),应用2,(1)三态输出电路 (2)数据选择器 (3)比较器 (4)编码器 (5)译码器,一、常用组合逻辑电路设计,(3)比较器,A和B都

12、是8位二进制数,用三个输出表示A、B的大小关系。 如果AB, 输出为:agtb= 1, altb= 0 , aeqb=0; 如果AB, 输出为:agtb= 0, altb= 1 , aeqb=0; 如果A=B, 输出为:agtb= 0, altb= 0 , aeqb=1。,Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; ENTITY cmpab IS PORT (A, B :in std_logic_vector(7 downto 0); AGTB, ALTB, AEQB : out std

13、_logic ); END cmpab;,ARCHITECTURE a OF cmpab IS BEGIN aeqbb else 0; altb = 1 when ab else 0; END a;,ARCHITECTURE b OF cmpab IS BEGIN process(a,b) begin if AB then agtb=1; elsif A=B then aeqb=1; else altb=1; end if; end process; END b;,比较器表述II*,(1)三态输出电路 (2)比较器 (3)数据选择器 (4)编码器 (5)译码器,一、常用组合逻辑电路设计,(4)

14、编码器(A普通8-3编码器),LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY encoder IS PORT(i : IN BIT_VECTOR(7 DOWNTO 0); y: OUT BIT_VECTOR(2 DOWNTO 0); END encoder; ARCHITECTURE rtl OF encoder IS BEGIN y = “000“ when i = “11111110“ else “001“ when i = “11111101“ else “010“ when i = “11111011“ else “011“ when

15、 i = “11110111“ else “100“ when i = “11101111“ else “101“ when i = “11011111“ else “110“ when i = “10111111“ else “111“ when i = “01111111“ else “000“; END rtl;,(4)编码器(优先8-3编码器),LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY encoder IS PORT(i : IN BIT_VECTOR(7 DOWNTO 0); y: OUT BIT_VECTOR(2 DOWNT

16、O 0); END encoder; ARCHITECTURE rtl OF encoder IS BEGIN y = “000“ when i(0) = 0 else “001“ when i(1) = 0 else “010“ when i(2) = 0 else “011“ when i(3) = 0 else “100“ when i(4) = 0 else “101“ when i(5) = 0 else “110“ when i(6) = 0 else “111“ when i(7) = 0 else “000“; END rtl;,(1)三态输出电路 (2)比较器 (3)数据选择器 (4)编码器 (5)译码器,一、常用组合逻辑电路设计,(5)译码器,A. 38译码器,LIBRARY ieee;

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

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

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