久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3941|回復: 0
打印 上一主題 下一主題
收起左側

Verilog HDL同步FIFO的設計報告

[復制鏈接]
跳轉到指定樓層
樓主
ID:300798 發表于 2018-4-2 13:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
分享一個fifo設計,基于V語言
大學物聯網工程學院
Verilog HDL項目設計報告
題目同步FIFO的設計
專業、學號電科1362910201 13629102225
授課班號6292758


摘要
FIFO【1】是First Input First Output的縮寫,先進先出隊列,這是一種傳統的按序執行方法,也是一種先進先出的數據緩存器。它與普通存儲器的區別是沒有外部讀寫地址線,這樣使用起來非常簡單,但缺點就是只能順序寫入數據,順序讀出數據,其數據地址由內部讀寫指針自動加1完成,不能像普通存儲器那樣,可以由地址線決定讀取或寫入某個指定的地址。為了提高效率和降低系統設計的難度,本文使用Verilog HDL【 2 】描述語言,通過Xilinx公司的ISE 【3】軟件進行程序編寫以及仿真,再將程序燒寫進Basys2開發板,設計實現了一種4bit-256深的同步FIFO,提供數據緩沖。
關鍵詞:同步FIFO  Verilog HDL  Basys

Abstract

FIFO is a acronym of First Input First Output, FIFO queue, which is a traditional sequential execution method, but also a FIFO data register. It differs from the ordinary that there is no external memory write address lines, so very simple to use, but the disadvantage is that the only sequential write data sequentially read out, the data read by the internal address pointer is automatically incremented by 1 to complete, not like generic memory that can be determined by the address line read from or written to a specified address. In order to improve efficiency and reduce the difficulty of system design, we use Verilog HDL description language, take advantage of Xilinx's ISE software programming and simulation, and then burn program written Basys2 development board, designed and implemented a 4bit-256 deep synchronous FIFO, provide data buffering.

Keywords: synchronous FIFO  Verilog HDL  Basys2



目錄

一、系統設計
1.1 設計目的
1.2 方案的對比分析與確定
1.2.1 初始方案
1.2.2 改進方案
1.3 電路方框圖及說明
1.4 電路設計及說明
1.4.1 頂層模塊
1.4.2 時鐘分頻模塊
1.4.3 數據輸入輸出模塊
1.4.4 譯碼模塊
二、結果與討論
2.1 調試步驟與現象
2.1.1 調試程序
2.1.2 仿真
2.1.3 燒寫程序到Basys2開發板
2.2 出現的問題與分析
2.3 對相關數據的分析與討論
三、心得體會
3.1 設計特點
3.2 評估結果
3.3 改善建議
3.4 自我體會
五、參考文獻
六、附錄
附錄一 RTL原理圖
附錄二 作品圖片

一、系統設計
1.1 設計目的
              為了鞏固和加深對“VerilogHDL數字設計與綜合”與“數字電子技術”兩門課程的理論知識及應用,了解如何使用VerilogHDL語言進行電路設計的步驟與方法,掌握ISE軟件編程以及仿真的使用方法,初步了解Basys2開發板的使用方法,同時讓我們對電子電路設計有進一步的認識,為我們后期對設計與制作的學習奠定了基礎。

1.2 方案的對比分析與確定
1.2.1 初始方案
使用100kHz作為工作時鐘。當寫入信號有效時,每個時鐘上升沿來臨,寫入一個數據,同時寄存器指針指向寄存器下一位;當讀取信號有效時,每個始終上升沿來臨,讀出一個數據。數據存滿,滿信號燈亮;無數據時,空信號燈亮。
缺點:該方案的程序燒錄進Basys2開發板后,對輸入數據有很高的要求,首先速度必須很快,因為每一個上升沿來臨就會寫入一個數據,如果數據輸入不及時,同一個數據將被輸入兩遍,讀出速度太快,丟包率高。
優點:該方案適合于仿真,可以快速實現功能仿真。
1.2.2 改進方案
同樣使用100kHz作為工作時鐘。先使用開關設置好4位要寫入的數據,按下寫入按鍵后該數據寫入寄存器;隨時可按下讀取按鍵,讀出一個數據并顯示在數碼管上。數據存滿,滿信號燈亮;無數據時,空信號燈亮。
缺點:該方案仿真時間相對較長。
優點:該方案的程序燒錄進Basys2開發板后,隨時可以寫入數據,同時可以隨時讀出數據,速度自由,目前測試丟包率為零。

1.3 電路方框圖及說明



1.4 電路設計及說明
1.4.1 頂層模塊
     連接控制時鐘分頻模塊div、數據輸入輸出模塊fifo、譯碼模塊transcoder

1.4.2 時鐘分頻模塊
     將Basys2開發板上的50MHz時鐘輸入分頻為100kHz作為其他模塊的工作時鐘。
1.4.3 數據輸入輸出模塊
     通過4個開關實現4bit數據的輸入,當寫入按鍵按下時,數據被寫入且寄存器指針指向下一位。當讀取按鍵按下時,讀出最先輸入的一個數據。寫入、讀取時間自由。
1.4.4 譯碼模塊
         將4位輸入的BCD碼【4】譯為8位二進制代碼用于數碼管顯示。

二、結果與討論
2.1 調試步驟與現象
2.1.1 調試程序
     最初采用通過判斷寫入信號與讀取信號的高低電平來控制數據的輸入與輸出,時鐘信號的上升沿直接控制指針+1。無法做到隨時的輸入與輸出,且對數據輸入方式要求極高,丟包率高。
                            之后修改程序,通過判斷寫入信號與讀取信號的上升沿來控制數據的輸入與輸出,并同時控制指針+1。測試可以做到隨時的輸入與輸出,目前丟包率為零。

2.1.2 仿真
初始方案:在仿真程序中輸入18位數據,寫入信號保持高電平時數據按一定速度輸入,讀取信號保持高電平時,數據可正常讀出。
改進方案:在仿真程序中嘗試輸入兩個數據,并讀出數據。測試可行。

2.1.3 燒寫程序到Basys2開發板
                            初始方案無法正常讀出。改進方案測試可行。


2.2 出現的問題與分析
問題一:仿真時數據讀不出來,但燒寫進開發板時測試正常。
分析:仿真時時間設置不對,設置為每100個時間單位輸入一個數據,但是此時100KHz的時鐘信號還未出現過一個上升沿,所以數據無法寫入。
問題二:仿真時能無限寫入數據,但只能讀取最后一個數據。
分析:每次數據寫入時指針沒有指向下一位,數據輸入后一直覆蓋之前的數據,所以時鐘只能讀取最后一個數據。
問題三:程序編寫為16深,但只能存儲15個數據。
分析:數據從第0位寄存器開始儲存數據,由于寫入信號同時控制著數據的寫入與指針的指向,但當到達第15位時,指針不再能指向下一位,數據也就不再能寫入,即數據寄存在0-14位寄存器。


2.3 對相關數據的分析與討論
FIFO的幾個重要參數:
1、寬度:寬度即4bit,每個數據為四位。在該程序中可自由修改寬度。
2、深度:深度指能夠儲存的數據個數。在該程序中可自由修改深度,方便擴展。
3、滿標志:滿標志用于阻止數據寫入而造成的溢出。判斷FIFO是否已滿十分重要。
4、空標志:空標志用于阻止數據讀取而造成的無效數據讀出。
5、寫入指針:指向下一個要寫入的地址,寫入時同時加1。
6、讀取指針:指向下一個要讀取的地址,讀取時同時加1。

三、心得體會
3.1 設計特點
本課程設計運用Verilog HDL硬件描述語言,通過Xilinx公司的ISE軟件進行程序編寫以及仿真,將程序燒寫至Basys2開發板,設計實現了一種4bit-256深的同步FIFO,提供數據緩沖。不同于之前硬件電路課程設計和C語言課程設計,此課程設計需要結合硬件和軟件知識,需要掌握Verilog HDL硬件描述語言,熟悉Basys2開發板的硬件電路及板上各模塊的使用方法。
    設計的同步FIFO寬度為4bit,深度為256,參數可以在程序中修改,方便擴展。通過4位開關輸入數據,寫入按鍵確認輸入的數據,讀取按鍵讀取一條數據,這樣設計便于手動輸入數據。滿標志LED亮表示隊列已滿,空標志LED亮表示隊列是空狀態,方便觀察。使用數碼管顯示4位2進制數,充分利用板上模塊資源,完成整個設計。
3.2 評估結果
利用Basys2開發板基本實現了FIFO隊列所有要求。但是通過手動輸入數據模擬不同工作頻率模塊間通信,還不能實際運用。
并且存在程序編寫為16深,但只能存儲15個數據的問題,原因是數據從第0位寄存器開始儲存數據,由于寫入信號同時控制著數據的寫入與指針的指向,但當到達第15位時,指針不再能指向下一位,數據也就不再能寫入,即數據寄存在0-14位寄存器。
3.3 改善建議
(1)通過矩陣鍵盤輸入數據和控制輸入和讀取;
(2)使用液晶屏幕顯示參數,標志滿、空狀態,美化交互界面;
(3)可以手動輸入位寬和深度參數。
3.4 自我體會
通過本次課程設計,我們鞏固和加深了“VerilogHDL數字設計與綜合”與“數字電子技術”兩門課程的理論知識及應用,認識到了基礎知識是一切實踐的基礎,只有掌握好了理論知識,才能更好地使用工具去做設計與創新。
相比于在紙上寫代碼,使用軟件編寫代碼,可以及時仿真驗證效果,通過實踐加深所學知識,熟悉使用VerilogHDL語言進行電路設計的步驟與方法。學習ISE軟件編程以及仿真,方便之后將此軟件作為一個優秀的工具,為我們設計更復雜的項目服務。在實際使用Basys2開發板,燒寫程序到芯片中時,出現了各種問題,我們通過查閱網絡資料、詢問老師、同學交流等多種方式,將問題一一解決,在解決問題的過程中我們加深了對軟件的使用和對知識點的學習。
我們認識到動手實踐會遇到書中未提出的許多問題,而找出問題原因并將其解決鍛煉了我們查閱資料、獨立思考的能力,豐富了我們的實踐經驗,使我們對電子電路設計有進一步的認識,為我們后期對設計與制作的學習奠定了基礎。

五、參考文獻
1、Szwagrzyk J, Whitt J K. FIFO peek access: US, US7773453[P]. 2010.
2、袁本榮, 劉萬春, 賈云得,等. 用Verilog HDL進行FPGA設計的一些基本方法[J]. 微計算機信息:測控儀表自動化, 2004, 20(6):93-94.
3.田耘 胡彬 徐文波. XILINX ISE DESIGN SUITE 10.X FPGA開發指南(邏輯設計篇)[M]. 人民郵電, 2008.
4.陳安時. 小數二進制碼對BCD碼的轉換[J]. 電子技術應用, 1982(6).

六、附錄
附錄一RTL原理圖
附錄二作品圖片
圖 1  初始狀態,FIFO中為空


圖 2  設置好輸入數據,按下寫入鍵
圖 3  寫入數據中途讀取數據


圖 4  寫入數據完畢,滿信號燈亮

圖 5  讀取數據完畢,空信號燈亮

完整的Word格式文檔51黑下載地址(內含清晰圖片):
Verilog課設報告.docx (916.49 KB, 下載次數: 28)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日摸夜夜添夜夜添特色大片 | 亚洲人成在线播放 | 亚洲成人av在线播放 | 91精品久久久久久久久久入口 | 国产精品一区网站 | 夜夜骚| 国外成人在线视频 | 久久精品中文 | 精品久久精品 | 国产精品免费看 | 九九九久久国产免费 | 欧美成人精品一区二区男人看 | 亚洲一区二区中文字幕 | 亚洲午夜视频 | 精品视频在线播放 | 国产日韩精品一区 | 国产美女视频一区 | 日本在线精品视频 | 超碰在线免费av | 欧美国产日韩在线 | 黄网站色大毛片 | 一区二区在线免费播放 | 欧美日韩午夜精品 | 国产精品不卡 | 青青草一区二区 | 日韩成人在线播放 | 国产91综合一区在线观看 | 毛片av免费看 | 国产精品18hdxxxⅹ在线 | 亚洲精品一区av在线播放 | 国产在线观看一区二区三区 | 91在线看片| 国产在线观看网站 | a在线观看免费 | 中文字幕av网址 | 91亚洲国产 | 国产在线麻豆精品入口 | 国产精品一区二区福利视频 | 久久久久免费 | 日韩av一区二区在线观看 | 美女久久久 |