寄存器设计应用课件.ppt

上传人(卖家):三亚风情 文档编号:3333433 上传时间:2022-08-20 格式:PPT 页数:30 大小:272.50KB
下载 相关 举报
寄存器设计应用课件.ppt_第1页
第1页 / 共30页
寄存器设计应用课件.ppt_第2页
第2页 / 共30页
寄存器设计应用课件.ppt_第3页
第3页 / 共30页
寄存器设计应用课件.ppt_第4页
第4页 / 共30页
寄存器设计应用课件.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、第第5 5章章 寄存器设计应用寄存器设计应用 CPLDCPLD与与FPGAFPGA的应用的应用 第1页,共30页。寄存器寄存器VHDL描述描述D D触发器的描述触发器的描述 D触发器触发器 第2页,共30页。【例】【例】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF1 IS PORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点类似于在芯片内部

2、定义一个数据的暂存节点 BEGIN PROCESS(CLK,Q1)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=D;END IF;END PROCESS;Q=Q1;-将内部的暂存数据向端口输出将内部的暂存数据向端口输出 END bhv;寄存器描述的寄存器描述的VHDLVHDL程序程序 第3页,共30页。VHDLVHDL描述的语言现象说明描述的语言现象说明 信号定义和数据对象信号定义和数据对象 信号定义信号定义SIGNAL Q1:STD_LOGIC;表示在描述的器件DFF1内部定义标识符Q1的数据对象为信号SIGNAL,其数据类型为STD_LOGIC。由于Q1被定义为器

3、件的内部节点信号,数据的进出不像端口信号那样受限制,所以不必定义其端口模式(如IN、OUT等)。定义Q1的目的是为了在设计更大的电路时使用由此引入的时序电路的信号,这是一种常用的时序电路设计的方式。有Q1过渡,Q不用BUFFER类型。第4页,共30页。VHDLVHDL描述的语言现象说明描述的语言现象说明 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENT CLKEVENT AND CLK=1 检测时钟信号CLK的上升沿 关键词EVENT是信号属性函数,用来获得信号行为信息的函数称为信号属性函数 EVENT“clkEVENT”就是对clk标识符的信号在当前的一个极小的时间段 内发

4、生事件的情况进行检测。所谓发生事件,就是clock在其数据类型的取值范围内发生变化,从一种取值转变到另一种取值(或电平方式)。第5页,共30页。VHDLVHDL描述的语言现象说明描述的语言现象说明 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENT 如果clk的数据类型定义为STD_LOGIC,则在 时间段内,clk从其数据类型允许的9种值中的任何一个值向另一值跳变,如由0变成1、由1变成0或由Z变成0,都认为发生了事件虽然STD_LOGIC一般只有0和1LAST_VALUE 信号属性函数,它表示最近一次事件发生前的值。第6页,共30页。【例】【例】ENTITY COMP_BA

5、D IS PORT(a1,b1 :IN BIT;q1 :OUT BIT );END;ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS(a1,b1)BEGIN IF a1 b1 THEN q1=1;ELSIF a1 b1 THEN q1 b1 THEN q1=1;ELSE q1=0;END IF;.(Synplify综合)综合)第9页,共30页。实现时序电路的不同表述实现时序电路的不同表述 【例】【例】.PROCESS(CLK)BEGINIF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保确保CLK

6、的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF;END PROCESS;第10页,共30页。实现时序电路的不同表述实现时序电路的不同表述 【例】【例】.PROCESS(CLK)BEGINIF CLK=1 AND CLKLAST_VALUE=0 THEN Q=D;END IF;END PROCESS;第11页,共30页。【例】【例】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PORT(CLK,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF3

7、IS SIGNAL Q1:STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF rising_edge(CLK)-必须打开必须打开STD_LOGIC_1164程序包程序包 THEN Q1=D;END IF;END PROCESS;Q=Q1;END;第12页,共30页。实现时序电路的不同表述实现时序电路的不同表述 【例】【例】.PROCESS BEGIN wait until CLK=1 ;-利用利用wait语句语句 Q=D;END PROCESS;第13页,共30页。实现时序电路的不同表述实现时序电路的不同表述 【例】【例】.PROCESS(CLK)BEGIN IF CLK

8、=1 THEN Q=D;-利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿检测 END IF;END PROCESS;时序波形时序波形 第14页,共30页。实现时序电路的不同表述实现时序电路的不同表述 【例】【例】.PROCESS(CLK,D)BEGIN IF CLK=1 -电平触发型寄存器电平触发型寄存器 THEN Q=D;END IF;END PROCESS 时序波形时序波形 第15页,共30页。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF51 IS PORT(CLK0:IN STD_LOGIC;CL:IN S

9、TD_LOGIC;OUT1:OUT STD_LOGIC);END DFF51;ARCHITECTURE bhv OF DFF51 IS SIGNAL D,Q:STD_LOGIC;BEGIN PROCESS(CLK1,CL)BEGIN D=CL NOR Q;IF CLK1EVENT AND CLK1=1 THEN Q=D;END IF;END PROCESS;OUT1=NOT Q;END bhv;第16页,共30页。异步时序电路设计异步时序电路设计 在时序电路设计中应注意,一个时钟进程只能构成对应单一时钟信号的时序电路,或者说是同步时序电路。即如果在进程中需要构成多触发器时序电路,也只能产生对应

10、某个单一时钟的同步时序逻辑。异步逻辑必须用多个时钟进程语句来构成。第17页,共30页。异步时序电路设计异步时序电路设计【例】【例】.ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=NOT(Q2 OR A);END IF;END PROCESS;PRO2:PROCESS(Q1)BEGIN IF Q1EVENT AND Q1=1 THEN Q2=D;END IF;END PROCESS;QQ=Q2;.其中,进程标号PRO

11、1和PRO2只是一种标注符号,不参加综合。程序中,时钟进程PRO1的赋值信号Q1成了时钟进程PRO2的敏感信号及时钟信号。这两个时钟进程通过Q1进行通信联系。显然,尽管两个进程都是并行语句,但它们被执行(启动)的时刻并非同时,因为根据敏感信号的设置,进程PRO1总是先于PRO2被启动。第18页,共30页。寄存器描述的寄存器描述的VHDLVHDL程序程序 异步时序电路设计异步时序电路设计 第19页,共30页。移位寄存器移位寄存器VHDL描述描述移位寄存器的描述移位寄存器就是一种具有移位功能的寄存器阵列。移位功能是指寄存器里面存储的数据能够在外部时钟信号的作用下进行顺序左移或者右移,因此移位寄存器

12、常常用来存储数据、实现数据的串并转换、进行数值运算以及数据处理等。第20页,共30页。【例5-11】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift IS PORT(d1:IN STD_LOGIC;cp:IN STD_LOGIC;d0:OUT STD_ LOGIC);END shift;ARCHITECTURE str OF shift IS COMPONENT dff PORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOG

13、IC_VECTOR(4 DOWNTO 0);BEGINq(0)=d1;dffl:dff PORT MAP(q(0),cp,q(l);-元件例化语句dff2:dff PORT MAP(q(1),cp,q(2);dff3:dff PORT MAP(q(2),cp,q(3);dff4:dff PORT MAP(q(3),cp,q(4);d0=q(4);END str;第21页,共30页。5.3.2 VHDL描述的语言现象说明(1)元件声明语句和元件例化语句元件声明语句和元件例化语句文件在实体中首先定义了移位寄存器顶层设计元件的端口信号dl、cp、d0,然后在ARCHITECTURE和BEGIN之间利

14、用COMPONENT语句对准备调用的元件(DFF触发器)作了声明,并定义了q(4)到q(0)五个信号作为器件内部的连接线最后利用端口映射语句PORT MAP()将四个D触发器连接起来构成一个完整的移位寄存器。第22页,共30页。(2)LOOP循环语句循环语句常用的循环语句有FOR 和WHILE两种。1).FOR 循环循环标号:FOR 循环变量的循环次数范围 LOOP顺序语句;END LOOP 循环标号;例如:例:add:FOR i IN 1 TO 9 LOOP sum:=i+sum;END LOOP add;add 为循环标号,i 是一个临时循环变量,属于FOR 语句的局部变量,不必事先定义,

15、由FOR 语句自动定义,在FOR语句中不应再使用其他与此变量同名的标识符。i从循环范围的初值开始,每循环一次就自动加1,直到超出循环范围的终值为止。执行结果Sum中为到的和。例:add:FOR i IN 9 DOWNTO 1 LOOP sum:=i+sum;END LOOP add;第23页,共30页。2).WHILE 循环WHILE 循环是一种未知循环次数的语句,循环次数取决于条件表达式是否成立。其格式如下:循环标号:WHILE 条件表达式 LOOP顺序语句;END LOOP 循环标号;循环标号是用来表示WHILE循环语句的标识符,是可选项。在循环语句中,没有给出循环次数的范围,而是给出了循

16、环语句的条件。WHILE后边的条件表达式是一个布尔表达式,如果条件为TURE,则进行循环,如果条件为FALSE,则结束循环。第24页,共30页。IF(clr=0)THEN 清零;ELSIF(clkEVENT)AND(clk=1)THEN IF(load=0)THEN 并行置数 ELSIF(load=1)AND(dir=0)THEN 左移 ELSIF(load=1)AND(dir=1)THEN 右移 END IF;END IF;在完成多个条件语句时,一定要注意优先问题,同时注意ELSIF的使用。(3)IF条件语句优先问题条件语句优先问题第25页,共30页。(4)生成语句生成语句生成语句是一种循环

17、语句,具有复制电路的功能。当设计一个由多个相同单元模块组成的电路时,利用生成语句复制一组完全相同的并行组件或设计单元电路结构,避免多段相同结构的重复书写,以简化设计。生成语句有FOR工作模式和IF工作模式两种。1)FOR 工作模式的生成语旬生成标号:FOR 循环变量IN 取值范围GENERATE并行语句:END GENERATE 生成标号;第26页,共30页。【例5-15】用FOR工作模式生成语句描述4位移位寄存器。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift2 ISPORT(dl:IN STD_LOGIC;ep:IN S

18、TD_LOGIC;d0:OUT STD_LOGIC);END shift2;ARCHITECfURE str OF shift2 ISCOMPONENT dffPORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINq(0)=dl;reg1:FOR i IN 0 TO 3 GENERATE -FOR 工作模式生成语句dffx:dddd PORT MAP(ep,q(i),q(i+1);-元件例化END GENERATE reg1;d

19、0=q(4);END str;第27页,共30页。2)IF 工作模式的生成语句IF 工作模式的生成语句常用来描述带有条件选择的结构。格式如下:生成标号:IF 条件GENERATE并行语句;END GENERATE 生成标号;其中,条件是一个布尔表达式,返回值为布尔类型:当返回值为TRUE时,就会去执行生成语句中的并行处理语句;当返回值为FALSE时,则不执行生成语句中的并行处理语句。第28页,共30页。【例5-16】用FOR和IF工作模式的生成语句描述8位移位寄存器。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift3 ISPO

20、RT(d1:IN STD_LOGIC;cp:IN STD_LOGIC;d0:OUT STD_LOGIC);END shift3;ARCHITECfURE str OF shift3 ISCOMPONENT ddddPORT(CLK:IN STD_LOGIC;D:IN STD_LOGIC;Q:OUT STD_LOGIC);END COMPONENT;第29页,共30页。SIGNAL q:STD_LOGIC_VECTOR(7 DOWNTO 1);BEGINreg:FOR i IN 0 TO 7 GENERATE -FOR 工作模式生成语句g1:IF i=0 GENERATE -IF 工作模式生成语句dffx:dddd PORT MAP(cp,d1,q(i+1);END GENERATE;g2:IF i=7 GENERATEdffx:dddd PORT MAP(cp,q(i),d0);END GENERATE;g3:IF(i/=0)AND(i/=7)GENERATEdffx:dddd PORT MAP(cp,q(i),q(i+1);END GENERATE;END GENERATE reg;END str;第30页,共30页。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(寄存器设计应用课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|