見出し画像

Tang Nano 9K で Apple II を再現する(2)水平タイミング

第三章 Clock Generator and Horizontal Timing の後半

回路図 C-3 の水平信号生成部を video_address.sv として実装します。

`default_nettype none

module a2_video_address (
    input wire  ldps_n,
    output wire h0,
    output wire h1,
    output wire h2,
    output wire h3,
    output wire h4,
    output wire h5,
    output wire hpe_n,
    output wire va,
    output wire vb,
    output wire vc,
    output wire v0,
    output wire v1,
    output wire v2,
    output wire v3,
    output wire v4,
    output wire v5
);

// D14:74LS161
logic [3:0] d14_q;
logic d14_pen;
logic d14_rc;

always_ff@(posedge ldps_n) begin
    if (!d14_pen) begin
        d14_q <= 4'b0;
    end else begin
        d14_q <= d14_q + 1'b1;
        d14_rc <= (d14_q == 4'b1110) ? 1 : 0;
    end
end

assign d14_pen = d13_q[2];

// D13:74LS161
logic [3:0] d13_q;
logic d13_pen;
logic d13_rc;
logic d13_et;

always_ff@(posedge ldps_n) begin
    if (!d13_pen) begin
        d13_q <= {d13_q[3], 3'b100};
    end else if (d13_et) begin
        d13_q <= d13_q + 1'b1;
        d13_rc <= (d13_q == 4'b1110) ? 1 : 0;
    end
end

assign d13_pen = d13_q[2];
assign d13_et = d14_rc;

assign h0 = d14_q[0];
assign h1 = d14_q[1];
assign h2 = d14_q[2];
assign h3 = d14_q[3];
assign h4 = d13_q[0];
assign h5 = d13_q[1];
assign hpe_n = d13_q[2];

endmodule

`default_nettype wire

水平カウンタ h0-5 と hpe_n 信号が生成され、6502 CPU クロックが 1 ライン(6502 CPU クロックで 65サイクル)毎に、14MHz で 2 サイクル分伸長されるようになります。

System timing with extended cycles.

なぜ、このようなクロック伸長が必要なのでしょうか?
カラーリファレンス信号は、正確に 3.579545 MHz でなければなりません。これはマスタークロック 14.31818 MHz の 4 分周で作られます。
一方、NTSC(RS-170A)の水平同期周波数は、15.734 kHz と規定されています。1 ラインの周期は、カラーリファレンス信号の 227.5 サイクル分となります。

 3.579545 MHz ÷ 15.734 kHz = 227.5

そのため、カラーリファレンス信号の位相が 1 ライン毎に 180 度反転します。正しい色を出すためには、以下二つの方法が考えられます。

  1. カラーデータの位相を、ライン毎にシフトする

  2. 水平同期周波数を少しずらし、カラーリファレンスの整数倍とする

Apple II では、2 の方法を使って、水平周期をカラーリファレンス信号の 228 サイクル分にしています。
この方法で、Woz は特許を取得しています。

参考文献

RS-170A NTSCビデオ信号タイミング規格の概要
http://elm-chan.org/docs/rs170a/spec_j.html

アナ ログ テ レビの規格(1) EIA RS170A, テレビジョン学会誌Vol. 44, No. 2(1990)
RS-170A は、Apple II の発売と同じ、1977 年に発表されていたんですね。

https://www.jstage.jst.go.jp/article/itej1978/44/2/44_2_169/_pdf

US Patent 4,136,359 https://patentimages.storage.googleapis.com/26/30/59/a8597088fcfe51/US4136359.pdf

特許1239788
https://www.j-platpat.inpit.go.jp/c1801/PU/JP-S58-046027/12/ja

この記事が気に入ったらサポートをしてみませんか?