e-tipsmemo

ごった煮

Tang Primer Getting Started

時々Verilogを書きたくなることがある。 XilinxだとVivadoのインストールサイズを見るだけで、やる気が失せるので、 最近流行っている中国のFPGAをいじることにした。安いし。 入手 Sipeed Lichee Tang Nanoミニマリストライン FPGA 開発ボードブレッドボー…

NES Emulator in Rust : 5.1 Sprite timing

e-tipsmemo.hatenablog.com 以前にBackgroundが実装されていたがその時にSpriteも実装していた。(前後関係がおかしいままであるが) Sprite描写の実装は参考サイトとは少し違う (参考サイトの実装方法ではSprite zero hitのタイミングが数pixelずれる気がした…

Piston_window with Nintendo Switch Procon

e-tipsmemo.hatenablog.com前回NESのエミュレータでキー入力からのPAD操作を実装することができていたが、 やはりゲームパッドでコントロールしたいという願望があったため、Nintendo Switchのプロコンを買った。【任天堂純正品】Nintendo Switch Proコント…

NES Emulator in Rust : 4 Pad Input

e-tipsmemo.hatenablog.com続きスプライト実装をする前に、Nestestを通すために、PAD入力をサクッと実装する。 NES on FPGA PAD キー入力 Piston windowでキー入力をとるのはEvent::Inputが来たとき。 本当はInputでパターンマッチした引数でうまくやれるか…

NES Emulator in Rust : 3 PPU Background

e-tipsmemo.hatenablog.com 続きPPUを始めるにあたってnestestの表示または、HelloWorldの表示が最初の目標となる。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita スプライト表示なし。(スクロールなしの)バックグラウンドを描写さえすれば…

NES Emulator in Rust : 2 CPU

e-tipsmemo.hatenablog.com 続き CPU #[derive(Default, Clone)] pub struct Cpu { pub pc: Cell<u16>, pub a: Cell<u8>, pub x: Cell<u8>, pub y: Cell<u8>, pub s: Cell<u8>, pub p: Cell<Status>, pub nmi: Cell<bool>, } レジスタを用意する。Statusはbitflags crateでflag管理する。 メイン</bool></status></u8></u8></u8></u8></u16>…

NES Emulator in Rust : 1 Operation Cycle

e-tipsmemo.hatenablog.comまずはどうCPU & PPU Cycleを合わせていくかというところを見る。 最初はほぼ参考サイトと同じように実装していく。 Operation Cycle Generatorを使うことで、NESの1画面更新が、以下の1ループと同じになる。 yieldでVBlankで停…

NES Emulator in Rust : 0

以前ファミコンのエミュを書きたいといってROMを読んだ記事を書いた。 e-tipsmemo.hatenablog.comコミットログを見ると始めてから2か月というところで、 giko00x.nesが動かないが、Donky kongがバグりつつ動いてくれたりと躓いているので。 かわりに雑記を書…

Home AssistantとESPHome導入とESP8266でLED点灯

Getting Started with ESPHome and Home Assistant — ESPHome ここをやったときのメモ Home AssitantのSupervisorになるものを用意 候補 Installation - Home Assistant Dockerが動けば大体いけるので、最近のSynologyやQNAPのハイスペックNASでも行ける気が…

久しぶりにPCBGOGOに発注

2.5年ぶりにPCBGOGOに基板製造を注文した。 PCBGOGOがどれくらい変化してるのか気づいたところを書く。 製造能力 デザインルールを見ていたが、かなり製造能力が上がっている。 標準FR-4基板- PCBGOGO.JP 例えば、 BGAパッド径は0.2mm以上、(以前は0.3mm以上…

Extract splite from NES file in Rust

懲りずにエミュレータを作りたいと考えている。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita HelloWorldするために、NESファイルを読み込みたい。 Qiitaの記事にもあるようにウォーミングアップとしてスプライトを表示したい。 GitHub - ka…

tasmotaを使用してみる

ちょっとネットワークに接続したデバイスを作りたいと思い、 手元あったESPxxxxマイコンの開発環境がどれくらい変化したかを確認することにした。ESP8266EXが入っているWROOM-02を使いやすくしてあるモジュールで試す。 ESP−WROOM−02開発ボード: …

Parse indent sensitive grammar in Rust with Pest

以前、パーサーを雑に比較した。 e-tipsmemo.hatenablog.com結局Left-recursionは書き方で何とか対応できる範囲だと思われるので Introducing pest into glsl and hindsight about nom vs. pest (part 1) – phaazon.net(それ以外はどうしようもない) インデ…

TD4 実機作成

TD4の実機を組み上げた。ICを入れる前に洗浄した時の写真 PCBは2018年のコミケで買ったものを使っている。コミケのときに付属していた冊子 https://dip-factory.booth.pm/items/2089614こちらが最新のよう https://booth.pm/ja/items/2093868画像を見た感じ…

TD4 Emulator GUI in Rust iced

TD4のエミュレータを作った e-tipsmemo.hatenablog.comが、それだけではつまらないので、GUIを被せた。 RustのGUIライブラリicedを使用した。 シンプルそうだったからというのが選んだ理由。 GitHub - katakanan/td4-gui Ticker Icedは周期を指定してイベン…

WSLでGUIの開発(調査)

RustとWSLでGUIの開発出来たら、Visual Studioはいらないよね。 と思って、色々試行錯誤したこと、調べたことのメモ。 前提 Windowsである。 WSLgが動く。 試行1. 普通に開発する(ものによる) そもそもとして、RustのGUIライブラリのicedというものを使用し…

TD4 Emulator in Rust

思い立ったのでTD4のエミュレータを書いた。 GitHub - katakanan/td4-emu 命令セット TD4の命令の定義部分。 オリジナルで定義されている命令以外はNOPということにする。 #[derive(Debug, FromPrimitive, PartialEq)] pub enum Opecode { ADD2A = 0b0000, A…

FPGAボードセレクション

昔と違って、それなりのスペックのFPGAが実装された評価ボードが、かなり簡単に手にはいるようになっているので、 スペック 開発無料(Vivado webpackで開発できる not ISE) の点で昔を懐かしみながらまとめてみた。 (面白い評価ボードがあったら、何かを始め…

libiio rust binding for Windows

前置き ADALM PLUTOからデータをもらうのに、用意されている方法として、Industrial-ioを使用する方法がある。 Linux Industrial I/O Subsystem [Analog Devices Wiki]組み込み機器が得たデータを簡単にPCとやり取りできる。 (組み込み機器上でLinuxが動いて…

Import dll from Rust dinamically

RustのFFIでdllを使う方法として、 #[link(name = "my_c_library")] extern "C" { fn my_c_function(x: i32) -> bool; } extern - Rust ただ.libが無いと言われてしまった。 windows - Rust linker seeks a LIB, rather than a DLL - Stack Overflow代わりに…

PythonでFMを直交復調を試す2

以前、PythonでFM復調を試した、 そのとき、変調指数が大きいときは素朴に、位相の差分を取るところで特別な処理を入れて対処していたが、 Interfaceを読んで、直交復調を真の意味で?活用することでその問題を回避できるということを確認した。e-tipsmemo.h…

VNWA3Eを再セットアップする

本来はベクトルネットワークアナライザだけど スペアナみたいに使えたりもする。 昔買ったVNWA3Eをセットアップし直す。 https://www.sdr-kits.net/documents/VNWA_W10_W8_W7_Installation.pdfADALM-PLUTOに付属していたアンテナを単に突き刺して S11を見て…

Pythonでwavファイルを作る。

InterfaceでwavファイルをFM変調をする章があるが、 いきなり曲を変調するのではなく、 まずは単音を変調してスペクトラムなどを確認しようと思う。 そのためにwavファイルを準備する。 モノラルwavファイル作成 まずモノラルのwavファイルを出力する方法は…

Vector Network Analyzer の調査

オシロスコープは中国でもすごいものがたくさんでてきているので、 今度はVNAだろうということで調べた。 (スペクトラムアナライザーは結構あるので、VNA対象) SAA2 NanoVNA V2 まず適当にAmazonで検索するとでてくるVNAの一例KK moon 3Gベクトルネットワー…

ADALM-PLUTOの動作テスト(再)

昔ADALM PLUTOを買ったまま放置していたが、interface誌のSDR特集で出てきたのでSDR Sharpを使って動作テストする。Interface(インターフェース) 2021年 5 月号発売日: 2021/03/25メディア: 雑誌昔やったテスト(適当) ADALM-PLUTO 初期テスト - e-tipsmemo A…

PythonでFM信号の直交復調を試す

pythonに慣れるのと、SDRにおいてIQ復調(Quadrature demodulation)の理解をする。参考 直交復調の解説 http://einstlab.web.fc2.com/IQ/IQ.pdfコード fmsim.py · GitHub FM変調波を用意する サンプリング周波数は1MHz キャリア周波数は20kHz 信号周波数は1kH…

PythonでSDRの前準備

Interface誌 2021年5月号の特集「Pythonで無線信号処理」を見てInterface(インターフェース) 2021年 5 月号発売日: 2021/03/25メディア: 雑誌昔、SDRチューナーを買ったのを思い出した。 購入編 持っていたのはこれ。R820T2 & SDR+TCXO(温度補償型水晶発信…

WSL2のGUIをxrdpで見る

WSL2でGUIの表示を行う時には、 Vcxsrvを使う方法があった。 それとは別に、xrdpを使う方法もあるようだ。qiita.com このままでほぼ完成しているが、リモートデスクトップを放置すると黒い画面になって復帰できない。 WSL2上で pkill xfce4-sessionとすれば…

Generate Hi/Mid/Lo FIRRTL

FIRRTLの抽象度?別を確認する。 object counterMain extends App { var uargs = Array("-X", "middle") //ここをかえる high middle low val FIRRTLString = // (new chisel3.stage.ChiselStage).emitVerilog(new counter(32)) (new chisel3.stage.ChiselSta…

Comparison of Rust Parser generators

Rustでパーサージェネレーターを探していたときに、 その特徴や、今回の最終目的に必要な機能が備わってかどうかで主観的に比較をした時のメモ 構文解析の方式 Indentation(Pythonのようなインデントセンシティブな文法をパースできそうか) 曖昧な文法が可能…