1. 首页
  2. 文档大全

第三章 基本电路的VHDL模型.

上传者:2****5 2022-06-20 06:02:46上传 PPT文件 1.49MB
第三章 基本电路的VHDL模型._第1页 第三章 基本电路的VHDL模型._第2页 第三章 基本电路的VHDL模型._第3页

《第三章 基本电路的VHDL模型.》由会员分享,可在线阅读,更多相关《第三章 基本电路的VHDL模型.(97页珍藏版)》请在文档大全上搜索。

1、1第第 三三 章章2基本逻辑电路:基本逻辑电路:33.9.1 组合逻辑电路设计组合逻辑电路设计Library ieee;Use ieee.std_logic_1164.all;Entity gate is port(a,b:in std_logic; y:out std_logic);End gate;Architecture behave of gate is Begin Y=a AND b;End behave;4 architecture behavior of priority is begin vec = “111” when y7 = 1 else “110” when y6 =

2、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”; end behavior;方法方法3 3:利用:利用条件赋值语句条件赋值语句 5sel=000Y=00000001sel =001Y=00000010sel =010Y=00000100sel =011Y=00001000sel =100Y=00010000sel =101Y=00100000s

3、el =110Y=01000000sel =111Y=10000000译码器是编码器的逆过程。如译码器是编码器的逆过程。如 3-8 译码器:译码器:6方法方法1:使用:使用SLL逻辑左移运算符逻辑左移运算符 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decoder is port(inp : in std_logic_vector(2 downto 0); outp : out std_logic_vector(7 downto 0); end decoder; arch

4、itecture rtl of decoder is begin outp=“00000001” sll(conv_integer(inp); end rtl;7方法方法2 2:使用:使用processprocess语句语句 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decoder is port(inp : in std_logic_vector(2 downto 0); outp : out std_logic_vector(7 downto 0); end deco

5、der; architecture rtl of decoder is begin process(inp) begin outp0); outp(conv_integer(inp)=1; end process; end rtl;8方法方法3 3:使用:使用when-elsewhen-else条件赋值语句条件赋值语句Library ieee;Use ieee.std_logic_1164.all;Entity dec is port(sel: in std_logic_vector(2 downto 0) en: in std_logic; y: out std_logic_vector(7

6、 downto 0);End dec;Architecture behavior of dec isBegin y(0)=0 when (en=1 and sel=“000”) else 1; y(1)=0 when (en=1 and sel=“001”) else 1; y(2)=0 when (en=1 and sel=“010”) else 1; y(3)=0 when (en=1 and sel=“011”) else 1; y(4)=0 when (en=1 and sel=“100”) else 1; y(5)=0 when (en=1 and sel=“101”) else 1

7、; y(6)=0 when (en=1 and sel=“110”) else 1; y(7)=0 when (en=1 and sel=“111”) else 1;End behavior;9方法方法4 4:使用:使用 case-whencase-when语句语句实现。实现。Library ieee;Use ieee.std_logic_1164.all;Entity dec is port(sel: in std_logic_vector(2 downto 0); en: in std_logic; y: out std_logic_vector(7 downto 0);End dec;A

8、rchitecture behavior of dec isbegin10Process(sel,en)Begin yy(0)y(1)y(2)y(3)y(4)y(5)y(6)y(7)null; end case; end if;End process;End architecture;译码输出低有效译码输出低有效113-8译码器仿真结果:译码器仿真结果:译码输出低有效12OUT=111H=1OUT=110G=1OUT=101F=1OUT=100E=1OUT=011D=1OUT=010C=1OUT=001B=1OUT=000A=1(3)8-3优先编码器优先编码器 设计一个设计一个 8 输入优先级

9、编码器,输入优先级编码器,y0 级别最低,级别最低,y7 级别最高;输出为级别最高;输出为3位编码。位编码。13LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ENCODER IS PORT (A,B,C,D,E,F,G,H;IN STD_LOGIC: OUT0,OUT1,OUT2:OUT STD_LOGIC);END ENTITY ENCODER;14方法方法1:使用条件赋值语句使用条件赋值语句1516Library ieee;Use ieee.std_logic_1164.all;Entity priority is port(signal

10、y0,y1,y2,y3,y4,y5,y6,y7: in std_logic; signal vec:out std_logic_vector(2 downto 0);End priority;Architecture behavior of priority isBegin process(y0,y1,y2,y3,y4,y5,y6,y7) begin if(y7=1) then vec=“111”; elsif (y6=1) then vec=“110”; elsif (y5=1) then vec=“101”; elsif (y4=1) then vec=“100”; elsif (y3=1

11、) then vec=“011”; elsif (y2=1) then vec=“010”; elsif (y1=1) then vec=“001”; elsif (y0=1) then vec=“000”; end if; end process;end behavior;方法方法3:利用:利用 if 多选择语句多选择语句自顶向下的自顶向下的优先特性优先特性17process(y0,y1,y2,y3,y4,y5,y6,y7) begin if (y0=1) then vec=“000”; end if; if (y1=1) then vec=“001”; end if; if (y2=1)


文档来源:https://www.renrendoc.com/paper/212631447.html

文档标签:

下载地址