[信息与通信]专题1 数字系统设计进阶设计ppt课件_第1页
[信息与通信]专题1 数字系统设计进阶设计ppt课件_第2页
[信息与通信]专题1 数字系统设计进阶设计ppt课件_第3页
[信息与通信]专题1 数字系统设计进阶设计ppt课件_第4页
[信息与通信]专题1 数字系统设计进阶设计ppt课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

1、专题专题1 数字系统设计数字系统设计- 进阶设计进阶设计一、常用组合逻辑电路模块一、常用组合逻辑电路模块二、常用时序逻辑电路模块二、常用时序逻辑电路模块三、三、A/DA/D控制电路控制电路一、一、 常用组合逻辑电路模块常用组合逻辑电路模块 任一时刻的输出仅仅取决于当时的任一时刻的输出仅仅取决于当时的输入,与电路原来的状态无关,这输入,与电路原来的状态无关,这样的数字电路叫做组合逻辑电路。样的数字电路叫做组合逻辑电路。 一、一、 常用组合逻辑电路模块常用组合逻辑电路模块1编码器编码器2译码器译码器 3比较器比较器 4数据选择器数据选择器 5三态输出电路三态输出电路6算术逻辑单元算术逻辑单元ALU

2、设计设计1编码器编码器A6A7A5A4A3A2A1A0Y2Y1Y083编码器编码器ENA7 A6 A5 A4 A3 A2 A1 A0Y2 Y1 Y000000001000000000100010000010001000001000011000100001000010000010101000000110100000001112译码器译码器38译码器译码器A6A7A5A4A3A2A1A0Y2Y1Y0ENa. 38译码器译码器例如设计例如设计:四位二进制四位二进制-BCD码,然后将码,然后将BCD码码-七段显示器码。七段显示器码。1当输入为当输入为09的数时,其十位数为的数时,其十位数为0,个位数,

3、个位数=输入。输入。当输入为当输入为1015的数时,其十位数为的数时,其十位数为1,个位数,个位数=输入输入-10。2然后将十位和个位的然后将十位和个位的BCD码转换为七段显示器码。码转换为七段显示器码。 2译码器译码器b. 码制转换码制转换 3比较器比较器 AGTBBLTBAEQBAB假如假如 ab, 输出为:输出为:agtb=1, altb= 0 , aeqb=0;假如假如 ab, 输出为:输出为:altb=1, agtb= 0 , aeqb=0;假如假如 a=b, 输出为:输出为:aeqb=1, agtb= 0 , altb=0。4数据选择器数据选择器 ABCDZS0S15三态输出电路三

4、态输出电路 library ieee;use ieee.std_logic_1164.all;entity triout is genericbussize: integer:=8; port data_in:in std_logic_vectorbussize-1 downto 0; en:in std_logic; data_out:out std_logic_vectorbussize-1 downto 0;end triout;architecture behave of triout is begin data_outZ; end behave; -注意此处的注意此处的“Z要大写;要

5、大写;AENB6算术逻辑单元算术逻辑单元ALU电路设计电路设计 算术电路单元算术电路单元 逻辑电路单元逻辑电路单元21数据数据选择器选择器输输出出CinABS0S1S21算术电路单元的设计算术电路单元的设计 2逻辑电路单元的设计逻辑电路单元的设计3 21数据选择器的设计数据选择器的设计ALU运算功能运算功能功能选择功能选择输出输出F执行操作执行操作S2S1S0000F=A+B+Cin加法加法A+B+Cin01F=A-B-Cin减法减法A-B-Cin10F=A+Cin传递传递A +Cin11F=A-Cin传递传递A-Cin100F=ABAND01F=ABOR10F=A+BXOR11F=NOT A

6、NOT算术电路单元算术电路单元 逻辑电路单元逻辑电路单元21数据数据选择器选择器输输出出CinABS0S1S2Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity malu is genericn : integer:=8; Port s : in std_logic_vector2 downto 0; -运算功能选择信号运算功能选择信号 Cin : in std_logic; -初始进位初始进位 A,B : in std_logic_vectorn-1 downto 0; -两个运算输入

7、信号两个运算输入信号 F : out std_logic_vectorn-1 downto 0; -运算结果输出信号运算结果输出信号 Cout: out std_logic; -运算进位输出信号运算进位输出信号End malu;Architecture arith of malu is Signal F1 : std_logic_vectorn downto 0; -保存算术运算结保存算术运算结果果 Signal F2 : std_logic_vectorn-1 downto 0; -保存逻辑运算结保存逻辑运算结果果BeginB1: Blockbegin processs1 downto 0

8、begin case S1 downto 0 is when 00= F1 F1 F1 F1 F2 F2F2F2=not A; -Not end case; end process;end block B2;B3: blockBegin F= F1n-1 downto 0 when s2=0 else F2; Cout1000-111LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ffd ISPORT cp,d: IN STD_LOGIC; q: OUT STD_LOGIC;END ffd;ARCHITECTURE a OF ffd ISBEGI

9、N processcp begin if cpevent and cp=1 then q1Not Qn-1 LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY fft ISPORT cp: IN STD_LOGIC; q: OUT STD_LOGIC;END fft;ARCHITECTURE a OF fft IS signal qn: std_logic;BEGIN processcp begin if cpevent and cp=1 then qn= not qn; end if; end process; q=qn;END a; D QCP

10、QRS型触发器型触发器SRQ00 0Qn-101010111不定不定 LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY ffrs ISPORT s,r: IN STD_LOGIC; q,nq: OUT STD_LOGIC;END ffrs;ARCHITECTURE a OF ffrs IS signal qn,nqn: std_logic;BEGIN qn= r nor nqn; nqn= s nor qn; q=qn; nq0; elsif clkEvent and clk = 1 then q3:= q2; q2:= q1; q1:= q0;

11、q0:= din; end if; qout=q; end process; End behave;D QClk QDinClkD QClk QQ0D QClk QQ1D QClk QQ2Q3考虑:还有没有第二种语言表示方法进展移位?考虑:还有没有第二种语言表示方法进展移位?延迟电路设计延迟电路设计QD QCPDinCPD QCPQD QCPQQ1Q2Q3LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;Entity Delay ISPORT Din,clk: IN STD_LOGIC; Q1,Q2

12、,Q3: OUT STD_LOGIC;END Delay;ARCHITECTURE a OF Delay IS Signal N1,N2,N3: STD_LOGIC;BEGIN ProcessDin,clk begin if clkevent and clk=1 then N3=N2; N2=N1; N1=Din; end if; end process; Q3=N3; Q2=N2; Q1=N1;END a;微分电路设计微分电路设计QD QCPDinCPD QCPQQ1Q2OP1OP2微分电路应用微分电路应用-计数器电路中计数器电路中 该微分电路接上计数器就构成了一个同步计数器。这种计数器多了

13、一个该微分电路接上计数器就构成了一个同步计数器。这种计数器多了一个“同步控制信号同步控制信号EC,计数器是否计数就由它来,计数器是否计数就由它来控制控制。 假如将触发计数器计数的信号假如将触发计数器计数的信号Din直接接计数器控制管脚直接接计数器控制管脚EC,本来只希望计,本来只希望计数一次,可能因为输入信号数一次,可能因为输入信号Din过长,超过一个时钟脉冲周期,导致计数器发生过长,超过一个时钟脉冲周期,导致计数器发生误动作,多计数。误动作,多计数。 因此,可在因此,可在计数器前接一微分电路计数器前接一微分电路,先将输入信号,先将输入信号Din微分成微分成仅有一个时钟仅有一个时钟脉冲周期宽的

14、信号脉冲周期宽的信号,再提供给计数器,可进步计数器的准确性。,再提供给计数器,可进步计数器的准确性。 考虑:为什么考虑:为什么EC可以使能计数?为什么可以使能计数?为什么Diff信号接到信号接到EC脚而不是脚而不是CP脚?脚?QD QCPDinCPD QCPQQ1Q2DiffEC Q CP计数器计数器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY Diff is PORT Din,Clk : INSTD_LOGIC; OP1,OP2 : OUT STD_LOGIC ;END Diff

15、;ARCHITECTURE a OF Diff IS SIGNAL Q1,Q2 : STD_LOGIC;BEGINPROCESS ClkBEGIN If Clkevent AND Clk=1 THEN Q2 = Q1; Q1 = Din; End if;END PROCESS;OP1 = Q1 AND NOT Q2;OP2 = NOT Q1 AND Q2;END a;键盘消抖电路键盘消抖电路对于机械按键,虽然只是按下一次然后放掉,对于机械按键,虽然只是按下一次然后放掉,结果在按键信号稳定前后会出现一些不该存结果在按键信号稳定前后会出现一些不该存在的噪声,如下图。假如将这样的信号直接在的噪声,如

16、下图。假如将这样的信号直接输入给计数器,结果将可能发生计数超过一输入给计数器,结果将可能发生计数超过一次以上的错误。次以上的错误。设计原理:设计原理:1一般人的按键速度至多是一般人的按键速度至多是10次次/秒,即一次按键秒,即一次按键时间是时间是100ms,所以按下的时间可估算为,所以按下的时间可估算为50ms。假设。假设采样信号采样信号Sample周期为周期为8ms,那么可采样到,那么可采样到6次。次。2对于不稳定的噪声在对于不稳定的噪声在4ms以下,那么至多可采样以下,那么至多可采样到一次。到一次。3对于如图电路,对于如图电路,RS的组态仅有三种。的组态仅有三种。QD QCPKeySamD

17、 QCPQQ1Q2OPS QRQ键盘消抖电路键盘消抖电路Q1Q2SROP000100100不变不变1000不变不变11101QD QCPKeySamD QCPQQ1Q2OPS QRQ结论:结论:对按键信号对按键信号只有采样到两次只有采样到两次1才会输出才会输出1,两次,两次0才会输出才会输出0。否那。否那么保持原状态不变。么保持原状态不变。4假如按键信号用于计数器计数,那么消抖以假如按键信号用于计数器计数,那么消抖以后可能宽度过长,而导致超过计数后可能宽度过长,而导致超过计数1次以上的错误次以上的错误发生,所以最好后面再接一个微分电路。发生,所以最好后面再接一个微分电路。QD QCPKeySa

18、mD QCPQQ1Q2DlyoutS QRQQD QCPDinclkD QCPQD1D2DiffoutEC Q CP计数器计数器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY Debunce isPORT Clk : IN STD_LOGIC; Key : IN STD_LOGIC; DLY_OUT : OUT STD_LOGIC; DIF_OUT: OUT STD_LOGIC ;END Debunce;ARCHITECTURE a OF Debunce ISSIGNAL SAMPL

19、E, DLY, NDLY, DIFF: STD_LOGIC; BEGINQD QCPKeyClkD QCPQQ1Q2DlyoutS QRQQD QCPDinclkD QCPQD1D2Diffout分频器分频器Free_Counter : Block Signal Q : STD_LOGIC_VECTOR3 Downto 0;Signal tmp : STD_LOGIC;BeginPROCESS Clk BeginIF ClkEvent AND Clk=1 thentmp = Q2;Q = Q+1;END IF;END PROCESS;SAMPLE = Q2 AND NOT tmp; -abou

20、t 8 ms END Block;QD QCPKeyClkD QCPQQ1分频器分频器Q2Debunce : BlockSIGNAL Q0,Q1, S, R : STD_LOGIC; BeginProcess ClkBeginIF ClkEVENT AND Clk=1 THENIF SAMPLE = 1 THENQ1 = Q0; Q0 = KEY;S = Q0 AND Q1;R = NOT Q0 AND NOT Q1;END IF;END IF;End Process;DLY = R NOR NDLY;NDLY =S NOR DLY;DLY_OUT = DLY;End Block Debunc

21、e;Differential : BlockSignal D1,D2 : STD_LOGIC;BEGINProcess ClkBeginIF ClkEVENT AND Clk=1 THEND2 = D1; D1 = DLY;END IF;End Process;DIFF = D1 AND NOT D2;END Block Differential;DIF_OUT = DIFF;END a;3计数器设计计数器设计LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count IS Gene

22、ricn : integer := 3;PORT clk: in STD_LOGIC; q: out STD_LOGIC_vectorn-1 downto 0;END count;ARCHITECTURE a OF count IS signal tmp: STD_LOGIC_vectorn-1 downto 0;BEGIN processclk begin if clkevent and clk=1 then tmp=tmp+1; end if; end process; q=tmp;END a;n位二进制加法计数器位二进制加法计数器24进进制计制计数器数器ENQAQBCLKLIBRARY

23、ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count24 ISPORT en,Reset,clk: in STD_LOGIC; qa: out STD_LOGIC_VECTOR3 DOWNTO 0; -个位数计数个位数计数 qb: out STD_LOGIC_VECTOR1 DOWNTO 0; -十位数计数十位数计数END count24;ARCHITECTURE a1 OF count24 ISBEGINprocessclkvariable tma: STD_LOGIC_VECTOR3 DO

24、WNTO 0;variable tmb: STD_LOGIC_VECTOR1 DOWNTO 0;ResetbeginIf Reset = 0 then tma:=0000; tmb:=00; else if clkevent and clk=1 then if en=1 then if tma=1001 then tma:=0000;tmb:=tmb+1; -假如个位数为假如个位数为9,个位数清零,十位数加一,个位数清零,十位数加一 elsif tmb=10 and tma=0011 then tma:=0000;tmb:=00; -假如十位数为假如十位数为2,个位数为,个位数为3,个位数十位

25、数均清零,个位数十位数均清零 else tma:=tma+1; -以上条件均不满足,那么个位数加以上条件均不满足,那么个位数加一一 end if; end if; end if;end if; qa=tma;qb=tmb; 将结果输出将结果输出end process;END a1;LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count60 ISPORT en,Reset,clk: in STD_LOGIC; qa: out STD_LOGIC_VECTOR3 DOWNTO 0;

26、-个位数计数个位数计数 qb: out STD_LOGIC_VECTOR2 DOWNTO 0; -十位数计数十位数计数 rco: OUT STD_LOGIC; -计数进位计数进位END count60;ARCHITECTURE a OF count60 ISBEGINprocessclkvariable tma: STD_LOGIC_VECTOR3 DOWNTO 0;variable tmb: STD_LOGIC_VECTOR2 DOWNTO 0;60进进制计制计数器数器ENQAQBCLKRCOResetbeginIf Reset =0 then tma:=0000; tmb:=0000; e

27、lse if clkevent and clk=1 thenif en=1 thenrco=tmb2and tmb0and tma3and tma0; -计算是否有进位,即是否计数超过计算是否有进位,即是否计数超过59,超过那么有进位,否那么无进,超过那么有进位,否那么无进位位 if tma=1001 then tma:=0000; -假如个位数为假如个位数为9,那么个位数清零,那么个位数清零 if tmb=101 then tmb:=000; else tmb:=tmb+1; end if; -假如十位数为假如十位数为5,那么十位数清零,否那么十位数加一,那么十位数清零,否那么十位数加一 e

28、lse tma:=tma+1; -假如个位数不为假如个位数不为9,那么个位数加一,那么个位数加一 end if; end if; end if; end if;qa=tma;qb=tmb; 将结果输出将结果输出end process;END a;4 分频器设计分频器设计 计数器就是对时钟脉冲计数,同时计数器还是一个分频器。计数器就是对时钟脉冲计数,同时计数器还是一个分频器。以下图为一个以下图为一个3位的计数器的仿真波形图。位的计数器的仿真波形图。 一个一个3 bits的计数器,它所能计数的范围为的计数器,它所能计数的范围为07=23-1。同。同理,理,n bits的计数器所能计数范围为的计数器

29、所能计数范围为02n-1。 Q0、Q1、Q2的波形频率分别为时钟脉冲信号的波形频率分别为时钟脉冲信号Clk的的1/2、1/4、1/8,由此可以知道,由此可以知道,n bits的计数器可获得的最低分频频率为时的计数器可获得的最低分频频率为时钟脉冲信号钟脉冲信号Clk的的1/2n。 输出信号输出信号Q2downto 0的频率等于信号的频率等于信号Q2的频率,信号的频率,信号Q2downto 1的频率也为信号的频率也为信号Q2的频率。由此可以知道,矢的频率。由此可以知道,矢量信号的频率为最高位信号的频率。量信号的频率为最高位信号的频率。对于对于4MHz频率信号,假设得到频率信号,假设得到1Hz时钟脉

30、冲信号时钟脉冲信号Clk,通过,通过公式公式f=1/2n可计算出可计算出n22,即应设计一个,即应设计一个22位的计数器。位的计数器。4MHz到到1Hz的分频器的分频器 LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count ISPORT clk: in STD_LOGIC; q: out STD_LOGIC;END count;ARCHITECTURE a OF count ISsignal tmp: STD_LOGIC_vector21 downto 0;Beginproce

31、ssclk beginif clkevent and clk=1 then tmp=tmp+1;end if;end process;q=tmp21;END a;数控分频器设计数控分频器设计 对于一个加法计数器,装载不同的计数对于一个加法计数器,装载不同的计数初始值时,会有不同频率的溢出输出信号。初始值时,会有不同频率的溢出输出信号。 计数器溢出时,输出计数器溢出时,输出1电平,电平,同时溢出同时溢出时的时的1电平反响给计数器的输入端作为装载信电平反响给计数器的输入端作为装载信号;号;否那么输出否那么输出0电平。电平。Library ieee;Use ieee.std_logic_1164.a

32、ll;Entity speaker isPort clk : in std_logic; Freq_num : in integer range 0 to 2047; -16#7FF# speaker : out std_logic;End speaker;Architecture a1 of speaker is signal power_speaker : std_logic;beginProcessclk variable count11bit: integer range 0 to 2047;Begin if clkevent and clk=1 then if count11bit=

33、2047 then count11bit:=Freq_num; power_speaker=1; else count11bit:=count11bit+1; power_speaker=0; end if; end if;end process;-将输出再进展将输出再进展2分频,将脉冲展宽,以使扬声器有足够功率发音分频,将脉冲展宽,以使扬声器有足够功率发音processpower_speaker variable count2bit: std_logic;Begin if power_speakerevent and power_speaker=1 then count2bit:=not c

34、ount2bit; if count2bit=1 then speaker=1; else speaker tone tone tone tone tone tone tone tone tone tone tone tone tone tone tone tone tone=2047;End case; End process; End a1;35 63 5 65 31 2 音音调调音音符符1234567初初始始值值高高1730175017701790181518301930中中1410149015601600162216501690低低77391210361116119712901372次

35、次低低100200300400500600700Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity top isPort clk : in std_logic; spkout : out std_logic;End top;Architecture a1 of top iscomponent tonePort index : in integer range 0 to 16; tone : out integer range 0 to 16#7FF#;end component;comp

36、onent speakerPort clk : in std_logic; Freq_in : in integer range 0 to 16#7FF#; speaker : out std_logic;end component;signal index1 : integer range 0 to 16;signal tone2 : integer range 0 to 16#7FF#;signal ck4: std_logic;beginprocessclk variable q : std_logic_vector17 downto 0;Begin if clkevent and cl

37、k=1 then q:=q+1; end if; ck=q17;end process;processckBegin if ckevent and ck=1 then if index1=15 then index1=0; else index1=index1+1; end if; end if;end process;u1: tone port mapindex1,tone2;u2: speaker port mapclk,tone2,spkout;End a1;5 ROM设计设计 ROMAddrOeDLibrary ieee;Use ieee.std_logic_1164.all;Enti

38、ty rom isPortaddr : in std_logic_vector3 downto 0; oe : in std_logic; D : out std_logic_vector7 downto 0;End rom;Architecture a of rom isBegind=00000001 when addr=0000 and oe=1 else 00000100 when addr=0001 and oe=1 else 00010100 when addr=0010 and oe=1 else 00100100 when addr=0011 and oe=1 else 0000

39、0101 when addr=0100 and oe=1 else 00000110 when addr=0101 and oe=1 else 00010001 when addr=0110 and oe=1 else 00100001 when addr=0111 and oe=1 else 00100001 when addr=1000 and oe=1 else 01000001 when addr=1001 and oe=1 else 10000001 when addr=1010 and oe=1 else 01111001 when addr=1011 and oe=1 else

40、01111101 when addr=1100 and oe=1 else 01111101 when addr=1101 and oe=1 else 00111111 when addr=1110 and oe=1 else 10111111;End a;6堆栈设计堆栈设计fullDoutStackDinPushPopResetClkempty堆栈存储数据的特点:堆栈存储数据的特点:按照先入后出、后入先出的原那么存储数据。按照先入后出、后入先出的原那么存储数据。 fullDoutStackDinPushPopResetClkempty16字节的堆栈字节的堆栈 library ieee;use

41、 ieee.std_logic_1164.all;entity mstack is portreset,push,pop,clk:in std_logic; din:in std_logic_vector7 downto 0; empty,full:out std_logic; dout:out std_logic_vector7 downto 0;end mstack;architecture a1 of mstack is type stack is array 15 downto 0 of std_logic_vector7 downto 0;begin processclk,reset

42、 variable s: stack; variable x: std_logic; 标记堆栈是否满标记堆栈是否满 variable cnt: integer range 0 to 15; 堆栈指针堆栈指针 begin16字节的堆栈字节的堆栈 if reset=1 then dout=00000000; x:=0; cnt:=0; else if clkevent and clk=1 then if push=1 and pop=0 and x=0 then if cnt/=15 then empty=0; scnt:=din; cnt:=cnt+1; else s15:=din; x:=1;

43、 end if; elsif push=0and pop=1 and cnt/=0 then if x=0 then cnt:=cnt-1; dout=scnt; else dout=s15; x:=0; end if; elsif cnt=0 then empty=1; end if; end if; end if; full=x; end process;end a1; cnt考虑:这个例子是不是空递增堆栈?考虑:这个例子是不是空递增堆栈?FIFOFIFO如何实现?如何实现?7状态机的电路设计状态机的电路设计 我们可以用我们可以用输入信号输入信号X和和电路状态电路状态Q来描绘时序电路的逻辑

44、来描绘时序电路的逻辑功能,这时时序电路称为功能,这时时序电路称为状态机状态机State Machine。根据输出信号和输入信号以及电路状态的关系,状态机可根据输出信号和输入信号以及电路状态的关系,状态机可以分为两种:以分为两种:穆尔穆尔Moore型型和和米利米利Mealy型型。Y=FX,Q Y=FQ 米利米利Mealy型:型:穆尔穆尔Moore型:型:一个简单一个简单More型状态机型状态机 S0S2S3/1S1/1/0/01 More型状态机型状态机 S0S20/01/0S31/0S11/10/00/10/01/0输入信号影响状态的转换。输入信号影响状态的转换。输出信号和输入信号无关。输出信

45、号和输入信号无关。LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY more ISPORT Clk,reset: in Std_logic; din: in Std_logic; op: out Std_logic;END more;ARCHITECTURE a OF more ISTYPE STATE_TYPE IS s0, s1, s2,s3;SIGNAL state: STATE_TYPE;BEGINS0S20/01/0S31/0S11/10/00/10/01/0PROCESS clk,resetBEGIN If reset = 1 THEN

46、state IF din=1 THEN state = s1; else state IF din=0 THEN state = s2; else state IF din=0 THEN state=s3; else state IF din=1 THEN state = s0; else state=s1;END IF;End Case; End if; End if;End process; op=1 when state=s1 else 0; END a;S0S20/01/0S31/0S11/10/00/10/01/02 Mealy型状态机型状态机 S0S20/01/0S31/1S11/

47、10/00/00/11/1LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY mealy ISPORT Clk,reset: IN STD_LOGIC; -clock din: IN STD_LOGIC; op: OUT STD_LOGIC;END mealy;ARCHITECTURE a OF mealy ISTYPE STATE_TYPE IS s0, s1, s2,s3;SIGNAL state: STATE_TYPE;BEGINS0S20/01/0S31/1S11/10/00/00/11/1PROCESS clk,reset BEGINIf

48、reset = 1 THENstate IF din=1 THEN state = s1; else stateIF din=0 THEN state = s2; else state IF din=0 THEN state=s3; else state IF din=1 THEN state = s0; else state=s1;END IF;END CASE;End if; End if; END PROCESS; op=1 when state=s0 and din=1 or state=s1 and din=1 or state=s3 and din=1 else 0; -输出不仅与

49、状态有关,而且和输入有关输出不仅与状态有关,而且和输入有关。END a; S0S20/01/0S31/1S11/10/00/00/11/1三、A/D控制逻辑电路的实现1ADC0809控制电路实现仿真控制电路实现仿真2TLC5510控制电路实现仿真控制电路实现仿真+下载实现下载实现A/D转换控制转换控制ADC0809是是CMOS的的8位位A/D转换器,片内有转换器,片内有8路模拟路模拟开关,可控制开关,可控制8个模拟量中个模拟量中的一个进入转换器中。的一个进入转换器中。ADC0809的分辨率为的分辨率为8位,位,转换时间约转换时间约100us128us,含锁存控制的含锁存控制的8路多路开关,路多

50、路开关,输出有三态缓冲器控制,单输出有三态缓冲器控制,单5V电源供电。电源供电。双列直插式封装,共有双列直插式封装,共有28条条引脚。引脚。引脚说明:引脚说明:1IN0IN7:8路模拟电压输入,用于输入被转换的模拟电压信号。路模拟电压输入,用于输入被转换的模拟电压信号。2地址输入和控制地址输入和控制ALE为地址锁存允许控制,高电平有效。当其为高电平时,为地址锁存允许控制,高电平有效。当其为高电平时,ADDA、ADDB和和ADDC三条地址线上地址信号得以锁存。三条地址线上地址信号得以锁存。3数字量输出及控制线数字量输出及控制线START为为“启动脉冲输入,宽度应大于启动脉冲输入,宽度应大于100

51、ns,上升沿清零内部存放器,下降,上升沿清零内部存放器,下降沿启动沿启动ADC工作。工作。EOC为转换完毕输出线,该线上高电平表示转换完毕。为转换完毕输出线,该线上高电平表示转换完毕。D0D7为数字量输出线,为数字量输出线,D7为最高位。为最高位。OE为为“输出允许输出允许 线,高电平有效。线,高电平有效。4电源线及其它电源线及其它CLOCK为时钟输入线为时钟输入线最大最大800KHz,可接,可接640KHz时钟,用于提供逐次比较时钟,用于提供逐次比较所需时钟。所需时钟。VCC为为+5V电源输入线,电源输入线,GND为地线。为地线。VREF+和和VREF-为参考电压输入线。为参考电压输入线。

52、VREF+常常VCC相连,相连,VREF-常接地或负电源电压。常接地或负电源电压。A/D转换控制转换控制A/D采样采样控制显示控制显示电路电路D7.0Q7.0ClkEocOEAddaALEStartLibrary ieee;Use ieee.std_logic_1164.all;ENTITY ADCINT IS PORT D : IN STD_LOGIC_VECTOR7 DOWNTO 0; -0809的的8位转换数据输出位转换数据输出 CLK ,EOC : IN STD_LOGIC; -CLK是转换工作时钟是转换工作时钟 ALE, START, OE, ADDA : OUT STD_LOGIC; Q : OUT STD_LOGIC_VECTOR7 DOWNTO

温馨提示

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

评论

0/150

提交评论