freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

fpga研發(fā)牛人心得總結(jié)doc(編輯修改稿)

2024-08-11 22:31 本頁面
 

【文章內(nèi)容簡介】 口與CPU連接,內(nèi)部設(shè)定軟復(fù)位寄存器,CPU通過寫此寄存器可以復(fù)位FPGA內(nèi)部單元邏輯,通過寫內(nèi)部寄存器進(jìn)行軟復(fù)位,是復(fù)雜IP常用的功能接口。調(diào)試時(shí),F(xiàn)PGA返回錯(cuò)誤或無返回,通過軟復(fù)位能否恢復(fù),可以迅速定位分割問題,加快調(diào)試速度。復(fù)位一般通過與或者或的方式(高電平或、低電平與),產(chǎn)生統(tǒng)一的復(fù)位給各模塊使用。模塊軟復(fù)位信號,只在本模塊內(nèi)部使用。問題:同步復(fù)位好、還是異步復(fù)位好?XILINX雖然推薦同步復(fù)位,但也不一概而論,復(fù)位的目的是使整個(gè)系統(tǒng)處于初始狀態(tài),這根據(jù)個(gè)人寫代碼經(jīng)驗(yàn),這些操作都可以,前提是整個(gè)設(shè)計(jì)為同步設(shè)計(jì),時(shí)鐘域之間相互隔開,復(fù)位信號足夠長,而不是毛刺。下面推薦一種異步復(fù)位的同步化方式,其電路圖如下:時(shí)鐘和復(fù)位基本上每個(gè)模塊的基本輸入,也是FPGA架構(gòu)上首先要規(guī)劃的部分,而不要用到才考慮,搞的整個(gè)設(shè)計(jì)到處例化DCM或者輸出LOCK進(jìn)行復(fù)位,這些對于工程的可維護(hù)性和問題定位都沒有益處。《治家格言》說:“宜未雨而綢繆,毋臨渴而掘井。這與FPGA時(shí)鐘和復(fù)位的規(guī)劃是同一個(gè)意思。架構(gòu)設(shè)計(jì)漫談(四)并行與復(fù)用FPGA其在眾多器件中能夠被工程師青睞的一個(gè)很重要的原因就是其強(qiáng)悍的處理能力。那如何能夠做到高速的數(shù)據(jù)處理,數(shù)據(jù)的并行處理則是其中一個(gè)很重要的方式。數(shù)據(jù)的并行處理,從結(jié)構(gòu)上非常簡單,但是設(shè)計(jì)上卻是相當(dāng)復(fù)雜,對于現(xiàn)有的FPGA來說,雖然各種FPGA的容量都在增加,但是在有限的邏輯中達(dá)到更高的處理能力則是FPGA工程師面臨的挑戰(zhàn)。常用并行計(jì)算結(jié)構(gòu)如下圖所示:上圖中:前端處理單元負(fù)責(zé)將進(jìn)入數(shù)據(jù)信息,分配到多個(gè)計(jì)算單元中,圖中為3個(gè)計(jì)算單元(幾個(gè)根據(jù)所需的性能計(jì)算得出)。然后計(jì)算單元計(jì)算完畢后,交付后端處理單元整合為統(tǒng)一數(shù)據(jù)流傳入下一級。如果單個(gè)計(jì)算單元的處理能力為N,則通過并行的方式,根據(jù)并行度M,其計(jì)算能力為N*M;在此結(jié)構(gòu)中,涉及到幾個(gè)問題:一,前端處理單元如何將數(shù)據(jù)分配到多個(gè)計(jì)算單元,其中一種算法為roundrobin,輪流寫入下一級計(jì)算單元,這種方式一般使用用計(jì)算單元計(jì)算數(shù)據(jù)塊的時(shí)間等同。更常用的一種方式,可以根據(jù)計(jì)算單元的標(biāo)示,即忙閑狀態(tài),如果哪個(gè)計(jì)算單元標(biāo)示為閑狀態(tài),則分配其數(shù)據(jù)塊。二,計(jì)算單元和前后端處理之間如何進(jìn)行數(shù)據(jù)交互。一般來說,計(jì)算單元處理頻率較低,為關(guān)鍵路徑所在。前后端處理流量較大,時(shí)鐘頻率較高,因此通過異步FIFO連接,或者雙端口RAM都是合適的方式。如果數(shù)據(jù)可分塊計(jì)算,且塊的大小不定,建議使用FIFO作為隔離手段,同時(shí)使用可編程滿信號,作為前端處理識別計(jì)算模塊的忙閑標(biāo)示。三,如果數(shù)據(jù)有先后的標(biāo)示,即先計(jì)算的數(shù)據(jù)需要先被送出,則后端處理模塊需要額外的信號,確定讀取各個(gè)計(jì)算模塊的順序。這是因?yàn)椋喝绻麛?shù)據(jù)等長,則計(jì)算時(shí)間等長,則先計(jì)算的數(shù)據(jù)會先被送出。但是如果數(shù)據(jù)塊不等長,后送入的小的數(shù)據(jù)塊肯能先被計(jì)算完畢,后端處理單元如果不識別先后計(jì)算的數(shù)據(jù)塊,就會造成數(shù)據(jù)的亂序。這可以通過前端計(jì)算單元通過小的FIFO通知后端計(jì)算單元獲知首先讀取那個(gè)計(jì)算單元輸出的數(shù)據(jù),即使其他計(jì)算單元輸出已準(zhǔn)備好,也要等待按照順序來讀取。數(shù)據(jù)的并行處理是FPGA常用的提升處理性能的方法,其優(yōu)點(diǎn)是結(jié)構(gòu)簡單,通過計(jì)算單元模塊的復(fù)用達(dá)到高性能的處理。缺點(diǎn),顯而易見就是達(dá)到M倍的性能就要要耗費(fèi)M倍邏輯。與之相反減少邏輯的另一種方式,則是復(fù)用,即一個(gè)處理能力較強(qiáng)的模塊,可以被N的單元復(fù)用,通過復(fù)用,而不用每個(gè)單元例化模塊,可以達(dá)到減少邏輯的效果,但控制復(fù)雜度就會上升。其結(jié)構(gòu)圖如下所示:上圖復(fù)用的結(jié)構(gòu)圖中,分別介紹了流過模式復(fù)用和調(diào)用模式復(fù)用。流過模式下,計(jì)算單元處理多路數(shù)據(jù)塊,然后將數(shù)據(jù)塊分配到多路上,這種情況下,通過roundrobin可以保證各個(gè)通路公平機(jī)會獲得計(jì)算單元。其處理思路與上圖描述并行處理類似。調(diào)用模式下,計(jì)算單元被多個(gè)主設(shè)備復(fù)用,這種架構(gòu)可以通過總線及仲裁的方式來使各個(gè)主設(shè)備能夠獲取計(jì)算單元的處理(有很多成熟的例子可供使用,如AHB等)。如果多個(gè)主設(shè)備和多個(gè)計(jì)算單元的情況,則可以不通過總線而通過交換矩陣,來減少總線處理帶來的總線瓶頸。實(shí)際應(yīng)用場合,設(shè)計(jì)的架構(gòu)都應(yīng)簡單實(shí)用為好,交互矩陣雖然實(shí)用靈活,但其邏輯量,邊界測試驗(yàn)證的難度都較大,在需要靈活支持多端口互聯(lián)互通的情況下使用,可謂物盡其用。但如果僅僅用于一般計(jì)算單元能力復(fù)用的場景,就屬于過度設(shè)計(jì),其可以通過化簡成上述兩種簡單模式,達(dá)到高速的數(shù)據(jù)處理的效果。并行和復(fù)用,雖然是看其來屬性相反的操作,但其本質(zhì)上就是通過處理能力和邏輯數(shù)量的平衡,從而以最優(yōu)的策略滿足項(xiàng)目的需要。設(shè)計(jì)如此,人生亦然。架構(gòu)設(shè)計(jì)漫談(五)數(shù)字電路的靈魂流水線流水線,最早為人熟知,起源于十九世紀(jì)初的福特汽車工廠,富有遠(yuǎn)見的福特,改變了那種人圍著汽車轉(zhuǎn)、負(fù)責(zé)各個(gè)環(huán)節(jié)的生產(chǎn)模式,轉(zhuǎn)變成了流動(dòng)的汽車組裝線和固定操作的人員。于是,工廠的一頭是不斷輸入的橡膠和鋼鐵,工廠的另一頭則是一輛輛正在下線的汽車。這種改變,不但提升了效率,更是拉開了工業(yè)時(shí)代大生產(chǎn)的序幕。 如今,這種模式常常應(yīng)用于數(shù)字電路的設(shè)計(jì)之中,與現(xiàn)在流驅(qū)動(dòng)的FPGA架構(gòu)不謀而合。舉例來說:某設(shè)計(jì)輸入為A種數(shù)據(jù)流,而輸出則是B種數(shù)據(jù)流,其流水架構(gòu)如下所示:每個(gè)模塊只負(fù)責(zé)處理其中的一部分,這種處理的好處是,簡化設(shè)計(jì),每個(gè)模塊只負(fù)責(zé)其中的一個(gè)功能,便于功能和模塊劃分。2,時(shí)序優(yōu)化,流水的處理便于進(jìn)行時(shí)序的優(yōu)化,特別是處理復(fù)雜的邏輯,可以通過流水設(shè)計(jì),改善關(guān)鍵路徑,提升處理頻率,并能提升處理性能。各個(gè)流水線之間的連接方式也可通過多種方式,如果是處理的是數(shù)據(jù)塊,流水模塊之間可以通過FIFO或者RAM進(jìn)行數(shù)據(jù)暫存的方式進(jìn)行直接連接、也可以通過寄存器直接透傳。也可通過某些支持brust傳輸?shù)某S脴I(yè)界標(biāo)準(zhǔn)總線接口進(jìn)行點(diǎn)對點(diǎn)的互聯(lián),例如AHB,WISHBONE,AVALONST等接口,這種設(shè)計(jì)的優(yōu)點(diǎn)是標(biāo)準(zhǔn)化,便于模塊基于標(biāo)準(zhǔn)接口復(fù)用。每個(gè)模塊的接收接口為從接口(SLAVE),而發(fā)送接口為主接口(MASTER)。架構(gòu)流水的好處一目了然,但另一個(gè)問題,對于某些設(shè)計(jì)就需要謹(jǐn)慎處理,那就是時(shí)延。對于進(jìn)入流水線的信息A,如果接入的流水處理的模塊越多,其輸出時(shí)的時(shí)延也越高,因此如對處理時(shí)延要要求的設(shè)計(jì)就需要在架構(gòu)設(shè)計(jì)時(shí),謹(jǐn)慎對待添加流水線。架構(gòu)設(shè)計(jì)時(shí),可以通過處理各個(gè)單元之間的延時(shí)估計(jì),從而評估系統(tǒng)的時(shí)延,避免最終不能滿足時(shí)延短的需求,返回來修改架構(gòu)。流水架構(gòu)在另種設(shè)計(jì)中則無能為力,那就是帶反饋的設(shè)計(jì),如下圖所示:圖中,需要處理模塊的輸入,需要上一次計(jì)算后的結(jié)果的值,也就是輸出要反饋回設(shè)計(jì)的輸入。例如某幀圖像的解壓需要解壓所后的上一幀的值,才能計(jì)算得出。此時(shí),流水的處理就不能使用,若強(qiáng)行添加流水,則輸入需等待。如上圖中,如在需反饋的設(shè)計(jì)中強(qiáng)加流水,則輸入信息Ai需要等待Ai1處理完畢后,再進(jìn)行輸入,則處理模塊1,就只能等待(空閑)。因此,問題出現(xiàn)了,流水線等待實(shí)際上就是其流水處理的的效果沒有達(dá)到,白白浪費(fèi)了邏輯和設(shè)計(jì)。流水應(yīng)用在調(diào)用式的設(shè)計(jì)中,可以通過接口與處理流水并行達(dá)到。即寫入、處理、讀出等操作可以做到流水式架構(gòu),從而增加處理的能力。流水是FPGA架構(gòu)設(shè)計(jì)中一種常用的手段,通過合理劃分流水層次,簡化設(shè)計(jì),優(yōu)化時(shí)序。同時(shí)流水在模塊設(shè)計(jì)中也是一種常用的手段和技巧。這將在后續(xù)重陸續(xù)介紹。,流水本身簡單易懂,而真正能在設(shè)計(jì)中活用,就需要對FPGA所處理的業(yè)務(wù)有著深刻的理解。正如那就話,知曉容易,踐行不易,且行且珍惜。設(shè)計(jì)不是湊波形(一)FIFO(上)FIFO是FPGA內(nèi)部一種常用的資源,可以通過FPGA廠家的的IP生成工具生成相應(yīng)的FIFO。FIFO可分為同步FIFO和異步FIFO,其區(qū)別主要是,讀寫的時(shí)鐘是否為同一時(shí)鐘,如使用一個(gè)時(shí)鐘則為同步FIFO,讀寫時(shí)鐘分開則為異步FIFO。一般來說,較大的FIFO可以選擇使用內(nèi)部BLOCK RAM資源,而小的FIFO可以使用寄存器資源例化使用。一般來說,F(xiàn)IFO的主要信號包括:信號數(shù)據(jù)信號讀信號rd_en讀數(shù)據(jù)dout讀空信號empty寫信號wr_en寫數(shù)據(jù)din寫滿信號full實(shí)際使用中,可編程滿的信號(XILINX的FIFO)較為常用,ALTERA的FIFO中,可以通過寫深度(即寫入多少的數(shù)據(jù)值)來構(gòu)造其可編程滿信號。通過配置threshold(門限)的值可以設(shè)定可編程滿起效時(shí)的FIFO深度。上圖所示為FIFO的模型,可以看做一個(gè)漏桶模型,其中輸入、輸出、滿信號、空信號、可編程滿等信號如圖所示,一目了然。其中threshold信號可以看做水位線,通過此信號可以設(shè)置可編程滿信號。FIFO的其他的信號也大都與其深度相關(guān),如有特殊需求,可通過廠商提供的IP生成工具的圖形界面進(jìn)行選擇使用。FIFO的使用場景有多種,其中主要如下所示:(1)數(shù)據(jù)的緩沖,如模型圖所示,如果數(shù)據(jù)的寫入速率高,但間隔大,且會有突發(fā);讀出速率小,但相對均勻。則通過設(shè)置相應(yīng)深度的FIFO,可以起到數(shù)據(jù)暫存的功能,且能夠使后續(xù)處理流程平滑,避免前級突發(fā)時(shí),后級來不及處理而丟棄數(shù)據(jù)。(2)時(shí)鐘域的隔離。對于不同時(shí)鐘域的數(shù)據(jù)傳遞,則數(shù)據(jù)可以通過FIFO進(jìn)行隔離,避免跨時(shí)鐘域的數(shù)據(jù)傳輸帶來的設(shè)計(jì)與約束上的復(fù)雜度。FIFO設(shè)計(jì)中有兩個(gè)需要注意事項(xiàng),首先,不能溢出,即滿后還要寫導(dǎo)致溢出,對于數(shù)據(jù)幀的操作來說,每次寫入一個(gè)數(shù)據(jù)幀時(shí),如果每寫一個(gè)寬度(FIFO的寬度)的數(shù)據(jù),都要檢查滿信號,則處理較為復(fù)雜,如果在寫之前沒滿,寫過程不檢查,則就容易導(dǎo)致溢出。因此可編程滿的設(shè)定尤為必要,通過設(shè)置可編程滿的水位線,保證能夠存儲一個(gè)數(shù)據(jù)幀,這樣寫之前檢查可編程滿即可。其次,另一更容易出錯(cuò)的問題,就是空信號。對于FIFO來說,在讀過程中出現(xiàn)空信號,則其沒有代表該值沒有被讀出,對于讀信號來說,如設(shè)定讀出一定長度的值,只在一開始檢測非空,如狀態(tài)機(jī)的觸發(fā)信號,容易出現(xiàn)過程中間也為空的信號,會導(dǎo)致某些數(shù)據(jù)未讀出,特別是寫速滿而讀速快的場景下。因此rden與!empty信號要一起有效才算將數(shù)據(jù)讀出??招盘柼幚硐鄬θ菀壮鲥e(cuò),懶人自有笨方法,下面介紹一種應(yīng)用于數(shù)據(jù)幀處理的FIFO使用方式,只需在讀開始檢測空信號即可,可以簡化其處理讀數(shù)據(jù)的流程:其處理結(jié)構(gòu)如上圖所示,數(shù)據(jù)緩存以大FIFO(BLOCK RAM實(shí)現(xiàn))為主,而每存儲完畢一個(gè)數(shù)據(jù)幀向小FIFO(寄存器實(shí)現(xiàn))內(nèi)寫入值。當(dāng)小FIFO標(biāo)示非空時(shí),則標(biāo)示大FIFO中已存儲一個(gè)整幀。則下一級模塊可以只需檢測小FIFO非空時(shí),從而讀出一個(gè)整幀,過程中大FIFO一直未非空,可以不用處理非空信號,從而簡化設(shè)計(jì)和驗(yàn)證的流程。此外還有FIFO其他應(yīng)用方式,下節(jié)接著介紹。(未完待續(xù))設(shè)計(jì)不是湊波形(二)FIFO(下)FIFO在FPGA設(shè)計(jì)中除了上篇所介紹的功能之外,還有以下作為以下功能使用:(1)內(nèi)存申請?jiān)谲浖O(shè)計(jì)中,使用malloc()和free()等函數(shù)可以用于內(nèi)存的申請和釋放。特別是在有操作系統(tǒng)的環(huán)境下,可以保證系統(tǒng)的內(nèi)存空間被動(dòng)態(tài)的分配和使用,非常的方便。如果在FPGA內(nèi)部實(shí)現(xiàn)此動(dòng)態(tài)的內(nèi)存分配和申請,相對來說較為復(fù)雜,例如某些需要外部數(shù)據(jù)存儲且需動(dòng)態(tài)改變的應(yīng)用需求下,需要對FPGA外部DDR(或SRAM等)的存儲空間,進(jìn)行動(dòng)態(tài)的分配和釋放。通過使用FIFO作為內(nèi)存分配器,雖然比不上軟件的靈活和方便,但是使用也較為簡便。舉例說明假設(shè)外部存儲空間為8Mbyte,可將其劃分為8192個(gè)1Kbyte空間。并將數(shù)值08191存儲FIFO中,F(xiàn)IFO內(nèi)部存儲所標(biāo)示可用的內(nèi)存空間。如下圖所示。首先,進(jìn)行內(nèi)存的初始化,即將08191寫入FIFO中。如需申請內(nèi)存后,從FIFO中讀取值A(chǔ),然后根據(jù)A的標(biāo)示,寫入A所指示的外部存儲區(qū)(DDR)中相應(yīng)的位置,即申請{A,10’h0_00} {A,10’h3_FF}的空間區(qū)域。如釋放內(nèi)存后,即可向FIFO中寫入相應(yīng)的值。即可保證下次該空間能夠被設(shè)計(jì)使用。在此種設(shè)計(jì)中,F(xiàn)IFO承擔(dān)了內(nèi)存分配和釋放器的角色。此時(shí)只能申請或釋放最小單元倍數(shù)的內(nèi)存空間,如本例所示:為1Kbit。如FIFO讀空,則代表申請內(nèi)存失敗,需要等待其他塊內(nèi)存釋放后再寫入FIFO中,才能再次申請。(2)串并轉(zhuǎn)換對于串并轉(zhuǎn)換,可能對于FPGA工程師來說,非常常見,但是如果有專門的IP實(shí)現(xiàn)此功能,可簡化設(shè)計(jì),減少出錯(cuò)及驗(yàn)證的工作量。例如:對于外部輸入的需要進(jìn)行串并轉(zhuǎn)換的信號,并進(jìn)行存儲的信號,如設(shè)計(jì)進(jìn)行串并轉(zhuǎn)換在存儲等操作,設(shè)計(jì),可以直接通過例化讀寫位寬不一致的FIFO,例如1入8出的FIFO,可直接將外部輸入信號直接轉(zhuǎn)換成8BIT信號并進(jìn)行存儲后,供后續(xù)處理使用(其他的)。(3)業(yè)務(wù)優(yōu)先級劃分通過FIFO設(shè)置不同水位線,可以劃分不同的業(yè)務(wù)優(yōu)先級,保證高業(yè)務(wù)優(yōu)先級數(shù)據(jù)流在帶寬受限時(shí),優(yōu)先通過,而低業(yè)務(wù)優(yōu)先級只能在滿足高優(yōu)先級需求后有多余的帶寬時(shí)才能通過。并且可以劃分多個(gè)優(yōu)先級,滿足多種業(yè)務(wù)的需求。設(shè)計(jì)將在以后篇幅中詳述。(4)固定帶寬設(shè)定通過對FIFO接口的讀出使能,能夠保證實(shí)現(xiàn)固定帶寬的輸出,例如FIFO讀接口為32bit,而讀時(shí)鐘為50Mhz。如實(shí)現(xiàn)固定帶寬的輸出(如1Gbit/S),有兩種方式,。另一種方式,可通過讀信號中間插入等待周期,如果讀出長度為N的數(shù)據(jù)所需時(shí)鐘周期為M,則需等待(3M/5)的周期,從而降低至1Gbit/S的處理能力,這在某些需要進(jìn)行流量限制的業(yè)務(wù)方式中使用。對于FIFO來說,作為FPGA內(nèi)部資源的一個(gè)常用器件,最常見應(yīng)用于異步時(shí)鐘域劃分和緩沖數(shù)據(jù),但不僅限于此,簡化設(shè)計(jì)、減少耦合、輸入輸出接口固定,便于仿真和驗(yàn)證,都是使用FIFO帶來的設(shè)計(jì)上的益處。設(shè)計(jì)不是湊波形(三)RAM在FPGA內(nèi)部資源中,RAM是較為常用的一種資源。 通常實(shí)例化RAM中,一種使用為BLOCK RAM也就是塊RAM另外資源可以通過寄存器搭,也就是分布式RAM。前者一般用于提供較大的存儲空間,后者則提供小的存儲空間。 在實(shí)際應(yīng)用過程中,一般使用的包括,單端口、雙端口RAM,ROM等形式等不同的形式。實(shí)際應(yīng)用中FIFO也是利用RAM和邏輯一起實(shí)現(xiàn)的。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1