<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > FPGA/CPLD常用的四種設計方法

FPGA/CPLD常用的四種設計方法

作者: 時(shí)間:2012-03-03 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/149527.htm

在電路圖階段,一些工程師手工加入BUFT或者非門(mén)調整數據延遲,從而保證本級模塊的時(shí)鐘對上級模塊數據的建立、保持時(shí)間要求。還有一些工程師為了有穩定的采樣,生成了很多相差90度的時(shí)鐘信號,時(shí)而用正沿打一下數據,時(shí)而用負沿打一下數據,用以調整數據的采樣位置。這兩種做法都十分不可取,因為一旦芯片更新?lián)Q代或者移植到其它芯片組的芯片上,采樣實(shí)現必須從新。而且,這兩種做法造成電路實(shí)現的余量不夠,一旦外界條件變換(比如溫度升高),采樣時(shí)序就有可能完全紊亂,造成電路癱瘓。

下面簡(jiǎn)單介紹幾種不同情況下數據接口的同步

1. 輸入、輸出的延時(shí)(芯片間、PCB布線(xiàn)、一些驅動(dòng)接口元件的延時(shí)等)不可測,或者有可能變動(dòng)的條件下,如何完成數據同步?

對于數據的延遲不可測或變動(dòng),就需要建立同步機制,可以用一個(gè)同步使能或同步指示信號。另外,使數據通過(guò)RAM或者FIFO的存取,也可以達到數據同步目的。圖4:流水線(xiàn)設計時(shí)序示意圖。

把數據存放在RAM或FIFO的如下:將上級芯片提供的數據隨路時(shí)鐘作為寫(xiě)信號,將數據寫(xiě)入RAM或者FIFO,然后使用本級的采樣時(shí)鐘(一般是數據處理的主時(shí)鐘)將數據讀出來(lái)即可。這種做法的關(guān)鍵是數據寫(xiě)入RAM或者FIFO要可靠,如果使用同步RAM或者FIFO,就要求應該有一個(gè)與數據相對延遲關(guān)系固定的隨路指示信號,這個(gè)信號可以是數據的有效指示,也可以是上級模塊將數據打出來(lái)的時(shí)鐘。對于慢速數據,也可以采樣異步RAM或者FIFO,但是不推薦這種做法。

數據是有固定格式安排的,很多重要信息在數據的起始位置,這種情況在通信系統中非常普遍。通訊系統中,很多數據是按照“幀”組織的。而由于整個(gè)系統對時(shí)鐘要求很高,常常專(zhuān)門(mén)一塊時(shí)鐘板完成高精度時(shí)鐘的產(chǎn)生與驅動(dòng)。而數據又是有起始位置的,如何完成數據的同步,并發(fā)現數據的“頭”呢?

數據的同步完全可以采用上面的方法,采用同步指示信號,或者使用RAM、FIFO緩存一下。

找到數據頭的方法有兩種,第一種很簡(jiǎn)單,隨路傳輸一個(gè)數據起始位置的指示信號即可,對于有些系統,特別是異步系統,則常常在數據中插入一段同步碼(比如訓練序列),接收端通過(guò)狀態(tài)機檢測到同步碼后就能發(fā)現數據的“頭”了,這種做法叫做“盲檢測”。

上級數據和本級時(shí)鐘是異步的,也就是說(shuō)上級芯片或模塊和本級芯片或模塊的時(shí)鐘是異步時(shí)鐘域的。

前面在輸入數據同步化中已經(jīng)簡(jiǎn)單介紹了一個(gè)原則:如果輸入數據的節拍和本級芯片的處理時(shí)鐘同頻,可以直接用本級芯片的主時(shí)鐘對輸入數據寄存器采樣,完成輸入數據的同步化;如果輸入數據和本級芯片的處理時(shí)鐘是異步的,特別是頻率不匹配的時(shí)候,則只有用處理時(shí)鐘對輸入數據做兩次寄存器采樣,才能完成輸入數據的同步化。需要說(shuō)明的是,用寄存器對異步時(shí)鐘域的數據進(jìn)行兩次采樣,其作用是有效防止亞穩態(tài)(數據狀態(tài)不穩定)的傳播,使后級電路處理的數據都是有效電平。但是這種做法并不能保證兩級寄存器采樣后的數據是正確的電平,這種方式處理一般都會(huì )產(chǎn)生一定數量的錯誤電平數據。所以?xún)H僅適用于對少量錯誤不敏感的功能單元。

為了避免異步時(shí)鐘域產(chǎn)生錯誤的采樣電平,一般使用RAM、FIFO緩存的方法完成異步時(shí)鐘域的數據轉換。最的緩存單元是DPRAM,在輸入端口使用上級時(shí)鐘寫(xiě)數據,在輸出端口使用本級時(shí)鐘讀數據,這樣就非常方便的完成了異步時(shí)鐘域之間的數據交換。

2. 設計數據接口同步是否需要添加約束?

建議最好添加適當的約束,特別是對于高速設計,一定要對周期、建立、保持時(shí)間等添加相應的約束。

這里附加約束的作用有兩點(diǎn):

a. 提高設計的工作頻率,滿(mǎn)足接口數據同步要求。通過(guò)附加周期、建立時(shí)間、保持時(shí)間等約束可以控制邏輯的綜合、映射、布局和布線(xiàn),以減小邏輯和布線(xiàn)延時(shí),從而提高工作頻率,滿(mǎn)足接口數據同步要求。

b. 獲得正確的時(shí)序分析報告。幾乎所有的FPGA設計平臺都包含靜態(tài)時(shí)序分析工具,利用這類(lèi)工具可以獲得映射或布局布線(xiàn)后的時(shí)序分析報告,從而對設計的性能做出評估。靜態(tài)時(shí)序分析工具以約束作為判斷時(shí)序是否滿(mǎn)足設計要求的標準,因此要求設計者正確輸入約束,以便靜態(tài)時(shí)序分析工具輸出正確的時(shí)序分析報告。

Xilinx和數據接口相關(guān)的約束有Period、OFFSET_IN_BEFORE、OFFSET_IN_AFTER、OFFSET_OUT_BEFORE和OFFSET_OUT_AFTER等;Altera與數據接口相關(guān)的約束有Period、tsu、tH、tco等。


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: 方法 設計 常用 FPGA/CPLD

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>