寄存器设计应用课件_第1页
寄存器设计应用课件_第2页
寄存器设计应用课件_第3页
寄存器设计应用课件_第4页
寄存器设计应用课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 寄存器设计应用 CPLD与FPGA的应用 第1页,共30页。寄存器VHDL描述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 ; -类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK,Q1) BEGI

2、N IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -将内部的暂存数据向端口输出 END bhv; 寄存器描述的VHDL程序 第3页,共30页。VHDL描述的语言现象说明 信号定义和数据对象 信号定义SIGNAL Q1:STD_LOGIC; 表示在描述的器件DFF1内部定义标识符Q1的数据对象为信号SIGNAL,其数据类型为STD_LOGIC。 由于Q1被定义为器件的内部节点信号,数据的进出不像端口信号那样受限制,所以不必定义其端口模式(如IN、OUT等)。 定义Q1的目的是为了在设计更大的电路时使用由此

3、引入的时序电路的信号,这是一种常用的时序电路设计的方式。 有Q1过渡,Q不用BUFFER类型。第4页,共30页。VHDL描述的语言现象说明 上升沿检测表式和信号属性函数EVENT CLKEVENT AND CLK=1 检测时钟信号CLK的上升沿 关键词EVENT是信号属性函数,用来获得信号行为信息的函数称为信号属性函数 EVENT“clkEVENT”就是对clk标识符的信号在当前的一个极小的时间段 内发生事件的情况进行检测。所谓发生事件,就是clock在其数据类型的取值范围内发生变化,从一种取值转变到另一种取值(或电平方式)。第5页,共30页。VHDL描述的语言现象说明 上升沿检测表式和信号属

4、性函数EVENT 如果clk的数据类型定义为STD_LOGIC,则在 时间段内,clk从其数据类型允许的9种值中的任何一个值向另一值跳变,如由0变成1、由1变成0或由Z变成0,都认为发生了事件虽然STD_LOGIC一般只有0和1LAST_VALUE 信号属性函数,它表示最近一次事件发生前的值。 第6页,共30页。【例】ENTITY COMP_BAD 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

5、= 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的变化是一次上升沿的跳变 END IF; END PROCESS ; 第10页,共30页。实现时序电路的不同表述 【例】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 THE

6、N 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 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - 必须打开STD_LOGIC_1164程序包 THEN Q1 = D ; END IF

7、; 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 = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS ; 时序波形 第14页,共30页。实现时序电路的不同表述 【例】.PROCESS (CLK,D) BEGIN IF CLK = 1

8、-电平触发型寄存器 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 STD_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 CLK

9、1EVENT AND CLK1 = 1 THEN Q = D ; END IF; END PROCESS ; OUT1= NOT Q ; END bhv; 第16页,共30页。异步时序电路设计 在时序电路设计中应注意,一个时钟进程只能构成对应单一时钟信号的时序电路,或者说是同步时序电路。即如果在进程中需要构成多触发器时序电路,也只能产生对应某个单一时钟的同步时序逻辑。异步逻辑必须用多个时钟进程语句来构成。 第17页,共30页。异步时序电路设计 【例】 . ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1:

10、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 ; . 其中,进程标号PRO1和PRO2只是一种标注符号,不参加综合。程序中,时钟进程PRO1的赋值信号Q1成了时钟进程PRO2的敏感信号及时钟信号。这两个时钟进程通过Q1进行通信联系。显然,尽管两个进程都是并行语句,但它们被执行(启动)的时刻并非

11、同时,因为根据敏感信号的设置,进程PRO1总是先于PRO2被启动。第18页,共30页。寄存器描述的VHDL程序 异步时序电路设计 第19页,共30页。移位寄存器VHDL描述移位寄存器的描述移位寄存器就是一种具有移位功能的寄存器阵列。移位功能是指寄存器里面存储的数据能够在外部时钟信号的作用下进行顺序左移或者右移,因此移位寄存器常常用来存储数据、实现数据的串并转换、进行数值运算以及数据处理等。第20页,共30页。【例5-11】LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY shift IS PORT( d1: IN STD_LOGIC; cp: I

12、N 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_LOGIC_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

13、);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之间利用COMPONENT语句对准备调用的元件(DFF触发器)作了声明,并定义了q(4)到q(0)五个信号作为器件内部的连接线最后利用端口映射语句PORT MAP( )将四个D触发器连接起来构成一个完整的移位寄存器。第

14、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 语句的局部变量,不必事先定义, 由FOR 语句自动定义,在FOR语句中不应再使用其他与此变量同名的标识符。i从循环范围的初值开始,每循环一次就自动加1,直到超出循环范围的终值为止。执行结果Sum中为到的和。例:add: FOR i I

15、N 9 DOWNTO 1 LOOP sum:=i+sum; END LOOP add;第23页,共30页。2). WHILE 循环WHILE 循环是一种未知循环次数的语句, 循环次数取决于条件表达式是否成立。其格式如下:循环标号 : WHILE 条件表达式 LOOP顺序语句;END LOOP 循环标号 ;循环标号是用来表示WHILE循环语句的标识符,是可选项。在循环语句中,没有给出循环次数的范围,而是给出了循环语句的条件。WHILE后边的条件表达式是一个布尔表达式,如果条件为TURE,则进行循环,如果条件为FALSE,则结束循环。第24页,共30页。IF ( clr=0) THEN 清零;EL

16、SIF (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 STD_LOGIC;d0: OUT STD_LOGIC);END shift2;ARCHITECfURE str OF shift2 ISCOMPONENT

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

温馨提示

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

评论

0/150

提交评论