第5章 寄存器设计应用课件

上传人:我*** 文档编号:146154418 上传时间:2020-09-27 格式:PPT 页数:30 大小:92KB
返回 下载 相关 举报
第5章 寄存器设计应用课件_第1页
第1页 / 共30页
第5章 寄存器设计应用课件_第2页
第2页 / 共30页
第5章 寄存器设计应用课件_第3页
第3页 / 共30页
第5章 寄存器设计应用课件_第4页
第4页 / 共30页
第5章 寄存器设计应用课件_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《第5章 寄存器设计应用课件》由会员分享,可在线阅读,更多相关《第5章 寄存器设计应用课件(30页珍藏版)》请在金锄头文库上搜索。

1、第5章 寄存器设计应用,CPLD与FPGA的应用,寄存器VHDL描述,D触发器的描述,D触发器,【例】 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) BEGIN IF CLKEVENT A

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

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

4、内,clk从其数据类型允许的9种值中的任何一个值向另一值跳变,如由0变成1、由1变成0或由Z变成0,都认为发生了事件 虽然STD_LOGIC一般只有0和1,LAST_VALUE 信号属性函数,它表示最近一次事件发生前的值。,【例】 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 = 1 ; ELSIF a1 b1 THEN q1 = 0 ;- 未提及当a1=b1时,

5、q1作何操作 END IF; END PROCESS ; END ;,不完整条件语句与时序电路,不完整条件语句与时序电路,电路图(Synplify综合),不完整条件语句与时序电路,. IF a1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; .,(Synplify综合),实现时序电路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保CLK的变化是一次上升沿的跳变 END IF; END PROCESS ;,实现时序电路的不同表

6、述,【例】 . PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ;,【例】 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_e

7、dge(CLK) - 必须打开STD_LOGIC_1164程序包 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END ;,实现时序电路的不同表述,【例】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait语句 Q = D ; END PROCESS;,实现时序电路的不同表述,【例】 . PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS ;,时序波形,实现时序电路的不同表述,【例】 . PRO

8、CESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器 THEN Q = D ; END IF; END PROCESS,时序波形,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) B

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

10、O1: 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被启动。,寄存器描述的VHDL程序,异步时序电路设计,移位寄存器VHDL描述 移位寄存器的描述 移位寄存器就是一种具有移位功能的寄存器阵列。移位功能是指寄存器里面存储的数据能够在外部时钟信号的作用下进行顺序左移或者右移,因此移位寄存器常常用来存储数据、实现数据的串并转换、进行数值运算以及数据处理等。,【例5-11】 LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY shift IS PORT( d1: IN STD_LOGIC; cp: IN STD_LOGIC; d0: O

12、UT 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); BEGIN q(0) =d1; dffl :dff PORT MAP (q(0) ,cp, q(l) ; - -元件例化语句 dff2 :dff PORT MAP (q(1) ,cp, q(2); dff3 :df

13、f PORT MAP (q(2) ,cp, q(3); dff4 :dff PORT MAP (q(3) ,cp, q(4); d0=q(4); END str;,5.3.2 VHDL描述的语言现象说明 (1) 元件声明语句和元件例化语句 文件在实体中首先定义了移位寄存器顶层设计元件的端口信号dl、cp、d0, 然后在ARCHITECTURE和BEGIN之间利用COMPONENT语句对准备调用的元件(DFF触发器)作了声明,并定义了q(4)到q(0)五个信号作为器件内部的连接线 最后利用端口映射语句PORT MAP( )将四个D触发器连接起来构成一个完整的移位寄存器。,(2) LOOP循环语句

14、,常用的循环语句有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 IN 9 DOWNTO 1

15、LOOP sum:=i+sum; END LOOP add;,2). WHILE 循环 WHILE 循环是一种未知循环次数的语句, 循环次数取决于条件表达式是否成立。 其格式如下: 循环标号 : WHILE 条件表达式 LOOP 顺序语句; END LOOP 循环标号 ; 循环标号是用来表示WHILE循环语句的标识符,是可选项。在循环语句中,没有给出循环次数的范围,而是给出了循环语句的条件。WHILE后边的条件表达式是一个布尔表达式,如果条件为TURE,则进行循环,如果条件为FALSE,则结束循环。,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条件语句优先问题,(4)生成语句 生成语句是一种循环语句,具有复制电路的功能。当设计一个由多个相同单元模块组成的电路时,利用生成语句复制一组完全相同的并行组件或设计单元电路结构,避免多段相同结构的重复

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号