HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops

这篇具有很好参考价值的文章主要介绍了HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

D flip-flop

module top_module (
    input clk,
    input d,
    output reg q );
    always @(posedge clk)
        q <= d;
endmodule

D flip-flops

建立一个8bit的D触发器

module top_module (
    input clk,
    input [7:0] d,
    output reg [7:0] q
);
    always @(posedge clk)
        q <= d;
endmodule

DFF with reset

建立一个8bit的D触发器,带同步高电平复位

module top_module (
    input clk,
    input reset,            // Synchronous reset
    input [7:0] d,
    output reg [7:0] q
);
    always @(posedge clk)
        if(reset)
            q <= 0;
    	else
            q <= d;
endmodule

DFF with reset value

建立一个下降沿触发的8bit的D触发器,带同步高电平复位,复位时,将触发器的值设置为0x34

module top_module (
    input clk,
    input reset,
    input [7:0] d,
    output reg [7:0] q
);
    always @(negedge clk)
        if(reset)
            q <= 8'h34;
    	else
            q <= d;
endmodule

DFF with asynchronous reset

建立一个8bit的D触发器,带异步高电平复位

module top_module (
    input clk,
    input areset,   // active high asynchronous reset
    input [7:0] d,
    output reg [7:0] q
);
    always @(posedge clk, posedge areset)
        if(areset)
            q <= 0;
    	else
            q <= d;
endmodule

DFF with byte enable

建立一个16bit的D触发器,带2bit的字节使能byteena[1:0],带同步低电平复位

module top_module (
    input clk,
    input resetn,
    input [1:0] byteena,
    input [15:0] d,
    output reg [15:0] q
);
    always @(posedge clk)
        if(~resetn)
            q <= 0;
    	else begin
            if(byteena[1])
                q[15:8] <= d[15:8];
            if(byteena[0])
                q[7:0] <= d[7:0];
        end
endmodule

D latch

module top_module (
    input d, 
    input ena,
    output q);
    assign q = ena ? d : q;
endmodule

DFF

建立一个带异步高电平复位的D触发器

module top_module (
    input clk,
    input d, 
    input ar,   // asynchronous reset
    output reg q);
    always @(posedge clk, posedge ar)
        if(ar)
            q <= 0;
    	else
            q <= d;
endmodule

DFF

建立一个带同步高电平复位的D触发器

module top_module (
    input clk,
    input d, 
    input r,   // synchronous reset
    output reg q);
    always @(posedge clk)
        if(r)
            q <= 0;
    	else
            q <= d;
endmodule

DFF + gate

实现如下电路

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发

module top_module (
    input clk,
    input in, 
    output reg out);
    always @(posedge clk)
        out <= in ^ out;
endmodule

Mux and DFF

如下电路中,实例化了3个D触发器+选择器模块,实现D触发器+选择器模块

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发

module top_module (
    input clk,
    input L,
    input r_in,
    input q_in,
    output reg Q);
    always @(posedge clk)
        Q <= L ? r_in : q_in;
endmodule

Mux and DFF

如下电路是n-bit移位寄存器

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发

实现其中一级,包括D触发器和选择器

module top_module (
    input clk,
    input w, R, E, L,
    output reg Q
);
    always @(posedge clk)
        Q <= L ? R : (E ? w : Q);
endmodule

DFFs and gates

实现如下电路

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发

module top_module (
    input clk,
    input x,
    output z
); 
    reg [2:0] st = 0;
    always @(posedge clk)
        st <= {x ^ st[2], x & ~st[1], x | ~st[0]};
    assign z = ~| st;
endmodule

Create circuit from truth table

J K Q
0 0 Qold
0 1 0
1 0 1
1 1 ~Qold

使用DFF和逻辑门建立JK触发器,实现上述真值表

module top_module (
    input clk,
    input j,
    input k,
    output reg Q); 
    always @(posedge clk) begin
        if(~j & k)
            Q <= 0;
        else if(j & ~k)
            Q <= 1;
        else if(j & k)
            Q <= ~Q;
    end
endmodule

Detech an edge

检测8bit输入的上升沿,波形如下:

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发

module top_module (
    input clk,
    input [7:0] in,
    output [7:0] pedge
);
    reg [7:0] q1, q2;
    always @(posedge clk) begin
        q1 <= in;
        q2 <= q1;
    end

    assign pedge = q1 & ~q2;
endmodule

Detect both edges

检测输入的双边沿,波形如下

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发

module top_module (
    input clk,
    input [7:0] in,
    output [7:0] anyedge
);
    reg [7:0] q1, q2;
    always @(posedge clk) begin
        q1 <= in;
        q2 <= q1;
    end
    assign anyedge = q1 ^ q2;
endmodule

Edge capture register

捕捉32bit输入的下降沿,即当出现下降沿时,输出将变为1并保持,同步高电平复位,波形如下

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发

module top_module (
    input clk,
    input reset,
    input [31:0] in,
    output reg [31:0] out
);
    reg [31:0] q;
    always @(posedge clk)
        q <= in;
    
    integer i;
    always @(posedge clk) begin
        if(reset)
           out <= 0;
        else begin
            for(i = 0; i < 32; i = i + 1) begin
                if(q[i] & ~in[i])
                    out[i] <= 1'b1;
            end
        end
    end
        
endmodule

Dual-edge triggered flip-flop

实现一个双边沿触发的D触发器,但不要在一个always里面同时使用上升沿和下降沿,这是不可综合的

波形如下

HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops,HDLBits,fpga开发文章来源地址https://www.toymoban.com/news/detail-517785.html

module top_module (
    input clk,
    input d,
    output q
);
    reg pos, neg;
    always @(posedge clk)
        pos <= d;
    always @(negedge clk)
        neg <= d;
    assign q = clk ? pos : neg;
endmodule

到了这里,关于HDLBits刷题笔记8:Circuits.Sequential Logic.Latches and Flip-Flops的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【HDLBits 刷题 5】Circuits(1)Combinational Logic

    目录 写在前面 Combinational Logic Basic Gates Wire GND NOR Another gate Two gates More logic gates 7420 chips Truth table Two bit equality Simple circuit A Simple circuit B Combine circuits A and B Ring or vibrate Thermostat 3 bit population count Gates and vectors Even longer vectors Multiplexers 2 to 1 mux 2 to 1 bus mux 9 to 1 mux 256 to 1 mux 256 t

    2024年02月02日
    浏览(38)
  • verilog 学习笔记 —— 时序逻辑 Sequential Logics (Latches and Flip-Flops 锁存器和触发器)

    1. D flip-flop D触发器 2. D flip-flop  D触发器 3. DFF with reset  带复位的D触发器  4. 带复位值的D触发器 5. DFF with asynchronous reset 带异步复位功能的 D触发器 6. DFF with byte enable   带位启动的触发器 7. D Latch  D锁存器 8. DFF  9. DFF   10. DFF+gate   11. Mux and DFF   12. DFFs and gates   13

    2024年02月04日
    浏览(58)
  • 「HDLBits题解」Latches and Flip-Flops

    本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益 题目链接:Dff - HDLBits 题目链接:Dff8 - HDLBits 题目链接:Dff8r - HDLBits 题目链接:Dff8p - HDLBits 题目链接:Dff8ar - HDLBits 题目链接:Dff16e - HDLBits 题目链接:

    2024年01月19日
    浏览(36)
  • Circuits--Sequential--Registers_1

    1.4-bit shift register 2.Left/right rotator 3.Left / right arithmetic  4.5-bit LFSR

    2024年04月17日
    浏览(29)
  • 【博士每天一篇论文-理论分析】Dynamical systems, attractors, and neural circuits

    阅读时间:2023-11-19 年份:2016 作者:Paul Miller 马萨诸塞州沃尔瑟姆市布兰代斯大学Volen国家复杂系统中心 期刊: F1000Research 引用量:63 这篇论文主要关注神经回路中的动力系统和吸引子。作者指出神经回路的复杂性和所涉及的非线性,加上数据受限和在动力系统领域的有限条

    2024年01月21日
    浏览(51)
  • HDLbits 刷题 -- Alwaysblock2

    学习: For hardware synthesis, there are two types of always blocks that are relevant: Combinational: always @(*) Clocked: always @(posedge clk) Clocked always blocks create a blob of combinational logic just like combinational always blocks, but also creates a set of flip-flops (or \\\"registers\\\") at the output of the blob of combinational logic. Instea

    2024年04月09日
    浏览(40)
  • [ECE] Introduction to Digital Logic and Systems

    This course gives science and engineering students exposure to the basic concepts and techniques in digital logic and system design. Topics include digital system concepts, numbering systems and codes, Boolean algebra, logic gates and logic circuit elements, logic functions and simplification, logic circuits design, latches and flip-flops, counters, register

    2024年01月16日
    浏览(58)
  • Verilog刷题[hdlbits] :Module add

    You are given a module add16 that performs a 16-bit addition. Instantiate two of them to create a 32-bit adder. One add16 module computes the lower 16 bits of the addition result, while the second add16 module computes the upper 16 bits of the result, after receiving the carry-out from the first adder. Your 32-bit adder does not need to handle carry-in (assu

    2024年02月06日
    浏览(44)
  • 【HDLBits 刷题 1】Verilog Language(1)Basics 部分

    目录   写在前面 Basics Simple wire  Four wires  Inverter  AND gate  NOR gate  Declaring wires  7485 chip HDLBits 作为 Verilog 的刷题网站,非常适合初学者拿来练习,不仅可以学到基础的语法,还可以让自己写出的代码更直观,直接映射到电路中,因此在这段时间每周会抽出一点时间来把这个

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包