【HDLbits--counter】

HDLbits--counter


在IC设计中,counter是十分普遍和重要的设计内容;

题目:基础计数器



module top_module (
    input clk,
    input reset,
    output [9:0] q);
	
    always @(posedge clk) begin
        if(reset) begin
            q <= 0;
        end else begin
            if(q==999) begin
                q <= 0;
            end else begin
               q <= q + 1; 
            end
        end
    end
endmodule

题目:



module top_module (
    input clk,
    input shift_ena,
    input count_ena,
    input data,
    output [3:0] q);
	
    always @(posedge clk) begin
        if(shift_ena) begin
            q <= {q[2:0],data};
        end else begin
           q <= q - 1'b1; 
        end
    end
endmodule

题目:
在这里插入图片描述


module top_module (
    input clk,
    input reset,      // Synchronous reset
    input data,
    output start_shifting);
	
    //============================
    //==Mearly FSM
    //============================
    parameter S0 = 3'b000;
    parameter S1 = 3'b001;
    parameter S2 = 3'b010;
    parameter S3 = 3'b100;
    
    reg[3 -1:0] cur_sta;
    reg[3 -1:0] nxt_sta;
    
    //==State transition
    always @(*) begin
        case(cur_sta)
            S0: nxt_sta = (data==1'b1) ? S1 : S0;
            S1: nxt_sta = (data==1'b1) ? S2 : S0;
            S2: nxt_sta = (data==1'b0) ? S3 : S2;
            S3: nxt_sta = S0;
            default: nxt_sta = S0;
        endcase
    end
    
    //==State D-flop-flop
    always @(posedge clk) begin
        if(reset) begin
            cur_sta <= S0;
        end else begin
           cur_sta <= nxt_sta; 
        end
    end
    
    //==Output 
    always @(posedge clk) begin
        if(reset) begin
            start_shifting <= 1'b0;
        end else begin
            start_shifting <= ((cur_sta==S3) && (data==1'b1)) ? 1 : start_shifting; 
        end
    end
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值