锁存逻辑过程块
逻辑 过程
2023-09-14 09:10:03 时间
锁存逻辑过程块
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
相关文章
- C++ 炼气期之基本结构语法中的底层逻辑
- 机器学习算法(一):逻辑回归模型(Logistic Regression, LR)[通俗易懂]
- 性能测试|JMeter逻辑控制器(七)
- 解析:佛萨奇系统开发!2.0元宇宙佛萨奇NFT版系统开发逻辑流程方案
- 深度解析:元宇宙养殖农业DAPP系统开发逻辑详细方案
- 数字硬件建模SystemVerilog-组合逻辑建模(3)使用函数表示组合逻辑
- R语言用logistic逻辑回归和AFRIMA、ARIMA时间序列模型预测世界人口|附代码数据
- R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集|附代码数据
- python3开发进阶-Django框架的中间件的五种用法和逻辑过程详解编程语言
- 函数使用Oracle乘法聚合函数处理复杂业务逻辑(oracle乘法聚合)
- Oracle数据库逻辑备份的SH文件
- 网页(aspx)与用户控件(ascx)交互逻辑处理实现