2012年5月21日月曜日

FPGA FMトランスミッタ: リセット回路

1年ブランクがあると文法を忘れてしまいますね。

まずはいちばんシンプルなリセット回路を書いてみました。
外部のリセットボタンが解除されてから20ビット(約13.5ms)カウントしたのちに内部リセットを解除するものです。


module clock_gen(clk_i, resetsw_i, clk, reset, n_reset_o); input clk_i; input resetsw_i; output clk; output reset; output n_reset_o; // reset signal reg [19:0] reset_count; reg reset; always @(posedge clk or negedge resetsw_i) begin if (~resetsw_i) begin reset_count <= 20'b0; reset <= 1'b1; end else if (reset_count == 20'b1111_1111_1111_1111_1111) reset <= 1'b0; else reset_count = reset_count + 20'b1; end assign n_reset_o = ~reset;
// input clock buffer // IBUFG: Single-ended global clock input buffer // Spartan-3E // Xilinx HDL Libraries Guide, version 13.4 IBUFG #( .IBUF_DELAY_VALUE("0"), // Specify the amount of added input delay for // the buffer: "0"-"12" (Spartan-3E) .IOSTANDARD("DEFAULT") // Specify the input I/O standard ) IBUFG_inst ( .O(clk), // Clock buffer output .I(clk_i) // Clock buffer input (connect directly to top-level port) ); // End of IBUFG_inst instantiation endmodule


2012.05.27 クロック入力clk_iにバッファIBUFGを追加しました


次いで思い出しながらISimでシミュレーション。ちゃんと動いてくれると素直にウレシイです。

シミュレーション結果



0 件のコメント:

コメントを投稿