SystemVerilog语法基础——6电路语句(四):always_ff

电路语句(四):always_ff

前言

视频语法学习:B站链接
笔记原地址:https://github.com/Tan-YiFan/DigitalLogic-Autumn2020/tree/syntax/syntax网络不好,可能打不开。

一、always_ff

always_ff用于描述触发器。

//下面代码是D触发器
always_ff @(posedge clk,negedge resetn) begin
    if (~resetn) begin
        q <= '0;//非阻塞赋值,也可以称为并行赋值
    end else if (en) begin
        q <= d;
    end
end

always_ff里可以描述很复杂的逻辑,但那样写不直观。写代码时,也应该参考理论课上讲的状态方程

//将时序逻辑触发器和组合逻辑分开写

//用always_ff仅仅描述触发器的部分
logic [3:0] a, a_nxt;

always_ff @(posedge clk) begin
    if (~resetn) begin
        a <= '0;
    end else if (en) begin
    	a <= a_nxt;
//        {a, b} <= {a_nxt, b_nxt};
    end
end
//always_comb描述的是行为,用阻塞赋值
always_comb begin
    a_nxt = a;
    // ...
    unique case(a)
        4'd3: begin
            a_nxt = 4'd2;
        end
        default: begin
            
        end
    endcase
end

二、组合逻辑 & 时序逻辑

组合逻辑时序逻辑时序逻辑的区别在于,结果不会立即存到相应电路中,而是有一个 d 触发器。
时序逻辑描述并列触发器,always_comb 描述电路行为。因此阻塞赋值放在 always_comb,而非阻塞赋值放在 always_ff。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值