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)beginif(!rst) beginq1 <= 1'b0;endelse beginif( data )q1 <= ~q1;elseq1 <= q1;endendalways @ (posedge clk or negedge rst)beginif(!rst) beginq <= 1'b0;endelse beginif( q1 )q <= ~q;elseq <= q;endendendmodule
最后
以上就是老迟到黑裤最近收集整理的关于FPGA数字IC的Verilog刷题解析基础版02——T触发器(异步复位和同步复位)的全部内容,更多相关FPGA数字IC内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复