本實驗主要是實現蜂鳴器的操作,蜂鳴器的操作是非常簡單的,只有把簡單的事情做好,方可談其他複雜的事。本實驗部分會利用verilog一些巨集定義語句,其實在VGA實驗部分已經出現過,這裡為了鞏固,再次調用相關巨集定義命令,已達到最大化的可移植性,請讀者務必掌握這種用法,很實用。 談及蜂鳴器或者LED,多多少
1 基礎理論部分
本實驗主要是實現蜂鳴器的操作,蜂鳴器的操作是非常簡單的,只有把簡單的事情做好,方可談其他複雜的事。本實驗部分會利用verilog一些巨集定義語句,其實在VGA實驗部分已經出現過,這裡為了鞏固,再次調用相關巨集定義命令,已達到最大化的可移植性,請讀者務必掌握這種用法,很實用。
談及蜂鳴器或者LED,多多少少會有一個概念,PWM(pulse width modulation),即脈寬調製,PWM的輸出只有高電平1和低電平0,PWM不斷重覆輸出周期T,高電平所占用的時間為t,則占空比 = t / T ;頻率 = 1 / T,如圖14.1所示。
圖14.1 PWM脈衝圖
2 Verilog代碼實現部分
對於實現不同的占空比,可以去建立一個parameter模塊,用來定義不同的PWM脈衝信號。主要是從兩方面去定義,一個是占空比相同(這裡是占空比為50%),頻率不同,一個是頻率相同,不同的占空比。下麵是FM_param.v中的各參數的設置。
上述是巨集定義個參數,分別定義了不同的占空比和頻率。
上述是對定義的巨集參數具體執行的參數設置。
下麵是FM_PWM.v文件中的內容。
24行調用參數文件,然後定義各巨集參數,
此部分是執行巨集定義後的具體執行的內容。
3 Modelsim模擬部分
3.1 測試程式
上述的測試程式很簡單,和之前的部分一樣。
3.2 模擬結果
圖14.2是占空比為50%,周期為40ms的情況。圖14.3是腳本文件的輸出,其他的模擬類似。
圖14.2 模擬波形
圖14.3 腳本輸出