时序电路VHDL设计时序逻辑部分PPT课件_第1页
时序电路VHDL设计时序逻辑部分PPT课件_第2页
时序电路VHDL设计时序逻辑部分PPT课件_第3页
时序电路VHDL设计时序逻辑部分PPT课件_第4页
时序电路VHDL设计时序逻辑部分PPT课件_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、组合逻辑电路设计1.分析逻辑问题,抽象输入、输出逻辑变量。2.列真值表、写函数表达式。3.采用基本门电路、PLD实现。第1页/共106页实体 (A,B,C)结构体a1库、程序包声明结构框图ABC结构体a1数字电路的VHDL表述第2页/共106页实体描述 ENTITY entity_name ISPORT(input1_name : IN STD_LOGIC;input2_name : IN STD_LOGIC_VECTOR (a2 downto a1);output1_name:OUT STD_LOGIC;output2_name:OUT STD_LOGIC_VECTOR(b2 downto

2、b1) ); END entity_name; - - STD_LOGIC:描述1位宽度的电路端口,如单独的逻辑变量A,可描述为A: IN STD_LOGIC; - STD_LOGIC_VECTOR (a2 downto a1):描述多位宽度的电路端口,如一组逻辑变量的组合(D3,D2,D1,D0)4位宽度,可描述为D : in std_logic_vector(3 downto 0);第3页/共106页 ARCHITECTURE a OF entity_name ISSIGNAL signal_name: STD_LOGIC; BEGIN- VHDL语句;- 逻辑电路描述,输入输出的逻辑关系

3、描述; END a;结构体描述第4页/共106页VHDL参考书 VHDL设计指南(第二版) 作者:(美)阿森顿 译者: 葛红 出版社:机械工业出版社(2005) CPLD/FPGA应用开发技术与工程实践 作者:求是科技 出版社:人民邮电出版社(2005)第5页/共106页(1)三态输出电路 (2)比较器 (3)数据选择器 (4)编码器(5)译码器 一、常用组合逻辑电路设计一、常用组合逻辑电路设计第6页/共106页(1)三态输出电路(1位)AENBEN=1 B=A;EN=0 B=高阻态第7页/共106页library ieee;use ieee.std_logic_1164.all;entity

4、 triout isport (A: in std_logic; en: in std_logic; B: out std_logic);end triout;第8页/共106页architecture behave of triout isbegin B = A when en=1 else Z; end behave; -注意此处的“Z”要大写;第9页/共106页三态输出电路(多位) A7-A0ENB7-B0EN=1 B=A;EN=0 B=高阻态88第10页/共106页 library ieee; use ieee.std_logic_1164.all; entity triout is

5、port (A: in std_logic_vector(7 downto 0); en: in std_logic; B: out std_logic_vector(7 downto 0) ); end triout;第11页/共106页architecture behave of triout isbegin A = B when en=1 else ZZZZZZZZ; end behave; -注意多位时用双引号;第12页/共106页(1)三态输出电路 (2)数据选择器 (3)比较器 (4)编码器(5)译码器 一、常用组合逻辑电路设计一、常用组合逻辑电路设计第13页/共106页(2)数据

6、选择器 4选1 MUX ABCDYS0S1输出端第14页/共106页 library ieee; use ieee.std_logic_1164.all; entity mux41 is Port ( A,B,C,D: in std_logic; sel : in std_logic_vector(1 downto 0); Y : out std_logic ); end mux41;第15页/共106页architecture archmux of mux41 is begin Y b, 输出为:agtb=1, altb= 0 , aeqb=0;如果 ab, 输出为:altb=1, agtb

7、= 0 , aeqb=0;如果 a=b, 输出为:aeqb=1, agtb= 0 , altb=0。第19页/共106页 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_logic ); END cmpab;第20页/共106页 ARCHITECTURE a OF cmpab IS BEGIN aeqb= 1 whe

8、n a=b else 0; agtbb else 0; altb = 1 when aB then agtb=1; elsif A=B then aeqb=1; else altb=1; end if; end process; END b;第22页/共106页(1)三态输出电路 (2)比较器 (3)数据选择器 (4)编码器(5)译码器 一、常用组合逻辑电路设计一、常用组合逻辑电路设计第23页/共106页(4)编码器I6I7I5I4I3I2I1I0Y2Y1Y083编码器I7 I6 I5 I4 I3 I2 I1 I0Y2 Y1 Y011111110000111111010011111101101

9、01111011101111101111100110111111011011111111001111111111第24页/共106页LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY encoder IS PORT(i : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END encoder; ARCHITECTURE rtl OF encoder IS BEGIN y = 111 when i = 01111111 else 110 when i =

10、10111111 else 101 when i = 11011111 else 100 when i = 11101111 else 011 when i = 11110111 else 010 when i = 11111011 else 001 when i = 11111101 else 000 when i = 11111110 else XXX;END rtl; 第25页/共106页STD_LOGIC类型端口的值空间。例如A:OUT STD_LOGIC; 则A可赋予 0 、1 、Z 、,形式如下A= 0 ; Type Std_Logic Is ( U, -Undefined X ,

11、 -Forcing Unknown 0 , -Forcing 0 1 , -Forcing 1 Z , -Hign Impedance W, -Weak Unknown L , -Weak 0; H , -Weak 1; - , -Dont Care; ) 标准逻辑类型对数字逻辑电路的逻辑特性描述更加完整,真实,因此在VHDL程序中,对逻辑信号的定义通常采用标准逻辑类型第26页/共106页(1)三态输出电路 (2)比较器 (3)数据选择器 (4)编码器(5)译码器 一、常用组合逻辑电路设计一、常用组合逻辑电路设计第27页/共106页(2)译码器A. 38译码器第28页/共106页 LIBRAR

12、Y ieee; USE ieee.std_logic_1164.all; ENTITY decode_3to8 IS PORT( a,b,c,G1,G2A,G2B: IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END decode_3to8; 第29页/共106页 ARCHITECTURE rtl OF decode_3to8 IS SIGNAL indata: STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN indata=G1&G2A&G2B&c&b&a; y= 11

13、111110 when indata=100000 else 11111101 when indata=100001 else 11111011 when indata=100010 else 11110111 when indata=100011 else 11101111 when indata=100100 else 11011111 when indata=100101 else 10111111 when indata=100110 else 01111111 when indata=100111 else 11111111; END rtl;第30页/共106页译码器(2)译码器B

14、. 数码管译码器A3A2A1A0abcdefg第31页/共106页 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity bcd is Port( A : in std_logic_vector(3 downto 0); Seven : out std_logic_vector(6 downto 0) ); End bcd;第32页/共106页 Architecture a of bcd is Begin Seven= 0111111 when A=0000 else -0 0000

15、110 when A=0001 else -1 1011011 when A=0010 else -2 1001111 when A=0011 else -3 1100110 when A=0100 else -4 1101101 when A=0101 else -5 1111101 when A=0110 else -6 0000111 when A=0111 else -7 1111111 when A=1000 else -8 1101111 when A=1001 else -9 0000000 ; End a;第33页/共106页例例1 1:组合逻辑设计:组合逻辑设计 四舍五入电路

16、四舍五入电路 输入输入8421BCD8421BCD码,输出码,输出F F。第34页/共106页 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;第35页/共106页 architecture behave of sswr is begin y = 0 when 0=d a

17、nd d5 else 1 when 5=d and d10 else Z; end behave;第36页/共106页例例2 2: :设计组合逻辑电路设计组合逻辑电路 设计一个设计一个1bit全加器。全加器。 输入输入 X,Y,CI 输出输出 Z,CO第37页/共106页 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity full_bit_adder is port(a,b,ci:in std_logic; y,cout

18、:out std_logic); end full_bit_adder;第38页/共106页 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;第39页/共106页 architecture bh2 of full_bit_ad

19、der is begin y = a xor b xor ci; cout = (a and b) or (a and ci) or (b and ci); end bh2; configuration con1 of full_bit_adder is for bh2 end for; end con1;第40页/共106页总结:VHDL+PLD组合逻辑电路设计 逻辑问题(逻辑输入、输出,逻辑函数)1.输入逻辑变量描述: 1位的输入变量标准逻辑类型,std_logic 多位的输入变量标准逻辑序列类型 std_logic_vector2.输出逻辑变量描述: 同输入。3.逻辑关系描述:第41页/

20、共106页列出真值表 适用于输入变量较少、或函数有效输入值较少的情况。求取逻辑函数表达式 输出变量较少或输出变量相互独立的情况。逻辑关系高级抽象表述 逻辑关系概括直接逻辑描述; 码制转换等问题(数值运算类)。第42页/共106页设计题一:四位二进制数转换为BCD码。第43页/共106页 entity bin2bcd is port(d_bin: in std_logic_vector(3 downto 0); d_bcd_H,d_bcd_L: out std_logic_vector(3 downto 0); end bin2bcd; architecture aa of bin2bcd is

21、 Begin d_bcd_L= d_bin when d_bin10 else d_bin+6; d_bcd_H= “0000” when d_bin10 else “0001”; end aa;第44页/共106页 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 = 0000&

22、amp;d; b = a when d10 else a+6; Bh = b(7 downto 4); Bl = b(3 downto 0); end aa; architecture ab of bcd2b is begin Bh 9 else 0000; Bl 9 else d; end ab;第45页/共106页设计题二:设计一位BCD码加法器第46页/共106页 entity bcd_adder is port(d1,d2:in std_logic_vector(3 downto 0); Bh,Bl:out std_logic_vector(3 downto 0); end bcd_a

23、dder; architecture aa of bcd_adder is signal a,b,t,s:std_logic_vector(7 downto 0); begin a = 0000&d1; b = 0000&d2; t = a + b ; s = t when t10 else t+6; Bh = s(7 downto 4); Bl = s(3 downto 0); end aa;第47页/共106页码制转换设计题:将4位自然二进制数转换为BCD码,并通过数码管显示转换结果。四位二进制码转换为四位二进制码转换为BCD码,并译码显示。码,并译码显示。(数码管为共阴极

24、)(数码管为共阴极)第48页/共106页 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Entity bcd is Port( A : in std_logic_vector(3 downto 0); bcd0,bcd1 : out std_logic_vector(3 downto 0); seven0,seven1 : out std_logic_vector(6 downto 0) ); End bcd;第49页/共106页 Architecture a of bcd is sign

25、al tmp:std_logic_vector(3 downto 0); Begin bcd0 = A when (A10) else A+6; bcd1 = “0000” when (A10) else “0001”; tmp = bcd0; 第50页/共106页 seven0=0111111 when tmp=0000 else -0 0000110 when tmp=0001 else -1 1011011 when tmp=0010 else -2 1001111 when tmp=0011 else -3 1100110 when tmp=0100 else -4 1101101 w

26、hen tmp=0101 else -5 1111101 when tmp=0110 else -6 0000111 when tmp=0111 else -7 1111111 when tmp=1000 else -8 1101111 when tmp=1001 else -9 0000000 ; seven1=“0111111” when (A1000-111D触发器触发器第54页/共106页 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff IS PORT( cp,d: IN STD_LOGIC; q: OUT STD_LOGIC

27、); END dff;第55页/共106页ARCHITECTURE a OF dff ISBEGIN process(cp) begin if cpevent and cp=1 then q=d; end if; end process;END a;第56页/共106页 状态方程: J-K触发器特性表触发器特性表J KQn+1功能说明功能说明0 00 11 01 1Qn01Qn不变不变置置 0置置 1翻转翻转nn1nQKQJQJK触发器触发器cpCP第57页/共106页I. 依据状态方程实现JK触发器 USE ieee.std_logic_unsigned.ALL; USE ieee.std_

28、logic_arith.ALL; entity jkjk is port(j,k,clk: in std_logic; q,qn: buffer std_logic); end jkjk;buffer端口模式:端口既作为实体的输出,又回端口模式:端口既作为实体的输出,又回到实体内部做驱动信号。到实体内部做驱动信号。第58页/共106页 architecture bh of jkjk is begin process(clk) begin if clkevent and clk=0 then q = ( j and (not q) OR (not k) and q); qn = not( j a

29、nd (not q) OR (not k) and q); end if; end process; end bh;nn1nQKQJQ第59页/共106页II. 依据状态转换表实现JK触发器 USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.ALL; entity jkjk is port( j,k,clk: in std_logic; q,qn: buffer std_logic); end jkjk;第60页/共106页 architecture bh2 of jkjk1 is begin process(clk) begi

30、n if clkevent and clk=0 then if j=0 and k=1 then q =0; qn =1; elsif j=1 and k=0 then q=1; qn =0;第61页/共106页 elsif j=0 and k=0 then q = q; qn = qn; elsif j=1 and k=1 then q= not q; qn = not qn; end if; end if; end process; end bh2;第62页/共106页(3)-A 简单计数器设计计数器CLKQ3Q2Q1Q0四位加计数器四位加计数器第63页/共106页 LIBRARY iee

31、e; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.ALL; ENTITY counter IS PORT( clk: in STD_LOGIC; q: buffer STD_LOGIC_vector(3 downto 0); END counter;buffer端口模式:端口既作为实体的输出,又回端口模式:端口既作为实体的输出,又回到实体内部做驱动信号。到实体内部做驱动信号。第64页/共106页 ARCHITECTURE a OF counter IS BEGIN

32、process(clk) begin if (clkevent and clk=1) then q=q+1; end if; end process; END a;四位加计数器四位加计数器第65页/共106页计数器CLKCLR(3)-B 带同步清零、同步置数功能的计数器LDQ3Q2Q1Q0 D3D2D1D0控制信号控制信号CLR、LD:具有更高优先级:具有更高优先级第66页/共106页 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.ALL;

33、 ENTITY counter IS PORT( clk,clr,ld: in STD_LOGIC; d: in STD_LOGIC_vector(3 downto 0); q: buffer STD_LOGIC_vector(3 downto 0); END counter; ARCHITECTURE a OF counter IS BEGIN 第67页/共106页 process(clk) begin if (clkevent and clk=1) then if(clr=1) then q=0000; elsif(ld=1)then q=d; else q=q+1; end if; en

34、d if; end process; END a;第68页/共106页计数器CLKCLR(3)-C 带异步清零、同步置数功能的计数器LDQ3Q2Q1Q0 D3D2D1D0第69页/共106页 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.ALL; ENTITY counter IS PORT( clk,clr,ld: in STD_LOGIC; d: in STD_LOGIC_vector(3 downto 0); q: buffer ST

35、D_LOGIC_vector(3 downto 0); END counter; ARCHITECTURE a OF counter IS BEGIN 第70页/共106页 process(clk,clr) begin if(clr=1) then q=“0000”; elsif (clkevent and clk=1 )then if(ld=1) then q=d; else q=q+1; end if; end if; end process; END a;第71页/共106页(3)-D 带进位计数器设计计数器CLKQ3Q2Q1Q0四位加计数器四位加计数器COUT第72页/共106页 LI

36、BRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.ALL; ENTITY counter IS PORT( clk: in STD_LOGIC; q: buffer STD_LOGIC_vector(3 downto 0); cout: out std_logic); END counter;ARCHITECTURE a OF counter ISBEGIN 第73页/共106页 ARCHITECTURE b OF counter IS BEGIN

37、 process(clk) begin if (clkevent and clk=1) then q=q+1; end if; end process; cout=1 when q=15 else 0; END b;进程进程设计状态转换设计状态转换并列语句并列语句实现输出实现输出第74页/共106页 ARCHITECTURE b OF counter IS BEGIN process(clk) begin if (clkevent and clk=1) then if(q9)then q=q+1; else q=“0000”; end if; end if; end process; cout

38、=1 when q=9 else 0; END b;进程进程设计状态转换设计状态转换并列语句并列语句实现输出实现输出第75页/共106页(4) 分频器Tclk = 1 usTcout = 10us计数器就是对时钟脉冲计数,同时 计数器还是一个分频器。fclk = 1x106 Hzfcout = 1x105 Hz第76页/共106页(3)移位寄存器设计4位右移移位寄存器Reset:异步清零右移移位寄存器右移移位寄存器dinresetclkQAQBQCQD第77页/共106页library ieee;use ieee.std_logic_1164.all;ENTITY shifter ISPORT

39、( din : in std_logic; reset, clk : in std_logic; QA,QB,QC,QD : buffer std_logic); END shifter;第78页/共106页 ARCHITECTURE behave OF shifter IS BEGIN Process (reset,clk) Begin if(reset=1) then QA=0; QB=0; QC=0; QD=0; else if (clkEvent and clk = 1) then QA=din; QB=QA; QC=QB; QD IF din=1 THEN state = s1; else state IF din=1 THEN state = s2; else state IF din=0 THEN state=s0; else statestate=s0; END CASE; End if; END PROCESS; z=1 when (state=s2 and din=0) else 0; -输出不仅与状态有关,而且和输入有关。 END a; 第90页/共106页第91页/共106页序列信号:110序列检测器CLKZxRst状态机自启动:RST复位控制第92页/共106页 L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论