(原創) 如何使用硬體的方式『播放SD卡內wav檔音樂』? (DE2) (Quartus II) (Nios II)

Abstract
DE2原廠光碟所附的『播放SD卡內wav檔音樂』範例程式並無法在Quartus II 6.1 + Nios II 6.1正常執行,本文提出解決的方式。

使用環境 : Quartus II 6.1 + Nios II 6.1

Problem
DE2原廠光碟所附的範例程式是由Quartus II 6.0 + Nios II 6.0所開發,本來在Quartus II 6.0 + Nios II 6.0可以正常執行,不過Quartus和Nios版本更迭迅速,截至目前撰寫本文為止,Quartus II 7.2已經發表。由於Quartus和Nios版本更新,專案檔格式已經改變,導致無法正常執行由Quartus II 6.0所開發的範例程式。

Introduction
在光碟目錄中的\DE2_demonstrations\DE2_SD_Card_Audio為DE2原廠所附的範例程式,複製到硬碟後,在Quartus II 6.1可正常開啟並且編譯,但Nios II 6.1部分卻連專案也無法開啟,主因是Nios II 6.1專案檔格式已經改變,雖然Nios II 6.1有提供檔案格式升級的支援,但卻無法升級成功,原因不明。

使用Nios II 6.1所遇到的問題
將範例程式專案複製到D:\reserch\DE2_SD_Card_Audio\

1.Quartus II 6.1
Quartus II 6.1可正常開啟D:\reserch\DE2_SD_Card_Audio\DE2_SD_Card_Audio.qpf,並且正常編譯。
sd_player_hd01.jpg


且可正常將DE2_SD_Card_Audio.sof燒進DE2上。

2.Nios II 6.1
將workspace switch到D:\reserch\DE2_SD_Card_Audio\後,出現以下訊息式窗,詢問你是否將hello_led_0專案格式升級到3.1.0?選擇[Yes]繼續
sd_player_hd02.jpg

接著出現專案檔無法寫入的錯誤訊息
sd_player_hd03.jpg

另外一個hello_led_0_syslib亦出現相同的訊息視窗,但結果和hello_led_0一樣。

將hello_led_0專案Run As Nios II Hardware,出現以下錯誤訊息
sd_player_hd05.jpg

很明顯的,SOPC Builder system file位置並不正確,所以無法執行。

Solution
重新建立Nios II 6.1專案

Step 1:
將舊的workspace和project刪除
將D:\reserch\DE2_SD_Card_Audio\的三個目錄刪除
[.metadata]
[hello_led_0]
[hello_led_0_syslib]

.metadata紀錄workspace資訊,hello_led_0和hello_led_0_syslib則為原來Nios II 6.0所建立的專案目錄

Step 2:
切換workspace
開啟Nios II後,切換workspace到D:\reserch\DE2_SD_Card_Audio\,此時沒任何專案,因為已經被刪除了。

Step 3:
新建立一個Nios II C/C++ Application
sd_player_hd06.jpg

Step 4:
選擇Hello LED這個Project Template,並選取正確路徑的SOPC Builder System。
sd_player_hd07.jpg 

Step 5:
建立一個新的System Library
sd_player_hd08.jpg

Step 6:
重新建立hello_led_0專案

將DE2原廠光碟\DE2_demonstrations\DE2_SD_Card_Audio\hello_led_0\下的
basic_io.h
hello_led.c
LCD.c
LCD.h
SD_Card.h
複製到
D:\reserch\DE2_SD_Card_Audio\hello_led_0下
別忘了將檔案的唯讀屬性取消

refresh專案將新加入的檔案載入
sd_player_hd09.jpg

Step 7:
執行hello_led_0
將hello_led_0專案Run As Nios II Hardware,就可聽到SD內wav檔的音樂,不過音質似乎不是很好。

Step 8:
將hello_led_0改成release模式
選定hello_led_0,按右鍵選Properties
sd_player_hd10.jpg

右側選C/C++ Build,將左側的Configuration改為Release
sd_player_hd11.jpg

因為Debug模式下,compiler並未啟動最佳化,因此執行速度較慢,所以音質較差。重新將hello_led_0專案Run As Hardware,就可得到如MP3般的音質了。

Conclusion
原本光碟中的範例因為使用Quartus II 6.0 + Nios II 6.0開發,若一樣使用Quartus II 6.0 + Nios II 6.0則可正常測試,本文展示了若要改變Quartus II版本時的方法。

posted on 2007-10-30 16:56  真 OO无双  阅读(5414)  评论(26编辑  收藏  举报

导航