e-tipsmemo

ごった煮

EZ-USB FX2 Slave FIFO③

e-tipsmemo.hatenablog.com
の続き。

実際にLEDに表示するのではなく、FIFOに入力していく。
イメージとしては以下のような感じ。
f:id:katakanan:20180420001850p:plain

これを実装した。

EZUSBのコードは前と同じ。
FPGAのコードは以下の部分がメイン

EMPTYフラグをみてSTATE1へ遷移し、EMPTYフラグが立つまで立ち上がりクロックでデータをラッチする。
クロックはEZUSB内部クロックと位相がπずれている。(はず)

このブロックをFIFOとEZUSBバスの間に入れる。
f:id:katakanan:20180427001516p:plain
ついでにILAでデバッグしやすいようにする。

USB Control Centerなるところから6byteおくると、16bit単位なので3回送信されるはず。
f:id:katakanan:20180427001233p:plain:w400
このときのILAの波形は
f:id:katakanan:20180427001814p:plain
トリガーとして、FIFOへのwrite enableを出している。
FIFOの書き込みカウント数が3になっている。

f:id:katakanan:20180427002119p:plain
debugの[22:7]がデータバスに直接つながっているので値をみると、
FIFOから正しく値が取り出せている様だ。

上が切れてしまったが
0x02_01
0x04_03
0x06_05
となっている

次回はFIFOから読み出して云々という流れの予定。

Ryzen5 2600X 録画PC 検討

Zen+世代のAMD CPUとしてデスクトップ用Ryzen7/5 2000番代シリーズが発売。(4/19)
たった2万3000円で6コア12スレッドが手に入るのは素晴らしい。
(i5-8400は2万円で6コア6スレッド)

今回はRyzen5 2600Xを使って組んだ。
使用したパーツは以下
流用品もある。

CPU

AMD CPU Ryzen 5 2600X with Wraith Spire cooler YD260XBCAFBOX

AMD CPU Ryzen 5 2600X with Wraith Spire cooler YD260XBCAFBOX

Amazonアプリを利用すればjpからcomのものも購入できるようになったことで
為替や手数料をよく考えればドルで買っったほうが安いこともあるかもしれない。
(今回は、CPUの価格そのものが安いうえにネットでも現地でも価格差はあまりなかった)

マザーボード

ASRock AMD X470チップセット搭載 ATXマザーボード X470 MASTER SLI

ASRock AMD X470チップセット搭載 ATXマザーボード X470 MASTER SLI

AsrockのX470 Master SLIは上位のX470 Asrockマザーボードと同じ部品を使っているらしい。
それでも二万円弱。
一応Zen+はX370、B350チップセットにも対応しているので安いマザーボードは他にもあるが、
せっかく X付きのCPUを買うのでX470にしないとちょっともったいない。
Xなしの無印であればB350 microATXなどを選べばATXに比べて小さく組めると思われる。

グラフィックカード

は、余らせていたGTX660を載せてセットアップが完了したら外す。
headless構成ができないようであれば画面出すだけの安いビデオカードを別途用意。

メモリ

Ryzenは内部のインターコネクトのクロックがメモリと同期しているから速いメモリだとよりよい(体感できるほどでない?)
などと聞くので、Zen2当たりも見越して良いメモリを買った。
Skylakeを購入したときと比べて二倍以上の値段になっているのが悲しい。

電源

Corsair CX550M 80PLUS BRONZE認定 PC電源ユニット PS627 CP-9020102-JP

Corsair CX550M 80PLUS BRONZE認定 PC電源ユニット PS627 CP-9020102-JP

電源は乗せるCPU、マザーボードGPU +ケースにあるファンの数によって容量を決められる。
GTX660でゲームなどすると550Wでは効率が悪いかもしれないが、グラボは外す予定なのでコレぐらいで充分だと思われる。
後述するケースにもファンは1個しかなかった。

ケース

本当は黒色が欲しかったが、値段が高いので青にした。
このケースはATXを入れられるがレイアウトが多少へんてこらしいので電源をあまり大きいもの
(例えばこれ)
Corsair RM550x 80PLUS GOLD認証取得 550W静音電源ユニット PS592 CP-9020090-JP

Corsair RM550x 80PLUS GOLD認証取得 550W静音電源ユニット PS592 CP-9020090-JP

などにした場合は入らなるかもしれない??ちゃんと検討する必要がある。
見た目がおしゃれっぽいのが選択理由。

SSD

昔買ったVaio ZのSSDが125GBで流石に小さいので
交換したときに960 EVO 500GBを購入した。
なので125GBのM2.SSDが余っている。
データ用HDDは別途買うがそこまで高くないだろう。

今回新しく購入したモノだけを列挙すると
リアル店舗の割引やポイントなどもあって

値段(税込)
CPU 28000
マザボ 17900
GPU 流用
メモリ 22000
電源 6730
ケース 6780
合計 82000ぐらい

昔(半年前)買った960EVOは3万円
GTX660(2年前)は1.5万円ぐらいだった気がする。
今回出費した値段的にはパーツの使いまわしができる自作PCのメリットがあまり活かせていない気がする。

加えて録画PCにするならチューナーも必要である。
定番のチューナーはPT3やPLEXだと思われる。

PT3 Rev.A

PT3 Rev.A

サーバーにするには少しスペックが高いが、気が向いたらメインPCにする。
次回はPCを組み立てセットアップ。ベンチマーク、、、Ryzen Masterもろもろを予定。

EZ-USB FX2 Slave FIFO②

e-tipsmemo.hatenablog.com
続き。

FIFOを接続するまえに16bitずつ受信できるかどうかを確認する。

まずEZ-USBのデバイスディスクリプタの一部を示す。


変えたのはここらへんのエンドポイントの数や、


使わないエンドポイントをコメントアウトしただけである。

また、プログラムの方は、TD_Initとメインループの部分を変更した。

そもそもTD_pollはいらない。
GotSUDは消さない。

FPGA側は、一部抜粋すると

ちょっとハマったのはFDはinoutなのでその書き方。

波形としてはこのようなものをイメージしている。
f:id:katakanan:20180418001107p:plain

USB Control Centerからファームウェアを書き込んで、
f:id:katakanan:20180418001140p:plain
END point2からデータを送る。

そうすると、EP2の空を示すFLAGAが立ち上がるので(=空ではない)受信が開始できることになる。
スイッチをおして、適当にチャタリング防止して、
STATE1に遷移したときに、LEDにFDiをラッチする。
そのままIDLEステートに戻る。
これを三回繰り返すと、FLAGAは0になった(=空である)

受信bit数は16bitなのでLEDには上の画像のデータを送ると2進数で
(0000_0010_0000_)[0001]

(0000_0100_0000_)[0011]

(0000_0110_0000_)[0101]
と表示が変わる。

Windwos10 マイク 聞こえない

Windows10でマイクを利用するときにハマったこと

前提

  • マイクを持っている
  • ドライバを入れたりした(Windowsデフォルトでもいい)
  • マイクは認識されている

症状

設定→システム→サウンド→サウンドコントロールパネル→録音
でマイクが認識されており、既定のデバイスになっている。

マイクのプロパティでこのデバイスを聞くにチェックボックスを入れているのに聞こえない。
f:id:katakanan:20180415112746p:plain

解決

設定→プライバシー→マイク
にて、「アプリがマイクにアクセスできるようにする」をオン。
マイクがアクセスできるアプリを個別に設定。
f:id:katakanan:20180415112939p:plain

EZ-USB FX2 Slave FIFO①

e-tipsmemo.hatenablog.com
この記事の続き且つSlave FIFO modeで動かす。
上の記事で見落としていたが

Interface Descriptorの中に
利用するエンドポイントの数を指定する場所があった。

;; Interface Descriptor
      .db   DSCR_INTRFC_LEN      ;; Descriptor length
      .db   DSCR_INTRFC         ;; Descriptor type
      .db   0               ;; Zero-based index of this interface
      .db   0               ;; Alternate setting
      .db   2               ;; Number of end points
      .db   0xff            ;; Interface class
      .db   0x00               ;; Interface sub class
      .db   0x00               ;; Interface sub sub class
      .db   0               ;; Interface descriptor string index

これを2(EP2(OUT) EP6(OUT))に設定して
EP4とEP8のディスクリプタコメントアウトすればよかった。

このPDFのp11と
http://www.cypress.com/file/386321/download

この記事を参考にする。
平坂久門ただいま失業中: EZ-USB FX2LP を動かしてみる (26) 転送レート測定のソースコード

とりあえずクロックはチップ内部のクロックを位相を180度回転させて外部へとだすようにしている。
また、Slave FIFOのうちSynchronous Modeを選択肢する。
読み出し時の波形は
http://www.cypress.com/file/126446/download
のp107, p108に書いてあるものを参考にする。

理想としては、以下のような感じ?
f:id:katakanan:20180415235232p:plain

上のクロックがチップ内部のロジックを駆動しており、
下のクロックがFPGAの受信側を駆動する。

二度手間感あるが、データを内部の非同期FIFOに入れる予定。

無変換 Escape 入れ替え

WSL(に限らないが)でVimを使うとescが遠いことが不便に思える。

ググればたくさん出てくるが
それをreg化したもの。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,7B,00,00,00,00,00

3つのキーを入れ替えなどをする時は違う値になる。ので
無変換とESC専用。

ADALM-PLUTO 初期テスト

他のFPGAボードもいじっている途中だが、
格安ボードがあると買ってみたくなるものである。
www.digikey.jp


ただ、これはFPGAが乗っていると言っても、使う側はそこをあまり意識しなくていいとおもわれる。
主にSDRを学習する用の開発ボードという様子。

ドライバーをインストールする

github.com
https://wiki.analog.com/_media/university/tools/pluto/drivers/device_manager_installed.png?cache=

USBケーブルをさす。

OSCを入れてみる

github.com

OSC起動

USB Deviceを選択してから一度だけ更新ボタンを押さないといけないかもしれない。
f:id:katakanan:20180408104223p:plain

このOII Oscilloscopeがよくわからない。
MatlabやPlutoSDRというソフトウェアを使うこともできる。
Matlabは有料なのでPlutoSDRを使っている人が多そうだが、
Supported hardware – Gqrx SDR
に依ると、

PlutoSDR
Very experimental
Support included out-of-the-box in our Ubuntu and other binary packages
Source builds need plutosdr branch from gr-osmosdr-gqrx fork

であるらしい。
代替でPlutoSDRできたらMATLABとかを試してみる。