单bit数据快慢时钟域处理—脉冲展宽法

目录

1、说明

2、代码

3、仿真波形


1、说明

        数据采样的时候一般需要遵循香农采样定理,才能保证采样信号对原信号进行完美的复现,但这个定理在快时钟到慢时钟的数据传输的时候肯定是无法成立的,假设快时钟此时有一个时钟周期的脉冲信号,慢时钟对快时钟进行采样的时候会发现可能采样不到(慢时钟的时间周期较长,如果快时钟的时钟信号完全在慢时钟的时间周期内就会造成采样不到),那么如何解决这个问题呢?

        脉冲展宽法的基本思想就是如果快时钟有一个脉冲信号,那么我就认为的延长这个高电平的信号,知道慢时钟检测到了这个信号才将这个高电平进行拉低,这样相当于形成了一个闭环反馈,这就是脉冲展宽法。

2、代码

module  sync_pluse
(
    input   wire    clka,//快时钟
    input   wire    clkb,//慢时钟
    input   wire    rst_n,
    input   wire    pluse_ina,//快时钟脉冲输入
    output  wire    pluse_outb //慢时钟脉冲输出
);

reg [1:0]   pluse_catch;
reg         pluse_flag;//脉冲状态标志
reg         pluse_a0;
reg         pluse_a1;
reg         pluse_b0;
reg         pluse_b1;

//进行上升沿的捕获
always@(posedge clka)
begin
    if(~rst_n)
        pluse_catch <= 2'b00;
    else
        pluse_catch <= {pluse_catch[0],pluse_ina};
end

always@(posedge clka)
begin
    if(~rst_n)
        pluse_flag <= 1'b0;
    else if(pluse_a1 == 1'b1)
        pluse_flag <= 1'b0;
     else if(pluse_catch == 2'b01)
        pluse_flag <= 1'b1;     
end

always@(posedge clkb)
begin
    if(~rst_n)
        {pluse_b1,pluse_b0} <= 2'b00;
    else
        {pluse_b1,pluse_b0} <= {pluse_b0,pluse_flag};
end

always@(posedge clka)
begin
    if(~rst_n)
        {pluse_a1,pluse_a0} <= 2'b00;
    else
        {pluse_a1,pluse_a0} <= {pluse_a0,pluse_b1};
end

assign pluse_outb = ~pluse_b1 & pluse_b0; 


endmodule

测试模块代码

`timescale  1ns/1ns
module  tb_sync_pluse();

reg clka;
reg clkb;
reg rst_n;
reg pluse_ina;
wire pluse_outb;

initial
begin

clka = 1'b0;
clkb = 1'b0;
pluse_ina = 1'b0;
rst_n = 1'b0;
#20
rst_n = 1'b1;
#20
pluse_ina = 1'b0;
#20
pluse_ina = 1'b1;
#20
pluse_ina = 1'b0;

end



always #10 clka = ~clka;
always #25 clkb = ~clkb;

sync_pluse  sync_pluse_inist
(
    .clka        (clka),//快时钟
    .clkb        (clkb),//慢时钟
    .rst_n       (rst_n),
    .pluse_ina   (pluse_ina),//快时钟脉冲输入
    .pluse_outb  (pluse_outb) //慢时钟脉冲输出
);

endmodule

3、仿真波形

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值