<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è) > EDA/PCB > 設計應用 > 利用CPLD實(shí)現FPGA的快速加載

利用CPLD實(shí)現FPGA的快速加載

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

這種加載方式的原理是:先將的配置數據放在CPU外掛非易失性存儲器中,CPU啟動(dòng)后,CPU通過(guò)GPIO模擬時(shí)序的方式將配置數據加載到中。CPU以這種方式產(chǎn)生的加載時(shí)鐘只有kHz,加載一個(gè)10 MB大小的配置文件大概需要100 s。通過(guò)優(yōu)化代碼可以減小加載時(shí)間,但是軟件不能模擬高頻時(shí)鐘是其固有的缺陷。可以利用外部高速時(shí)鐘作為加載參考時(shí)鐘,且由于它控制簡(jiǎn)單,擴展方便的特性,可以作為加載的橋梁,在CPU和之間建立快速加載的通道。
利用進(jìn)行PS加載的電路連接設計如見(jiàn)圖4。

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

b.JPG


CPU要從外掛存儲器中讀取配置文件,然后發(fā)起加載任務(wù),通知開(kāi)始加載并通過(guò)Local Bus向CPLD發(fā)送加載數據。常用的CPU Local Bus參考時(shí)鐘約為66 MHz,加載1 B的數據需要約15璐。CPLD對外部參考時(shí)鐘(可選擇,本文選用66 MHz晶振)進(jìn)行4分頻后作為加載時(shí)鐘,此時(shí)鐘約為16.5 MHz,其加載效率比CPU GPIO加載方式提高10倍以上。
2.2 CPLD加裁模塊的設計
CPLD加載模塊主要是利用CPLD邏輯代碼實(shí)現PS加載時(shí)序,達到快速加載的目的。FPGA的PS加載時(shí)序如圖5所示。

d.JPG


PS加載的過(guò)程如圖6所示。
根據PS加載的時(shí)序和流程圖,設計通過(guò)CPU和CPLD對FPGA進(jìn)行加載的過(guò)程如下:CPLD在收到CPU發(fā)出的加載開(kāi)始命令后,將nconfig信號拉低(器件時(shí)序對nconfig的低電平脈寬有要求),當FPGA收到nconfig的低脈沖有效信號后,會(huì )馬上清除現有的程序進(jìn)入加載狀態(tài),拉低nstatus和conf_done信號,在nconfig信號變高500 μs(器件要求)后CPLD可以開(kāi)始向FPGA送時(shí)鐘和數據進(jìn)行加載,加載完成后,FPGA將conf_done信號拉高,遞知CPLD,CPLD再通知CPU加載已完成,PPGA進(jìn)入初始化階段。
要實(shí)現成功的加載,必須保證加載過(guò)程正確,加載時(shí)序滿(mǎn)足器件要求。還要注意與CPU軟件程序的配合。
(1)nconfig信號時(shí)序的控制。nconfig信號時(shí)序控制由CPU軟件實(shí)現,在硬件連接上,將nconfig信號使用外部電阻上拉,軟件對CPLD寄存器中的configbit先寫(xiě)0,再寫(xiě)1,中間延遲10μs,保證nconfig信號的脈寬達到芯片要求。
實(shí)際測試波形如圖7所示,橫軸表示時(shí)間,靠上的信號線(xiàn)為nconfig信號,靠下的為nstatus信號,nconfig脈寬約為11μs,滿(mǎn)足要求。

d.JPG


(2)dclk時(shí)序的控制。dclk由CPLD的參考時(shí)鐘elk_ref四分頻產(chǎn)生。器件要求dclk在nconfig信號變高后至少500 μs后才輸出,這個(gè)時(shí)序是由CPU軟件來(lái)控制,軟件先將nconfig信號拉低10 μs,等待FPGA回應的nstatus,當nstatus高電平到來(lái)后,延遲600μs開(kāi)始通過(guò)Local Bus向CPLD發(fā)送數據,同時(shí)置位時(shí)鐘使能標志位,CPLD以此時(shí)鐘標志位來(lái)觸發(fā)dclk,以此保證dclk的時(shí)序。實(shí)際測試波形如圖8所示。橫軸表示時(shí)間,靠上的信號線(xiàn)為nconfig,靠下的為dclk,從nconfig變高到dclk輸出的延遲約為605μs,滿(mǎn)足要求。
(3)CPLD與CPU標志位的控制實(shí)現。必須控制CPLD加載口在CPU送數據完成之后再工作,否則會(huì )引起數據阻塞。為了實(shí)現這一控制,CPU會(huì )送出一個(gè)標志位,即CPU在第一個(gè)Local Bus的訪(fǎng)問(wèn)周期發(fā)送8 b加載數據,在下一個(gè)周期CPU會(huì )對標志寄存器進(jìn)行取反操作,CPLD會(huì )去檢測標志位的沿(上升沿下降沿都可),當CPLD檢測到這個(gè)沿,說(shuō)明CPU的數據已經(jīng)發(fā)送完成,CPLD會(huì )產(chǎn)生加載時(shí)鐘,并利用此時(shí)鐘將加載數據送入FPGA。CPLD只對邊沿進(jìn)行檢測可以減少Local Bus的訪(fǎng)問(wèn)周期,如果用0,1電平或者只用上升沿(只用下降沿),CPU傳送完數據后,需要先讀標志寄存器的值,再對標志位進(jìn)行操作,而用上升沿和下降沿,CPU只需要在第一次傳送數據完成后讀標志寄存器,隨后的數據傳送完成后只需要對其進(jìn)行取反即可。實(shí)現程序如圖9所示。

e.JPG



關(guān)鍵詞: CPLD FPGA

評論


相關(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>