《可编程逻辑器件应用举例..docx》由会员分享,可在线阅读,更多相关《可编程逻辑器件应用举例..docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五讲可编程逻辑器件应用举例主要内容,利用可编程逻辑器件进行组合逻辑电路设计 .利用可编程逻辑器件进行时序逻辑电路设计 ,利用可编程逻辑器件进行数码管控制接口设计 ,利用可编程逻辑器件进行D/A控制接口设计 ,利用可编程逻辑器件进行A/D控制接口设计 ,利用可编程逻辑器件进行矩阵键盘控制接门设计P1: PROCESS (input) BEGINIF( input(O) = 0,) THEN yELSIF(inpul(1)=O) THEN y =10”;ELSIF (input(2) =01) THENy =H10r:ELSIF (input(3) =0) THEN y v=-10(T;ELSI
2、F (input(4) =*0*) THEN y= uoir;ELSIF (input(5) = 0) THEN y=w010w;ELSIF (input(6) = 01) THEN y= Moor;ELSEy = H000;END IF;END PROCESS P1;END rtl;选择器选择器常用信号的切换,四选一选择器可 以用于4路信号的切换。四选一选择器有4个信号输入端input(O) input(3),两个信号选择端a和b及一个存号输 出端y。当a, b输入不同的选择时,就可以使 input(O)input(3)中某个相应的输入信号与 输出端接通。四选一电路选一电路的真值表选择临入数
3、据输入数据出bainput (0)input (1)input (2)input (3)y000XXX0001XXX101X0XX001X1XX110XX0X010XX1X11LXXX0011XXX11LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY mux4 ISPORT(input:IN Std_Logic_Vector(3 Downto 0);a,b:IN Std_Logic;y : OUT Std_Logic);END mux4 ;ARCHITECTURE rtl OF mux4 ISSIGNAL sel:Std_Logic_Vector(
4、1 Downto 0);BEGINsek=b & a;PROCESS (input,sei) BEGINIF (sel=00M) THEN y = input(O);ELSIF (sel=M01M) THEN y = input(1);ELSIF(sel=M10M) THEN y = input(2);ELSEy = input(3);END IF;END PROCESS;END rtl;加法器加法器有半加器,全加器两种,利用两个半加器 可以构成一个全加器。半加器电路及真值表:E*te器二进制输入和输出进位输出b8sco00000J1010101101LIBRARY IEEE;USE IEEE
5、. STD_LOGIC_1164. ALL;ENTITY halfladder ISPORT (a, b: IN STD_LOGIC;s, co: OUT STD.LOGIC);END half adder; MBSARCHITECTURE behav I OF half_adder ISSIGNAL c, d : STD_LOGIC;BEGINc = a OR b;d = NOT(a AND b);co = NOT d ;s = c AND d ;-用两个半加器构成的全加器LIBRARY IEEE;LSE IEEE. STD LOGIC 1164. ALL;ENTITY ful Ladder
6、 ISPORT ( a, b, cin ; IN STDJ.OGIC;s, co: OUT STD_LOGIC);END full_adder;ARCHITECTURE behav2 OF full.adder IS COMPONENT half_adderPORT (a, b: IN STD_LOGIC; s, co: OUT STD_LOGIC);END COMPONENT;SIGNALcO, sO, cl : STD.LOGIC;BEGINUO: half_adder PORT MAP (a, b, sO, cO); UI: half_adder PORT MAP (sO, cin, s
7、, cl); co = cO OR c I ;END bchav2;一位全加器的逻辑表达式为:s=a XOR b XOR cinco=( a AND b) OR (a XOR b ) AND cinLIBRARY IEEE;USE IEEE.STD_LOGICJ164.ALL;ENTITY full_adder ISPORT (a,b,cin:IN STD_LOGIC; s,co:OUT STD_LOGIC);END full adder;ARCHITECTURE fulll OF full_adder IS SIGNAL tmp1 ,tmp2,tmp3:STD LOGIC; BEGINtmp
8、1 = a XOR b;tmp2 = a AND b;tmp3 = tmp1 AND cin;s = tmp1 XOR cin;co = tmp2 OR tmp3;ENDfulh;思考:如何利用一位全加器实现N位全加器?4位加法器描述:LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL;ENTITY adder_4bits ISPORT(aO, ah a2, a3:IN STD.LOGIC ;bO, bl, b2, b3, cin :IN STD LOGIC ;sO, si, s2, s3, cout: OUT STD LOGIC);END adder 4bi
9、ts ;ARCHITECTURE strc OF adder_4bits ISCOMPONENT ful LadderPORT (a, b. cin:lN STD.LOGIC;s, co:OUT STD.LOGIC);END COMPONENT;SIGNAL UO c, UI a U2 c: STD LOGIC ;WMMWBEGINUO: fulLadder PORT MAP (aO, bO, cin, sO, U0_c):UI: full adder PORT MAP (a I, bl, UO c, si, Ul_c);b2, Ul_c, s2, U2_c);b2, Ul_c, s2, U2
10、_c);U2: fulLadder PORT MAP (a2,U3: fulLadder PORT MAP (a3, b3, U2一c, s3, cout);END strc;按照上述例子中的方法,可以很容易地描述任意 位数的加法器。当然,当位数较多时还需要采取“快 速进位”的措施。使用同样的方法,也可以利用全减 器等构成多位加法器。卜面再给出一个使用行为描述方式的8位加法器 程序。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY adder IS PORT (opl, op2 : I
11、N UNSIGNED(7 downto 0; result : OUT INTEGER ; END adder; ARCHITECTURE maxpld OF adder IS BEGIN result = CONV_INTEGER(op 1 + op2; END maxpld;用VHDL设计组合逻辑电路小结:(1)从分析设计需求开始,可以得到逻辑 电路的两种表示方式:逻辑表达式和真值表。(2)从VHDL描述的角度看,逻 辑表达式和真值表是等价的,可以选择较易实现的方式来构造电路。(3)根据需 要选择IF语句或CASE语句,结合信号、变量等对象来实现。.按照逻辑功能的不同特点,可以把数字电路分
12、 成两大类:组合逻辑电路和时序逻辑电路。组合逻辑电路中,任意时刻的输出仅仅取决于 该时刻的输入,与电路原来的状态无关。-时序逻辑电路中,任意时刻的输出不仅取决于 该时刻的输入,而FL还取决于电路原来的状态, 还与以前的输入有关。5.1利用可编程逻辑器件进行组合逻辑电路设计常见的组合逻辑电路有:简单门电路、 译码器、编码器、选择器、加法器、求补器、 比拟器等。在组合逻辑电路设计中,常用逻辑函数 式、真值表和逻辑电路图来表示电路的输入 输出关系。5.L1简单门电路门电路是逻辑电路的基本电路。 简单门电路主要有与门、或门、非门、与非 门,或非门、异或门等。 可以把简单门电路结合起来使用,构成多种 使
13、用的组合逻辑电路,实现不同的逻辑功能 及逻辑分析运算。二输入与非门电路二输入与非门的逻辑表达式为:y = (a 7 b)二输入勺非门的电路图:利用两种形式描述的二输入与非门LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY nand2 ISPORT (a, b:IN STD_LOGIC;y:OUT STD_LOGIC);END nand2;ARCHITECTURE nand2_1 OF nand2 ISBEGINy =a NAND b;-与y y丫 =干;WHEN -1O44 =y=T;WHEN;WHEN OTHERSy -y或非门y = (a Vb
14、)ab5- y反相器y = an一异或门y = a () ba b=1y简单门电路练习二三输入与门三输入或门 三输入与非门 三输入或非门38译码器电路(74LS138):输入变量为3个a, b, c,输出变量有8个,即yOy7,对 输入变量a, b, c译码,就能确定输出端 yOy7的输出端变为有效(低电平),从而达到译码目的。-3-8译码器电路到译码目的。-3-8译码器电路81 g - g2b CyO yl38Ct38译码器的真值表选通输入 1二进制 输入端译码输出gF一82bCbayOyi y2y3y4y5V6y7X1XXXX1111i111XX1XXX1111i1110XXXXX1111
15、i1111000000111111110000110111111100010110iii1110001111101111100100II11011i100101111110111001101111110i10011111111110LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY decoder_3_to_8 ISPORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3
16、_to_8 ISSIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);BEGINindata y yy y y y=11011111”;WHEN H110M =y y y v=XXXXXXXX”;END CASE;ELSEY 二111111”;END IF;END PROCESS;END rtl;编码器优先编码器常用于中断的优先级控制。- 例如,74LS148是一个8输入,3位二进制码 输出的优先级编码器。- 当其某位输入有效时,就可以输出个对 应的3位二进制编码。当同时有几个输入有 效时,将输出优先级最高的那个输入所对应 的二进制编码。优先级编码器电路inpui(l)input (3)input(4)input(5)一 input(6) input (7)优先tt编码HLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY priority_encoder ISP0RT(input:IN Std_Logic_Vector(7 Downto 0);y : OUT Std_Logic_Vector(2 Downto 0);END priority_encoder;ARCHITECTURE rtl OF priority_encoder IS BEGIN