FPGA project : flip_flop

 

module flip_flop (
    input       wire    sys_clk     ,
    input       wire    rst_n       ,
    input       wire    data_in     ,

    output      reg     data_out    
);
    // 时序逻辑 异步复位 data_out
    always @(posedge sys_clk or negedge rst_n) begin
        if(~rst_n) begin
            data_out <= 1'b0 ;
        end else begin
            data_out <= data_in ;
        end
    end
    
    // // 时序逻辑 同步复位
    // always @(posedge sys_clk) begin
    //     if(~rst_n) begin
    //         data_out <= 1'b0 ;
    //     end else begin
    //         data_out <= data_in ;
    //     end
    // end
endmodule
`timescale 1ns/1ps
module test ();
    reg                   sys_clk_tb    ;
    reg                   rst_n_tb      ;
    reg                   data_in_tb    ;

    wire                  data_out_tb   ;  
    
flip_flop flip_flop_insert (
    .sys_clk            ( sys_clk_tb  ) ,
    .rst_n              ( rst_n_tb    ) ,
    .data_in            ( data_in_tb  ) ,

    .data_out           ( data_out_tb )    
);

    parameter CYCLE = 20   ;

    initial begin
        sys_clk_tb  = 1'b1 ;
        rst_n_tb   <= 1'b0 ;
        data_in_tb <= 1'b0 ;
        #(20)              ;
        rst_n_tb   <= 1'b1 ;
        #(210)             ;
        rst_n_tb   <= 1'b0 ;
        #(40)              ;
        rst_n_tb   <= 1'b1 ;
        #( CYCLE * 1000 )  ;
        $stop              ;
    end

    always #( CYCLE / 2   ) sys_clk_tb  = ~sys_clk_tb   ;
    always #( CYCLE + 2   ) data_in_tb  = ($random) % 2 ;

    
endmodule

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值