上一篇文章已經講過了單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
+關注
關注
1630文章
21798瀏覽量
606022 -
信號
+關注
關注
11文章
2804瀏覽量
77107 -
計數器
+關注
關注
32文章
2261瀏覽量
94985 -
bit
+關注
關注
0文章
48瀏覽量
32057 -
時鐘域
+關注
關注
0文章
52瀏覽量
9574
發布評論請先 登錄
相關推薦
評論