我是靠谱客的博主 老迟到黑裤,最近开发中收集的这篇文章主要介绍FPGA数字IC的Verilog刷题解析基础版02——T触发器(异步复位和同步复位),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 题目

  用verilog实现两个串联的异步低电平复位的T触发器的逻辑。这个题目的重点是要关注异步低电平复位

不得不读的 FPGA 设计白皮书——Xilinx FPGA 复位策略白皮书翻译(WP272)【FPGA探索者】

联发科数字IC简答题(9)——异步复位同步释放问题

2. 解析

2.1 T触发器

边沿T触发器:输入为1时下个时钟触发沿输出翻转;输入为0时下个时钟触发沿输出保持。

边沿D触发器,输入为1时下个时钟触发沿输出为1,输入为0时下个时钟触发沿输出为0。

所以关于T触发器:

if(data_in == 1’b1)data_out <= ~data_out;elsedata_out <= data_out;

2.2 异步复位

异步复位,说明复位是异步的,和时钟触发边沿无关,复位信号一旦来临就使得寄存器进行复位操作,复位信号出现在always块的敏感列表里。

对于异步的低电平复位,以下降沿作为触发边沿(高电平变为低电平的时刻),并且触发后判断复位是否为低电平,即:

always @ (posedge clk or negedge rst)

begin

    if( ~rst )

        ...;

    else

        ...;

end

对于异步的高电平复位,以上升沿作为触发边沿(低电平变为高电平的时刻),并且触发后判断复位是否为高电平,即:

always @ (posedge clk or posedge rst)

begin

    if( rst )

        ...;

    else

        ...;

end

2.3 同步复位

同步复位时,复位与时钟触发沿有关,所以在always的敏感变量中,只有时钟触发边沿,然后根据高电平或者低电平再判断复位电平。

同步低电平复位:

always @ (posedge clk)

begin

    if( ~rst )

        ...;

    else

        ...;

end

同步高电平复位:

always @ (posedge clk)

begin

    if( rst )

        ...;

    else

        ...;

end

2.4 同步复位和异步复位的优缺点

异步复位:反应快,复位电平可以小于一个时钟周期,有些触发器只有异步复位端口;

同步复位:稳定,不易受毛刺干扰,有些模块只有同步复位端口;

  

3. 代码​​​​​​​

`timescale 1ns/1nsmodule Tff_2 (input wire data, clk, rst,output reg q  );// 1. 复位//2. T触发器,D触发器reg q1;always @ (posedge clk or negedge rst)begin    if(!rst) begin        q1 <= 1'b0;    end    else begin        if( data )            q1 <= ~q1;        else            q1 <= q1;    endend
always @ (posedge clk or negedge rst)begin    if(!rst) begin        q <= 1'b0;    end    else begin        if( q1 )            q <= ~q;        else            q <= q;    endendendmodule

最后

以上就是老迟到黑裤为你收集整理的FPGA数字IC的Verilog刷题解析基础版02——T触发器(异步复位和同步复位)的全部内容,希望文章能够帮你解决FPGA数字IC的Verilog刷题解析基础版02——T触发器(异步复位和同步复位)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部