現在我們已經創建了PWM模組,可以在mojo_top模組中將其產生實體了!在Verilog中,將一個模組在另一個模組中產生實體使您可以在更高級別的模組中一次或多次調用子模組功能,而不必複製其代碼。就我們的專案來說,我們可以根據需要創建足夠多的PWM訊號來驅動不同的LED,甚至連接到Mojode 輸出引腳上!要配置PWM訊號來點亮Mojo上的第8個LED,我們可以添加以下行:
PWM my_pwm(.clk(clk), .rst(rst), .duty(8’b01000000), .sig_drv(led[7]));
該行的第一個單詞PWM是我們要產生實體的模組的名稱。這將在我們選擇產生實體多個副本時説明識別同一PWM模組的不同實例。
在模組名稱後的括弧內,我們使用了.<module_signal_name>(signal_name)格式將更高級別模組(signal_name)中的訊號分配給子模組中的相應訊號(module_signal_name)。
如果要更改PWM訊號的占空比,我們要做的就是更改傳遞到占空比參數中的值。如果被驅動的輸出訊號,則只需要將作為參數傳遞的訊號更改為 .sig_drv。
您所完成的mojo_top模組應如下所示:
要將代碼上傳到Mojo板上,請按照之前的步驟進行操作:在ISE中生成程式設計檔,載入Mojo Loader應用程式,然後將.bin文件上傳到Mojo。
恭喜您!您已經在Mojo上實現硬體PWM了!如果想進行進一步的實驗,請嘗試創建多個硬體PWM訊號並為其提供不同的占空比參數!您可以通過修改代碼,來實現通過一些撥動開關將占空比值輸入到Mojo中嗎?
我們希望您對自己的第一個FPGA項目感到滿意!請繼續關注來獲取更多有關FPGA和微控制器的教學!
附件
二進位運算:https://www.tutorialspoint.com/computer_logical_organization/binary_arithmetic.htm
數位的二進位表示形式:https://www.swarthmore.edu/NatSci/echeeve1/Ref/BinaryMath/NumSys.html
W13 Rahul Iyer