FPGA寄存器实现与资源消耗-时序逻辑

在前面学习了组合逻辑现在开始学习时序逻辑,时序逻辑最基本的就是寄存器。

先从一个带时钟,复位,使能的8位输入输出寄存器开始吧

1、寄存器的结构

2、verilog代码

`timescale 1ns / 1ps

module register(
    input rst,
    input clk,
    input ena,
    input [7:0] data,
    output [7:0] out
);
    reg [7:0] dffrb;
    always @(posedge clk or posedge rst)begin
        if(rst)
            dffrb <= 0;
        else  begin
            if(ena)
                dffrb <= data;
            else
                dffrb <= dffrb;
        end
    end

    assign out = dffrb;
endmodule

3、testbench

`timescale 1ns / 1ps


module register_tb(

    );
// Inputs
  reg rst;
  reg clk;
  reg ena;
  reg [7:0] data;

  // Outputs
  wire [7:0] out;

  // Instantiate the module
  register uut (
    .rst(rst),
    .clk(clk),
    .ena(ena),
    .data(data),
    .out(out)
  );

  // Clock generation
  initial begin
    clk = 0;
    forever #5 clk = ~clk;
  end

  // Stimulus
  initial begin
    // Test case 1
    rst = 1;
    ena = 0;
    data = 8'b10101010;
    #10;

    // Test case 2
    rst = 0;
    ena = 1;
    data = 8'b11001100;
    #10;

    // Test case 3
    ena = 1;
    data = 8'b00110011;
    #10;
    
    // Test case 4
    ena = 1;
    data = 8'b00111111;
    #10;
    // Test case 5
    ena = 0;
    data = 8'b00000010;
    #10;
    
    // Test case 6
    ena = 0;
    data = 8'b10000010;
    #10;

    $finish;
  end
  
    always @(posedge clk) begin
        $display("Time=%t: rst=%b, clk=%b, ena=%b, data=%d, out=%d", $time, rst, clk, ena, data, out);
    end

endmodule

可以看到输入输出不是立马相同的,需要相差半个时钟周期,即等待下一个上升沿到来才会进行跳变。

整体的数据维持位1个时钟周期。

4、RTL

5、综合

可以看到,每一位的寄存器都被综合为一个FDCE(D Flip-Flop with Clock Enable and AsynchronousReset 带使能和异步复位功能的D触发器)实现

6、实现

由8个FDCE实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值