目录
一、触发器简介
1.1 触发器作用
1.2 触发器信号
1.3 使用规范
1.4 Vivado综合触发器
二、代码实现
三、综合结果
一、触发器简介
1.1 触发器作用
触发器是工程中基础的单元结构也是相当重要的组成,时序电路的实现离不开触发器。触发器是具有存储功能的器件,时钟脉冲的边沿触发状态改变。通常,触发器可分为D触发器,T触发器,JK触发器等。
1.2 触发器信号
触发器的输入信号分为两类:数据信号,控制信号,控制信号包括时钟信号,异步或同步置位/复位信号,时钟使能信号。
1.3 使用规范
在使用触发器时,根据以往的经验,有一些尽量避免的使用规范,遵循这些规范可以避免很多问题。
a. 不要使用异步置位/复位寄存器
b. 触发器中不要同时存在置位和复位信号
c. 避免单独的置位/复位逻辑,尽量使用全局复位可以在更少的资源下达到想要的效果
d.时钟使能信号,置位/复位信号使用高电平生效,如果低电平有效,则需要一个反相器,这将会降低电路性能。
1.4 Vivado综合触发器
Vivado会根据设计综合出触发器,综合出的触发器有4类D触发器,FDCE,FDPE,FDSE和FDRE。
FDCE:具有时钟使能和异步清零
FDPE:具有时钟使能和异步置位
FDSE:具有时钟使能和同步置位
FDRE:具有时钟使能和同步复位
在vivado的综合报告中可以查看设计中使用的寄存器数目,但有时会出现统计的数目和实际使用的数目不一致,主要是有以下3个原因的影响
a.有一部分寄存器被吸收进入到DSP块或块状RAM中
b.存在寄存器复制
c.无输入的寄存器或者作用相同的寄存器被移除了
二、代码实现
代码中包含了四个寄存器fdce,fdpe,fdse,fdre,对应vivado所能综合的四种寄存器类型。
module FF(d,ce,clk,clr,set,out );
input [3:0] d;
input ce;
input clk;
input clr;
input set;
output [3:0] out;
reg fdce,fdpe,fdse,fdre;
always@(posedge clk,posedge clr)
begin
if(clr)
fdce<=0;
else
if(ce)
fdce<=d[0];
end
assign out[0]=fdce;
always@(posedge clk,posedge clr)
begin
if(clr)
fdpe<=1;
else
if(ce)
fdpe<=d[1];
end
assign out[1]=fdpe;
always@(posedge clk)
begin
if(set)
fdse<=1;
else
if(ce)
fdse<=d[2];
end
assign out[2]=fdse;
always@(posedge clk)
begin
if(set)
fdre<=0;
else
if(ce)
fdre<=d[3];
end
assign out[3]=fdre;
endmodule
三、综合结果
上述代码综合结果如下图,四个触发器的实现类型符合预期,分别为FDCE,FDPE,FDRE,FDSE