Generics 如何修改此D-FF的一般设置/保持时间?

Generics 如何修改此D-FF的一般设置/保持时间?,generics,vhdl,flip-flop,Generics,Vhdl,Flip Flop,我已将以下负边缘触发D-FF编码如下: ENTITY d_ff IS PORT (d, cl : IN BIT; q, qbar : INOUT BIT); END d_ff; ARCHITECTURE dataflow of d_ff IS BEGIN PROCESS (clk) IF (clk = '0' AND clk'EVENT) q <= d; ELSE q <= q; END IF; END dataflow; 实体d\u ff是 端口(

我已将以下负边缘触发D-FF编码如下:

ENTITY d_ff IS
PORT (d, cl : IN BIT; q, qbar : INOUT BIT);
END d_ff;

ARCHITECTURE dataflow of d_ff IS

BEGIN
  PROCESS (clk)
  IF (clk = '0' AND clk'EVENT)
    q <= d;
  ELSE
  q <= q;
 END IF;
 END dataflow;
实体d\u ff是
端口(d,cl:位内;q,qbar:位内);
结束d_ff;
d_ff的体系结构数据流是
开始
过程(clk)
如果(时钟='0'和时钟'事件)

要检查保持时间,必须使用wait语句实现DFF。这允许您手动控制时间进度,以便在时钟边缘之后和之前检查参数。一个不明显的“技巧”是使用d'delayed创建一个具有delta周期延迟的新信号,该延迟允许我们避免从d上的任何同时转换而不是从d上的上一个转换测量保持稳定属性

我将Clock-to-Q参数分离为一个独立的泛型,因为这通常与保持时间不同。还要注意,这种技术不适用于负保持或设置时间,因此我使用
delay\u length
将泛型限制为正值

ieee库;
使用ieee.std_logic_1164.all;
实体dff是
一般的(
Tsu:延迟长度:=8 ns;--设置
Thld:延迟长度:=5ns;--保持
Tcq:延迟长度:=6 ns——时钟到Q的延迟
);
港口(
时钟,d:在标准逻辑中;
q:输出标准逻辑
);
终端实体;
dff的体系结构行为是
开始
过程
开始
断言Tcq>=Thld报告“Tcq必须>=Thld”严重性故障;
等待下降沿(时钟);
如果d'stable(Tsu)那么
等待Thld;
如果d‘延迟’稳定(Thld),则

谢谢!有道理。我不确定分离条件是否是最好的解决方案,但你已经说服我了。干杯
If (d'STABLE(hold))
q <= d AFTER setup;