在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用VHDL語言和格雷碼對地址進行編碼的異步FIFO的設計

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-08-02 08:10 ? 次閱讀

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

1 異步FIFO功能描述

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

利用VHDL語言和格雷碼對地址進行編碼的異步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);

dout:out std_logic_vector(width-1 downto 0);

end norm_to_grey;

architecture norm_to_grey of norm_to_grey is begin

dout《=din xor(‘0’ & din(width-1 downto 1));

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)《=tempd;

end loop;

end process;

在給出異步FIFO的VHDL程序之前,先給出一些內部信號的解釋:

wadd ——自然碼寫地址

wadd_grey ——格雷碼寫地址

wr_radd_grey ——寫時鐘采樣的格雷碼讀地址

wr_radd ——寫時鐘采樣的自然碼讀地址

almost_length ——產生將滿和將空標志的予定義讀寫地址差值

程序3:寫地址產生模塊,此程序同時產生寫地址的自然碼和格雷碼

waddp《=wadd+1;

u1:norm_to_grey

port map(waddp,wadd_grey_temp);

wadd_process:process(clr,wr_clk)

begin

if clr=‘0’then

wadd《=(others=》‘0’);

wadd_grey《=(others=》‘0’);

elsif wr_clk‘event and wr_clk=’1‘then

if wren=’1‘then

wadd《=waddp;

wadd_grey《=wadd_grey_temp;

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《=(others=》’0‘);

wr_radd《=(Others=》’0‘)

elsif wr_clk’event and wr_clk=‘1’then

wr_radd_grey《=radd_grey;

wr_radd《=wr_radd_temp;

end if;

end process;

wr_compare《=wadd-wr_radd;

full_process:process(clr,wr_clk)

begin

if clr=‘0’then

full《=‘0’;

elsif wr_clk‘event and wr_clk=’1‘then

if(wren=’1‘)then

if wr_compare=“11111110”then full《=’1‘;

else full《=’0‘;

end if;

else

if wr_compare=“11111111”then full《=’1‘;

else full《=’0‘;

end if;

end if;

end if;

end process;

almost_full_process:process(clr,wr_clk)

begin

if clr=’0‘ then

almost_full《=’0‘;

elsif wr_clk’event and wr_clk=‘1’then

if(wren=‘1’)then

if wr_compare》(“11111110”-almost_length)then almost_full《=‘1’;

else almost_full《=‘0’;

end if;

else

if wr_compare》(“11111111”-almost_length)then almost_full《=‘1’;

else almost_full《=‘0’;

end if;

end if;

end if;

end process;

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

4 結論

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


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7081

    瀏覽量

    89178
  • eda
    eda
    +關注

    關注

    71

    文章

    2768

    瀏覽量

    173426
  • vhdl
    +關注

    關注

    30

    文章

    817

    瀏覽量

    128173
收藏 人收藏

    評論

    相關推薦

    什么是

    (Gray code),又叫循環二進制或反射二進制 在數字系統中只能識別0和1,各種數據要轉換為二進制代碼才能
    發表于 11-11 09:34 ?7382次閱讀
    什么是<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>

    異步FIFO設計之

    相鄰的只有1bit的差異,因此常常用于異步
    的頭像 發表于 11-01 17:37 ?1435次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>設計之<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>

    簡介及格與二進制的轉換程序

    ] 。  屬于可靠性編碼,是一種錯誤最小化的編碼,因為它大大地減少了由一個狀態到下一個狀態時電路中的混淆。由于這種
    發表于 04-22 09:00

    的規則和應用問題?

    今天看到一個計數的程序,搜了下定義,覺得還是云里霧里,定義寫的是若任意兩個相鄰的代碼只有一位二進制數不同,則這種編碼
    發表于 08-20 14:41

    如何設計一個可靠性高、速度高的異步FIFO電路?

    通過對FPGA芯片內部EBRSRAM的深入研究,提出了一種利用對地址進行
    發表于 04-13 06:41

    基于FPGA的正速調整的設計與實現

    本文提出了基于FPGA 正速調整的設計方案,采用對地址編碼
    發表于 01-13 15:16 ?25次下載

    高速異步FIFO的設計與實現

    本文主要研究了用FPGA 芯片內部的EBRSRAM 來實現異步FIFO 設計方案,重點闡述了異步FIFO 的標志信號——空/滿狀態的設計思路,并且用
    發表于 01-13 17:11 ?40次下載

    異步FIFOVHDL設計

    給出了一個利用對地址編碼的羿步FIFO 的實現
    發表于 07-16 15:15 ?26次下載

    運算研究

    運算研究 在數字系統中只能識別0和1,各種數據要轉換為二進制代碼才能進行處理,
    發表于 03-18 14:07 ?1463次閱讀

    循環VHDL源程序

    我們知道計數的特點就是相鄰的碼字只有一個比特不同,那么我們在設計計數時找到這個比特取
    發表于 11-11 09:32 ?2117次閱讀

    編碼規則_有什么規律

    典型的二進制簡稱,因1953年公開的弗蘭克·
    的頭像 發表于 03-02 14:29 ?5.6w次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b><b class='flag-5'>編碼</b>規則_<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>有什么規律

    編碼器基礎——這樣圖案化編碼的好處

    (Gray Code)因1953年公開的弗蘭克.的專利而得名。
    的頭像 發表于 01-11 10:28 ?1.6w次閱讀
    <b class='flag-5'>編碼</b>器基礎——<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>這樣圖案化<b class='flag-5'>編碼</b>的好處

    異步FIFO的原因有哪些

    異步FIFO通過比較讀寫地址進行滿空判斷,但是讀寫地址屬于不同的時鐘域,所以在比較之前需要先將讀寫地址
    的頭像 發表于 08-04 14:05 ?4451次閱讀

    結構光|解碼方法

    是一種特殊的二進制,在結構光三維視覺中,常常被用于編碼。比起我們常見的二進制
    的頭像 發表于 12-21 11:14 ?1266次閱讀

    異步FIFO-

    很多人在面試時被問到為什么異步FIFO中需要用到,可能大部分的答案是
    的頭像 發表于 08-26 14:20 ?1012次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>-<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>
    主站蜘蛛池模板: 免费观看黄视频网站| 综合涩| 精品乱人伦一区二区三区| 狼人久草| 最新在线网址| 视频一区二区三区在线观看| 成人中文字幕一区二区三区| 婷婷爱爱| 欧美人与禽| 国产一卡二卡≡卡四卡无人| aaa一级最新毛片| 色综合免费视频| 国产高清在线精品| 色婷婷激情综合| 色男人网| 久久婷婷国产综合精品| 国产精品麻豆va在线播放| 午夜小福利| 国产伦精品一区二区三区网站| 黄色网址网站在线观看| 免费大片黄在线观看| 亚洲成a人v在线观看| 热re99久久精品国产99热| 狠狠叉| 亚洲男人天堂2021| 国语对白一区二区三区| 四虎免费永久观看| 久久99精品久久久久久臀蜜桃| 99久久99久久久99精品齐 | 最新国产厕所| 色综合久久综合| 国产在线一卡二卡| 天天操夜夜干| xxx黄色片| 香蕉视频啪啪| 久久精品亚瑟全部免费观看| 一本大道加勒比久久| 高清成年美女xx免费网站黄| 老师喂我吃她的奶水脱她胸罩| 谁有毛片网站| 丁香婷五月|