《FPGA觸發(fā)器與計數(shù)器實驗報告》由會員分享,可在線閱讀,更多相關《FPGA觸發(fā)器與計數(shù)器實驗報告(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、上海電力學院
FPGA應用開發(fā)實驗報告
實驗名稱: 觸發(fā)器與計數(shù)器
專 業(yè): 電子科學與技術
姓 名:
班 級:
學 號:
1.觸發(fā)器功能的模擬實現(xiàn)
實驗目的:
1. 掌握觸發(fā)器功能的測試方法。
2. 掌握基本RS觸發(fā)器的組成及工作原理。
3. 掌握集成JK觸發(fā)器和D觸發(fā)器的邏輯功能及觸發(fā)方式。
2、4. 掌握幾種主要觸發(fā)器之間相互轉換的方法。
5. 通過實驗,體會EPLD芯片的高集成度和多I/O口。
實驗說明:
將基本RS觸發(fā)器,同步RS觸發(fā)器,集成J-K觸發(fā)器,D觸發(fā)器同時集一個FPGA芯片中模擬其功能,并研究其相互轉化的方法。
實驗的具體實現(xiàn)要連線測試,實驗原理如圖所示:
2.計數(shù)器
在VHDL中,可以用Q<=Q+1簡單地實現(xiàn)一個計數(shù)器,也可以用LPM來實現(xiàn)。下面分別對這兩種方法進行介紹。
方法一:
第1步:新建一個Quartus項目。
第2步:建立一個VHDL文件,實現(xiàn)一個8位計數(shù)器。計數(shù)器從“00000000”開始計到“11111111”
3、,計數(shù)器的模是256。計數(shù)器模塊還需要包含一個時鐘clock、一個使能信號en、一個異步清0信號aclr和一個同步數(shù)據(jù)加載信號sload。模塊符號如下圖所示:
第3步:VHDL代碼如下:
第4步:將VHDL文件另存為counter_8bit.vhd,并將其設定為項目的最頂層文件,再進行語法檢查。
第5步:語法檢查通過以后,用KEY[0]表示clock,SW[7..0]表示data,SW[8~10]分別表示en、sload和aclr;LEDR[7..0]表示q。
第6步:引腳分配完成后,編譯并下載。
第7步:修改上述代碼,把計數(shù)器的模更改為100,應如何操作。
4、
模為100的計數(shù)器,VHDL代碼如下:
方法二:使用LPM實現(xiàn)8位計數(shù)器。
LPM是指參數(shù)化功能模塊,用LPM可以非常方便快捷地實現(xiàn)一個計數(shù)器。
第1步:選擇Tools->MegaWizard Plug-In Manager命令,打開如下圖所示的對話框。
第2步:直接單擊Next按鈕,出現(xiàn)如下圖所示的對話框。如圖所示,在左邊的選擇框中選擇“LPM_COUNTER”,在輸出文件類型單選框中選中“VHDL”,并輸入文件名為“counter_lpm”。
第3步:完成設置后直接單擊Next按鈕,打開如下圖所示的對話框。在輸出位數(shù)的下拉框中選擇“8 bits”,
5、在計數(shù)方向的單選框中選中“Up only”。這個設置表示生成的計數(shù)器是8位加法計數(shù)器。
第4步:獨立設計模為七的計數(shù)器
第4步:單擊Next按鈕后,出現(xiàn)如下圖所示的對話框。在該對話框中選擇添加額外的端口,在這里選中“Count Enable”選項,表示添加了一個計數(shù)使能端口,此時在左邊的圖形符號中可以看到多了一個“cnt_en”的引腳。
第5步:單擊Next按鈕,打開如下圖所示的下一個對話框。在同步輸入(Synchronous inputs)處選擇“Load”,在異步輸入(Asynchronous inputs)處選擇“Clear”。表示在計數(shù)器中添加了一個同步置數(shù)端
6、和一個異步清0端,在左邊的圖形符號中可以看到又添加了一個aclr、sload和用于置數(shù)用的data[7..0]。
第6步:繼續(xù)單擊Next按鈕直到結束為止。到此即完成了一個8位計數(shù)器的設計,同時生成了一個VHDL文件此couter_lpm.vhd。
第7步:接著需要將生成的couter_lpm.vhd文件添加到項目中,如下圖所示,在項目瀏覽器窗口中,右擊“Device Design Files”,在下拉菜單中選擇“Add/Remove Files in Project”命令。
第8步:選擇添加文件命令后,打開如下圖所示的對話框。在“File name”處可直接輸入將
7、添加的文件名,或通過點擊右邊的 瀏覽按鈕,打開瀏覽窗口,選擇需要添加的文件。然后點擊右邊的Add按鈕,即完成。
第9步:將couter_lpm.vhd設定為頂層設計文件,進行語法檢查后,執(zhí)行與方法一相同的操作即可。
3.時鐘電路
利用上面設計好的計數(shù)器和分頻器設計一個實時的時鐘。一共需要1個模24計數(shù)器、2個模6計數(shù)器、2個模10計數(shù)器、一個生成1Hz的分頻器和6個數(shù)碼管解碼器。最終用HEX5~HEX4顯示小時(0~23),用HEX3~HEX2顯示分鐘(0~59),用HEX1~HEX0顯示秒鐘(0~59)。 具體步驟如下:
第1步:新建一個QuartusII工程,
8、將其命名為Clockcircut。
第2步:建立各功能模塊(計數(shù)器、分頻器及7段數(shù)碼管)的VHDL文件,并分別將它們設置成頂層文件,進行編譯和仿真。
(1)模為24的計數(shù)器VHDL代碼:
(2)模為6的計數(shù)器VHDL代碼:
(3)模為10的計數(shù)器VHDL代碼:
(4)7段數(shù)碼管的VHDL代碼:
(5)50M分頻的分頻器VHDL代碼:
第3步:語法檢查通過后直接生成符號。
第4步:采用圖形編輯器,將幾個模塊連接起來構成一個時鐘。
第5步:將原理圖保存為clockcircuit.bdf,并進行語法分析,確定無誤后在進行引腳分配。
第6步:鎖定引腳以后,對項目進行全編譯,然后下載到開發(fā)板上觀察實驗現(xiàn)象。