新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > FLEX 10K系列EAD的應(yīng)用

FLEX 10K系列EAD的應(yīng)用

作者: 時間:2012-09-20 來源:網(wǎng)絡(luò) 收藏

3.2 FIFO的設(shè)計 FIFO(First-in First-out)存儲器可以從一個子系統(tǒng)把數(shù)據(jù)流傳送到另一個子系統(tǒng)。它有輸入和輸出兩個相對獨立的端口,當(dāng)存儲器為非滿載狀態(tài)時,輸入端允許許高速突發(fā)信息經(jīng)輸入緩沖器存入存儲器,直到存滿為止,只要存儲器中有數(shù)據(jù)就允許將最先寫入的內(nèi)容依次通過輸出緩沖器輸出。FIFO可廣泛應(yīng)用于通信、打印機、微處理器等設(shè)備中,這些突發(fā)性的數(shù)據(jù)速率往往大于它們所能接受或處理的速率。通常這些系統(tǒng)需要一個緩沖器對高速數(shù)據(jù)進行存貯,直到較慢的處理進程準備好為止。但數(shù)據(jù)進入FIFO緩存的平均速率必須小于或等于數(shù)據(jù)輸出速率。 每個EAB均提供了一個2048bit數(shù)據(jù)存貯區(qū),輸入寄存器可為讀、寫指針計數(shù)器存貯元素。周期共享的FIFO配置將在第一個時鐘周期里啟動一個讀操作,并將數(shù)據(jù)鎖存在輸出寄存器中,然后在第二個時鐘周期里寫入,此時讀出的數(shù)據(jù)在訪問寄存器時仍有效,利用圖2所示的交織EAB存貯功能可構(gòu)成更高的全局時鐘速率和更大的FIFO區(qū)域。同時通過把同一個存貯單元分布在不的地址范圍還可以把幾個FIFO功能集中在同一個EAB中實現(xiàn)。一個512×8且周期共享的FIFO的VHDL代碼如下面的 FIFO.VHD文件所示: FIFO.VHD Library ieee; Use ieee.std_ligic_1164.all; Libreay lpm; Use lpm.lpm_components.all; Entity LL is Generic(data_width:integer:=8; numwords:integer:=256); Port(data:in std_logic_vector(data_width_1downto 0); Wreq,rreq,clock,clockx2,clr,sclr:in std_logic; Empty,full:out std_logic; q:out std_logic-,vector(lpm-width-1 downto 0)); end LL; Architecture FIFO of LL is Begin U1:csfifo Generic map (lpm-width=>data-width, Lpm-numwords=>numwords) Port map(data=>data,wreq=>wreq,rreq=>rreq,clock=>clock, clockx2=>clockx2,Clr=>clr,sclr=>sclr,empty=> empty,full=>full,q=>q); End 輸入 data[ ]: 數(shù)據(jù)輸入FIFO wreq: 寫請求 rreq:讀請求 clock:時鐘,正極性邊沿觸發(fā) clockx2: 倍頻時鐘,正極性邊沿觸發(fā) clr: 復(fù)位清FIFO sclr: 同步清零 輸出 q[ ]:FIFO數(shù)據(jù)輸出 full:指示FIFO已滿 Empty:指示FIFO已空 3.3 雙端口RAM的設(shè)計 雙端口RAM有兩套獨立的地址線、數(shù)據(jù)線和控制信號線,適用于需要高速共享數(shù)據(jù)緩沖器的系統(tǒng),實際上它常作為雙CPU系統(tǒng)的全局存儲器。下面是DTRAM、VHD的文件代碼: DPRAM.VHD Library ieee; Use ieee.std-logic-1164.all; Library altera; Use altera.maxplus2.all; Entity LL is Generic (data-width:integer:=8;Addr-width:integer:=10); Port(datal:in std_logic_vector(data-width-1 downto 0); Datar:in std_logic_vector(data_width_1 downto 0); Addressl:in std_logic_vector(addr_width_1 downto 0); Addressr:in std_logic_vector(addr_width_1 downto 0); Wel,wer:in std_logic; Clock,clockx2:in std_logic; Busy:out std_logic; Q1,qr:out std_logic_vector(data_width_1 downto 0)); End LL; Architecture DPRAM of LL is Begin U1:csdpram Generic map(lpm_width=>data_width,Lpm_widthad=>addr_width, Lpm_numwords=>1024) Port map(data=>datal,datab=>datar,Addressa=>addressl,addressb=>addressr, Wea=>wel,web=>wer, Clock=>clock,clockx2=>clockx2, Qa=>ql,qb=>qr,busy=>busy); End; 輸入 data[ ]:左端口數(shù)據(jù)輸入 datar[ ]:或端口數(shù)據(jù)輸入 addressl [ ]:左端口地址輸入 addressr[ ]:右端口地址輸入 wel:左端口寫使能 wer:右端口寫使能 clock:時鐘,正極性邊沿觸發(fā) clockx2:倍頻時鐘,正極性邊沿觸發(fā) 輸出 ql[ ]:左端口數(shù)據(jù)輸出 qr [ ]:右端口數(shù)據(jù)輸出 busy:忙信號,指左、右端口同時寫同一地址


上一頁 1 2 下一頁

關(guān)鍵詞: FLEX 10K EAD

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉