2016.11.10
MAX10-JB基板のPICマイコンについては、初期状態のMAX10-FB基板を使ってUSB-Blaster等価機能を実現するファームウェアをユーザ様の手許で書き込んでいただいていました。ただし、初期バージョンのUSB-Blaster等価機能はWindows版のQuartus Primeには対応していますが、Linux版には対応していませんでした。ここでは、MAX10-JB基板のPICマイコンのファームウェアをWindows/Linux両対応にするアップデート方法を説明します。下記手順に従って作業してください。
(1) MAX 10 FPGAのコンフィグレーション・ファイル「FPGA.pof」をダウンロードして、どこか適当な場所に置いてください。このファイルでコンフィグレーションされたMAX 10は、PICマイコンへのLinux対応版ファームウェア書き込み器になります。
(2) ここは一旦、Windows版Quartus PrimeのProgrammerを使って作業してください。Windowsで動作するUSB-Blaster機能のMAX10-JB基板をMAX10-FB基板に連結して、ダウンロードしたFPGA.pofをMAX 10(CFM0のみ)に書き込んでください。
(3) MAX 10 FPGAからPICマイコンにファームウェアを書き込みましょう。MAX10-JB基板のUSBケーブルをPCから外して、ジャンパJ1〜J4をショート、ジャンパJ5〜J8をオープンにします。その状態でMAX10-JB基板のUSBケーブルをスマホの充電器などのUSB通信を行わない電源に接続します。正常であればMAX10-FB基板上のLEDが一定時間黄色く光って、その後緑の点滅になります。通信異常があって正常にPICマイコンを認識できなければLEDは白で点滅します。書き込んだ後にベリファイ・エラーがあればLEDは赤が点灯したままになります。
(4) MAX10-JB基板のUSBケーブルをPCから外して、ジャンパJ1〜J4をオープン、ジャンパJ5〜J8をショートします。この状態で、MAX10-JB基板はLinux版Quartus PrimeでもWIndows版Quartus Primeでも使えるようになっています。
●今回のMAX 10内に仕込んだPIC書き込み機能は、電源立ち上がり時にPICマイコンのID番号を10000回リードして全てOKかどうかを確認してから実際の書き込み工程に移行します。その間にLEDが黄色で点灯しています。USB通信により通信ディスターブが生じやすい環境であれば、ここでエラーになって、PICマイコンへの異常書き込みを防止できると期待しています。
●参考用ファイル:
MAX 10のプロジェクト「PROJ_PIC_Programmer2.zip」
PICマイコンのLinux対応ファームウェア「USB_JTAG.zip」
●動作確認した環境:Ubuntu
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
●上記の各ファイルは動作保障致しません。各自の責任でご使用ください。
2016.12.02
(1) Raspbian JESSIEを、Raspbian JESSIE WITH PIXELにアップデートする方法
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install -y rpi-chromium-mods
sudo apt-get install -y python-sense-emu python3-sense-emu python-sense-emu-doc
※デスクトップ上の低電圧検知マークは、虹色四角マークから稲妻マークに変更される。
2017.03.07
2017.04.16
CQ出版トランジスタ技術誌のMAX 10関連記事のサポート・データです。実践編「MAX10実験キットで学ぶFPGA&コンピュータ」に付属のDVD-ROMに入っているデータと同じです。本サイトに置けるファイル・サイズ制限から一部自動生成されるファイルは削除してありますが、作業や動作に支障はありません。
PROJ_MCS4.zip;MAX 10側(Windows用)
・ディレクトリ FPGA : 4004(CPU) を中心とした MCS-4 システム全体の RTL コードとその MAX 10 用 FPGA プロジェクトと Nios II のファームウェア( Quartus Prime 用、 Nios II EDS 用 )
・ディレクトリ verification : MCS-4 システムの論理検証環境( ModelSim 用)
CQ-MAX10.tar.gz; Raspberry Pi側
・ Raspberry Pi のホーム・ディレクトリ下に作業用ディレクトリ /home/pi/temp を作成し、本ファイルをその下に置いて解凍( tar xvfz CQ-MAX10.tar.gz )する。その後、解凍してできたディレクトリのうち、 /home/pi/temp/CQ-MAX10/MCS4 を、 /home/pi/CQ-MAX10/ の下にコピー。
・ /home/pi/CQ-MAX10/MCS4/MCS4_Panel_320x240 が、画面サイズ 320x240 の MCS-4 システム用デバッガと電卓 GUI インタフェース。
・ /home/pi/CQ-MAX10/MCS4/MCS4_Panel_800x480 が、画面サイズ 800x480 の MCS-4 システム用デバッガと電卓 GUI インタフェース。
・ /home/pi/CQ-MAX10/MCS4/tools が、インターネット上にある電卓用バイナリ・コードを MCS-4 システム用デバッガに組み込むための変換ツール。
・/home/pi/CQ-MAX10/MCS4/ADS4004が、4004プログラム開発環境ADS4004
●上記の各ファイルは動作保障致しません。各自の責任でご使用ください。
2017.03.21
●実践編「MAX10実験キットで学ぶFPGA&コンピュータ」のDVD-ROM及び、CQ出版トランジスタ技術誌のMAX 10関連記事のサポート・データ(上記)に収録した4004開発ツール「ADS4004」の命令シミュレータ機能にバグがありました。RAMのバンク3に対するアクセスがバンク4に向かい、逆にRAMのバンク4に対するアクセスがバンク3に向かいます。4004プログラムのシミュレーション自体は正常に動作しますが、RAMの内容を確認するためにダンプ・コマンドを実行するときに注意する必要があります。
●このバグを修正するには、下記のようにしてください。
(1) ads4004.cの196行目を以下のように修正します。
(修正前)#define RAM_BANK ((REG_DCL==4)?3:(REG_DCL==3)?4:REG_DCL) // 3bits
(修正後)#define RAM_BANK (REG_DCL) // 3bits
(2) ads4004.cをコンパイルし直します。
$ gcc -o ads4004 ads4004.c
2017.03.31
●実践編「MAX10実験キットで学ぶFPGA&コンピュータ」p550 図1に示したシステムにおいて、Raspberry PiとMCS-4システムを実装したMAX 10の連携がうまくいかない場合、その原因の多くは、Raspberry Piの電源電圧低下検知が働いてAUX SPIのクロックが変動してしまうことです。Raspberry Pi上のアプリケーションMCS4_Panelが立ち上がった時点でまずRaspberry PiのCOREクロック(AUX SPIを制御するクロック)の周波数を計測してからAUX SPIのクロックをMAX 10側の処理が間に合う周波数に設定します。しかしその後、COREクロックが不意に上昇するとMAX 10側が追いつかなくなってハングすることがあります。この問題の解決は、p508に示したように、/boot/config.txtに「avoid_warnings=2」を追加してください。