Verilog基础知识(简单的时序逻辑)

本文介绍了Verilog中的基础时序逻辑元素,包括寄存器的种类如DFF,强调同步时序电路设计中寄存器的重要性。锁存器的出现应避免,给出了可能导致锁存器出现的情况及解决方法。还讨论了移位寄存器和计数器的应用,如分频,推荐使用行为级写法设计计数器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

寄存器

同步时序电路设计风格下建议所有的输出都是reg型,也就是最后的输出要有一个寄存器(边沿触发)。
常用的寄存器有不带置位和重置的简单DFF,异步置位同步释放的DFF,异步置位重置同步释放的DFF。

module FlipFlops(
    input D, clk, rst, pst,
    output reg Qsimple, Qasyncrst, Qasyncpst
    );

// simple DFF
always @(posedge clk)
    Qsimple <= D;

// asynchronous reset, synchronous release
always @(posedge clk, posedge rst)begin
    if (rst == 1'b1)
        Qasyncrst <= 1'b0;
    else
        Qasyncrst <= D;
end

// asynchronous reset/preset, synchronous release
always @(posedge clk, posedge rst, posedge pst)begin
    if (rst == 1'b1)
        Qasyncpst <= 1'b0;
    else if (pst == 1'b1)
        Qasyncpst <= 1'b1;
    else
        Qasyncpst <= D;
end

endmodule
`timescale 1ns/100ps

module FlipFlops_tb;

reg D, clk, rst, pst;
wire Qsimple, Qasyncrst, Qasyncpst;

FlipFlops FF_U1(
    .D(D),
    .clk(clk),
    .rst(rst),
    .pst(pst),
    .Qsimple(Qsimple),
    .Qasyncrst(Qasyncrst),
    .Qasyncpst(Qasyncpst)
    );

always #1 clk = ~clk;

initial begin
    #0
        clk = 1'b1;
        D = 1'b0;
        rst = 1'b0;
        pst = 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值