安く・早くプリント基板を製造してもらう
基板製造時,量産性や表面実装部品の搭載,回路の高速化,小型集積化など,様々な面でプリント基板を採用する利点は多くあります. 一方で,コストと納期との面に着目すると,国内業者は非常に高価,安価な海外業者では基板到着までに数週間~1ヶ月必要という欠点がありました.
そこで本記事では,プリント基板を安く,かつ早く製造してもらう業者の紹介を行いたいと思います.
続きを読むTerasic DE0ボードでのUSB通信②
前回記事の続きです. kazu1995.hatenablog.jp 今回は,前回記事で行ったJTAGの基本命令であるIDCODEの取得に加え, 自らが作成した命令を介してDE0に搭載している7セグメントLEDやLEDGの点滅操作, SWの状態取得,またFPGA内部にある数値の取得を行います.
1.事前準備
- JTAG通信に必要なD2XXドライバを入手します.FTDI社のWebサイトより入手可能です.
以下リンクよりWindows版を入手,i386フォルダにあるftd2xx.dllを使います(使い方は後ほど).
D2XX Direct Drivers - DE0のピン配置ファイルを入手します.
自作することも可能ですが,今回は製造元であるTerasic社から入手したいと思います.
DE0製品ページのResources > DocumentsからDE0 Debounce Projectをダウンロードし,DE0_TOP_NewフォルダにあるDE0_TOP.qsfを使います(使い方は後ほど).
Terasic - All FPGA Main Boards - Cyclone III - Altera DE0 Board
2.ソースコード
以下サイトにて公開しています.Download ZIPをクリックすることでコードを一括ダウンロードすることができます.
Experimental code of Virtual JTAG ( http://kazu1995.hatenablog.jp/entry/2017/11/18/202718 ) · GitHub
3.QuartusⅡの操作
QuartusⅡを起動し,以下の操作を行います.
- File > New Project Wizardからプロジェクトを作成
- Page1: working directoryはお好みで指定,project nameはCycloneと入力*1
- Page2: Add Filesに配布しているCyclone.vhdを指定しadd
- Page3: Family > Cyclone Ⅲ,Available devices > EP3C16F484C7を指定*2
- Page4: EDA Tool Settingsはお好みで
- Page5: Finishでプロジェクトの完成です
- Assignments > Import Assignmentsから,Terasic社より入手したピン配置ファイル(DE0_TOP.qsf)を指定します
- Tools > MegaWizard Plug-In ManagerからMegafunctionsを作成します
- Page1: Create a new custom megafunction variationを選択
- Page2a: Virtual JTAGを選択し,What name do you want for the output file?の入力欄の末尾にvirtualjtagと入力*3
- page3: ここからVirtual JTAGの具体的設定を行います,How wide should the instruction register be? > 8を指定
- Finish(Page4~6は無視して構いません)
- Quartus Ⅱ IP Filesに関するメッセージボックスが出現したらYesをクリック
- あとはコンパイルしてDE0に.sofファイルを書き込みます
4.Visual Studioの操作
Visual Studioを起動し,以下の操作を行います.
- ファイル > 新規作成 > 既存のコードからプロジェクトを作成
- 作成するプロジェクトの種類 > Visual C#を選択
- ファイルの場所には先程ダウンロードしたソースファイルのあるフォルダを指定し,好きなプロジェクトの名前とを入力後,出力の種類にはコンソール アプリケーションを指定
- プロジェクトはこれで出来上がり
- プロジェクト > プロパティから,ビルドを開く
- プラットフォームターゲット > x86を選択,アンセーフコードの許可にチェックを入れる
- ビルドをし,生成される.exeファイルと同じディレクトリにD2XXドライバ,ftd2xx.dllを配置
5.USB通信を行う
DE0に書き込んだあと,Visual Studioを用いて生成した.exeファイルを実行してください. 無事に起動すると次のような画面が現れると思います. 色々試して遊んでみてください. ソースファイルの説明はまた改めて行います.感想や改良案など,お待ちしています.
(2017/11/20追記)
ソースコードをC# 7.0対応(Visual Studio 2017~)で書いていたため一部修正しました.現在公開しているコードについてはC# 3.0対応(Visual Studio 2008~)となっています.
TeXでの下付き文字(添字)を簡単に出力する
MOSFETの諸特性や,,オペアンプでの,,電源を示すというように下付き文字をつける変数が多々存在します. これらの下付き文字は一般に端子名や状態が用いられることが多く,例えばだと,ON状態のときのドレイン・ソース(Drain・Source)間抵抗が語源です. この変数自体には書体が指定されていて通常イタリック体(斜体)を用います.一方,下付き部は名称であるためローマン体(立体)が用いられます.
これをTeXにて再現しようとすると,
$ R_{\mathrm{DS(ON}} $
と書く必要があり,大変面倒です.
そこで今回は,マクロ(\newcommand)を用いてもっと簡単に出力できるようにしてみたいと思います. プリアンブル部に以下を書くだけです.
\catcode`_ = \active \newcommand_[1]{\sb{\mathrm{#1}}}
まず1行目で,下付き文字(カテゴリーコード8)の操作を行えるようにします.
次に2行目で,本文中(ただし数式モード中に限る)にtest_hoge
のような文章が出現したとき,hogeの部分をローマン体にするようにします.\sb
は_
と同じ役割を示し、hogeをtestの下付き文字になるようにします.
あとは本文中で,
$ R_{DS(ON}} $
と書けば,のように出力されます.
Terasic DE0ボードでのUSB通信①
Terasic社が販売しているFPGAボード・DE0にはUSBコネクタが搭載されていますが, 通信方法について具体的に書かれている資料は英語資料含めても限りなく少ないため中々実装することができませんでした.
しかし,rerm.info JavaでJTAG通信 にてJavaを使って通信する方法が掲載されており, これを元に,と思い立ち今日に至ります.
この記事ではまずUSB通信のテストを行います. 今後の実装の都合上,C#を用いてコーディングしました.
1.USB通信テスト
今回はまずUSB通信の第一歩としてPCから命令を送信し,FPGA特有のコードであるIDCODE*1の受信を試みます.
2.ソースコード
Visual Studioを起動し,Visual C#で新しいコンソールアプリケーションを作成後,以下をコピー・ペーストしてください.
using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { const string DLL_PATH = "ftd2xx.dll"; [DllImport(DLL_PATH)] unsafe private static extern UInt32 FT_Open( Int16 DeviceNumber, UInt32* ftHandle ); [DllImport(DLL_PATH)] private static extern UInt32 FT_Close( UInt32 ftHandle ); [DllImport(DLL_PATH)] unsafe private static extern UInt32 FT_Write( UInt32 ftHandle, [MarshalAs(UnmanagedType.LPArray)] short[] bdata, UInt32 BufferSize, UInt32* BytesWriten ); [DllImport(DLL_PATH)] unsafe private static extern UInt32 FT_Read( UInt32 lngHandle, [MarshalAs(UnmanagedType.LPArray)] byte[] bdata, UInt32 lngBufferSize, UInt32* lngBytesReturned ); static unsafe void Main( string[] args ) { const short L = 0x2D2C; const short H = (short)(L | 0x1010); const short TMS = (short)(L | 0x0202); const short TMS_H = (short)(TMS | H); const short WR = 0x81; const short RD = 0xC0; const short OFF = 0x0D0C; uint size; UInt32 ftHandle; List<short> memory = new List<short>(); if (FT_Open(0, &ftHandle) != 0) { Console.WriteLine("Don't connect."); Console.ReadLine(); return; } Console.WriteLine("Connection!"); // MoveIdle memory = new List<short> { TMS, TMS, TMS, TMS, TMS, L }; FT_Write(ftHandle, memory.ToArray(), (UInt32)memory.Count << 1, &size); // MoveShiftir memory = new List<short> { TMS, TMS, L, L }; FT_Write(ftHandle, memory.ToArray(), (UInt32)memory.Count << 1, &size); // WriteShiftir memory = new List<short> { (short)((0x06 << 8) | WR), L }; FT_Write(ftHandle, memory.ToArray(), (UInt32)memory.Count << 1, &size); // MoveShiftirToShiftdr memory = new List<short> { TMS, TMS, TMS, L, L }; FT_Write(ftHandle, memory.ToArray(), (UInt32)memory.Count << 1, &size); // ReadShiftdr int rx = new int(); byte[] rxData = new byte[4]; memory = new List<short> { (short)((0 << 8) | (RD | 4)), TMS_H, TMS, TMS, L, L }; FT_Write(ftHandle, memory.ToArray(), (UInt32)memory.Count << 1, &size); for (int i = 0; i < 4; i++) { FT_Read(ftHandle, rxData, 1, &size); rx += rxData[0] << (i * 8); } Console.WriteLine("Device IDCODE is " + rx); memory = new List<short> { TMS_H, TMS, OFF }; FT_Write(ftHandle, memory.ToArray(), (UInt32)memory.Count << 1, &size); FT_Close(ftHandle); Console.WriteLine("JTAG Close..."); Console.ReadKey(); } } }
3.注意事項
- プラットフォームターゲットに"x86"を指定
System.BadImageFormatExceptionエラーが発生する場合があります.設定自体はプロパティのビルドから変更します. - アンセーフコードの許可
ftd2xx.dllを使う関係でunsafeを使用しました.この設定も上と同じくビルドから変更します. - 生成された.exeファイルと同じディレクトリにftd2xx.dllを配置
FTDI社WebサイトのDrivers,D2XX Driversからドライバをダウンロードすると中に入っています. - QuartusⅡを入手しておく
USB Blaster認識の都合上必要だと思います(※未検証).フリーのWeb Editionを入手してみてください.
4.実行結果
DE0に搭載しているFPGA,CycloneⅢ EP3C16のIDCODEは0000 0010 0000 1111 0010 0000 1101 1101*2であり,10進では34545885になります. また,DE0の電源スイッチ下、POWER-LED右側のLOADとシルクがあるLEDが一瞬点灯することを確認できるかと思います. これらより,JTAG通信を用いてIDCODEの読み出しに成功したことがわかります.
5.備考
他のTerasic社製ボードの場合,Terasic DE0-Nano(CycloneⅣ EP4CE22)だと34549981が,DE1(CycloneⅡ EP2C20)だと34287837が出力されます.
unsafeを使わないやり方を考えていますが,未熟ゆえ良い方法が思いつきません...... もしうまいやり方をご存知でしたら教えてください.
参考文献
rerm.info JavaでJTAG通信
ioioのホームページ FT245RL用DLLの使い方
坂巻佳寿美.JTAGテストの基礎と応用.CQ出版,2003
(11/18追記)続き
kazu1995.hatenablog.jp
*1:製造メーカや部品番号などが含まれる32bit長のコードのこと
*2:Altera Cyclone III Device Handbook, Volume 1 『Chapter 12. IEEE 1149.1 (JTAG) Boundary-Scan Testing for the Cyclone III Device Family』 p.12-2より
proxy環境下におけるTeXの導入
研究室に配属され,卒業研究に着手される方が多くなるこの時期.パソコンにTeXを導入される方も多いのではないでしょうか.
そんなとき,学校内のネットワークを使って導入しようとするとエラーが発生して導入できない,なんてことが多々あるかと思います.
この記事では,そんな学内ネットワーク(proxy環境下)においてTeXを導入する方法をご紹介したいと思います.
1.導入するTeX
国内においてTeXを導入するにはTeXインストーラ3を使う方法とTeX Liveを使う方法との2つが主流です.TeXインストーラ3はネットワークインストール形式の導入形式でproxy環境下では弾かれることが多いため,今回はTeX Liveでの方法をご紹介します.TeX Liveは以下のWebサイトからtexlive.isoを選択することで入手可能です.
Acquiring TeX Live as an ISO image - TeX Users Group
2.isoファイルのマウント(Windows7の方のみ)
※Windows8以降のOSを使っている方は読み飛ばしてください.
ダウンロードしたファイルはそのままでは開くことができません.そのため,7-Zip(圧縮・解凍用ソフト)を追加で導入する必要があります.7-Zipを入手したら,先にダウンロードしたtexlive.isoを展開してください.
また,申請・許可など諸々の事情で7-Zipを導入できない方は,Microsoft純正のVirtual CD-ROM Control Panelが良いでしょう.
Virtual CD-ROM Control Panelの解説ページ:
Windows 7でISOイメージをマウントするMS純正ソフト(32ビット版のみ): EeePCの軌跡
3.まずは最小構成で導入する
texlive.isoをマウント(展開)したら,フォルダ内のinstall-tl-advanced.batを実行します.すると,次のような画面が表れると思います.
この画面が現れたら,--- 基本情報 ---にある"選択したスキーム"の右端,"変更"ボタンをクリックします.すると,
という画面が表れるので,"最小限スキーム"を選択して"OK"ボタンをクリックします.
あとは"TeX Liveの導入"ボタンをクリックして,しばし待ちます.すると,次のような画面が出てきます.この時点で最低限のTeXは導入されました.
ここでなぜ最小限スキームを選択したかというと,TeX Liveでの導入途中に障害が発生し,インストーラが固まった挙句導入に失敗するという問題がよく見られるからです.そこで最小限の構成で導入し,後に足りないものを補う,というのが今回の手法です.
4.TeX Live Managerを使って足りないものを補う
TeXでは表を作ったり図を挿入したりという機能1つずつがパッケージという仕組みにより提供されています.このままでは何一つTeXを使うことができないので,先程導入しなかったパッケージ群を一気に導入したいと思います.
3.によりTeXの最小限スキームの導入が終わると,TeX Live Managerというソフトウェアが入ります.まずはこれを起動します.起動すると次のような画面が表示されます.
tlmgrタブから,”他のリポジトリの読み込み”をクリックします.すると画面が出てくるので,"ローカルディレクトリを選択してください"から,先のtexlive.isoがマウントされているドライブ,または解凍してあるディレクトリを選択して"読み込み"をクリックします.すると,リポジトリの項目に"読み込み完了"と表示されるので,"表示設定"の"状態"から"未導入"を選択肢,右端にある"すべて選択"をクリックし,最後に導入をクリックします.簡単なクリックの流れは次の図の通り.
3000を超えるパッケージを導入するので,かなりの時間がかかりますが,待機.全て導入が終わると下のメッセージボックスに"完了 ."とひとことメッセージがでます.以上がproxy環境下におけるTeXの導入でした.
いかがでしたでしょうか,無事導入することはできましたか?
最後に,これからTeXを使われる方へ,教科書代わりに使える本をご紹介して終わります.
いざという時にも安心?!電気系学生に追加でおすすめする工具6選
昨日の記事(1万円で揃える電気系学生におすすめの工具10選)に追加で,いざという時にも対処するための工具などを6つ,ご紹介します.
1.テスター
故障の判定や,導通確認,短絡確認といった基板のチェック,電源から出力される電圧/電流の測定など,様々な用途に使えるのがテスター.巷には数多くのテスターがありますが,サンワのCD771がコストパフォーマンスに優れる1台です.数台持っていても損はありません.
SANWA デジタルマルチメータ バックライト搭載 CD771
- 出版社/メーカー: 三和電気計器
- メディア: Tools & Hardware
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
また,テストリード先端に接続できるアクセサリも多数販売されているので,用意してあると中々便利です.
三和電気計器 クリップアダプタ CL-14(わに口クリップ)
三和電気計器 アダプタ TL-A4(バナナプラグ・直安の端子に直接挿入)
サンハヤト ブレッドボード用オプション SUP-200 テスター棒用(ブレッドボード挿入用)
三和電気計器 携帯用ケース C-77(CD771用ケース)
2.ラジオペンチ
ちょっとした曲げ加工や,スペーサ代わりに使ったり,ピンセットでは歯がたたないときに登場するのがラジオペンチ.ナットを緩めたり(締めるのは微妙),太い電線の切断にも使用できます.ハンマー代わりに打撃に使ったりも.マルト長谷川(KEIBA)のペンチ類はしなやかに,そして油を注すこと無くしなやかさが維持されるのでとても良いです.
3.インシュロック
実験中,机の上に広がる多数の電線.基板と基板をつなぐ無数の電線.それらを束ねるのに使います.結束バンド,タイラップ,ロックタイ,もっと短くタイと呼ばれたりも.
ヘラマンタイトン 結束バンド インシュロック AB150-W 100本入 耐候・屋内外用グレード 黒
- 出版社/メーカー: ヘラマンタイトン
- メディア: Tools & Hardware
- この商品を含むブログを見る
4.ハンダ吸い取り線
間違えてはんだ付けをしちゃった,基板を改良しなければいけないなどなど,一度はんだ付けをした箇所からはんだを除去するのに使います.はんだが少量であればはんだこてでも頑張れなくはないですが,やっぱり吸い取り線があると便利.
5.イソプロパノール
突然ですが薬品,アルコールです.これは汚れを除去するのに使います.普通の水では不純物が含まれているため電気が通りNG,なのでアルコールを使うのです.無水エタノールを使うこともありますが,値段が高いのでイソプロパノールと呼ばれるアルコールを使用します.イソプロピルアルコール,イソプロなんて呼ばれ方も.
6.キムワイプ
イソプロで洗浄した基板を拭くのに使うのがこのキムワイプ.普通のティッシュでは水を含むとボロボロになってしまいますが,キムワイプはそうなりません.キッチンペーパーのようなものです.そして鼻をかんだり,卓球*1にも使える優れもの.
いかがでしたでしょうか.他にもワイヤストリッパや圧着工具,スズメッキ線,パイオラン,あげるときりがないのでこの程度とさせていただきます.
前記事と同様,ここにある商品はすべてAmazon.co.jp以外でも購入ができます.ただし,テスターやイソプロは,そこらのホームセンターでは売っていないかと......
1万円で揃える電気系学生におすすめの工具10選
6年間もの高専生活を振り返って,本当に必要だった工具を1万円の予算から10個ご紹介します.
1.ニッパ(2000円)
恐らく一番使うのがこれ.電子部品の足や電線,インシュロックの切断に大活躍.リードストッパー付きのニッパーだと,切断したあとの小さい線が飛んでいかず,後片付けが非常に楽です.
リードストッパーが活躍する様子は以下の動画をご覧ください.
切った物が飛ばない=ステンレスニッパ(リードストッパー付)【SP-31】 - YouTube
2.はんだこて(4000円)
百均でも半田ごてを売っているそうですが,絶対に駄目です.初めてならなおさら,出力が高く,温調機能がついているこてを選んだほうが良いです.なぜなら,はんだ付け時のはんだのつきやすさが段違いだから.
このgootのPX338は85Wの消費電力を有し,十分です.
3.プラスドライバその1(600円)
基板上の部品の調整や端子を締めたり,電気の世界でも意外に使うことが多いプラスドライバ.ドライバ(ねじ)のプラスの部分のサイズは小さい順からNo.00,No.0,No.1,No.2...とあります.小さいねじ用にはNo.0とNo.1とを持っていたらOK(本当は調整ドライバという電子部品用の特殊なドライバのほうがいいのですが).
4.プラスドライバその2(700円)
一方,電動機の端子なんかに使われるねじは少し大きく,No.2のドライバが適合することが多いです.ここでは先ほどとは違って,グリップの大きい,より力を入れることができるドライバがおすすめ.
アネックス(ANEX) スリットパワードライバー 貫通タイプ プラス2×100 No.7750
- 出版社/メーカー: 兼古製作所
- メディア: Tools & Hardware
- この商品を含むブログを見る
5.マイナスドライバ(300円)
プラスドライバに続き,マイナスドライバもラインナップ.正直,ねじを締めるという用途よりも,何かをこじる,隙間をつくるような用途に多々使いました.
6.マスキングテープ(100円)
工具ではないのですが,あえてラインナップ.測定作業中,電線を机に仮止めしたり,多数ある計器に何を測定しているのかを示したり.はたまた,はんだ付け中に電子部品を固定したりと,多くの場面であったら便利な一品.
7.ノック式マッキー(200円)
そしてこのマスキングテープに文字を書くためにマッキー.視認性が良い,赤色のノック式をおすすめします(キャップ式はキャップを無くす恐れがあるため).
そしてもう一つ,恐らく図面を基にはんだ付けを行うと思いますが,終了した配線,部品を区別することや,基板自体に文字を書き込みたいときにも重宝します(なので蛍光ペンやボールペンではダメなのです).
8.ピンセット(300円)
ようやく工具に復活.ちょこまかとした作業をするとき,何度もピンセットに助けられました.逆接などの変わったやつではなく,普通のピンセットでOK.
9.直尺(300円)
寸法を測るため.15cm長であれば正直なんでも良いです.
10.工具袋(1500円)
せっかく揃えた工具も,持ち運びができなければ意味がありません.まとめてどかっと入れるタイプよりも,こういう多くのポケットがあるほうが整理しやすく便利です.こんなかんじ.
TRUSCO(トラスコ) ツールロール 670X355 22ポケット TTR-670
- 出版社/メーカー: トラスコ中山(TRUSCO)
- メディア: Tools & Hardware
- この商品を含むブログを見る
いかがでしたでしょうか.このエントリでは最低限必要と思われる工具を取り上げてみました.
すべての商品はAmazon.co.jpで購入ができ,他にもヨドバシやモノタロウ,楽天など様々な場所で購入できると思います.
ここに紹介していない工具でも,この工具は僕にとって必須だった,これは使わなかったなどありましたら,是非コメントに残していただけると幸いです.
(4/2追記)続き