「動かしてわかるCPUの作り方10講」ではDE0-CVという開発ボードを勧めているのだが、これは二万円ほどする。
https://gihyo.jp/book/2019/978-4-297-10821-2
http://solitonwave.shop/?pid=135615075
安価な電子回路はAliexpressでいつも探すのだが、三千円くらいのFPGAボードがいくつか見つかる。はたしてこれは「動かしてわかるCPUの作り方10講」で使えるのか、調べてみた。
購入したのはこれ。E6とE10バージョンがあり、E6は6kLE、E10は10kLEの規模である。
https://www.aliexpress.com/item/32813061054.html
DE0-CVとの違いは、
・ 規模が1/10と小さい(DE0-CVは49kLE)
・ SRAMがついていない
・入力スイッチが少ない(8bitディップスイッチ)
・7segLEDが8桁(ダイナミック点灯)
注文してから二週間ほどで手元に届いたので、「動かしてわかるCPUの作り方10講」の例題をいくつか試してみた。
E6とDE0-CVはどちらもAltera(INTEL)のFPGAを使っているので、開発ツールは同じものが使える。今回はQuartus Prime 13.0 Sp1を使った。
ただし、FPGAの型番(E6はCyclone IV E EP4CE6E22C8)は異なるので、デバイスの型番とピン配置をE6に合わせて指定し直す必要がある。
動かしてみてわかったのは、論理回路はそのまま動くが、表示用の7SEGLEDの点灯のさせ方が違うことだった。例題では7SEGLEDの各素子に表示を指示するが、E6ではLEDの桁位置を指示に加える必要がある。
このために新たなポート、led_bitとDIN0〜DIN3までを指定した。
第8章-3, cpu_dec_slowのdec_7seg.vhdに以下のコードを加えた。
process(LED_activating_counter, CLK)
begin
if(rising_edge(CLK)) then
LED_activating_counter<= LED_activating_counter + "01";
end if;
case LED_activating_counter is
when "00" =>
led_bit <= "1110";
DIN <= DIN0;
when "01" =>
led_bit <= "1101";
DIN <= DIN1;
when "10" =>
led_bit <= "1011";
DIN <= DIN2;
when "11" =>
led_bit <= "0111";
DIN <= DIN3;
when others =>
led_bit <= "1111";
end case;
end process;
CLKの立ち上がりごとに7SEGLEDの桁をずらして(led_bitで指定)点灯させた。
クロックが遅いので表示がチラチラするが、1〜10までの和が順番に表示される。
第8章以降の例題ではROM, RAMも実装されるが、FPGA内に作るため外付けSRAMは不要である。 また、使うロジック数も2000LE程度でE6の規模に収まる。
「動かしてわかるCPUの作り方10講」の範囲内では、3000円の激安中華FPGAで例題を十分にこなせることが確認できた。
価格の面でFPGAの購入をためらっているのであれば、良い選択肢と思われる。
なお、E6の製造元はFPGAのプログラム例、ピン配置、回路図を下記で公開している。
http://www.mediafire.com/file/wyhlxgfw3g3755p/A-C4E6E10_board.rar
0 件のコメント:
コメントを投稿