国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

【從零開始走進FPGA】對立統一——異步時鐘同步化

發布時間:2016-2-19 09:03    發布者:designapp
關鍵詞: FPGA , 異步時鐘
一、什么是對立統一
什么是CEO,就是首席執行官,是在一個企業中負責日常經營管理的最高級管理人員,又稱作行政總裁,或最高執行長或大班。
那么,在FPGA系統,需不需要一個最高級別的執行官,來管理所有進程呢?為了系統的有序性,不至于凌亂、崩潰,答案必然是肯定的。
誰都知道,FPGA內部時序邏輯的工作,是通過時鐘的配合來完成任務的。那么當系統中有異步時鐘的時候,怎么辦?每一個系統必須有一個最高級別的時鐘,執行力最強;同時它擔任著管理異步時鐘的任務,其它異步時鐘想讓手下執行任務,必須告訴執行官,然后執行官去分配任務。所以,一切行動,都必須通過首席執行官的允許,才能進行;不然,沒門。首席執行官具有最高支配權。它們之間的關系如下圖所示:


因此,對于工程中出現的異步時鐘,與最高時鐘是對立關系,但這個CEO的地位決定了只有他說了算,不然就會“叛亂”,因此要把那些異步時鐘統一管理,這就是所謂的“對立統一”。
二、異步時鐘同步化

1. 異步時鐘種類
異步時鐘有很種類,如下是幾種項目中常常出現的情況
(1)系統異步復位信號
(2)由其它處理器輸入的時鐘
(3)內部組合邏輯產生的時鐘
當然也并非所有異步時鐘都要同步化,必須高速ADCDAC芯片往往有個時鐘輸入端,這時保證該芯片與該部分邏輯電路同步,可以專門供給一個晶振,來達到更好的效果;同時也不是最高時鐘以外的時鐘都要同步化,由PLL產生的不同的時鐘,本身就是同步的,可以不處理。
當然在可靠性要求不高的時候,異步復位這些信號也可以不處理,只是,養成良好的習慣,永遠不會錯。
2. 異步時鐘解決方案
對于時鐘的同步,采用的方法都差不多。Bingo在特權的《深入淺出玩轉FPGA》中得到啟發,相應的簡單的描述一下幾種關于異步復位信號的同步化。
(1)異步復位信號的同步化
此部分其實很簡單,應用了上述邊沿檢測的部分思維,用最高時鐘打慢幾拍,便實現了與最高時鐘的同步。此處不再用Block來累贅的描述,verilog設計代碼如下所示:
/*****************************************************
* Module Name : synchronism_design.v
* Engineer : Crazy Bingo
* Target Device : EP2C8Q208C8
* Tool versions : Quartus II 11.0
* Create Date : 2011-6-25
* Revision : v1.0
* Description :
*****************************************************/
module synchronism_design
(
input clk,
input rst_n,
output sys_rst_n
);
//------------------------------------------
//rst_n synchronism, is controlled by the input clk
reg rst_nr1, rst_nr2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
rst_nr1


(2)PLL協作時異步復位信號同步化
相對于上述異步復位信號同步化方法的擴展,分析存在PLL環情況下的對信號的處理。如下verilog代碼所示,先用晶振輸入時鐘對異步復位信號進行同步化,最后通過與PLL輸出信號locked與前面產生的同步復位信號與操作,得到最后的系統復位信號。
具體Verilog代碼如下所示:
/*****************************************************
* Module Name : synchronism_pll_design.v
* Engineer : Crazy Bingo
* Target Device : EP2C8Q208C8
* Tool versions : Quartus II 11.0
* Create Date : 2011-6-25
* Revision : v1.0
* Description :
*****************************************************/
module synchronism_pll_design
(
input clk, //50MHz
input rst_n, //global reset
output sys_rst_n, //system reset
output clk_c0 //50MHz
);
//----------------------------------------------
//rst_n synchronism, is controlled by the input clk
wire pll_rst;
reg rst_nr1,rst_nr2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
rst_nr1


(3)外輸入異步信號同步化
當外面輸入異步時鐘或者異步信號的時鐘,一律轉換為使能時鐘。此方法與前一張接關于邊沿檢測的講述一樣,此處不做累贅講解。
(4)系統同步信號最優化設計方案
當FPGA剛上電的短暫時間內,所有邏輯塊上電,多多少少需要一定的時間(盡管非常短暫)。在一般時序要求不高的項目中,似乎可以忽略不計。但對于是需要求非常嚴格的操作,這幾十ns或者ms上電時,FPGA內部是相當不穩定的。因此,在同步異步信號的同時,先將整個系統工作延時一定時間,將會在一定程度上得到更穩定的運行結果。同時,處理后FPGA內部真正開始工作實在系統上電穩定后進行的,因此相應邏輯時序等,更穩定準確。
以下是Bingo在實際項目中遇到的問題的解決方案。經過對系統進行100ms延時的處理后,本來容易出錯的系統,在沒出現過異常。
具體verilog代碼如下所示:
/***************************************************
* Module Name : synchronism_pll_delay_design.v
* Engineer : Crazy Bingo
* Target Device : EP2C8Q208C8
* Tool versions : Quartus II 11.0
* Create Date : 2011-6-25
* Revision : v1.0
* Description :
****************************************************/
module synchronism_pll_delay_design
(
input clk, //50MHz
input rst_n, //global reset
output sys_rst_n, //system reset
output clk_c0 //50MHz
);
//----------------------------------------------
//rst_n synchronism, is controlled by the input clk
reg rst_nr1,rst_nr2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
rst_nr1
本文地址:http://m.4huy16.com/thread-160914-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術精英年會深圳站回顧
  • Microchip第22屆中國技術精英年會——采訪篇
  • 常見深度學習模型介紹及應用培訓教程
  • 電動兩輪車設計生態系統
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表