<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > FLEX10K系列EAD的應用

          FLEX10K系列EAD的應用

          作者: 時間:2006-05-07 來源:網絡 收藏

          摘要:FLEX 10K是ALTERA公司研制的第一個嵌入式的PLD可編程邏輯器件系列。它具有高密度、低成本、低功率等特點,利用FLEX 10K系列CPLD可編程邏輯器件的EAB可在系統(tǒng)中實現(xiàn)邏輯功能和存貯功能,文中介紹了EAB的幾個應用實例,同時給出了采用VHDL語言編寫的VHD的文件及其具體代碼。

          本文引用地址:http://www.ex-cimer.com/article/226435.htm

          關鍵詞:CPLD 嵌入式陣列塊(EAB) FIFO 雙端口RAM VHDL

          1 概述

          FLEX 10K是ALTERA公司研制的第一個嵌入式的PLD,它具有高密度、低成本、低功率等特點,是當今ALTERA CPLD中應用前景最好的器件系列之一。它采用了重復可構造的CMOS SRAM工藝,并把連續(xù)的快速通道互連與獨特的嵌入式陣列結構相結合,同時可結合眾多可編程器件來完成普通門陣列的宏功能。每一個FLEX 10K器件均包括一個嵌入式陣列和一個邏輯陣列,因而設計人員可輕松地開發(fā)集存貯器、數(shù)字信號處理器及特殊邏輯等強大功能于一身的芯片。

          EAB(Embedded Array Blocks)的概念源于門陣列的嵌入式功能,為了使復雜的功能在盡可能小的硅片上得以實現(xiàn),通常需把定制的硅片放在門陣列基片之上。Altera公司首先把這一技術應用于FLEX 10K器件系列。

          FLEX 10K中的嵌入式陣列由一系列具有實現(xiàn)邏輯功能和存貯功能的FAB組成。EAB是在輸入、輸出口上帶有寄存器的RAM塊,利用它可以非常方便地實現(xiàn)一些規(guī)模不太大的ROM、RAM、雙端口RAM和FIFO等功能。

          2 EAB的結構

          每個FLEX 10K中的EAB均含有2048bit的RAM。另外,每個EAB單元中還包括數(shù)據(jù)區(qū)、總線和讀/寫控制等幾部分。圖1所示為EAB單元的內都結構。

          數(shù)據(jù)區(qū)是EAB的核心部分,每個EAB包含2048bit的RAM,同時又可根據(jù)數(shù)據(jù)線/地址線的不同設置將其寬度調整為2048×1bit,1024×2bit,512×4bit,256×8bit等。

          總線是指EAB中所包括的三條總線,即輸入數(shù)據(jù)總線、地址總線和輸出數(shù)據(jù)總線。其中輸入數(shù)據(jù)總線可以配制成8bit、4bit、2bit或1bit位寬;地址總線同數(shù)據(jù)總線相適應,具有8bit、9bit、10bit或11bit位寬;而輸出數(shù)據(jù)總線則與輸入總線相對應,這三條總線都設計有同步/異步兩種工作方式。

          第三部分為讀/寫控制部分。當EAB用于異步RAM電路時,必須外加RAM寫使能信號WE,以保證數(shù)據(jù)和地址信號滿足其時序要求,而當EAB用作同步RAM時,它可以產生相對其全局時鐘信號的WE信號。EAB的RAM與EPGA中的分布式RAM不同,F(xiàn)LEX 10k EAB能夠信號可預測的定時關系,而且EAB的寫使能信號(WE)即可與輸入時鐘同步工作,也可以異步工作。另外,EAB還包含用于同步設計的輸入寄存器、輸出寄存器和地址寄存器。EAB的輸出可以是寄存器輸出,也可以是組合輸出,EAB RAM的大小很靈活,因此,它既可以配置成256×8、512×4,也可以配置成1024×2或2048×1。FLEX 10K器件的EAB資源如表1所列。EAB的RAM資源較為豐富,可用來設計RAM、FIFO及雙端口RAM等許多應用電路。

          表1 FLEX 1K器件EAB資源

          器件型號EAB的個數(shù)
          EPF10K10 EPF10K10A3
          EPF10K206
          EPF10K30 EPF10K30A EPF10K30B6
          EPF10K408
          EPF10K50 EPF10K50V EPF10K50B10
          EPF10K709
          EPF10K100 EPF10K100A EPF10K100B12
          EPF10K130V EPF10K130B16

          3 FLEX 10K的應用

          3.1 RAM的設計

          RAM的設計分同步RAM或異步RAM,當設計同步RAM時,DATA信號和ADDRESS信號應在EAB中鎖存。包括WE在內,所有信號均應在EAB內完成,這樣可以排除一些可能破壞數(shù)據(jù)時序的潛在故障。當WE信號被鎖定為高時,EAB內部電路會產生一個與DATA信號和ADDRESS信號的建立和保持時間相匹配的寫脈沖。而在用異步RAM方式時,一定要遵從以下幾個原則:

          (1)WE信號一定要避免那些可能會無意覆蓋RAM區(qū)數(shù)據(jù)的時序。

          (2)WE信號的建立與保持時間一定要與DATA和ADDRESS信號相適應。

          (3)當WE=1時,ADDRESS信號不能發(fā)生變化。由于FLEX 10K器件都有多個EAB,所以可由多個EAB來構成所需要的RAM。

          LPM(Library Of Parameterized Modules)是一個參數(shù)化的模塊庫,它是優(yōu)秀的版圖設計人員和軟件人員智慧的結晶。通過修改LPM器件的某些參數(shù),可很容易地到達設計要求。下面的RAM(VHD)文件是一個寄存器輸入、寄存器輸出的1k×8RAMr VHDL設計代碼:

          RAM.VHD

          Library ieee;

          Use ieee,std_logic_1164.all;

          Library lpm;

          Use lpm.lpm-components.all;

          Entity LL is Generic (data-width:integer:=8;addr-width:interer:=10);

          Port (data:in std-logic-vector(data-width-1downto 0);

          addresss:in std-logic-vector(addr-width-1 downto 0));

          End LL;

          Architcture RAM of LL is Begin

          U1:lpm-ram-dp

          Generic map (lpm-widthad=>addr-width,lmp-width=>data-width)

          Prot map(data=>data,address=>address,we q=q);

          End;

          輸入

          data[ ]: 數(shù)據(jù)輸入RAM

          address[ ]:地址輸入RAM

          we: 寫使能

          inclock :同步輸入時鐘

          outclock: 同步輸出時鐘

          輸出

          q[ ]: 數(shù)據(jù)輸出

          3.2 FIFO的設計

          FIFO(First-in First-out)存儲器可以從一個子系統(tǒng)把數(shù)據(jù)流傳送到另一個子系統(tǒng)。它有輸入和輸出兩個相對獨立的端口,當存儲器為非滿載狀態(tài)時,輸入端允許許高速突發(fā)信息經輸入緩沖器存入存儲器,直到存滿為止,只要存儲器中有數(shù)據(jù)就允許將最先寫入的內容依次通過輸出緩沖器輸出。FIFO可廣泛應用于通信、打印機、微處理器等設備中,這些突發(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存貯功能可構成更高的全局時鐘速率和更大的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: 復位清FIFO

          sclr: 同步清零

          輸出

          q[ ]:FIFO數(shù)據(jù)輸出

          full:指示FIFO已滿

          Empty:指示FIFO已空

          3.3 雙端口RAM的設計

          雙端口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:忙信號,指左、右端口同時寫同一地址



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();