新闻中心

EEPW首页>EDA/PCB>设计应用> FLEX 10K系列EAD的应用

FLEX 10K系列EAD的应用

作者: 时间:2012-09-20 来源:网络 收藏

3.2 FIFO的设计 FIFO(First-in First-out)存储器可以从一个子系统把数据流传送到另一个子系统。它有输入和输出两个相对独立的端口,当存储器为非满载状态时,输入端允许许高速突发信息经输入缓冲器存入存储器,直到存满为止,只要存储器中有数据就允许将最先写入的内容依次通过输出缓冲器输出。FIFO可广泛应用于通信、打印机、微处理器等设备中,这些突发性的数据速率往往大于它们所能接受或处理的速率。通常这些系统需要一个缓冲器对高速数据进行存贮,直到较慢的处理进程准备好为止。但数据进入FIFO缓存的平均速率必须小于或等于数据输出速率。 每个EAB均提供了一个2048bit数据存贮区,输入寄存器可为读、写指针计数器存贮元素。周期共享的FIFO配置将在第一个时钟周期里启动一个读操作,并将数据锁存在输出寄存器中,然后在第二个时钟周期里写入,此时读出的数据在访问寄存器时仍有效,利用图2所示的交织EAB存贮功能可构成更高的全局时钟速率和更大的FIFO区域。同时通过把同一个存贮单元分布在不的地址范围还可以把几个FIFO功能集中在同一个EAB中实现。一个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[ ]: 数据输入FIFO wreq: 写请求 rreq:读请求 clock:时钟,正极性边沿触发 clockx2: 倍频时钟,正极性边沿触发 clr: 复位清FIFO sclr: 同步清零 输出 q[ ]:FIFO数据输出 full:指示FIFO已满 Empty:指示FIFO已空 3.3 双端口RAM的设计 双端口RAM有两套独立的地址线、数据线和控制信号线,适用于需要高速共享数据缓冲器的系统,实际上它常作为双CPU系统的全局存储器。下面是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[ ]:左端口数据输入 datar[ ]:或端口数据输入 addressl [ ]:左端口地址输入 addressr[ ]:右端口地址输入 wel:左端口写使能 wer:右端口写使能 clock:时钟,正极性边沿触发 clockx2:倍频时钟,正极性边沿触发 输出 ql[ ]:左端口数据输出 qr [ ]:右端口数据输出 busy:忙信号,指左、右端口同时写同一地址


上一页 1 2 下一页

关键词:FLEX10KEAD

评论


相关推荐

技术专区

关闭