数字IC设计verilog编写——6脉冲同步器
Posted 摆渡沧桑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字IC设计verilog编写——6脉冲同步器相关的知识,希望对你有一定的参考价值。
数字IC设计verilog编写——6脉冲同步器
- 脉冲同步器
首先在源时钟域进行信号翻转,在跨时钟域到des_clk,并进行边沿检测,即为dec_clk时钟域的脉冲,实现脉冲同步;
脉冲同步器的使用中,快时钟的有效信号需要是单脉冲信号,并且两个有效信号的时间间隔需要大于等于两个同步器的时钟周期,否则,无法恢复出有效信号。
在实际的电路设计中,异步电路的设计在实际应用中的重要意义不言而喻。由于信号在不同时钟域之间传输,容易发生亚稳态的问题导致,不同时钟域之间得到的信号不同。
处理亚稳态常用打两拍的处理方法。
多时钟域的处理方法很多,最有效的方法异步fifo,异步fifo适合处理不同时钟域之间传输的数据组,但有时不同时钟域之间仅仅传递脉冲,异步fifo就显的有点大材小用的,因此单信号的跨时钟域处理通常有:
- 两级寄存器串联。
- 脉冲同步器。
- 结绳法。
- 采用握手。
脉冲同步器一般用在快时钟域信号进入慢时钟域的电路设计中
- RTL 代码
`timescale 1ns / 1ps
module pluse_sync(
input src_clk,
input src_rst_n,
input s_pluse,
input des_clk,
input des_rst_n,
output des_pluse
);
reg src_pluse;
always @ (posedge src_clk or negedge src_rst_n)
if(!src_rst_n)
src_pluse <= 1'b0;
else if(s_pluse)
src_pluse <= ~src_pluse;
reg d_reg1,d_reg2;
always @ (posedge des_clk or negedge des_rst_n)
if(!des_rst_n)
d_reg1,d_reg2 <= 2'b00;
else
d_reg1,d_reg2 <= src_pluse,d_reg1;
assign des_pluse = (d_reg1 != d_reg2) ? 1'b1:1'b0;
endmodule
以上是关于数字IC设计verilog编写——6脉冲同步器的主要内容,如果未能解决你的问题,请参考以下文章