🙆♀️
Tang nano 9Kを使いたい(2)
目的
Tang nano 9Kを使ってPWM信号を複数の端子から出力したい.
前提
- Gowin FPGA programmerをインストール,ライセンスが通っている
- Tang nano 9KでLチカくらいはできるようになっている(Lチカについての記事はこちら)
- PWMが何かわかってる
手順
今回は,30kHz,duty比50%の出力と反転させた出力を出す.基本的な手順はLチカと変わらない.
- projectの作成
- コードの作成
- 論理合成,ピンアサイン
- ボード書き込み
Lチカと作業的に変わるところは,コードを書くところと,ピンアサインくらい.
コードについて
今回作成したコードは以下
module pwm_generate (
input sys_clk, // System clock input
input sys_rst_n, // System reset (active low)
output reg pwm_signal, // PWM output signal
output reg inverse_pwm_signal // Inverse PWM signal
);
reg [10:0] time_counter = 0;
parameter ton = 450;
parameter tperiod = 900;
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n) begin
time_counter <= 0;
pwm_signal <= 0;
inverse_pwm_signal <= 1;
end else begin
if (time_counter < ton) begin
pwm_signal <= 1;
inverse_pwm_signal <= 0;
end else begin
pwm_signal <= 0;
inverse_pwm_signal <= 1;
end
if (time_counter >= tperiod - 1)
time_counter <= 0;
else
time_counter <= time_counter + 1;
end
end
endmodule
Tang Nano 9Kの動作周波数は27MHzなので1クロックにかかる時間は
Duty比50%だとその半分のクロックサイクル中ONになっていればよく,450クロックサイクルを基準にすればよい.
ピンアサインについて
Tang Nano 9Kの回路図(ここからDL出来ます)を見ながらpinを設定すればいい.
参考程度にボードから生えてるpinはこんなかんじ(bottom viewなんで注意)
実際にやってみた
実際に出した出力波形は以下.このときは,コードに追加して,Duty比を10,20,50%の波形を出力させた.
Discussion