我是靠谱客的博主 昏睡服饰,最近开发中收集的这篇文章主要介绍锁存逻辑过程块,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

锁存逻辑过程块

always_latch描述锁存逻辑
always_latch过程块表示过程块描述的是基于锁存器的逻辑。和always_comb一样,always_latch的敏感表示推断出来的。

always_latch
	if(enable) q <= d;

always_latch与always_comb语义相同
always_latch过程的语义规则与always_comb一样。两种过程快推断敏感表的规则也是一样的。在always_latch中赋值的变量不能再在其他任何过程块赋值。同样,为了保证锁存逻辑输出对应于零时刻的输入值,always_latch过程块也会在零时刻自动执行一次。
工具会验证always_latch的内容表示锁存逻辑
与always_com不同的是,当使用always_latch时,软件工具认为设计的意图是描述锁存逻辑,并且对过程中代码的检查也与组合逻辑有所不同。例如,在锁存逻辑中,过程块的输出变量不需要对所有可能的输入条件响应。

一个从0~31的5位计数器。输入信号ready是一个窄脉冲,控制计数器何时开始计数。当ready变为高电平时,模块将其锁存为内部的enable信号。锁存器使内部enable信号一直保持为高,当计数值满31时,enable清零,这样就保证了在下次ready变为高之前计数器不会在启动。

module register_reader(
		input clk,ready,resetN,
		output logic [4:0] read_pointer
);

logic enable;//计数器的内部使能信号
logic overflow;//内部的计数器溢出标志

always_latch  //锁存输入ready
begin
	if(!resetN)
		enable <= 0;
	else if(ready)
		enable <= 1;
	else if(overflow)
		enable <= 0;
end

always@(posedge clk,negedge resetN) //5位计数器
begin
	if(!resetN)
		{overflow,read_pointer} <= 0;
	else if(enable)
		{overflow,read_pointer} <= read_pointer + 1;
end
endmodule

最后

以上就是昏睡服饰为你收集整理的锁存逻辑过程块的全部内容,希望文章能够帮你解决锁存逻辑过程块所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部