玩轉Zynq連載18——[ex01] 小試牛刀,基于Zynq PL的第一個(gè)工程 更多資料共享 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網(wǎng)盤(pán)鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c ![]() 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網(wǎng)盤(pán)鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c 蜂鳴器是一種最簡(jiǎn)單的發(fā)聲元器件,它的應用也非常廣泛,大都是作為報警或發(fā)聲提醒裝置。比如臺式電腦在剛開(kāi)機時(shí),通常主板上會(huì )發(fā)出一聲較短的尖銳的“滴……”的鳴叫聲,提示用戶(hù)主板自檢通過(guò),可以正常進(jìn)行后面的啟動(dòng);而如果是1長(cháng)1短或1長(cháng)2短的鳴叫聲,則表示可能發(fā)生了電腦內存或顯卡故障;當然還可以有其他不同的鳴叫聲提示其他的故障,總而言之,可別小看了這顆區區幾毛錢(qián)的蜂鳴器,關(guān)鍵時(shí)刻還挺有用的?梢院敛豢鋸埖恼f(shuō),蜂鳴器也算是一種人機交互的手段。 PWM(Pulse Width Modulation),即脈沖寬度調制,如圖所示,PWM的輸出只有高電平1和低電平0。PWM不停的重復輸出周期為T,其中高電平1時(shí)間為t的脈沖,t/T是它的占空比,1/T是它的頻率。
![]() 如圖所示,這是Zstar板上蜂鳴器的電路原理圖,BEEP網(wǎng)絡(luò )連接到FPGA的IO上,當BEEP = 1時(shí),三極管Q1的BE導通,則CE也導通,蜂鳴器U2就有電流回路,那么蜂鳴器就會(huì )發(fā)聲。同理,BEEP = 0時(shí),Q1截止,蜂鳴器無(wú)電流回路,那么蜂鳴器就不會(huì )發(fā)出聲音。
![]() 如圖所示,基于蜂鳴器在FPGA的IO輸出1就發(fā)聲、0則不發(fā)聲的原理,我們給IO口一個(gè)占空比為10%的PWM的信號,讓蜂鳴器間歇性的發(fā)聲?shū)Q叫。如果它的頻率高,則發(fā)聲就顯得相對尖銳急促一些;如果它的發(fā)聲頻率低,則發(fā)聲就顯得低沉平緩一些。
![]() 在我們給出的實(shí)例代碼中,我們期望產(chǎn)生一個(gè)輸出頻率為1Hz(1s)、占空比為10%的PWM信號去驅動(dòng)蜂鳴器的發(fā)聲。因此,我們使用系統時(shí)鐘25MHz進(jìn)行計數,每計數25,000,000次,這個(gè)計數器就清零重新計算。因為這個(gè)計數器是2進(jìn)制的,要能夠表達0-24,999,999的每一個(gè)計數值,那么這個(gè)2進(jìn)制計數器至少必須是25位的(代碼中取計數器為28位)。此外,為了得到輸出的PWM占空比為10%,那么我們只要判斷計數值小于最大計數值的1/10即2,500,000時(shí),輸出高電平1,反之輸出低電平0。 創(chuàng )建一個(gè)最終可以跑在Zynq的PL上的應用工程,最基本的可以歸納為以下幾個(gè)步驟。下面我們會(huì )逐一進(jìn)行實(shí)踐操作。流程不過(guò)是一個(gè)熟能生巧的過(guò)程,只要大家認真走過(guò)一遍,后續大量實(shí)例中不斷操作,反復練習就能輕松掌握。
![]() 參考文檔《玩轉Zynq-工具篇:新建Vivado工程.pdf》。 如圖所示,選中Project Manager à Sources à Design Sources,右鍵單擊,彈出菜單中選中Add Sources…。
![]() 圖新建Verilog源碼菜單 接著(zhù)如圖所示,使用默認選項Add or create design sources,點(diǎn)擊“Next”。
![]() 圖選擇文件類(lèi)型 如圖所示,單擊Create File按鈕。
![]() 圖新建設計文件 如圖所示,設置創(chuàng )建的文件類(lèi)型(File type)為Verilog;文件名(File name)為zstar;文件路徑(File location)為默認的 ![]() 圖6.20 設置新建文件名稱(chēng)和路徑 最后點(diǎn)擊Finish按鈕完成Verilog源文件創(chuàng )建。 隨后還會(huì )彈出如圖所示的模塊端口設置頁(yè)面,可以直接點(diǎn)擊OK不做設置。
![]() 圖定義模塊 接著(zhù)還會(huì )彈出如圖所示的確認對話(huà)框,點(diǎn)擊Yes。
![]() 圖定義模塊確認對話(huà)框 如圖所示,雙擊Design Sources下剛剛創(chuàng )建好的zstar.v文件,將彈出源碼,里面有基本的Verilog模塊定義,內容空空如也,需要我們來(lái)填充。
![]() 圖6.23 創(chuàng )建好的Verilog源文件 如圖所示,將Verilog代碼填充進(jìn)去,實(shí)現一個(gè)完整的設計源碼模塊。 ![]() 如圖所示,選中Project Manager à Constraints à constrs_1,右鍵單擊,在彈出菜單選擇Add Sources…。 ![]() 接著(zhù)如圖所示,使用默認選項Add or create constraints。 ![]() 如圖所示,單擊Create File按鈕。 ![]() 如圖所示,設置創(chuàng )建的文件類(lèi)型(File type)為XDC;文件名(File name)為zstar;文件路徑(File location)為默認的 ![]() 圖設置新建文件名稱(chēng)和路徑 最后點(diǎn)擊Finish按鈕完成約束文件創(chuàng )建。 如圖所示,雙擊Constraints下剛剛創(chuàng )建好的zstar.xdc文件,里面是完全空白的。 ![]() 如圖所示,將這個(gè)實(shí)例的引腳約束都寫(xiě)入這個(gè)約束文件中。從簡(jiǎn)單的語(yǔ)法可以看出,這里約束了zstar中頂層接口信號對應Zynq芯片的引腳號(PACKAGE_PIN)以及電平標準(IOSTANDARD)。 ![]() 如圖所示,工程路徑下新產(chǎn)生的zstar.srcs\source_1和zstar.srcs\constrs_1文件夾分別和Project Manager下的Design Source和Constraints相對應。
![]() 圖工程路徑下對應的文件夾 參考文檔《玩轉Zynq:Vivado中PL的功能仿真.pdf》。 如圖所示,Vivado的編譯主要分為三步,即Run Synthesis(綜合編譯)、Run Implementation(實(shí)現編譯)和Generate Bitstream(生成bit流)。一般而言,我們直接點(diǎn)擊Generate Bitstream生成bit文件后就可以進(jìn)行板級調試。 ![]() 編譯過(guò)程中,如圖所示,在Vivado工具的右上角,有當前編譯的狀態(tài)指示。 ![]() 如圖所示,編譯完成后,會(huì )彈出提示選項窗口,該窗口有多個(gè)下一步操作執行的選項可供選擇。大家可以直接點(diǎn)擊Open Hardware Manager進(jìn)入板級下載調試的界面。 ![]() 如圖示,在工程路徑“…/project/zstar_ex01/zstar.uns/impl_1”下就生成了zstar.bit文件,這是用于燒錄到FPGA在線(xiàn)運行的比特流。 ![]() |