基本逻辑电路设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ELSE
END IF; END PROCESS; END fun;
y<="11111111";
7.7.1 译码器(续2)
3-8译码器的时序仿真波形如下:
7.1.2 编码器
• 编码器的逻辑功能是将输入信号的高、低电平信号编成一
个对应的二进制码。
• 在目前经常使用的编码器有普通编码器和优先编码器两种。 • 在普通编码器中,任何时候只允许一个编码信号出现,否
则将出现混乱。
• 但在优先编码器中,允许同时输入两个以上编码信号。在
设计优先编码器电路时,需要先将所有的输入信号按优先 顺序排好对,当几个输入信号同时出现时,只对优先权最 高的一个信号进行编码。
7.1.2 编码器(续1)
8-3线优先编码器的核心代码如下:
ENTITY encoder IS PORT( I : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); Enable : IN STD_LOGIC); END encoder; ARCHITECTURE fun OF encoder IS BEGIN PROCESS(I,Enable) BEGIN IF Enable= '1' THEN IF I(7) = '1' THEN Y <= "111"; ELSIF I(6) = '1' THEN Y <= "110"; ELSIF I(5) = '1' THEN Y <= "101"; ELSIF I(4) = '1' THEN Y <= "100"; ELSIF I(3) = '1' THEN Y <= "011"; ELSIF I(2) = '1' THEN Y <= "010"; ELSIF I(1) = '1' THEN Y <= "001"; ELSIF I(0) = '1' THEN Y <= "000"; ELSE Y<="111"; END IF; ELSE Y<="111"; END IF; END PROCESS; END fun ;
ENTITY comp IS GENERIC(X : INTEGER :=4); PORT( A, B : IN STD_LOGIC_VECTOR(X-1 DOWNTO 0); Y1,Y2,Y3 : OUT STD_LOGIC ); END comp; ARCHITECTURE fun OF comp IS BEGIN PROCESS(A,B) BEGIN IF A>B THEN Y1<='1'; ELSE Y1<='0'; END IF; IF A<B THEN Y2<='1'; ELSE Y2<='0'; END IF; IF A=B THEN Y3<='1'; ELSE Y3<='0'; END IF; END PROCESS; END fun;
7.7.1 译码器(续1)
3-8译码器的核心代码:
CASE input IS WHEN WHEN WHEN WHEN WHEN WHEN WHEN WHEN WHEN END CASE; "000"=>Y<="11111110"; "001"=>Y<="11111101"; "010"=>Y<="11111011"; "011"=>Y<="11110111"; "100"=>Y<="11101111"; "101"=>Y<="11011111"; "110"=>Y<="10111111"; "111"=>Y<="01111111"; OTHERS => NULL;
7.1.2 编码器(续2)
8-3线优先编码器时序仿真波形图如下:
7.1.3 数据选择器
在数字信号的传输中,有时候需要从一组数据中选出某一个数据来, 这就需要用数 据选择器。常用的数据选择器有4选1、8选1、16选1等类型。 8选1数据选择器 的核心代码如下:
ENTITY mux4_1 IS PORT(A, B,C, D, E, F, G, H: IN STD_LOGIC_VECTOR(3 DOWNTO 0); s: IN STD_LOGIC_VECTOR(2 DOWNTO 0); Y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END mux8_1; ARCHITECTURE fun OF mux8_1 IS BEGIN Y <= A WHEN s = "000" ELSE B WHEN s = "001" ELSE C WHEN s = "010" ELSE D WHEN s = "011" ELSE E WHEN s = "100" ELSE F WHEN s = "101" ELSE G WHEN s = "110" ELSE H; END fun;
7.1.3 数据选择器(续)
8选1数据选择器的时序仿真波形图如下:
7.1.4 数值比较器
在一些数字系统中,经常需要比较两个数字的大小,为完成这一功能 所设计的各种逻辑电路统称为数值比较器。数值比较器根据比较数据的 位数不同,可以分为一位数值比较器和多位数值比较器。 通用多位数值比较器的核心代码如下 :
第七章
基本逻辑电路设计
主要内容Leabharlann Baidu
• 组合逻辑电路和时序逻辑的概念; • 组合逻辑电路设计实例;
• 时序逻辑电路设计实例。
基本概念
• 数字逻辑电路主要分为组合逻辑电路与时序逻辑
电路两类 ;
• 两者都拥有一个或者多个输入信号和输出信号,
但是组合逻辑电路的输出只与当前的输入相关, 而时序逻辑电路的输出不仅与现在的输入信号相 关,而且与过去的输入信号相关; 部分,是数字系统电路的基本元素 。
• 两种逻辑电路都是数字电路系统的重要基本组成
7.1 组合逻辑电路设计
7.7.1、译码器
译码器通常用来产生存储器或者外设的片选信号,也就是说将二进 制地址码作为输入,并产生多个选择信号输出 。典型的译码器有3-8 译码器和4-16译码器 。
3-8译码器的核心代码如下:
ENTITY decoder IS PORT(A,B,C,Enable : IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END decoder; ARCHITECTURE fun OF decoder IS SIGNAL input: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN input<=C&B&A; PROCESS(input,Enable) BEGIN IF (Enable='1') THEN --使能输入高电平有效