中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

集團(tuán)定制網(wǎng)站建設(shè)公司百度快照是什么意思?

集團(tuán)定制網(wǎng)站建設(shè)公司,百度快照是什么意思?,it外包公司簡(jiǎn)介,花鄉(xiāng)做網(wǎng)站公司1.簡(jiǎn)介 FIFO( First Input First Output)簡(jiǎn)單說(shuō)就是指先進(jìn)先出。FIFO存儲(chǔ)器是一個(gè)先入先出的雙口緩沖器,即第一個(gè)進(jìn)入其內(nèi)的數(shù)據(jù)第一個(gè)被移出,其中一個(gè)口是存儲(chǔ)器的輸入口,另一個(gè)口是存儲(chǔ)器的輸出口。 對(duì)于單片F(xiàn)IFO來(lái)說(shuō),主要有兩種…

1.簡(jiǎn)介

????????FIFO( First Input First Output)簡(jiǎn)單說(shuō)就是指先進(jìn)先出。FIFO存儲(chǔ)器是一個(gè)先入先出的雙口緩沖器,即第一個(gè)進(jìn)入其內(nèi)的數(shù)據(jù)第一個(gè)被移出,其中一個(gè)口是存儲(chǔ)器的輸入口,另一個(gè)口是存儲(chǔ)器的輸出口。

????????對(duì)于單片F(xiàn)IFO來(lái)說(shuō),主要有兩種結(jié)構(gòu):觸發(fā)導(dǎo)向結(jié)構(gòu)和零導(dǎo)向傳輸結(jié)構(gòu)。觸發(fā)導(dǎo)向傳輸結(jié)構(gòu)的FIFO是由寄存器陣列構(gòu)成的,零導(dǎo)向傳輸結(jié)構(gòu)的FIFO是由具有讀和寫(xiě)地址指針的雙口RAM構(gòu)成。

? ? ? ? FIFO與普通RAM存儲(chǔ)器的區(qū)別是沒(méi)有外部讀寫(xiě)地址線(指針),使用方便,但缺點(diǎn)是只能順序?qū)懭霐?shù)據(jù)和讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫(xiě)指針自動(dòng)加1完成,不能像普通存儲(chǔ)器那樣可以由地址線決定讀取或?qū)懭肽硞€(gè)指定的地址。

1.1.功能

????????FIFO存儲(chǔ)器是系統(tǒng)的緩沖環(huán)節(jié),主要有幾方面的功能:

????????????????1)對(duì)連續(xù)的數(shù)據(jù)流進(jìn)行緩存,防止在進(jìn)機(jī)和存儲(chǔ)操作時(shí)丟失數(shù)據(jù);

????????????????2)數(shù)據(jù)集中起來(lái)進(jìn)行進(jìn)棧和存儲(chǔ),可避免頻繁的總線操作,減輕CPU的負(fù)擔(dān);

????????????????3)允許系統(tǒng)進(jìn)行DMA操作,提高數(shù)據(jù)的傳輸速度。這是至關(guān)重要的一點(diǎn),如果不采用DMA操作,數(shù)據(jù)傳輸將達(dá)不到傳輸要求,而且大大增加CPU的負(fù)擔(dān),無(wú)法同時(shí)完成數(shù)據(jù)的存儲(chǔ)工作。

1.2.用途

1.2.1.跨時(shí)鐘域多bit數(shù)據(jù)傳輸

????????解決一個(gè)系統(tǒng)多個(gè)時(shí)鐘所帶來(lái)的問(wèn)題:異步時(shí)鐘之間的接口電路。異步FIFO是解決這個(gè)問(wèn)題的一種便捷簡(jiǎn)單的方案,使用異步FIFO可以在兩個(gè)不同時(shí)鐘系統(tǒng)之間快速方便地傳輸實(shí)時(shí)數(shù)據(jù)。

1.2.2.達(dá)到數(shù)據(jù)匹配問(wèn)題(讀寫(xiě)位寬不一致)

????????對(duì)于不同寬度的數(shù)據(jù)接口也可以使用FIFO,例如單片機(jī)的8位輸出而DSP可能是16位輸入,在單片機(jī)與DSP連接時(shí)就可以使用FIFO來(lái)達(dá)到數(shù)據(jù)匹配的目的。

1.3.主要參數(shù)

  • 寬度(WIDTH):FIFO每個(gè)地址的數(shù)據(jù)位寬(W);
  • 深度(DEEPTH):FIFO可以存儲(chǔ)多少個(gè)W位的數(shù)據(jù);
  • 滿(full)標(biāo)志:FIFO已滿或?qū)M時(shí),會(huì)輸出一個(gè)對(duì)寫(xiě)操作的反壓信號(hào),以阻止被繼續(xù)寫(xiě)入數(shù)據(jù)而溢出;
  • 空(empty)標(biāo)志:FIFO已空或?qū)⒖諘r(shí),會(huì)輸出一個(gè)對(duì)讀操作的反壓信號(hào),以避免被繼續(xù)讀出無(wú)效數(shù)據(jù);
  • 讀/寫(xiě)時(shí)鐘:讀/寫(xiě)操作所遵循的時(shí)鐘,每個(gè)時(shí)鐘沿觸發(fā)。

? ? ? ? 根據(jù)FIFO工作的時(shí)鐘域分為同步/異步FIFO。同步FIFO是指讀時(shí)鐘和寫(xiě)時(shí)鐘為同一個(gè)時(shí)鐘在時(shí)鐘沿來(lái)臨時(shí)同時(shí)發(fā)生讀寫(xiě)。異步FIFO讀寫(xiě)時(shí)鐘不一致,讀寫(xiě)相互獨(dú)立。

????????讀寫(xiě)指針即讀寫(xiě)地址,當(dāng)前讀/寫(xiě)操作完成后,指針自動(dòng)加一指向下一個(gè)地址(連續(xù)遞增)。

  • 寫(xiě)指針:總是指向下一個(gè)將要被寫(xiě)入的地址,復(fù)位時(shí)指向編號(hào)0的地址;
  • 讀指針:總是指向下一個(gè)將要被讀出的數(shù)據(jù)地址,復(fù)位時(shí)也指向編號(hào)0的地址且此時(shí)數(shù)據(jù)無(wú)效;

2.工作原理

2.1.空滿標(biāo)志

2.1.1.讀空信號(hào)(rd_empty)

? ? ? ? 一般情況下當(dāng)讀寫(xiě)指針相等時(shí),表明FIFO已空,這種情況發(fā)生在復(fù)位操作時(shí)或當(dāng)讀指針讀出FIFO中最后一個(gè)有效數(shù)據(jù)時(shí)(即讀指針追趕上寫(xiě)指針),此時(shí)讀空信號(hào)有效,如下左圖:

在這里插入圖片描述在這里插入圖片描述

2.1.2.寫(xiě)滿信號(hào)(wr_full)

? ? ? ? 當(dāng)讀寫(xiě)指針再次相等時(shí),即寫(xiě)指針轉(zhuǎn)了一圈又折回來(lái)(wrapped around)從起始低位追上了讀指針(寫(xiě)比讀快),此時(shí)表明FIFO已滿,如上右圖:

2.2.空滿判斷機(jī)制

2.2.1.同步fifo空滿判斷

  • 方案一:extra bit

? ? ? ? ????????深度為N=2^{n}的FIFO其地址位寬為n,若數(shù)據(jù)位寬為W則該FIFO的容量為N*W bits。

? ? ? ? ????????現(xiàn)在在指針添加1個(gè)extra bit即地址的MSB,使其變?yōu)閚+1 bits,該extra bit用來(lái)指示讀/寫(xiě)指針是否連續(xù)遞增并越過(guò)了FIFO的最后一個(gè)地址,若越過(guò)則該MSB加1,其他位清零。例如深度為8的fifo,需要采用1+3bits的地址位寬,MSB作為指針折回標(biāo)志,低3bits作為地址。

? ? ? ? ????????那么判斷機(jī)制讀指針讀出FIFO最后一個(gè)有效數(shù)據(jù)后即會(huì)停止遞增)為:

????????????????①如果兩個(gè)指針的MSB不同,就說(shuō)明寫(xiě)指針比讀指針多折回一次,此時(shí)若除開(kāi)MSB以外的地址位相等,則表示FIFO已滿;

????????????????②如果兩個(gè)指針的MSB相同,就說(shuō)明讀寫(xiě)指針的折回次數(shù)相同,若其他地址位相等,則表示讀寫(xiě)指針完全相等,FIFO已空。

  • 方案二:設(shè)置數(shù)據(jù)計(jì)數(shù)器

? ? ? ? ????????設(shè)置一個(gè)data_counter,當(dāng)寫(xiě)使能有效時(shí)數(shù)據(jù)計(jì)數(shù)器加1,每讀出一個(gè)數(shù)據(jù)時(shí)該計(jì)數(shù)器又減1。如此,當(dāng)data_counter=0時(shí)FIFO為空,data_counter=FIFO深度時(shí)表明已滿。

? ? ? ? ????????缺點(diǎn):計(jì)數(shù)器會(huì)占用額外資源,當(dāng)FIFO較大時(shí),可能會(huì)降低FIFO的讀寫(xiě)速度。

2.2.2.異步fifo空滿判斷

  • 判斷步驟如下:

????????????????①地址指針采用二進(jìn)制(binary)+extra bit

????????????????②二進(jìn)制指針轉(zhuǎn)gray碼后跨時(shí)鐘域同步做比較

????????當(dāng)讀寫(xiě)指針采用二進(jìn)制表示且讀寫(xiě)操作屬于異步時(shí)鐘時(shí),讀寫(xiě)指針做比較前需要先將其中一個(gè)指針同步到另一個(gè)指針的時(shí)鐘域后再操作,直接同步這樣容易產(chǎn)生亞穩(wěn)態(tài)問(wèn)題。

????????可以使用一個(gè)二進(jìn)制轉(zhuǎn)gray碼的轉(zhuǎn)換電路,將地址轉(zhuǎn)換為對(duì)應(yīng)的gray碼后再同步到另一個(gè)時(shí)鐘域,進(jìn)行對(duì)比產(chǎn)生空滿指示,如左下圖:

在這里插入圖片描述

? ? ? ? ????????例如1+3bits的二進(jìn)制地址完全轉(zhuǎn)換為gray后如右上圖所示,此時(shí)空滿標(biāo)志不能按照原來(lái)二進(jìn)制的方法來(lái)判斷,gary碼指針的空滿判斷標(biāo)準(zhǔn)如下:

? ? ? ? ????????空標(biāo)志:gray碼地址完全相等(包括MSB)。

? ? ? ? ????????滿標(biāo)志:高兩位(MSB+次高位)不同,其余各位相同。

? ? ? ? ? ? ? ? PS:二進(jìn)制與格雷碼互相轉(zhuǎn)換?。

  • 補(bǔ)充:

? ? ? ? ? ? ? ? ①同步方向產(chǎn)生保守的空滿機(jī)制:

? ? ? ? ? ? ? ? ????????讀指針同步到寫(xiě)時(shí)鐘域:經(jīng)過(guò)一定的同步時(shí)間后,此時(shí)同步后(寫(xiě)時(shí)鐘域的)讀指針小于或等于真實(shí)的(讀時(shí)鐘域)的讀指針,而寫(xiě)指針是即時(shí)且真實(shí)的,空滿判斷機(jī)制可產(chǎn)生保守的“假寫(xiě)滿”(正確且安全設(shè)計(jì))和錯(cuò)誤的“讀空”。

????????????????????????反之同理,總結(jié):寫(xiě)時(shí)鐘域產(chǎn)生正確的“假寫(xiě)滿”,讀時(shí)鐘域產(chǎn)生正確的“假讀空”

? ? ? ? ? ? ? ? ②由于讀寫(xiě)異步快時(shí)鐘域同步慢時(shí)鐘域指針可能會(huì)漏采,不會(huì)影響空滿判斷邏輯:

? ? ? ? ? ? ? ? ? ? ? ? 舉例讀慢寫(xiě)快:寫(xiě)指針同步到讀時(shí)鐘域發(fā)生漏采,即讀時(shí)鐘域采樣到的寫(xiě)指針小于真實(shí)的(寫(xiě)時(shí)鐘域的)寫(xiě)指針,此時(shí)不會(huì)導(dǎo)致“讀空判斷邏輯”錯(cuò)誤,也是保守且正確的。反之亦然。

3.FIFO代碼設(shè)計(jì)示例

3.1.同步FIFO代碼

????????同步FIFO由于沒(méi)有跨時(shí)鐘的操作,所以只需要使用二進(jìn)制即可,不用格雷碼操作。根據(jù)上面的分析,有兩種方法進(jìn)行表示full/empty狀態(tài),代碼如下:

//1、generate full/empty signal by addr
assign full = (waddr_ptr == {~raddr_ptr[ADDR_WIDTH-1],radde_ptr[ADDR_WIDTH-2:0]});
assign empty = (waddr_ptr == raddr_ptr);
//2、generate full/empty signal by conuter
always @(posedge clk or negedge rst_n)beginif(!rst_n)begindata_cnt <= {ADDR_WIDTH{1'b0}};endelse if(wen && ren && !full && !empty)begindata_cnt <= data_cnt;endelse if(wen && !full)begindata_cnt <= data_cnt + 1'b1;endelse if(ren && !empty)begindata_cnt <= data_cnt - 1'b1;end
endassign full = (data_cnt == FIFO_DEPTH);
assign empty = (data_cnt == 0);

3.2.異步FIFO代碼

????????由于存在讀寫(xiě)時(shí)鐘不同步的問(wèn)題,采用的解決方法是:加兩級(jí)寄存器同步 + 格雷碼(目的都是消除亞穩(wěn)態(tài)),代碼示例如下:?

`timescale 1ns/1ps
module async_fifo #(parameter	DATA_WIDTH	= 32,parameter	DATA_DEPTH	=  8,parameter	PTR_WIDTH	= $clog2(DATA_DEPTH)
)(//write interface	input  wire					 clk_wr_i,input  wire					 rst_n_wr_i,	input  wire					 wr_en_i,input  wire [DATA_WIDTH-1:0] wr_data_i ,output wire					 wr_full_o,//read interfaceinput  wire					 clk_rd_i,input  wire					 rst_n_rd_i,input  wire					 rd_en_i,output reg  [DATA_WIDTH-1:0] rd_data_o,output wire					 rd_empty_o
);reg  [DATA_WIDTH-1:0]	fifo[DATA_DEPTH-1:0];reg                     wr_ptr_ext;reg	 [ PTR_WIDTH-1:0]	wr_ptr;wire [ PTR_WIDTH  :0]	wr_ptr_gray;reg	 [ PTR_WIDTH  :0]	wr_ptr_gray_d1;reg	 [ PTR_WIDTH  :0]	wr_ptr_gray_d2;reg                     rd_ptr_ext;reg  [ PTR_WIDTH-1:0]	rd_ptr;wire [ PTR_WIDTH  :0]	rd_ptr_gray;reg	 [ PTR_WIDTH  :0]	rd_ptr_gray_d1;reg  [ PTR_WIDTH  :0]	rd_ptr_gray_d2;//------------- ptr++ and data inout--------------
always @(posedge clk_wr_i or negedge rst_n_wr_i) beginif(!rst_n_wr_i)begin{wr_ptr_ext, wr_ptr} <= {(PTR_WIDTH+1){1'b0}};fifo[wr_ptr]         <= { (DATA_WIDTH){1'b0}};endelse if(wr_en_i && !wr_full_o)begin{wr_ptr_ext, wr_ptr} <= {wr_ptr_ext, wr_ptr} + 1'b1;fifo[wr_ptr]         <= wr_data_i;end
endalways @(posedge clk_rd_i or negedge rst_n_rd_i) beginif(!rst_n_rd_i)begin{rd_ptr_ext, rd_ptr} <= {(PTR_WIDTH+1){1'b0}};rd_data_o            <= { (DATA_WIDTH){1'b0}};endelse if(rd_en_i && !rd_empty_o)begin{rd_ptr_ext, rd_ptr} <= {rd_ptr_ext, rd_ptr} + 1'b1;rd_data_o            <= fifo[rd_ptr];end
end//--------- binary to gray ---------
assign rd_ptr_gray = {rd_ptr_ext, rd_ptr} ^ ({rd_ptr_ext, rd_ptr}>>1);
assign wr_ptr_gray = {wr_ptr_ext, wr_ptr} ^ ({wr_ptr_ext, wr_ptr}>>1);//--------- pointer sync -----------
always @(posedge clk_wr_i or negedge rst_n_wr_i) beginif(!rst_n_rd_i) beginrd_ptr_gray_d1 <= {(PTR_WIDTH+1){1'b0}};rd_ptr_gray_d2 <= {(PTR_WIDTH+1){1'b0}};endelse beginrd_ptr_gray_d1 <= rd_ptr_gray;rd_ptr_gray_d2 <= rd_ptr_gray_d1;end
endalways @(posedge clk_rd_i or negedge rst_n_rd_i) beginif(!rst_n_rd_i) beginwr_ptr_gray_d1 <= {(PTR_WIDTH+1){1'b0}};wr_ptr_gray_d2 <= {(PTR_WIDTH+1){1'b0}};endelse beginwr_ptr_gray_d1 <= wr_ptr_gray;wr_ptr_gray_d2 <= wr_ptr_gray_d1;end
end//------------ full_o and empty_o ------------------
assign wr_full_o  = (wr_ptr_gray=={~rd_ptr_gray_d2[PTR_WIDTH:PTR_WIDTH-1],rd_ptr_gray_d2[PTR_WIDTH-2:0]}) ? 1'b1 : 1'b0;
assign rd_empty_o = (rd_ptr_gray==wr_ptr_gray_d2) ? 1'b1 : 1'b0;endmodule

4.FIFO的深度計(jì)算

4.1.概念

? ? ? ? 突發(fā)(burst)傳輸:In?telecommunication, a?burst transmission?or?data burst?is the broadcast of a relatively high-bandwidth transmission over a short period。某個(gè)短時(shí)間內(nèi)相對(duì)高帶寬的數(shù)據(jù)傳輸。

????????假如模塊A不間斷地往FIFO中寫(xiě)數(shù)據(jù),模塊B同樣不間斷地從FIFO中讀數(shù)據(jù),不同的是模塊A寫(xiě)數(shù)據(jù)的時(shí)鐘頻率要大于模塊B讀數(shù)據(jù)的時(shí)鐘頻率,那么在一段時(shí)間內(nèi)總是有一些數(shù)據(jù)沒(méi)來(lái)得及被讀走,如果系統(tǒng)一直在工作,那么那些沒(méi)有被讀走的數(shù)據(jù)會(huì)越累積越多,那么FIFO的深度需要是無(wú)窮大的,因此只有在突發(fā)數(shù)據(jù)傳輸過(guò)程中討論FIFO深度才是有意義的。一次傳遞一包數(shù)據(jù)完成后再去傳遞下一包數(shù)據(jù),一段時(shí)間內(nèi)傳遞的數(shù)據(jù)個(gè)數(shù)稱為burst length。

????????FIFO的最小深度與burst rate, burst size, read and write frequency等因素有關(guān)。要確定FIFO的深度,關(guān)鍵在于計(jì)算出在突發(fā)讀寫(xiě)這段時(shí)間內(nèi)有多少個(gè)數(shù)據(jù)沒(méi)有被讀走,即FIFO的最小深度就等于沒(méi)有被讀走的數(shù)據(jù)個(gè)數(shù)。

4.2.深度計(jì)算示例

????????假定模塊A向FIFO寫(xiě)數(shù)據(jù)的時(shí)鐘頻率為fa,模塊B從FIFO讀數(shù)據(jù)的時(shí)鐘頻率為fb。

場(chǎng)景1:idle cycles in both write and(or) read

假設(shè):

  • 寫(xiě)數(shù)據(jù)時(shí)鐘頻率fa=80MHz,讀數(shù)據(jù)時(shí)鐘頻率fb=50MHz;
  • 突發(fā)長(zhǎng)度= number of data to be transferred = 120;
  • 每隔1個(gè)cycle寫(xiě)一次,每隔3個(gè)cycle讀一次。

那么:

  • 每隔1個(gè)cycle寫(xiě)一次,意味著2個(gè)cycle才寫(xiě)一個(gè)數(shù)據(jù);每隔3個(gè)cycle讀一次,意味著4個(gè)cycle才讀一個(gè)數(shù)據(jù)。
  • 寫(xiě)一個(gè)數(shù)據(jù)所需要的時(shí)間 = 2*1/80MHz = 25ns。突發(fā)傳輸中,寫(xiě)完所有數(shù)據(jù)所需要的時(shí)間 = 120*25ns = 3000ns。
  • 讀一個(gè)數(shù)據(jù)所需要的時(shí)間 = 4*1/50MHz = 80ns。在3000ns內(nèi)能夠讀走的數(shù)據(jù)個(gè)數(shù) = 3000ns/80ns = 37.5。
  • 所以在3000ns內(nèi)還沒(méi)有被讀走的數(shù)據(jù)個(gè)數(shù) = 120-37.5 = 82.5,因此FIFO的最小深度為83。

場(chǎng)景2fa ≤?fb?with no idle cycles in both write and read

假設(shè):

  • 寫(xiě)數(shù)據(jù)時(shí)鐘頻率fa=40MHz,讀數(shù)據(jù)時(shí)鐘頻率fb≥40MHz
  • 突發(fā)長(zhǎng)度= number of data to be transferred = 120
  • 在突發(fā)傳輸過(guò)程中,數(shù)據(jù)都是連續(xù)讀寫(xiě)的

由于讀數(shù)據(jù)比寫(xiě)數(shù)據(jù)要快,因此FIFO只起到跨時(shí)鐘域的作用,FIFO的最小深度為1即可。

場(chǎng)景3:Data rates are given,read and write random

????????在工程設(shè)計(jì)中還存在一種情形,只給出數(shù)據(jù)在一段時(shí)間內(nèi)的讀寫(xiě)速率,怎么讀寫(xiě)完全隨機(jī),這種情況需要考慮最壞的一種情況避免數(shù)據(jù)丟失。在最壞的情形中,讀寫(xiě)的速率應(yīng)該相差最大,也就是說(shuō)需要找出最大的寫(xiě)速率和最小的讀速率。

假設(shè):

  • 寫(xiě)數(shù)據(jù)時(shí)鐘頻率fa=80MHz,讀數(shù)據(jù)時(shí)鐘頻率fb=50MHz
  • 在寫(xiě)時(shí)鐘周期內(nèi),每100個(gè)周期就有40個(gè)數(shù)據(jù)寫(xiě)入FIFO
  • 在讀時(shí)鐘周期內(nèi),每10個(gè)周期可以有8個(gè)數(shù)據(jù)讀出FIFO

那么:

  • 首先沒(méi)有給出數(shù)據(jù)的突發(fā)長(zhǎng)度,從假設(shè)中可以得出每100個(gè)周期就有40個(gè)數(shù)據(jù)寫(xiě)入FIFO,因?yàn)閿?shù)據(jù)是隨機(jī)寫(xiě)入FIFO的,需要考慮做壞的情形,即寫(xiě)速率最大的情形,只有如下圖背靠背的情形才是寫(xiě)速率最高的情形,burst length為80。

  • 注意:這里需要驗(yàn)證一下是否有解即寫(xiě)入burst數(shù)據(jù)時(shí)間必須大于等于讀出burst數(shù)據(jù)時(shí)間,不然數(shù)據(jù)就會(huì)越累積越多,使得FIFO的深度必須為無(wú)窮大。首先寫(xiě)入80個(gè)數(shù)據(jù)需要的時(shí)間 = 1/80MHz*(80*100/40)=2500ns,讀出80個(gè)數(shù)據(jù)需要的時(shí)間 = 1/50MHz*(80*10/8)=2000ns,由于寫(xiě)入burst數(shù)據(jù)時(shí)間大于對(duì)出burst數(shù)據(jù)時(shí)間,因此有解。
  • 下面來(lái)計(jì)算FIFO最小深度,連續(xù)寫(xiě)入80個(gè)數(shù)據(jù)最快所需要時(shí)間 = 1/80MHz * 80 = 1000ns。
  • 從FIFO中讀出一個(gè)數(shù)據(jù)至少所需時(shí)間 = (1/50MHz) * (10/8) = 25ns。那么在1000ns內(nèi)能夠讀出的數(shù)據(jù) = 1000ns/25ns = 40。
  • 在1000ns內(nèi)沒(méi)有讀出的數(shù)據(jù) = 80 - 40 = 40,因此FIFO的最小深度為40。

? ? ? ? ?參考FIFO深度計(jì)算。

4.3.異步FIFO的深度不為2的正整數(shù)次冪

4.3.1.FIFO的深度為1

? ? ? ? 方案一:將深度加1變?yōu)?,這樣地址指針用1bit表示即可,且不用添加extra bit。

? ? ? ? ?方案二:采用脈沖同步讀寫(xiě)信號(hào),參考深度為1的異步FIFO設(shè)計(jì)。

? ? ? ? 方案三:采用握手機(jī)制去跨時(shí)鐘,不屬于FIFO類(lèi)型。

4.3.2.FIFO的深度為其他任意數(shù)

? ? ? ? 無(wú)論FIFO的深度為奇數(shù)或偶數(shù),都需要對(duì)地址指針擴(kuò)展1bit來(lái)作為標(biāo)志位,這樣產(chǎn)生的地址指針循環(huán)一定為偶數(shù),再利用格雷碼的環(huán)回對(duì)稱性,采用“掐頭去尾+地址偏移”的方法。

? ? ? ? 地址同步后不能采用原來(lái)2的整數(shù)次冪的gray判斷空滿機(jī)制來(lái)做判斷,此時(shí)可以將格雷碼再轉(zhuǎn)回二進(jìn)制后再做空滿判斷。

? ? ? ? 參考任意深度異步FIFO設(shè)計(jì)。

5.讀寫(xiě)位寬不一致問(wèn)題

? ? ? ? 對(duì)于異步fifo,由于地址不能跳變,fifo的位寬可以選擇輸入輸出位寬的最小公倍數(shù),會(huì)有一定的保守性。

? ? ? ? 參考FPGA之FIFO詳解,讀寫(xiě)位寬不同。

http://www.risenshineclean.com/news/23144.html

相關(guān)文章:

  • 南寧做網(wǎng)站外包網(wǎng)站優(yōu)化查詢代碼
  • 可以瀏覽國(guó)外網(wǎng)站廣告搜索引擎
  • 成都網(wǎng)站建設(shè)服務(wù)商溫嶺網(wǎng)絡(luò)推廣
  • 微信網(wǎng)站怎么做的好網(wǎng)絡(luò)推廣銷(xiāo)售是做什么的
  • 百度怎么自己做網(wǎng)站嗎發(fā)稿服務(wù)
  • 網(wǎng)站開(kāi)發(fā)手冊(cè)下載百度實(shí)時(shí)熱點(diǎn)排行榜
  • 徐州網(wǎng)站建設(shè)價(jià)格小紅書(shū)關(guān)鍵詞搜索量查詢
  • 電影院做羞羞的網(wǎng)站蘇州seo關(guān)鍵詞排名
  • 做網(wǎng)站放視頻灰色詞首頁(yè)排名接單
  • 護(hù)膚品網(wǎng)站建設(shè)的意義關(guān)鍵詞優(yōu)化難度查詢
  • 網(wǎng)站側(cè)邊欄代碼無(wú)錫網(wǎng)站服務(wù)公司
  • icp 新聞網(wǎng)站長(zhǎng)沙百度快速優(yōu)化
  • 裝修軟件app哪個(gè)最靠譜怎么做網(wǎng)站優(yōu)化
  • 自己做網(wǎng)站要服務(wù)器嗎企業(yè)網(wǎng)站優(yōu)化價(jià)格
  • 做獨(dú)立網(wǎng)站的好處網(wǎng)絡(luò)推廣最好的網(wǎng)站有哪些
  • 淄博網(wǎng)泰專業(yè)做網(wǎng)站網(wǎng)絡(luò)營(yíng)銷(xiāo)圖片素材
  • 地圖定位網(wǎng)站開(kāi)發(fā)網(wǎng)絡(luò)服務(wù)提供者
  • 建設(shè)網(wǎng)站設(shè)備預(yù)算如何制作網(wǎng)站二維碼
  • 東莞做網(wǎng)站哪個(gè)公司最好google chrome網(wǎng)頁(yè)版
  • 城鄉(xiāng)建設(shè)局和住監(jiān)局官網(wǎng)微博seo營(yíng)銷(xiāo)
  • 新思維網(wǎng)站網(wǎng)站建設(shè)公司
  • 南寧模板建站多少錢(qián)臨沂seo
  • 南寧自助模板建站服務(wù)網(wǎng)站排名咨詢
  • 設(shè)計(jì)周關(guān)鍵詞優(yōu)化排名seo
  • asp網(wǎng)站鏈接access廣州seo關(guān)鍵詞優(yōu)化是什么
  • 怎么做58同城網(wǎng)站嗎app下載推廣平臺(tái)
  • 如何在百度做網(wǎng)站推廣疫情防控最新通告
  • 北京十大活動(dòng)策劃公司哈爾濱seo優(yōu)化公司
  • 千圖網(wǎng)免費(fèi)素材圖庫(kù)海報(bào)網(wǎng)絡(luò)優(yōu)化工程師前景如何
  • 網(wǎng)站加載模式百度廣告太多