请教个触发器方面的问题
时间:10-02
整理:3721RD
点击:
现在有一个不常规的设计,之所以说不常规,是因为系统连时钟都没有。拿信号a做时钟,信号b是数据,判断当b为1时,输出动作。
即
always @(posedge a)
begin
if(b)
dout <= dout+1;
else
dout <= dout;
end
但b的上升沿总是碰到a的上升沿,我希望当a的上升沿(同时也是b的上升沿)时,dout的反应时dout+1.
我知道常规的verilog设计,这样写综合出来都是与之相反的反应,不知道有没有什么办法达到我想要的目的。或者说RS触发器能解决这个问题不?
这个例子举的太纠结。烦劳各位大侠不要挑剔本例,重点讨论这个讨论点,求解~
即
always @(posedge a)
begin
if(b)
dout <= dout+1;
else
dout <= dout;
end
但b的上升沿总是碰到a的上升沿,我希望当a的上升沿(同时也是b的上升沿)时,dout的反应时dout+1.
我知道常规的verilog设计,这样写综合出来都是与之相反的反应,不知道有没有什么办法达到我想要的目的。或者说RS触发器能解决这个问题不?
这个例子举的太纠结。烦劳各位大侠不要挑剔本例,重点讨论这个讨论点,求解~
求解
第一步,对a作create_generated_clock
第二步,对b到dout的路径作set_multicycle_path -setup 0
综合时不做此约束,在后端时作此约束可以的吧
