上一篇文章已经讲过了单bit跨时钟域的处理方法,这次解说一下多bit的跨时钟域方法:
1、打两拍,比较,具体代码如下所示。
// ============================================================
// File Name: cm_cdc_4bit
// VERSION : V1.0
// DATA : 2022/9/28
// Author : FPGA干货分享
// ============================================================
// 功能:4bit慢变信号跨时钟域模块
// ============================================================
`timescale 1ns/1ps
module cm_cdc_4bit (
input wire I_clk_a , ///输入时钟a
input wire I_clk_b , ///输入时钟b
input wire [3:0] I_data_a , ///a时钟输入信号
output reg [3:0] O_data_b ///b时钟输出信号
);
// ============================================================
// wire reg
// ============================================================
reg [3:0] S_data_b_d0 ;
reg [3:0] S_data_b_d1 ;
reg [3:0] S_data_b_d2 ;
// ============================================================
// a时钟域
// ============================================================
// ============================================================
// b时钟域
// ============================================================
///使用第二个时钟进行打拍
always @(posedge I_clk_b)
begin
S_data_b_d0 <= I_data_a ;
S_data_b_d1 <= S_data_b_d0 ;
S_data_b_d2 <= S_data_b_d1 ;
end
//打两拍之后的信号进行处理
always @(posedge I_clk_b)
if(S_data_b_d2 == S_data_b_d1)
O_data_b <= S_data_b_d2;
else
O_data_b <= O_data_b ;
endmodule
第二种方法就是计数器转gray码。
下一篇将为大家讲解格雷码与二进制码的转换代码及仿真。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
FPGA
+关注
关注
1602文章
21320浏览量
593199 -
信号
+关注
关注
11文章
2639浏览量
75388 -
计数器
+关注
关注
32文章
2121浏览量
92977 -
bit
+关注
关注
0文章
47浏览量
31853 -
时钟域
+关注
关注
0文章
49浏览量
9455
发布评论请先 登录
相关推荐
两级DFF同步器跨时钟域处理简析
异步bus交互(一)— 两级DFF同步器跨时钟域处理 & 亚稳态处理1.问题产生现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通
发表于 02-17 06:34
看看Stream信号里是如何做跨时钟域握手的
一些,适用于追求高吞吐的场景。写在最后逻辑处理里很多总线都是基于Stream这种信号来实现的(如AXI4家族),通过上面的方法,可以很容易根据应用需求,做跨时钟
发表于 07-07 17:25
FPGA跨时钟域处理方法(一)
跨时钟域是FPGA设计中最容易出错的设计模块,而且一旦跨时钟域出现问题,定位排查会非常困难,因为跨时钟域问题一般是偶现的,而且除非是构造特殊用例一般的仿真是发现不了这类问题的。
评论