fpga配置存儲器
㈠ fpga器件中的存儲器塊有何作用
3.2 FPGA器件中的存儲器塊有何作用?
FPGA器件內通常有片內存儲器,這些片內存儲器速度快,讀操作的時間一般為3~4 ns,寫操作的時間大約為5 ns,或更短,用這些片內存儲器可實現RAM、ROM或FIFO等功能,非常靈活,為實現數字信號處理(DSP)、數據加密或數據壓縮等復雜數字邏輯的設計提供了便利;採用ROM查表方式可以完成數值運算、波形信號發生器等功能,是FPGA設計中一種常用的設計方法。
㈡ 如何對FPGA中的配置數據進行回讀
首先,已經下載到FPGA中的配置數據無法完全回讀,只能通過JTAG命令對內部指令進行回讀確認狀態。其次,一般回讀的都是狀態,具體數據不進行回讀。你可以通過對配置存儲器(如EPCS系列/FLASH等)進行讀取操作,這裡面都是配置數據。因為,不知道你具體要求,只能回答這這么多,你可以對你的回讀要求進行詳細說明下,具體使用在哪方面。
㈢ FPGA用到的各個存儲器問題
首先flash和EPCS其實有一個就可以了,memory—on chip ,ROM在FPGA內部,FLASH,SRAM,SDRAM,EPCS則是外擴的存儲器。對於一般的系統,會把程序(包括邏輯塊和NIOS的C代碼)通過工具(內嵌在nios IDE中)燒寫到flash或EPCS中(當然你的數據文件也是可以存在這裡面的,地址要在程序空間之後),上電後,FPGA從內部的一個ROM中引導程序(這個ROM是不需要用戶操作的),然後將flash或EPCS中的程序載入到on_chip_ram或外部SRM,SDRAM什麼的,這取決於你SOPC定製的時候,在CPU的異常復位地址指向on_chip_ram還是SRM,SDRAM等。
所以對於一個簡單的系統應該是這樣的啟動流程:
SOPC定製(程序燒寫到什麼地方,復位地址在哪)-->編寫邏輯模塊和nios程序-->調試,燒寫程序-->啟動系統-->boot_loader從ROM啟動將程序搬入on_chip_ram或外部SRM,SDRAM-->程序跳轉到on_chip_ram或外部SRM,SDRAM的0地址開始執行用戶的程序。
over
希望你懂了~~
還不清楚可以參考一些書籍、論壇什麼的,現在的FPGA技術已經很成熟了,書籍蠻多~~
㈣ FPGA配置文件在載入後是存儲在FPGA片內還是在片外內存
FPGA配置文件在載入後是存儲在FPGA片內的,否則FPGA是無法配置成你所設計的邏輯的。由於FPGA是易失性器件,所以還需要同時將配置文件存儲在非易失性器件中。這個非易失性器件,既可以置於FPGA片內,也可以放在片外。這要看你選用哪一種FPGA晶元了。
㈤ fpga從flash載入原理
fpga
Xilinx FPGA通過FLASH載入程序的時序
哈塞給,套離開套
原創
關注
9點贊·7212人閱讀
盡管FPGA的配置模式各不相同,但整個配置過程中FPGA的工作流程是一致的,分為三個部分:設置、載入、啟動。
復位結束配置開始
有多種方式使FPGA的配置進入這一過程。在上電時,電壓達到FPGA要求之前,FPGA的上電復位模塊將使FPGA保持在復位狀態;外部控制PROG_B引腳出現一個低脈沖也可以使FPGA保持在復位狀態。
清除配置存儲內容
這一步稱為初始化,當FPGA復位結束,配置存儲器的內容會被自動清除。在這個步驟中,除配置專用介面外,FPGA I/O均被置於高阻態。在整個初始化過程中,INIT_B引腳被置低並在初始化結束後恢復高電平。如果INIT_B信號在外部被拉低,FPGA將一直停留在初始化狀態。注意PROG_B信號的脈寬不能太窄。
采樣控制信號
初始化結束後,INIT_B信號回到高電平。FPGA開始採集模式選擇引腳M[1:0]和變數選擇引腳VS。如果為主動模式,FPGA很快就會給出有效的CCLK。VS信號只在主動BPI及其SPI模式中生效。此時,FPGA開始在配置時鍾的上升沿對配置數據進行采樣。
同步化
每一個FPGA配置數據流都有一個同步頭,它是一段特殊的同步字。同步字主要用於幫助FPGA確定正確的數據位置。同步字之前的配置數據都會被FPGA忽略,也就是FPGA僅僅在同步化之後才正式開始接收配置數據。一般而言,同步字都是由0/1數目相同的二進制數組成的,如Spartan3為AA995566。
ID檢查
FPGA同步化後,會自動檢測配置流中的器件ID和目標器件ID是否一致。這一步確保了FPGA不會被錯誤的配置流誤配置。
32位的ID中包含了28位的特徵值和4位掩碼。特徵值包括廠商信息,器件族,器件規模等。當器件ID檢查遇到問題時,FPGA會將內部寄存器的第一位ID_Err置高,軟體也會顯示錯誤信息。
載入配置內容
在ID檢查順利通過後,FPGA開始載入配置數據。
CRC校驗
在載入數據過程中,FPGA會對每一幀數據進行CRC校驗。如果失敗,FPGA會將INIT_B信號拉低並終止配置過程。
啟動序列
FPGA配置數據載入完後,FPGA進入啟動序列。啟動序列事件的默認順序為先釋放DONE引腳,然後激活I/O,最後啟動寫使能。實際使用中,可以通過BitGen參數對啟動順序進行設置來滿足不同的需求。
、---------------------------------------------------
摘要:提出了由於FPGA容量的攀升和配置時間的加長,採用常規設計會導致系統功能失效的觀點。通過詳細描述Xilinx FPGA各種配置方式及其在電路設計中的優缺點,深入分析了FPGA上電時的配置步驟和工作時序以及各階段I/O 管腳狀態,說明了FPGA上電配置對電路功能的嚴重影響,最後針對不同功能需求的FPGA外圍電路提出了有效的設計建議。
1 引言
隨著半導體和晶元技術的飛速發展,現在的FPGA集成了越來越多的可配置邏輯資源、各種各樣的外部匯流排介面以及豐富的內部RAM資源,使其在國防、醫療、消費電子等領域得到了越來越廣泛的應用。但是FPGA 大多數是基於SRAM工藝的,具有易失性,因此FPGA 通常使用外部存儲器件(如PROM)存儲必需的配置信息,防止設備掉電後FPGA丟失自我配置能力。但FPGA配置在一定的條件和時間下才能成功完成,隨著FPGA容量的不斷攀升,配置時間也被大大加長,上電時如不充分考慮FPGA的配置時序以及對其他器件的影響,根據常規經驗設計電路,往往會影響系統其他外圍器件的正常工作,嚴重時會導致整個系統的失效。因此,FPGA的配置方式和上電時序已成為系統設計的重要一環。
2 Xilinx
㈥ fpga實現160晶元怎麼配置管腳
(1)初始化
系統上電後,如果FPGA滿足以下條件:Bank2的I/O輸出驅動電壓Vcc0_2大於lv;器件內部的供電電壓Vccint為2.5v,器件便會自動進行初始化。在系統上電的情況下,通過對PROG引腳置低電子,便可以對FPGA進行重新配置。初始化過程完成後,DONE信號將會變低。
(2)清空配置存儲器
在完成初始化過程後,器件會將INIT信號置低電平,同時開始清空配置存儲器。在清空完配置存儲器後,INIT信號將會重新被置為高電平。用戶可以通過將PROG或INIT信號(1NIT為雙向信號)置為低電平,從而達到延長清空配置存儲器的時間,以確保存儲器被清空的目的。
(3)載入配置數據
配置存儲器的清空完成後,器件對配置模式腳M2、N1、M0進行采樣,以確定用何種方式來載入配置數據。
(4)CRC錯誤檢查
器件在載入配置數據的同時,會根據一定的演算法產生一個CRC值,這個值將會和配置文件中內置的CRC值進行比較,如果兩者不一致,則說明載入發生錯誤,INIT引腳將會被置低電平,載入過程被中斷。此時若要進行重新配置,只需將PROG置為低電平即可。
(5)START-UP
在START-UP階段中,FPGA會進行一下操作:
①將DONE信號置高電平,若DONE信號沒有置高,則說明數據載入過程失敗;
②在配置過程中,器件的所有I/O引腳均為三態,此時,全局三態信號GTS置低電平,這些I/O腳將會從三態切換到用戶設置的狀態;
③全局復位信號GSR置低電平,所有觸發器進入工作狀態;
④全局寫允許信號GWE置低電平,所有內部RAM有效;
整個過程共有8個時鍾周期C0-C7。在默認的情況下,這些操作都和配置時鍾CCLK同步,在DONE信號置高電子之前,GTS,GSR,GWE都保持高電平。
㈦ 如何在Altera的FPGA上使用DDR2存儲器
近日,嘗試著在Altera的FPGA上使用DDR2存儲器。先是在互聯網上down幾個例子,無奈這些例子均是基於sopcbuilder的,存儲器直接掛在nios cpu下,讀寫細節均不需要我們手動干預,若僅僅是簡單的用來跑跑代碼、存放臨時數據等,體現不了DDR的優勢。如果用戶邏輯部分(相當於主設備)要以高帶寬的佔用和nios cpu共享的DDR,那麼需要使用Avalon主動傳輸或者流模式。由於對這兩種模式了解不多,因此先准備在Quartus下使用純邏輯的方式操作DDR。
在Quartus下使用向導生成IP後(HPC II或者是Uniphy核),以Uniphy為例,在10.0sp1版本下,使用half模式,Avalon最大突發長度設為64。根據IP的datasheet上面的時序圖,寫了一段控制代碼,反復幾次後,代碼能夠正常跑起來,讀寫數據也是正確的。但有一些疑問:
1.一次突發讀/寫過程中,不能連續操作,也就是不能一個時鍾出/寫一個數據。突發過程中,控制器的反饋信號local_ready偶爾會在我們的突發過程中被置低,這樣我們只能保持地址,進行等待。控制器在我們啟動突發後,間隔一定的時間,會輸出數據,這個時間是不定的。但是,一旦其開始輸出數據,它不像其他的DDR控制核那樣,可以連續出數,而是會被隨機打斷。這種不確定性,導致我們使用的時候有諸多的不便。既然不能連續出數,還能稱作突發嗎?突發的真正含義是什麼?
2.bank地址固定,一次突發過程中,讀能夠連續出64次數據,寫不能。
3.根據其手冊,在突發讀過程中,此時只要local_ready信號有效,即使突發的數據還未到達,這個時候也可以直接就行突發寫操作。這么繁瑣的控制過程,在真正的產品中有用到嗎?
由於沒有接觸過那些真正使用DDR做大量數據傳輸的例子,對DDR的使用也是閉門造車,走的可能是歪路子,希望大家指正。不知道大家在FPGA中,是如何高效使用DDR存儲器的?希望有這方面經驗的網友給一些建議。
另外,查詢了Avalon匯流排的技術文檔,資料的結論是,Avalon匯流排在主動傳輸時,確實是不能保證一個時鍾出一次數據,僅能保證在一次突發開始後不被其他的主設備中斷。假設一個從設備,比喻DDR,它僅支持突發傳輸,當它掛在匯流排上時,其它主設備只能以突發模式訪問嗎?或者是,以突發模式訪問得到的訪問帶寬將會最大化?假如從設備僅原生支持16個突發長度,而主設備想一次突發24個長度,那麼Avalon交換結構會不會自動轉換,對從設備發起兩次傳輸?對Avalon結構的一些仲裁細節,不甚理解,自定義主設備無法提高其性能。