EXPLORINEER
ja

Hacker News

SystemVerilogでVGAドライバを作る

デバイス初登場 56ポイントコメント15件


大学の授業で、学生が SystemVerilog という言語を使って VGA ディスプレイを動かす回路(ドライバ)を作る話です。古いモニタの信号の仕組みを、クロックとカウンタで再現していきます。

何が起きたのか

筆者は大学のデジタル論理設計の実習で、VGA ディスプレイを制御する回路を作りました。難しそうに見えますが、順を追えば取り組みやすい課題だったと書いています。記事には、理解を助けるための操作できる図も含まれています。

VGA と昔のディスプレイ

VGA は 1987 年に IBM PS/2 と一緒に登場した表示規格です。当時のディスプレイはブラウン管(CRT)でした。ブラウン管は電子ビームを画面の蛍光面に当てて光らせます。ビームは一度に 1 点しか描けないため、画面を左から右、上から下へ 1 点ずつ走査しました。その動きを指示するのが HSync(水平同期)と VSync(垂直同期)という信号です。

数字で見るタイミング

  • 画面の更新は 1 秒に 60 回(60Hz)
  • 必要なクロックは約 25.175 MHz
  • 実習用の FPGA ボード(DE10-lite)のクロックは 50 MHz
  • 1 行は合計 800 点(表示部 640 + 余白部 160)
  • 1 画面は合計 525 行(表示部 480 + 余白部 45)

回路の作り方

ボードの 50 MHz を 25 MHz にするには、クロックの信号を 1 回おきに切り替える簡単な回路(クロック分周器)を使います。また、ブラウン管を傷めないように、表示していない時間は色の信号を止めます。そのため、今が画面のどの位置かを数えるカウンタが必要です。筆者はカウンタを「数える回数を決められる部品」として 1 つ作り、水平と垂直の両方に使いました。

なぜ大切か

この課題は、クロック、カウンタ、同期信号といったハードウェアの基本を、実際の映像出力で体験できる題材です。小さな部品を組み合わせて大きな仕組みを作るという考え方も学べます。

用語解説

VGA
1987 年に登場したアナログ映像の表示規格。
CRT
ブラウン管。電子ビームで蛍光面を光らせる古いディスプレイ。
HSync
電子ビームを画面の横方向に動かすタイミングを示す水平同期信号。
VSync
電子ビームを画面の縦方向に戻すタイミングを示す垂直同期信号。
FPGA
書き換えて好きな回路を作れる半導体。今回は DE10-lite ボードに載っている。
SystemVerilog
ハードウェアの回路を記述するための言語。

出典: Hacker Newsで原文を読む ↗

この記事は原文をもとにAIがやさしい言葉で書き直した解説です。事実関係は原文をご確認ください。