跨時(shí)鐘域是FPGA設(shè)計(jì)中最容易出錯(cuò)的設(shè)計(jì)模塊,而且一旦跨時(shí)鐘域出現(xiàn)問(wèn)題,定位排查會(huì)非常困難,因?yàn)榭鐣r(shí)鐘域問(wèn)題一般是偶現(xiàn)的,而且除非是構(gòu)造特殊用例一般的仿真是發(fā)現(xiàn)不了這類(lèi)問(wèn)題的。
優(yōu)秀的FPGA工程,系統(tǒng)工程師一定會(huì)進(jìn)行合理的時(shí)鐘域劃分,理想的情況是整個(gè)工程只有一個(gè)時(shí)鐘,完全不考慮跨時(shí)鐘域的問(wèn)題,但是實(shí)際的工程中一般是不存在的,因此合理的跨時(shí)鐘域設(shè)計(jì)是很有必要的。

單bit慢變信號(hào)跨時(shí)鐘域方法:
1、信號(hào)展寬

2、跨時(shí)鐘打兩拍
3、取沿

// ============================================================
// File Name: cm_cdc_1bit
// VERSION : V1.0
// DATA : 2022/9/28
// Author : FPGA干貨分享
// ============================================================
// 功能:?jiǎn)蝏it慢變信號(hào)跨時(shí)鐘域模塊
// ============================================================
`timescale 1ns/1ps
module cm_cdc_1bit (
input wire I_clk_a , ///輸入時(shí)鐘a
input wire I_clk_b , ///輸入時(shí)鐘b
input wire I_single_a , ///a時(shí)鐘輸入信號(hào)
output reg O_single_b ///b時(shí)鐘輸出信號(hào)
);
// ============================================================
// wire reg
// ============================================================
reg S_clr_flag_a_d0 ;
reg S_clr_flag_a_d1 ;
reg S_clr_flag_a_all ;
reg S_clr_flag_b_d0 ;
reg S_clr_flag_b_d1 ;
reg S_clr_flag_b_d2 ;
reg S_clr_b_posedge ;
// ============================================================
// a時(shí)鐘域
// ============================================================
always @(posedge I_clk_a)
begin
S_clr_flag_a_d0 <= I_single_a;
S_clr_flag_a_d1 <= S_clr_flag_a_d0;
end
///跨時(shí)鐘域之前先擴(kuò)展
always @(posedge I_clk_a)
S_clr_flag_a_all <= I_single_a|S_clr_flag_a_d0|S_clr_flag_a_d1 ;
// ============================================================
// b時(shí)鐘域
// ============================================================
///使用第二個(gè)時(shí)鐘進(jìn)行打拍
always @(posedge I_clk_b)
begin
S_clr_flag_b_d0 <= S_clr_flag_a_all;
S_clr_flag_b_d1 <= S_clr_flag_b_d0 ;
S_clr_flag_b_d2 <= S_clr_flag_b_d1 ;
end
//打兩拍之后的信號(hào)進(jìn)行處理
always @(posedge I_clk_b)
O_single_b <= (!S_clr_flag_b_d2)&(S_clr_flag_b_d1);
endmodule

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
FPGA
+關(guān)注
關(guān)注
1660文章
22412瀏覽量
636303 -
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
431瀏覽量
28140 -
信號(hào)
+關(guān)注
關(guān)注
12文章
2914瀏覽量
80126 -
bit
+關(guān)注
關(guān)注
0文章
48瀏覽量
32829 -
時(shí)鐘域
+關(guān)注
關(guān)注
0文章
53瀏覽量
10044
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
關(guān)于跨時(shí)鐘域信號(hào)的處理方法
我在知乎看到了多bit信號(hào)跨時(shí)鐘的問(wèn)題,于是整理了一下自己對(duì)于跨時(shí)鐘域信號(hào)的
如何處理好FPGA設(shè)計(jì)中跨時(shí)鐘域問(wèn)題?
跨時(shí)鐘域處理是 FPGA 設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,而如何處理好
發(fā)表于 09-22 10:24
FPGA初學(xué)者的必修課:FPGA跨時(shí)鐘域處理3大方法
跨時(shí)鐘域處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,而如何處理好跨
發(fā)表于 03-04 09:22
如何處理好FPGA設(shè)計(jì)中跨時(shí)鐘域間的數(shù)據(jù)
跨時(shí)鐘域處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,而如何處理好跨
發(fā)表于 07-29 06:19
FPGA跨時(shí)鐘域處理簡(jiǎn)介
(10)FPGA跨時(shí)鐘域處理1.1 目錄1)目錄2)FPGA簡(jiǎn)介3)Verilog HDL簡(jiǎn)介4
發(fā)表于 02-23 07:47
FPGA界最常用也最實(shí)用的3種跨時(shí)鐘域處理的方法
跨時(shí)鐘域處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,而如何處理好跨
發(fā)表于 11-15 20:08
?1.5w次閱讀
揭秘FPGA跨時(shí)鐘域處理的三大方法
跨時(shí)鐘域處理是 FPGA 設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,而如何處理好
(10)FPGA跨時(shí)鐘域處理
(10)FPGA跨時(shí)鐘域處理1.1 目錄1)目錄2)FPGA簡(jiǎn)介3)Verilog HDL簡(jiǎn)介4
發(fā)表于 12-29 19:40
?7次下載
SpinalHDL里用于跨時(shí)鐘域處理的一些手段方法
每一個(gè)做數(shù)字邏輯的都繞不開(kāi)跨時(shí)鐘域處理,談一談SpinalHDL里用于
三種跨時(shí)鐘域處理的方法
跨時(shí)鐘域處理是FPGA設(shè)計(jì)中經(jīng)常遇到的問(wèn)題,而如何處理好跨
FPGA跨時(shí)鐘域處理方法(一)
評(píng)論