回覆列表
  • 1 # 分了別就別回憶

    module pwm_test(input clk , //時鐘輸入,可在外部設定不同時鐘input rst_n , //低電平復位input [7:0] f , //頻率控制,最大255input [7:0] d , //佔空比控制字,上限100output pwm_out //PWM輸出);reg [17:0] count ; //計數always @(posedge clk or negedge rst_n) beginif(~rst_n) begincount <= 0 ;endelse if(count >= 17"d100_000) //計數到100K清零count <= 0 ;elsecount <= count + f; //每次累加頻率值endassign pwm_out = (count < d*1000)? 1:0 ;//PWM輸出endmodule思路就是倍頻累加,剩下的撥碼開關程式自己想一下吧。例如輸入時鐘100M,頻率設為20的時候,計數100K,每次加20,輸出頻率就是100M/(100K/20)=20K,佔空比你一看就明白至於輸入時鐘,用Tools->Megawizard Plug-In Manager->I/O->ALTPLL模組設定PLL分頻,倍頻即可

  • 中秋節和大豐收的關聯?
  • 地下城與勇士聖職者技能要怎麼加點詳細點的,謝謝?