隨著時間的推移,集成電路行業發展至今,已有類似如Intel這樣先進的foundry,提出邁入10 nm制程的規劃。高集成度的推行,也使芯片規模越來越大,功能越來越復雜,設計難度越來越高[1]。SOC的內部時鐘的復雜化,導致跨時鐘域的接口越來越多。針對這些異步信號的處理,國外的先驅們提出了很多建設性意見。但一般用到器件較多,考慮到成本因素,小規模IC將無法承受,并且如果輸入脈沖高電平寬度低于最快時鐘周期的話,一般無法適用。因此要想很好地解決這個問題,要處理好4個方面工作:一是如何簡化電路;二是如何適應最小輸入脈寬的問題;三是解決好亞穩態問題;四是要提高設計可靠性[2]。
1 處理跨時鐘域信號的常用方法
實際使用時,往往會出現信號在頻率不用的時鐘域傳遞的情況,對于這種情況,一般用兩種方法處理:結繩法、伴隨有效控制信號法。當信號從一個時鐘域進入另一個時鐘域的時候,往往出現亞穩態問題[4]。亞穩態是指觸發器無法在某個規定時間段內達到一個可確認的狀態。當一個觸發器進入亞穩態時,既無法預測該單元的輸出電平,也無法預測何時輸出才能穩定在某個正確的電平上。信號同步的目的是防止上一級亞穩態對下一級產生不良影響,采用信號同步的方法就要設計信號同步器。信號同步器主要有3種:電平同步器、邊沿檢測同步器、脈沖同步器[7-8]。但是這些常用方法本身存在缺點和不適應性。在解決實際問題中,需要根據具體情況,來設計具體的方案。
2 跨時鐘域同步電路接口方法組成及工作原理
整個電路包括兩個時鐘域以及一個復位電路。時鐘域1包含一個帶有異步復位端的同步觸發器。此觸發器帶有異步復位端R和同步時鐘端CK,低電平產生復位,時鐘上升沿開始鎖存數據輸入端D的狀態。輸出端有正相Q、反相/Q兩種數據輸出。時鐘域2由兩個同樣的觸發器組成,跟前面的一樣由異步復位端R和同步時鐘端CK,數據輸入端D組成。輸出端為正相Q、反相/Q兩種,復位電路由一個與門組成,接收DFF3的反向/Q輸出的數據,電路連接關系如圖1所示。
3 跨時鐘域同步電路的工作特征
在設計方案中,最大限度地保障了不漏信號。同時,時鐘域1的輸入脈沖信號寬度(高電平寬度)可以低于時鐘域1的時鐘單周期寬,電路正常工作,并且設計中脈沖寬度不再受限于時鐘域1的時鐘頻率。第三,數據鎖存器的數據輸出端Q輸出的脈沖信號寬度為時鐘域2的時鐘單周期寬,從而避免了誤觸發和多觸發。
這種方法適用于輸入信號類型為脈沖或電平,最終得到的結果為脈沖。如圖2所示。
如圖3所示,當clock1快于clock2時,圖中Data_in1表示第一個輸入脈沖,此脈沖由Data_in輸入,脈沖寬度小于clock1的四分之一,同時,脈沖寬度小于系統最快時鐘(clock1最快)的四分之一。Data_in1的上升沿到來的瞬間,Q1輸出高電平“1”;Data_in1的上升沿之后,第一個clock2的上升沿到來瞬間,Q2輸出高電平“1”;第二個clock2的上升沿到來瞬間,Data_out輸出高電平“1”,與此同時,nRST生成復位信號,復位DFF1、DFF2,使Q1、Q2輸出低;第三個clock2的上升沿到來瞬間,由于Q1、Q2早已變成低電平“0”,此時,“0”傳遞到Data_out,形成了一個clock2的周期寬度的脈沖Data_out1。
如圖4所示,若clock2快于clock1時,圖中Data_in1表示第一個輸入脈沖,此脈沖由Data_in輸入,脈沖寬度小于clock1的四分之一,同時,脈沖寬度小于系統最快時鐘(clock2最快)的四分之一。
如圖5所示,當clock2等于clock1時,圖中Data_in1表示第一個輸入脈沖,此脈沖由Data_in輸入,脈沖寬度小于clock1的四分之一,同時,脈沖寬度小于系統最快時鐘(clock2等于clock1)的四分之一。
4 仿真實驗分析
根據以上分析,通過Modelsim仿真分析得出以下時域圖像可以驗證上述特征,如圖6~圖8所示,快時鐘為10 Hz,慢時鐘為3.3 Hz,當時鐘相等時為5 Hz。從仿真圖像來看,亞穩態問題以及信號寬度受限于時鐘寬度問題可以良好的解決。
5 應用與實測
下方是基于和艦科技180 nm Pflash生產工藝設計實例。方案基于Faraday 0.18 ?滋m GII Library Standard Cell,圖中灰色部分為模擬IP。下圖中SAR_ADC的輸出接口中,有一個脈沖信號的寬度等于系統時鐘周期的一半。采用一般的手段,無法捕獲這個脈沖,采用上文所述的電路則便高效地解決了這個問題。具體實現運行代碼如下:
assign ADC_fine_rst = ADC_fine_sys || rst ;
%生成復位信號ADC_fine_rst,高有效,為使ADC_fine_sys和rst高電平產生復位,所以采用“邏輯或”運算。
always @(posedge drdy_dig or posedge ADC_fine_rst )
if (ADC_fine_rst)
ADC_fine <= 1'b0;
else
ADC_fine <= 1'b1;
%對應圖1中的DFF1,drdy_dig為原始窄脈沖信號,若直接用系統時鐘clk_system采樣,將無法鎖存。因此,此處drdy_dig接ADC_fine_reg的clk端。drdy_dig為ADC的IP電路輸出信號,同步邏輯輸出,有效壓制毛刺,避免誤觸發。
always @(posedge clk_system or posedge ADC_fine_sys )
if (ADC_fine_sys)
ADC_fine_ff <= 1'b0;
else
begin
if (rst)
ADC_fine_ff <= 1'b0;
else
ADC_fine_ff <= ADC_fine;
end
%對應圖1中的DFF2,此處rst的同步復位邏輯沒有決定性意義,可以去除。
always @(posedge clk_system or posedge rst )
if (rst)
ADC_fine_sys <= 1'b0;
else
ADC_fine_sys <= ADC_fine_ff;
%對應圖1中的DFF3,由原始drdy_dig信號,生成了ADC_fine_sys信號,從而實現跨時鐘對接。
最后生成如圖9所示的GDSII視圖。按照生成GDSII視圖制作如圖10所示測試電路板。
經過MPW shuttle以及full MASK,采用天水華天的SOP20封裝工藝,并設計板級測試系統,專項測試SAR_ADC結果如表1所示。ADC性能符合spec,排除測試環境的影響,信號捕獲成功率等于100%,接口電路方案成功。
6 結論
從整體來看,該方法結構簡單。其輸入脈沖信號寬度可以低于本身的時鐘單周期寬,使得設計中脈沖寬度不再受限于時鐘頻率;同時,時鐘域1中輸入脈沖信號寬度可以低于系統最快時鐘單周期寬,進一步提高了采集的穩定性和適應性。時鐘域2輸出脈沖信號寬度為時鐘域2的時鐘單周期寬,從而避免了誤觸發,電路經過兩級同步,這樣很好地解決了亞穩態問題。總的來講提高了采集的穩定性和適應性。
但是,這種處理方法對輸入信號也有要求:輸入毛刺寬度應小于DFF1(如圖3)的最小時鐘辨識度,否則將產生誤觸發。因此,這種方法的輸入信號一般是SOC同步電路的輸出信號,如輸入為片外信號,一般要增加前置數字濾波電路。
-
電路
+關注
關注
172文章
5901瀏覽量
172135 -
soc
+關注
關注
38文章
4161瀏覽量
218165 -
時鐘域
+關注
關注
0文章
52瀏覽量
9535
原文標題:【學術論文】多時鐘系統下跨時鐘域同步電路的設計
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論