国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

異步FIFO的VHDL設計

發布時間:2010-8-5 15:40    發布者:lavida
關鍵詞: FIFO , VHDL , 異步
FIFO (先進先出隊列)是一種在電子系統得到廣泛應用的器件,通常用于數據的緩存和用于容納異步信號的頻率或相位的差異。FIFO的實現通常是利用雙口RAM和讀寫地址產生模塊來實現的。FIFO的接口信號包括異步的寫時鐘(wr_clk)和讀時鐘(rd_clk)、與寫時鐘同步的寫有效(wren)和寫數據(wr_data)、與讀時鐘同步的讀有效(rden)和讀數據(rd_data)。為了實現正確的讀寫和避免FIFO的上溢或下溢,通常還應該給出與讀時鐘和寫時鐘同步的FIFO的空標志(empty)和滿標志(full)以禁止讀寫操作。  

1 異步FIFO功能描述  

圖1給出了FIFO的接口信號和內部模塊圖。  

  
由圖1可以看出,寫地址產生模塊根據寫時鐘和寫有效信號產生遞增的寫地睛,讀地址產生模塊根據讀時鐘和讀有效信號產生遞增的讀地址。FIFO的操作如下:在寫時鐘wr_clk的升沿,當wren有效時,將wr_data寫入雙口RAM中寫地址對應的位置中;始終將讀地址對應的雙口RAM中的數據輸出到讀數據總線上。這樣就實現了先進先出的功能。

  寫地址產生模塊還根據讀地址和寫地址關系產生FIFO的滿標志。當wren有效時,若寫地址+2=讀地址時,full為1;當wren無效時,若寫地址+ 1=讀地址時,full為1。讀地址產生模塊還根據讀地址和寫地址的差產生FIFO的空標志。當rden有效時,若寫地址-1=讀地址時,empty為 1;當rden無效時,若寫地址=讀地址時,empty為1。按照以上方式產生標志信號是為了提前一個時鐘周期產生對應的標志信號。
由于空標志和滿標志控制了FIFO的操作,因此標志錯誤會引起操作的錯誤。如上所述,標志的產生是通過對讀寫地址的比較產生的,當讀寫時鐘完全異步時,對讀寫地址進行比較時,可能得出錯誤的結果。例如,在讀地址變化過程中,由于讀地址的各位變化并不同步,計算讀寫地址的差值,可能產生錯誤的差值,導致產生錯誤的滿標志信號。若將未滿標志置為滿標志時,可能降低了應用的性能,降低寫數據速率;而將滿置標志置為未滿時,執行一次寫操作,則可能產生溢出錯誤,這對于實際應用來說是絕對應該避免的。空標志信號的產生也可能產生類似的錯誤。  

2 異步FIFO的改進設計  

從以上分析中可以看出,異步FIFO之所以會發生錯誤是國為在地址變化時,由于多位地址各位變化時間不同,異步時鐘對其進行采樣時數值可能為不同于地址變化喪后數值的其他值,異步產生錯誤的空標志和滿標志,以致于產生FIFO的操作錯誤。  

格雷碼是一種在相鄰計數值之間只有一位發生變化的編碼方式。可以看出,若讀寫地址采用格雷碼編碼方式,就可以解決上面的問題。  
為了應用的靈活,還增加了兩個標志信號,將滿(almosf_full)標志和空(almost_empty)標志分別定義如下:當寫地址與讀地址的距離小于某個預先定義數值時,almost_full為1;當讀地址與寫地址的距離小于這個預先定義的數值時,almost_empty為1。  

3 異步FIFO的VHDL實現  

硬件描述語言VHDL(Very-high speed IC Hardware Description Language)是一種應用于電路設計的高層次描述語言,具有行為級、寄存器傳輸級和門級等多層次描述,并且具有簡單、易讀、易修改和與工藝無關等優點。目前VHDL語言已經得到多種EDA工具的支持,綜合工具得到迅速發展,VHDL語言的行為級綜合也已經得到支持和實現,因此利用VHDL語言進行電路設計可以節約開發成本和周期。  

首先給出格雷碼和普通自然碼之間的轉換模塊的VHDL程序。  

程序1:自然碼碼到格雷碼的轉換程序  
entity norm_to_gery is  
generic(width:integer:=8);  
port(  
din:in std_logic_vector(width-1 downto 0);  
doutut std_logic_vector(width-1 downto 0);  
end norm_to_grey;  
architecture norm_to_grey of norm_to_grey is begin  
dout  
end norm_to_grey;  

程序2:格雷碼到自然碼的轉換程序  
process(din)  
variable tempd:std_logic;  
begin  
for i in width-1 downto 0 loop tempd:='0';  
for j in width-1 downto i loop tempd:=tempd xor din(j);  
end loop;  
dout(i)  
end loop;  
end process;  
在給出異步FIFO的VHDL程序之前,先給出一些內部信號的解釋:  
wadd ——自然碼寫地址  
wadd_grey ——格雷碼寫地址  
wr_radd_grey ——寫時鐘采樣的格雷碼讀地址  
wr_radd ——寫時鐘采樣的自然碼讀地址  
almost_length ——產生將滿和將空標志的予定義讀寫地址差值  

程序3:寫地址產生模塊,此程序同時產生寫地址的自然碼和格雷碼  
waddp  
u1:norm_to_grey  
port map(waddp,wadd_grey_temp);  
wadd_process:process(clr,wr_clk)  
begin  
if clr='0'then  
wadd'0');  
wadd_grey'0');  
elsif wr_clk'event and wr_clk='1'then  
if wren='1'then  
wadd  
wadd_grey  
end if;  
end if;  
end process;  

程序4:滿標志和滿標志產生模塊,以8位地址為例。  
u2:grey_to_norm  
port map(wr_radd_grey,wr_radd_temp);  
process(clr,wr_clk~  
begin  
if clr='0'then  
wr_radd_grey'0');  
wr_radd'0')  
elsif wr_clk'event and wr_clk='1'then  
wr_radd_grey  
wr_radd  
end if;  
end process;  
wr_compare  
full_process:process(clr,wr_clk)  
begin  
if clr='0'then  
full  
elsif wr_clk'event and wr_clk='1'then  
if(wren='1')then  
if wr_compare="11111110"then full  
else full  
end if;  
else  
if wr_compare="11111111"then full  
else full  
end if;  
end if;  
end if;  
end process;  
almost_full_process:process(clr,wr_clk)  
begin  
if clr='0' then  
almost_full  
elsif wr_clk'event and wr_clk='1'then  
if(wren='1')then  
if wr_compare>("11111110"-almost_length)then almost_full  
else almost_full  
end if;  
else  
if wr_compare>("11111111"-almost_length)then almost_full  
else almost_full  
end if;  
end if;  
end if;  
end process;  

讀地址的產生模塊和空標志及空標志的產生模塊與寫地址模塊類似。  

4 結論  

為了解決FIFO的異步操作問題,本文提出了一種利用格雷碼對地址進行編碼的異步FIFO的設計,并采用VHDL語言進行電路設計,利用Altera公司 FLEX10KE系列FPGA得以實現,該電路軟件仿真和硬件實現已經通過驗證,并被應用到各種電路中。實踐證明它可以解決由于異步產生的錯誤,同時增加了應用靈活性。
本文地址:http://www.qingdxww.cn/thread-19519-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
  • 我們是Microchip
  • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
  • 利用模擬開發工具生態系統進行安全電路設計
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99亚洲视频| 青青草原综合久久大伊人精品 | 麻豆91免费视频 | 日韩视频在线观看一区二区 | 男女视频网站在线观看 | 在线观看麻豆精品国产不卡 | 成年女人午夜毛片免费看 | 国产欧美自拍 | 欧美网站在线 | 日本在线亚州精品视频在线 | 国产在线观看入口 | 91频视 | 91先生在线观看 | 青青青国产精品国产精品美女 | 国产成人aa免费视频 | 青青青国产成人久久111网站 | 日韩高清在线观看 | 99久久精品久久久久久清纯 | 狠狠插综合 | 国产三级精品三级在线专区1 | 日本大片aa特黄 | 久久老司机 | 敢死队4完整版在线观看 | 国产高清a毛片在线看 | 在线麻豆国产传媒60在线观看 | 欧美日韩高清不卡免费观看 | 天天插天天插天天插 | 久久丁香视频 | 四虎网站1515hh四虎 | 我的女儿韩国电视剧在线观看 | 精品一级毛片 | 日韩一区二区超清视频 | 国产永久在线 | 久久98精品久久久久久婷婷 | 国产美女啪啪 | 亚洲日韩精品欧美一区二区 | 91麻精品国产91久久久久 | 99热视热频这里只有精品 | 免费欧洲毛片a级视频老妇女 | 亚洲三级大片 | 亚洲丶国产丶欧美一区二区三区 |