书签 分享 收藏 举报 版权申诉 / 88
上传文档赚钱

类型数字逻辑单元设计课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5138877
  • 上传时间:2023-02-14
  • 格式:PPT
  • 页数:88
  • 大小:1.72MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《数字逻辑单元设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数字 逻辑 单元 设计 课件
    资源描述:

    1、何宾2008.10第第 4章章u 在复杂数字系统中,其结构总可以用若干基本逻辑单元的组合进行描述。u 基本逻辑单元一般分为组合逻辑电路和时序电路两大类。在此基础上,可以更进一步进行组合。u 本章所介绍的存储器、运算单元和有限自动状态机就是由基本逻辑单元组合而成的。u 本章首先介绍基本的组合逻辑电路和时序电路设计,然后介绍在数字系统设计中普遍使用的存储器电路、运算单元和有限自动状态机。u 对基本逻辑门的操作主要有:与、与非、或、或非、异或、异或非和非操作。通过使用VHDL语言中描述基本逻辑门电路操作的关键字:and(与),nand(与非),or(或),nor(或非),xor(异或),xnor(异

    2、或非),not(非)来实现对基本逻辑门的操作。一堆复杂的逻辑门操作总可以化简为集中基本逻辑门操作的组合。【例例4-1】基本门电路的设计 Library ieee;Use ieee.std_logic_1164.all;Entity gate is Port(a,b,c :in std_logic;d :out std_logic);end gate;architecture rtl of gate isbegin d=(not a)and b)or c;end rtl;u 在数字系统中,常常会将某一信息用特定的代码进行描述,这称为编码过程。编码过程可以通过编码器电路实现。同时,将某一特定的代码

    3、翻译成原始的信息,这称为译码过程。译码过程可以通过译码器电路实现。u 将某一信息用一组按一定规律排列的二进制代码描述称为编码。典型的有8421码、BCD码等。在使用VHDL语言设计编码器时,通过使用CASE和IF语句实现对编码器的描述。【例例4-2】8/3线编码器的VHDL描述 library ieee;use ieee.std_logic_1164.all;entity priority_encoder_1 is port(sel:in std_logic_vector(7 downto 0);code:out std_logic_vector(2 downto 0);end priorit

    4、y_encoder_1;architecture archi of priority_encoder_1 is begin code=000 when sel(0)=1 else 001 when sel(1)=1 else 010 when sel(2)=1 else 011 when sel(3)=1 else 100 when sel(4)=1 else 101 when sel(5)=1 else 110 when sel(6)=1 else 111 when sel(7)=1 else ZZZ;end archi;u 译码的过程实际上就是编码过程的逆过程,即将一组按一定规律排列的二进

    5、制数还原为原始的信息。下面以最常用的3:8译码器为例,给出其VHDL语言描述。【例例4-4】十六进制数的共阳极十六进制数的共阳极7段数码显示段数码显示VHDL描述描述 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decoder is port(hex:in std_logic_vector(3 downto 0);led:out std_logic_vector(6downto 0);end decoder;architecture rtl of decoder is begin

    6、 with hex select LED=1111001 when 0001,-1 0100100 when 0010,-2 0110000 when 0011,-3 0011001 when 0100,-4 0010010 when 0101,-5 0000010 when 0110,-6 1111000 when 0111,-7 0000000 when 1000,-8 0010000 when 1001,-9 0001000 when 1010,-A 0000011 when 1011,-b 1000110 when 1100,-C 0100001 when 1101,-d 000011

    7、0 when 1110,-E 0001110 when 1111,-F 1000000 when others;-0 end rtl;u CASE和IF语句描述数据缓冲器 在数字系统设计中,常使用CASE和IF语句描述数据缓冲器。下面给出这两种描述方法。【例例4-5】4选1多路选择器的IF语句描述library ieee;use ieee.std_logic_1164.all;entity multiplexers_1 isport(a,b,c,d:in std_logic;s:in std_logic_vector(1 downto 0);o:out std_logic);end multi

    8、plexers_1;architecture archi of multiplexers_1 isbeginprocess(a,b,c,d,s)beginif(s=00)then o=a;elsif(s=01)then o=b;elsif(s=10)then o=c;else o o o o o=d;end case;end process;end archi;u 使用三态缓冲语句也可以描述多路数据选择器。图4.5给出了4选1多路选择器的三态的原理。图4.5 三态缓冲实现4选1多路选择器【例例4-7】4选1多路选择器的三态描述library ieee;use ieee.std_logic_11

    9、64.all;entity multiplexers_3 isport(a,b,c,d:in std_logic;s:in std_logic_vector(3 downto 0);o:out std_logic);end multiplexers_3;architecture archi of multiplexers_3 isbegino=a when(s(0)=0)else Z;o=b when(s(1)=0)else Z;o=c when(s(2)=0)else Z;o=d when(s(3)=0)else Z;end archi;u 比较器就是对输入数据进行比较,并判断其大小的逻辑电

    10、路。在数字系统中,比较器是基本的组合逻辑单元之一,比较器主要是使用关系运算符实现的。【例例4-8】8位数据比较器的VHDL描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity comparator_1 isport(A,B:in std_logic_vector(7 downto 0);CMP:out std_logic);end comparator_1;architecture archi of comparator_1 isbeginCMP=B else 0;end archi;

    11、从上面的例子可以看出,使用VHDL中的、=、=、=、/=,这几种关系运算符及其它们的组合,可以设计出具有复杂比较功能的比较器。u 数据运算单元主要包含加法器、减法器、乘法器和除法器,由这四种运算单元和逻辑运算单元一起,可以完成复杂数学运算。在VHDL语言中,支持的几种运算有:加(+)、减(-)、乘(*)、除(/)、取余(MOD)、幂乘(*)。u 在VHDL描述加法器时,使用+运算符比门级描述更简单。下面给出带进位输入和输出的无符号的8比特加法器的VHDL描述。【例4-9】带进位输入和输出的无符号的8比特加法器的VHDL描述library ieee;use ieee.std_logic_1164

    12、.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity adders_4 isport(A,B,CI:in std_logic_vector(7 downto 0);SUM:out std_logic_vector(7 downto 0);CO:out std_logic);end adders_4;architecture archi of adders_4 issignal tmp:std_logic_vector(8 downto 0);begin SUM=tmp(7 downto 0);CO=tm

    13、p(8);tmp=conv_std_logic_vector(conv_integer(A)+conv_integer(B)+conv_integer(CI),9);end archi;u 减法是加法的反运算,采用VHDL语言的-符号描述减法器,比用门级描述更简单。下面给出一个无符号8位带借位的减法器的VHDL描述。【例例4-10】无符号8位带借位的减法器的VHDL描述library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity adders_8 isport(A,B:in std_logic_v

    14、ector(7 downto 0);BI:in std_logic;RES:out std_logic_vector(7 downto 0);end adders_8;architecture archi of adders_8 isbeginRES=A-B-BI;end archi;u 用VHDL语言实现乘法器时,乘积和符号应该为2的幂次方。PLD的优点就是在内部集成了乘法器的硬核,具体在IP核的设计中详细讨论。【例例4-11】下面给出一个8位和4位无符号的乘法器的VHDL描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logi

    15、c_unsigned.all;entity multipliers_1 isport(A:in std_logic_vector(7 downto 0);B:in std_logic_vector(3 downto 0);RES:out std_logic_vector(11 downto 0);end multipliers_1;architecture beh of multipliers_1 isbeginRES=A*B;end beh;u 除法器可以用VHDL语言的/符号实现,需要注意的是在使用/符号进行除法运算时,除数必须是常数,而且是2的整数幂。因为除法器的运行有这样的限制,实际上

    16、除法也可以用移位运算实现。下面给出一个除法器的VHDL描述。【例例4-12】除法器的VHDL描述。library ieee;use ieee.std_logic_1164.all;use entity divider_1 is port(DI:in unsigned(7 downto 0);DO:out unsigned(7 downto 0);end divider_1;architecture archi of divider_1 is begin DO=DI/2;end archi;【例例4-13】三态门的进程描述Library ieee;Use ieee.std_logic_1164.

    17、all;Entity tri_gate is Port(en :in std_logic;din :in std_logic_vector(7 downto 0);dout :out std_logic_vector(7 downto 0);end tri_gate;Architecture rtl of tri_gate isBegin process(din,en)begin if(en=1)then dout=din;else dout=ZZZZZZZZ;end if;end process;end rtl;【例例4-14】三态门的WHEN-ELSE进程描述Library ieee;Us

    18、e ieee.std_logic_1164.all;Entity tri_gate is Port(en :in std_logic;din :in std_logic_vector(7 downto 0);dout :out std_logic_vector(7 downto 0);end tri_gate;Architecture rtl of tri_gate isbegindout=din when en=1 else ZZZZZZZZ;end rtl;从上面的两个例子中可以看出,使用条件并行语句描述三态门比使用进程要简单的多。【例例4-15】双向总线缓冲器的描述 Library ie

    19、ee;Use ieee.std_logic_1164.all;Entity bidir is Port(a :inout std_logic_vector(15 downto 0);End bidir;Architecture rtl of bidir is signal a_in:std_logic_vector(15 downto 0);signal a_out:std_logic_vector(15 downto 0);signal T:std_logic;Begin a=a_out when T=0 else ZZZZZZZZZZZZZZZZ;a_out=a;end rtl;u 时序逻

    20、辑电路的输出状态不仅与输入变量的状态有关,而且还与系统原先的状态有关。时序电路最重要的特点是存在着记忆单元部分,时序电路主要包括:时钟和复位、基本触发器、计数器、移位寄存器等。u 时序电路由时钟驱动,时序电路只有在时钟信号的边沿到来时,其状态才发生改变。在数字系统中,时序电路的时钟驱动部分一般包括时钟信号和系统复位信号。根据时钟和复位的描述不同,时序电路一般分成同步复位电路和异步复位电路两类。u 在时序电路中,不论采用什么方法描述时钟信号,必须指明时钟的边沿条件(clock edge condition)。时钟沿条件有上升沿和下降沿两种。时钟的上升沿条件可以用下面的语句描述:clockeven

    21、t and clock=1 rising_edge(clock)时钟的下降沿条件可以用下面的语句描述:clockevent and clock=0falling_edge(clock)u 在时序电路中,对时钟信号的驱动方法有如下几种描述方式:1)进程的敏感信号是时钟信号,在进程内部用if 语句描述时钟的边沿条件。【例例4-16】时钟信号的if描述 process(clock_signal)begin if(clock_edge_condition)then signal_out=signal_in;其它时序语句 end if;end process;2)在进程中用wait until语句描述时

    22、钟信号,此时进程将没有敏感信号。【例例4-17】时钟信号的wait until描述 process begin wait until(clock_edge_condition);signal_out=signal_in;其它时序语句 end process;注意:1)在对时钟边沿说明时,一定要注明是上升沿还是下降沿。2)一个进程中只能描述一个时钟信号。3)wait until 语句只能放在进程的最前面或最后面。u 前面已经提到,根据复位和时钟信号的关系不同。时序电路分为同步复位电路和异步复位电路两大类。u、同步复位描述 同步复位指:当复位信号有效,并且在给定的时钟边沿有效时,时序电路才被复位。

    23、在同步复位电路中,在只有以时钟为敏感信号的进程中定义。【例例4-18】同步复位的VHDL描述 process(clock_signal)begin if(clock_edge_condition)then if(reset_condition)then signal_out=reset_value;else signal_out=signal_in;end if;end if;end process;u 、异步复位描述异步复位指:当复位信号有效时,时序电路就被复位。在异步复位电路中,进程的敏感信号表中除时钟信号外,还有复位信号。【例例4-19】异步复位的VHDL描述process(reset_

    24、signal,clock_signal)begin if(reset_condition)then signal_out=reset_value;elsif(clock_edge_condition)then signal_out=signal_in;end if;end process;u 触发器是时序逻辑电路的最基本单元,触发器具有“记忆”能力。u根据沿触发、复位和置位方式的不同触发器可以有多种实现方式。在PLD中经常使用的触发器有D触发器、JK触发器和T触发器等。【例例4-20】带时钟使能和异步复位/置位的D触发器的VHDL描述。D触发器是数字电路中应用最多的一种时序电路。表4.1给出了

    25、带时钟使能和异步复位/置位的D触发器的真值表。输入输出CLRPRECEDCQ1XXXX001XXX1000XX无变化0010000111Library ieee;Useieee.std_logic_1164.all;Entity fdd is Port(clk,d,clr,pre,ce:in std_logic;q:out std_logic);end fdd;architecture rtl of dff is signal q_tmp:std_logic;begin q=q_tmp;process(clk,clr,pre,c)begin if(clr=1)then q_tmp=0;elsi

    26、f(pre=1)then q_tmp=1;elsif rising_edge(clk)then if(ce=1)then q_tmp=d;else q_tmp=q_tmp;end if;end if;end process;end rtl;u 锁存器和触发器不同之处,就在于触发方式的不同,触发器是靠敏感信号的边沿出发,而锁存器是靠敏感信号的电平触发。下面给出锁存器的VHDL描述。【例例4-23】锁存器的VHDL描述Library ieee;Use ieee.std_logic_1164.all;Entity latch isPort(gate,data,set :in std_logic;Q

    27、:out std_logic);End latch;Architecture rtl of latch isBegin process(gate,data,set)Begin if(set=0)then Q=1;elsif(gate=1)then Q=data;end if;end process;end rtl;u 根据计数器的触发方式不同,计数器可以分为:同步计数器和异步计数器两种。当赋予计数器更多的功能时,计数器的功能就非常复杂了。需要注意的是,计数器是常用的定时器的核心部分,当计数器输出控制信号时,计数器也就变成了定时器了。所以只要掌握了计数器的设计方法,就可以很容易的设计定时器。本书

    28、中主要介绍同步计数器的设计。u 同步计数器指在时钟脉冲(计数脉冲)的控制下,计数器做加法或减法的运算。【例例4-24】可逆计数器的描述Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity updowncounter64 is Port(clk,clr,dir :in std_logic;Q :out std_logic_vector(4 downto0);End updowncounter64;Architecture rtl of updowncounter64 is Signal co

    29、unt_tmp:std_logic_vector(4downto 0);Begin Q=count_tmp;Process(clr,clk)Begin If(clr=1)then Count_tmp=”000000”;Elsif rising_edge(clk)then If(dir=1)then Count_tmp=count_tmp+1;Else Count_tmp=count_tmp-1;End if;End if;End process;End rtl;【例例4-25】四比特带有最大计数限制的计数器VHDL描述library ieee;use ieee.std_logic_1164.a

    30、ll;use ieee.std_logic_arith.all;entity counters_8 isgeneric(MAX:integer:=16);port(C,CLR:in std_logic;Q:out integer range 0 to MAX-1);end counters_8;architecture archi of counters_8 issignal cnt:integer range 0 to MAX-1;begin Q=cnt;process(C,CLR)beginif(CLR=1)thencnt=0;elsif(rising_edge(C)thencnt=(cn

    31、t+1)mod MAX;end if;end process;end archi;n 在VHDL语言中,对移位寄存器的描述有三种方式:)并置操作符 shreg=shreg(6 downto 0)&SI;2)FOR-LOOP语句 for i in 0 to 6 loop shreg(i+1)=shreg(i);end loop;shreg(0)=SI;3)预定义的移位操作符SLL或SRL等n 1、预定义的移位操作符(1)算术左移的VHDL描述/sla(2)逻辑左移的VHDL描述/sll(3)算术右移的VHDL描述/sra(4)逻辑右移的VHDL描述/srl【例例4-26】移位操作符实现逻辑左移的

    32、VHDL描述library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity logical_shifters_2 isport(DI:in unsigned(7 downto 0);SEL:in unsigned(1 downto 0);SO:out unsigned(7 downto 0);end logical_shifters_2;architecture archi of logical_shifters_2 isbeginprocess()begin if(event and =1)then case

    33、SEL is when 00=SO SO SO SO SO=DI;end case;end if;end process;end archi;n 2、通过VHDL的类型操作,元件例化、信号连接等不同实现方法实现移位操作运算。下面通过函数调用,元件例化、信号连接等不同实现方法实现一个16位的串行输入、串行输出的移位寄存器。【例例4-27】元件例化的方法实现16位串入/串出移位寄存器的VHDL描述Library ieee;Use ieee.std_logic_1164.all;Entity shift8 is Port(a,clk:in std_logic;B:out std_logic);End

    34、 shift8;Architecture rtl of shift8 is Component dff Port(d,clk :in std_logic;Q :out std_logic);End component;Signal z:std_logic_vector(15 downto 0);Begin z(0)=a;G1:for i in 0 to 15 generate Dffx:dff port map(z(i),clk,z(i+1);End generate;b=z(15);end rtl;【例例4-28】类型操作实现16位移位寄存器的VHDL描述library ieee;use i

    35、eee.std_logic_1164.all;entity shift_registers_1 isport(C,SI:in std_logic;SO:out std_logic);end shift_registers_1;architecture archi of shift_registers_1 is signal tmp:std_logic_vector(15 downto 0);begin SO=tmp(7);process(c)begin if rising_edge(c)then for i in 0 to 14 loop tmp(i+1)=tmp(i);end loop;tm

    36、p(0)=SI;end if;end process;end archi;【例例4-29】并置操作实现16位串入/并出移位寄存器的VHDL描述library ieee;use ieee.std_logic_1164.all;entity shift_registers_5 isport(C,SI:in std_logic;PO:out std_logic_vector(15 downto 0);end shift_registers_5;architecture archi of shift_registers_5 issignal tmp:std_logic_vector(7 downto

    37、0);begin PO=tmp;process(C)begin if rising_edge(C)then tmp=tmp(14 downto 0)&SI;end if;end process;end archi;n 存储器按其类型主要分为只读存储器和随机存储器两种。虽然存储器从其工艺和原理上各不相同,但有一点是相同的,即存储器是单个存储单元的集合体,并且按照顺序排列。其中的每一个存储单元由N位二进制位构成,表示存放的数据的值。n 由于这些特点,所以可以用VHDL的类型语句进行描述。1、用整数描述:TYPE mem is array(integer range)of integer;2、用位矢

    38、量描述:SUBTYPE wrd IS std_logic_vector(k-1 downto 0);Type mem is array(0 to 2*w-1)of wrd;n 需要注意的是,虽然在本节给出了存储器的原理描述和实现方法,但在实际中,尤其是在FPGA的设计中,存储器在FPGA内作为核提供给设计人员进行使用,设计人员只需要对这些核进行配置,就可以生成高性能的存储器模块,根本没有必要用VHDL语言进行原理和功能的描述。u 只读存储器的数据被事先保存到了每个存储单元中,在PLD中保存数据的方法有很多。当对ROM进行读操作时,只要在控制信号的控制下,对操作的单元给出读取的数值即可。【例例4

    39、-30】ROM的VHDL描述EN为ROM的使能信号,ADDR为ROM的地址信号,CLK为ROM的时钟信号,DATA为数据信号。图4.16 ROM的结构图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rams_21a isport(clk:in std_logic;en:in std_logic;addr:in std_logic_vector(5 downto 0);data:out std_logic_vector(19 downto 0);end rams_21a;archit

    40、ecture syn of rams_21a istype rom_type is array(63 downto 0)of std_logic_vector(19 downto 0);signal ROM:rom_type:=(X0200A,X00300,X08101,X04000,X08601,X0233A,X00300,X08602,X02310,X0203B,X08300,X04002,X08201,X00500,X04001,X02500,X00340,X00241,X04002,X08300,X08201,X00500,X08101,X00602,X04003,X0241E,X“0

    41、0301”,X00102,X02122,X02021,X00301,X00102,X02222,X04001,X00342,X0232B,X00900,X00302,X00102,X04002,X00900,X08201,X02023,X00303,X02433,X00301,X04004,X00301,X00102,X02137,X02036,X00301,X00102,X02237,X04004,X00304,X04040,X02500,X02500,X02500,X0030D,X02341,X08201,X0400D);beginprocess(clk)beginif rising_ed

    42、ge(clk)thenif(en=1)thendata=ROM(conv_integer(addr);end if;end if;end process;end syn;u RAM和ROM的区别,在于RAM有读写两种操作,而ROM只有读操作。另外,RAM对读写的时序也有着严格的要求。【例例4-31】一个单端口RAM的VHDL的描述 EN为RAM使能信号,WE为RAM写信号,DI为RAM数据输入信号,ADDR为RAM地址信号,CLK为RAM时钟信号,DO为RAM数据输出信号。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u

    43、nsigned.all;entity rams_01 isport(clk:in std_logic;we:in std_logic;en:in std_logic;addr:in std_logic_vector(5 downto 0);di:in std_logic_vector(15 downto 0);do:out std_logic_vector(15 downto 0);end rams_01;architecture syn of rams_01 istype ram_type is array(63 downto 0)ofstd_logic_vector(15 downto 0

    44、);signal RAM:ram_type;beginprocess(clk)beginif clkevent and clk=1 thenif en=1 thenif we=1 thenRAM(conv_integer(addr)=di;end if;do=RAM(conv_integer(addr);end if;end if;end process;end syn;u 先进先出的对列FIFO在数字系统设计中有着非常重要的应用,它经常用来对付时间不同步情况下的数据操作问题,在这里通过VHDL语言进行了描述。但在实际的PLD设计时,设计者可以很方便的使用EDA厂商提供的IP核自动生成FIFO

    45、,而无须用VHDL语言进行复杂的原理描述。u FIFO和RAM有很多相同的地方,唯一不同的是,FIFO的操作没有地址,而只有内部的指针,保证数据在FIFO中先入先出顺序的正确性。FIFO一般由下列单元:存储单元,写指针,读指针、满、空标志和读写控制信号等构成。u 有限自动状态机FSM(Finate State Machine)的设计是复杂数字系统中非常重要的一部分,是实现高效率高可靠性逻辑控制的重要途径。大部分数字系统都是由控制单元和数据单元组成的。数据单元负责数据的处理和传输,而控制单元主要是控制数据单元的操作的顺序。而在数字系统中,控制单元往往是通过使用有限状态机实现的,有限状态机接受外部

    46、信号以及数据单元产生的状态信息,产生控制信号序列。从上面的数学模型可以看出,如果在数字系统中实现有限状态机,则应该包含三部分:状态寄存器;下状态转移逻辑;输出逻辑。描述有限状态机的关键是状态机的状态集合以及这些状态之间的转移关系。描述这种转换关系除了数学模型外,还可以用状态转移图或状态转移表来实现。状态转移图由三部分组成:表示不同状态的状态点、连接这些状态点的有向箭头以及标注在这些箭头上的状态转移条件。状态转移表采用表格的方式描述状态机。状态转移表由三部分组成:当前状态、状态转移事件和下一状态。状态机分类很多,主要分为Moore状态机、Mealy状态机和扩展有限状态机。下面就Moore状态机、

    47、Mealy状态机的原理和应用进行详细的介绍。Mealy型状态机的输出由状态机的输入和状态机的状态共同决定;【例例4-31】Mealy型状态机的VHDL描述 process(state,.)-定义过程,输出和输入及状态有关 begin if(state=st3_ and =1)then _i=1;else _i=0;end if;end process;process(state,.)-定义过程,确定状态的迁移 begin next_state=state;case(state)is when st1_=if =1 then next_state=st2_;end if;when st2_=if

    48、 =1 then next_state=st3_;end if;when st3_=next_state=st1_;when others=next_state=st1_;end case;end process;u Moore型状态机的输出仅与状态机的状态有关,与状态机的输入无关。【例例4-31】Moore型状态机的VHDL语言的描述 type state_type is(st1_,st2_,.);-定义状态 signal state,next_state:state_type;signal _i:std_logic;-example output signal -定义所有输出信号 SYNC

    49、_PROC:process(,)-定义状态的迁移 begin if(=1)then state=st1_;=0;elsif(rising_edge()then state=next_state;=_i;-定义所有的输出 end if;end process;process(state)begin if state=st3_ then _i=1;else _i=0;end if;end process;process(state,.)-定义不同状态下的输出 begin next_state=state;case(state)is when st1_=if =1 then next_state=s

    50、t2_;end if;when st2_=if =1 then next_state=st3_;end if;when st3_=next_state=st1_;when others=next_state=st1_;end case;end process;u 虽然在这里将两种类型的状态机加以区分,但是在实际的状态机的设计中,设计人员根本不需要这些差别,只要满足状态机设计的规则和状态机运行的条件,采用任何一种状态机都可以实现,并且设计人员可以在实际的设计过程中形成自己独特的状态机的VHDL的设计风格。u有限状态机的设计应遵循以下原则:、分析控制器设计指标,建立系统算法模型图,即状态转移图;、

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数字逻辑单元设计课件.ppt
    链接地址:https://www.163wenku.com/p-5138877.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库