FPGA中锁存器本质总结

FPGA中锁存器本质总结

1.时序逻辑不会出现锁存器,组合逻辑在特定情况下会综合出锁存器。
or
沿敏感的语句只会综合出触发器,电平敏感的语句在覆盖不全时会出现锁存器。

2.特定情况:在组合逻辑中,在电平敏感的语句中,出现存储功能就会出现锁存器。
典型的if…else…或case…default…语句不完整,也就是出现了信号保持(出现存储功能)

(1)
always @()
begin
if(d)
a = b;
end
(2)
always @(
)begin
if(d)
a = b;
else
a = a;
end
(3)
always @ (b or d)
case(d)
2’b00: a=b>>1;
2’b11: c=b>>1;
default:
begin
a=b;
c=b;
end
endcase
(4)
always @(b or d)
begin
a = b;
c = b;
case (d)
2’b00: a = b >> 1;
2’b11: c = b >> 1;
endcase
end
(5)
always@(b or d)
begin
case (d) //synopsys full_case
2’b00: a = b >> 1;
2’b11: c = b >> 1;
endcase
end
(6)
always@(posedge clk)begin
if(a1)begin
b<=d;
end
else if(a2)begin
c<=d;
end
end

1.代码1 在综合时语句自动补全,补全后就是代码2,因为else后的信号赋值是保持,出现存储功能,所以产生锁存器。
2.代码3属于信号赋值语句不完整,即在d=2’b00时没有对信号c赋值,在d=2’b11时没有对信号a赋值,综合时语句自动补全,明显也出现信号保持,出现存储功能,所以产生锁存器。

(3)
always @ (b or d)
case(d)
2’b00: begin
a=b>>1;
c=c;
end
2’b11:begin
c=b>>1;
a=a;
end
default:
begin
a=b;
c=b;
end
endcase

3.代码4,不出现锁存器
4.代码5,会产生锁存器
5.代码6,缺else,信号赋值语句不全,但属于时序逻辑,不产生锁存器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值