プログラム
なんかBLEで作りたいものが出てきたので、マイコンを探した。Seeed Studio XIAO nRF52840 Sense - Arduino/CircuitPython - Bluetooth5.0 NFC オンボードアンテナ付き、6軸IMUとPDMマイク付きマイクロコントローラ、小さな機械学習用。seeed studioAmazonBLE…
ZyboにUbuntu22.04のファイルシステムを入れて起動した。 PL部分にはAXI GPIOがつながっておりLEDが接続されている。 rotors.tar.goのファイルシステムにはdevmemがインストールされいた。 しかしUbuntuには入っていなかったのでdevmem2.cをどこからかダウン…
ちょっと簡単な実験用にシングルボードコンピューターが欲しくなったけど Raspberry pi 4B (4GB)などは全く打っていないか明らかに高い値段で転売されているので、 趣向を変えて別のボードを購入することにした。どうで~万円だすならと良さそうなのを探した…
Pythonでデジタルフィルタを書きたい時が、まれにある。 でも自分で計算したフィルタの係数が、 本当にその周波数特性を持っているのか確認したくなる。そこでpythonのscipyにあるfreqzを使用して確認してみる。 FIRフィルタとIIRフィルタ 宮崎のホームペー…
ツイート全部けしたくなったが、黒歴史クリーナーなどでは3200件までとか、 削除前後にメッセージを出す機能とかあって、いろいろと面倒なので、 pythonにやらせる。 ツイートを全部ダウンロード こればっかりは手動で行う。 2,3日待って、自身のツイートが…
e-tipsmemo.hatenablog.com 以前にBackgroundが実装されていたがその時にSpriteも実装していた。(前後関係がおかしいままであるが) Sprite描写の実装は参考サイトとは少し違う (参考サイトの実装方法ではSprite zero hitのタイミングが数pixelずれる気がした…
e-tipsmemo.hatenablog.com前回NESのエミュレータでキー入力からのPAD操作を実装することができていたが、 やはりゲームパッドでコントロールしたいという願望があったため、Nintendo Switchのプロコンを買った。【任天堂純正品】Nintendo Switch Proコント…
e-tipsmemo.hatenablog.com続きスプライト実装をする前に、Nestestを通すために、PAD入力をサクッと実装する。 NES on FPGA PAD キー入力 Piston windowでキー入力をとるのはEvent::Inputが来たとき。 本当はInputでパターンマッチした引数でうまくやれるか…
e-tipsmemo.hatenablog.com 続きPPUを始めるにあたってnestestの表示または、HelloWorldの表示が最初の目標となる。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita スプライト表示なし。(スクロールなしの)バックグラウンドを描写さえすれば…
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>…
e-tipsmemo.hatenablog.comまずはどうCPU & PPU Cycleを合わせていくかというところを見る。 最初はほぼ参考サイトと同じように実装していく。 Operation Cycle Generatorを使うことで、NESの1画面更新が、以下の1ループと同じになる。 yieldでVBlankで停…
以前ファミコンのエミュを書きたいといってROMを読んだ記事を書いた。 e-tipsmemo.hatenablog.comコミットログを見ると始めてから2か月というところで、 giko00x.nesが動かないが、Donky kongがバグりつつ動いてくれたりと躓いているので。 かわりに雑記を書…
Getting Started with ESPHome and Home Assistant — ESPHome ここをやったときのメモ Home AssitantのSupervisorになるものを用意 候補 Installation - Home Assistant Dockerが動けば大体いけるので、最近のSynologyやQNAPのハイスペックNASでも行ける気が…
懲りずにエミュレータを作りたいと考えている。 ファミコンエミュレータの創り方 - Hello, World!編 - - Qiita HelloWorldするために、NESファイルを読み込みたい。 Qiitaの記事にもあるようにウォーミングアップとしてスプライトを表示したい。 GitHub - ka…
以前、パーサーを雑に比較した。 e-tipsmemo.hatenablog.com結局Left-recursionは書き方で何とか対応できる範囲だと思われるので Introducing pest into glsl and hindsight about nom vs. pest (part 1) – phaazon.net(それ以外はどうしようもない) インデ…
TD4のエミュレータを作った e-tipsmemo.hatenablog.comが、それだけではつまらないので、GUIを被せた。 RustのGUIライブラリicedを使用した。 シンプルそうだったからというのが選んだ理由。 GitHub - katakanan/td4-gui Ticker Icedは周期を指定してイベン…
思い立ったのでTD4のエミュレータを書いた。 GitHub - katakanan/td4-emu 命令セット TD4の命令の定義部分。 オリジナルで定義されている命令以外はNOPということにする。 #[derive(Debug, FromPrimitive, PartialEq)] pub enum Opecode { ADD2A = 0b0000, A…
前置き ADALM PLUTOからデータをもらうのに、用意されている方法として、Industrial-ioを使用する方法がある。 Linux Industrial I/O Subsystem [Analog Devices Wiki]組み込み機器が得たデータを簡単にPCとやり取りできる。 (組み込み機器上でLinuxが動いて…
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復調を試した、 そのとき、変調指数が大きいときは素朴に、位相の差分を取るところで特別な処理を入れて対処していたが、 Interfaceを読んで、直交復調を真の意味で?活用することでその問題を回避できるということを確認した。e-tipsmemo.h…
pythonに慣れるのと、SDRにおいてIQ復調(Quadrature demodulation)の理解をする。参考 直交復調の解説 http://einstlab.web.fc2.com/IQ/IQ.pdfコード fmsim.py · GitHub FM変調波を用意する サンプリング周波数は1MHz キャリア周波数は20kHz 信号周波数は1kH…
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…
Rustでパーサージェネレーターを探していたときに、 その特徴や、今回の最終目的に必要な機能が備わってかどうかで主観的に比較をした時のメモ 構文解析の方式 Indentation(Pythonのようなインデントセンシティブな文法をパースできそうか) 曖昧な文法が可能…
VivadoのIPコアはたくさんあって便利だけども シンプルな機能を求めるときには、 調べるの面倒とか、微妙に思っていたのと違うと感じることが多々あった気がするので、 仕方ないので自分で書いたものをメモBRAM IFにつなげて同じ幅のAXI Streamで連続データ…
e-tipsmemo.hatenablog.com 書きながら再び書き直した。 Thu Aug 20 20:06:12 JST 2020 Hello World 1600x800 thread : 12 ss : 100 ________________________________________________________ Executed in 143.56 secs fish external usr time 1384.58 sec…
ちょっと必要になったきがするのでparserをかくためのものを探したり サンプルを書いてみたりした。 個人的なメモ What is the difference between parser generators and parser combinators? - Quora compiler construction - What is the difference betw…
今回はBase Renderを継承した自作クラスに切り替えるbpmn-jsを参考にすると、lib/drawに主な3つのファイルがあるので それを作る。(今回はまだMyRenderUtilは使わない) 四角をつなげる線を引いたりするのに lib/util/RenderUtilが必要で、 diagram-jsからそ…
e-tipsmemo.hatenablog.comつぎはContextPadProvider といっても今回もソースコードを分離する程度 ExampleContextPadProvider.jsの実装を/lib/features/context-pad/に移す。 ほぼコピペContextPadProvider.js import { assign, forEach, isArray } from 'm…
次にPaletteProvider bpmn-jsを習って、 app/lib/features/palette を以下のように構成。 index.jsはappからimportするときの読み込まれる? jsでファイルを分割するときの手法っぽい import PaletteModule from 'diagram-js/lib/features/palette'; import …
e-tipsmemo.hatenablog.com まず、前回スタイルがピンク色だったが、ここの色を変えるには1.BaseRenderのスタイルを上書き 2.app/lib/draw/Renderに新しくdiagram-js/BaseRenderを継承したRender Classをつくっていろいろとやる。とあるが、2は今は面倒なの…