D触发器应用电路

D触发器应用电路

D触发器的介绍

以DFF的应用原理、电路图、时序图、verilog代码的顺序介绍DFF的各种应用。
时序逻辑电路中的核心部件是D触发器(DFF)。
电路:当时钟上升沿到来时,D端口的数据发送到Q端口。
DFF

verilog语言:DFF在电路中用reg信号表示。

1. 存储器

寄存器由一组触发器组成,n个触发器组成的寄存器可以存储一组n位的二值数据。

2. 延时器

一级DFF延时一个时钟周期,具体应用及时序图见下文3.边沿检测电路。

2. 计数器/ 分频器

分频器的主要应用是通过对系统时钟(50MHz,20ns)的计数,实现分频,获得不同波特率的信号。较为直观的时序图如下:
分频器-通过对系统时钟的计数实现分频
以波特率为9600Baud为例,那么它的一个周期就是1e9(ns)/9600=104167(ns)。104167(ns)/20(ns)=5208(个),也就是说clk_1对系统时钟计数5208次,然后清零;获得一个周期的波特率为9600Baud的信号。
将对系统时钟计数的计数器记为clk_1。
①clk_1的电路图与Verilog代码:
计数器

reg [N-1:0] counter;//实现N’b计数,计数器实际上就是一个DFF(reg信号)和加法器。
reg EN;//使能信号。

always @ (posedge reset or posedge clk) begin
	if (reset)
		counter <= 0;
	else if (EN)begin 
		if (counter<=N-1) counter <= 0;
		else counter<=counter+1;//遇到时钟上升沿,计数器加一。
	end 
	else counter <= 0;
end

②分频脉冲:基于clk_1分频,产生分频脉冲/时钟。

3. 边沿检测

边沿的产生是由于电平信号的突变,如果低电平信号取反,与高电平信号相与(只有1与1才是1,0或0才是0)那么检测到下降沿。
边沿检测原理
根据上述原理,边沿检测是由比较当前时刻和前一个时刻的电平状态来实现的,其实也是运用了DFF延时器的功能。
①电路图:
边沿检测电路
②时序图:
边沿时序

③Verilog 语言

always@(posedge clk or posedge reset) begin
	if (reset) begin 
	data_in_dly1<=1'b0;
	data_in_dly2<=1'b0;
	end
	
	else begin
	data_in_dly1<=data_in;//第一个DFF
	data_in_dly2<=data_in_dly1;//第二个DFF
	
	assign negedge_out = !data_in_dly1 & data_in_dly2 //先采到高电平后采到低电平
end

4. 单bit信号电平同步

单bit信号由慢时钟域向快时钟域同步,常见的同步方法即使用两级触发器,也就是使
用触发器对信号打两拍的方式进行与系统时钟进行同步。目的是防止亚稳态传播。
①电路图:
slow2fast_clk
其中中 uart_rx 为异步串口输入信号,uart_rx_sync2 为同步后的信号。
②时序图:
打两拍时序图
由时序图可以看到,有了“打两拍”,99%的概率在第2拍时,数据已经建立了稳定的输出,在第3拍时已经可以输出稳定的数据。
③Verilog 语言:

always@(posedge clk or posedge reset) begin
	if (reset) begin 
	uart_rx_sysc1<=1'b0;
	uart_rx_sysc2<=1'b0;
	end
	
	else begin
	uart_rx_sysc1<=uart_rx;//第一个DFF
	uart_rx_sysc2<=uart_rx_sysc1;//第二个DFF
end

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值