散歩師・漫画居士のくだらなクラブ日記 避難所

ども、散歩師・漫画居士っす。散歩したり実働模型作ったりが趣味なんで、その時に思いついたこととか書くッス

ワクチン接種が進んだのはIOCゲームズのせい。だがこっから先は地獄だよ。

 このコロナの国難の最中にIOCゲームズをやるのは言語道断だと思うが、ここまでワクチン接種が進んだのは、IOCゲームズがあったからだと思う。

 もし、今年IOCゲームズがなかったら、自民党ファイザーのワクチンを手に入れる交渉ができたはずがない。

 

 そして、ファイザーには「IOCゲームズのため」だと交渉してるはずなので、今後ファイザーはほとんど入ってこない筈。今日本で作ってるモデルナが手に入らないのも、何らかのバーターがあるせいだろう。先日チャンポン打ちが認可された遠因でもあろう。

 

  貧富の差の拡大と日系日本人の削減が党是の自民党は、IOCゲームズの後はコロナ対策を放棄するだろう。実際撃つ手ないし。

 ワクチンはIOCゲームズ祝の紅白饅頭扱いでしょう。なぜ終わった後に打つ必要があるの?位で来ますよ。

 

 日本の最大の敗因は、出口戦略にmRNAワクチンという方法がある。という情報を、我々が知る程度まで流布するのが遅かった事。つまり1年前には後塵を拝することが決まってたとも言える。

 

 何かにブコメしとこうかとも思ったけど、なかなか近いメンションがないので、blogに。

この後コロナはどうなるか?

 今、専門家でない私が、今はやってる新型コロナウイルス症の流行が、どのように推移すると思ってるかまとめておきます

 

= 初期

 横浜のクルーズ船の時期には、100年前のスペイン風邪インフルエンザと似た様な経緯をたどるだろうと思ってた。スペイン風邪と同じく2.5年位で収まり、科学が進んだ今なら羅病する人は少なく世界で2億人くらい、死亡は1千万人くらいだろうと、考えてました。

 ら病者の致死率が1%と聞いてたときには、インフルエンザ程度の風邪だろう。と思ってましたが、2%だと聞いて、考え方を改めました。

(言い訳すると、1%は一般に丸めた数字なので、0.5%でも1/1,000でも1%と言われることが多いからです。)

 

 

= 今後

 でも、インフルエンザよりも変異が早いようなので、2.5年では収まらず、今後今年と同じくらい毎年ワクチンを内づつける必要があるのかなぁと。

 全世界的に見ると、他の動物もコロナウイルスに感染するので、根絶の可能性はほぼなさそうですね。

 

= 日本のこと

 台湾や日本くらいの規模の島国内では根絶されることもあるでしょうから、日本では毎年ワクチンを打つ/打たないで揉めそうな気がします。

 

 何にしても、日本ではIOCゲームスが終わってからが本番で、これからブレイクが始まるでしょう。指数グラフで直線になるあの傾きです。何人死んだら政府が本気出すんでしょうか?はたまた、国民が本気を出して政権を交代するんでしょうか?予断を許さない状態ですね。

 

 

ハピバスデーわし

誕生日のお祝いに赤飯菜の花そら豆インドカレー作りました。

 

f:id:mangakoji:20210331230656j:plain

ヨーグルト+牛乳+砂糖のラッシーも甘すぎるくらいでちょうど良かったです。

うまいは、うまいですよ。そら豆カレー店であったら食うかもくらい。

 

f:id:mangakoji:20210331230721j:plain

紫玉ねぎは、匂いが強いので、カレーにもってこいなのな。

あと、菜の花は生でモリモリすると、キャベツっぽい味で、これはこれでサラダでもよかった。キャベツはアブラナ科でしたね。

色々複雑な味。のハズが、カットトマトの味しかしない。減らせば良かった
カレー初心者あるある?

調べると、砂糖、トマトケチャップ、ホールトマトに変える、もっと煮る。などのテクニックがあるようでした。

 

 

 

f:id:mangakoji:20210331230738j:plain

たくさん材料があるけど、分量的に半分しか鍋に入らないのもったいない

胃が小さくなって、一杯しか食えないのも辛い。

 

それでも3食にわけて、残りの食材もむりやり打ち込んで食べましたとも。

翌日は、コーヒーが薄く感じましたね。

あと、翌々日の午前中まで腹減りませんでした。インドカレーのスパイスと、もち米のせいかしら。

ただ、翌々日の22時くらいには、逆に劇べりで、いつもよりも食うということに。

 

さらに、3日間夜中に目が覚めて、あまり眠れない状態。下も元気よかったです。

精力剤ですね。これは玉ねぎかな

だれかと食えればよかったんだけど、これだけ癖のあるもんだと、ちょっとむずかしいかな?

あけまして おめでとう ございます 2021

コロナベィビィはなかった。

甘かった。コロナで在宅が増えて通勤時間が可処分時間になると、

やることなくなって、子供を作るようになる。と思ってた。

4~5月はWEBでも女性誌でも、この期に夫となかよし(sex)みたいな特集が多かった気したので勘違いしてたよ。

 

www.nippon.com

 

 実際には、みんなチンチン立たないほど怯えてたのね。共感できないが、理解はできる。収入減ったり解雇の恐れがあったら、そりゃ不能だよね。

自分と関係ないのに、ガッカリしょんぼり。

 

 どうやら世界的な傾向らしいので、コロナに対する日本政府の無策は関係ないらしい。よかったじゃん<何が?

来年からのメモ帳は THESEUS_NOTE(テセウスノート) で決まり!

 年末で、本屋にも文房具屋にもメモ帳が並ぶ季節になりました。

ステキなメモ帳がたくさんありますが、迷ったらTHESEUS  NOTE(テセウスノート)はいかがでしょうか?

 

THESEUS_NOTEとは

自分で作るノートですが、詳細はこんなのです。

 

定義としては、「同じ大きさに切った、あるいは折りたたんだ紙を クリップなどで留めて、ノートとして使えるようにし 持ち運びができる、任意に入れ替えられるようにしたもの。」です

私は、サイズをA6に統一してます。

私の今のTHESEUS_NOTE(テセウスノート)は

f:id:mangakoji:20201024214340j:plain

THESEUS_NOTE(テセウスノート)使用例

私が今使ってるノートは2セットとカバーです。

2セット持ち歩くと、カード入れ替えなしで、裏表x2で白紙が4枚つづけて書けます。

フォルダーには好きなハガキサイズのイラストをいれられます。

 

f:id:mangakoji:20201024214345j:plain

THESEUS_NOTE(テセウスノート)カバー

THESEUS_NOTEカーバーは、上のスケッチブックを加工して作ってます。

内側には偏愛MAPhttp://tamkaism.com/2014/06/henai-map/ を入れてます、素早く自己紹介。

左ページには、カレンダー/日記/ToDoパートを。いれてます。

 

 

一番かんたんなのはこれ。まずはこれからいかがでしょうか?

mangakoji.hatenablog.com

 

 

そして新しいテセウスノート

f:id:mangakoji:20201024214348j:plain

またも新型THESEUS_NOTE(テセウスノート)

 

f:id:mangakoji:20201024214351j:plain

新THESEUS_NOTE(テセウスノート)中

 100円ショップの文庫ノートを使ってます。表紙に厚紙を貼って固くし、こちらがわに書いて行ます。

書き方のフォーマットは、通常のTHESEUS_NOTE同様

1. 右上に書きはじめの日付と時刻を書く。私は日付は6文字フォーマットで書いてます

あの子と逢い引き、予定はGCOsEt【日付を少ない文字数で書く方法】 - 散歩師・漫画居士のくだらなクラブ日記 避難所

2. 右から順に上位概念の表題を、表題には二重下線を

3.  3段組の横書きが基本

 

じつはこの文庫ノートは一枚一枚切り離せるので、切り離したページは、THESEUS_NOTEの通常のカードとまったく同じに管理できます。

このブロックと、カバーと、 普通のセット1セットを持ち歩いてます。

 

長くなったので、カレンダーカードの作り方は後ほど。

ハラスメントと「大きな力には大きな責任がある」--スパイダーマン

 誰でも何でも自由にしていい わけじゃない。力の大きな人は、その力のに伴った責任を負うはずだ。「大きな力には大きな責任がある」スパイダーマンは最初の話でそう伝えてる。

 そう。強い立場の人は、弱い立場の人に対して責任がある。その点は平等であるべき でない。力が強ければ、簡単に状況を覆せるし、何も変えないことも できる。ヘイトスピーチも、ハラスメントもそういう問題だ。非対称性が問題なんだ。たとえば銃を持ってる人が「出ていけ」って言うのと、丸腰の人が「出ていけ」というのでは意味が異なるよね。フェアーであっても実はフェアーじゃない。

 (もっとも、ヘイトスピーチヘイトスピーチと名付けてしまった ことで敗北が決まってた。ヘイトが問題じゃない。内心は自由だ。ヘイトスピーチじゃなくて、スピーチハラスメントとすべき だった。)

 

 今、(日本の)左の人から右の人に話しが通じないのは、これが伝わってないからだと思ってる。「大きな力には多きな責任がある」のを認めてくれない人は、そうは多くないと思う。むしろ「弱きを助ける」右の人のほうが非対称に対する怒りは大きいように感じる。そして、至るところに非対称性はある。現実として。

 

 ピーターパーカーは、メジャーとマイノリティを行ったり来たりする。白人だが両親がいない、男性だがもてないが後にもてる、学校の人気者グループには入れないが、科学の成績だけはいい、給料を貰ってるのはジャーナリズムだが右よりのマイノリティでしかもイエロージャーナリズムギリギリだで、売ってる写真は真実だがヤラセだ。ハンデを必要としてる側の人間であると同時に科学研究で身を立てる、つまりハンデ(格差)を作ってる方にあこがれてる。ハンデを埋めることを志向しつつも役得にもあずかる。直接助けられる人は直接助ける。それが力がある方の義務だからだ。でも、いつも限界を感じてる。右よりでもあるが、左寄りでもある。みんなの親愛なお隣さんを体現したキャラ。

 

 いろんな人がいたら、ハンデつけて誰でも勝てるようにしないと面白くないでしょ?スクラッチのままじゃゲームにならないよ。

 

 左側にもハンデを付けられるべきものもある。少ないが、左のほうが立場の強い分野もあるからね。

 

 

 

お父さんみたいな安倍総理は頑張ってるのにマスコミにいじめられて可愛そう

「お父さんみたいな安倍総理は頑張ってるのにマスコミにいじめられて可愛そう」今回の辞任劇で中道の人たちの意識は偽らずにこれなんだと理解しました。知人が何人もこれに近い発言をしてて、思い知りましたよ。

 つまるところ、我々は「中世を引っ掻き回して暗黒時代を作った、神学論争を繰り返す教会」、あるいは「勝手に窮屈なルールを作るマナー講師」だから嫌われてるんですよ。難しいし、何が得で、何が損なのか受け入れがたいんです。フランス革命以来の民主主義の実験なんて、天使が男か女かとか、キリストは神と人どちらに近いか。くらいの考えるだけ無駄な問題なんです。

 そして、政治的に頑張ってる人、っていうのは「デタラメなマナー講師を退治して、行動の自由を確保しようとする」側の人なわけです。

 我々にとって安倍総理は歴史的にも政治学的にも法的にも、そして社会的にも、度し難い悪いことを繰り返してますが、中道の視線では何一つ悪いことを してるように見えないんですよ。あの安倍氏であってもドラマの悪党ほどは分かりやすく ないですから。中道のマス層に「その方がいいね」と思ってもらえない限り、政権交代はありえないです。どこが悪いのか全くわかりませんが「お前の言い方が気に食わないので、お前らを滅ぼす」って言われてるんです。我々の祝福で神に愛されることが どれだけ素晴らしいのか理解してもらう必要があるんです。

 日本人は、子供が死んでから「生き返らせてください」と神に祈る人たちです。病気になったときに「救ってください」と祈る人たちではないのです。予測しても対処しないのが日本流です。

 彼らに対する信用を取り戻すためにできることが、本当に浮かびませんが。強いて言うなら我々の側の統制ですかね。負けを認めてマスに膝を屈しろ、お恐れながらと哀れみを誘え。ってことです。気に入るまで仲間の首を差し出せってことです。

あるいは、体制側のヤリ過ぎを待つですかね。誘うと穴2つですし。

 その意味で、日本の未来は暗いです。

Viva! 21世紀的江戸時代。知らしめず寄らしめる融通無碍の国日本へようこそ!

 

--追記

あら、twitterで、本文読まずにいいねが付きましたよ。タイトルが愛しまれたようです。第一パラグラフの査証ですね。これまで日記にtwitterでイイねが ついたのを覚えてないんですが

日本人は民主主義なんか信じてないが、次の総理はどうかな?

明日安倍総理が2度めの辞任をして、麻生が二度目の総理になりそうなので、私の思ってることを書いておこうかと。

 今香港では、本土並みの言論統制が敷かれようとしてる。それは、中共政府が民主主義を恐れてる、つまり民主主義を信じてるからだ。

 一方、日本は、TVやtwなどの言論機関を統制下にはおいてるが、直接弾圧だとわかる程度のことはまれで、双方勢力のガス抜きにとどまってる。それは、日本政府が民主主義は統制下においておける程度のもんだと考えてるし、実際、日本人も、まったく民主主義を信じてない。お互いにwin-winの状態なわけだ。

 しかし、つぎの麻生政権は、戦後日本で唯一民主主義によって退場させられた政権なので、日本で一番民主主義を憎んでるし、今のままでは、またも自分たちが民主主義で排除されると考えてるだろう。民主主義を信じてるだろうと考えられる。なので、ナチスのやりかたを学んだ彼らは、かならず民主主義の破壊に手を付けるだろう。直接弾圧開始だ。

 

 方法はいろいろ考えられるが、反動の金持ちが言いがかりで訴えまくり、政府がそれを後押しするのが一番ありそうだ。はてなのような中道なサイトは存続が難しいだろうと思う。

あまり考えたくないが、はてなは、はてなが潰れないように、日の丸アカウントを誘致する必要があるだろう。

 

 安倍政権の最大の成果は麻生政権でなかったことなので、次が本当の試練でしょう。多分この8年が予行演習に感じる程度の。

正直ガス抜きができてる今の状態は、日本人にとってマシな状態なのかとも思う。

 

-- 2020-08-28fr

 麻生に臨時総理の椅子を渡しませんでしたね。良かったです。色々批判も多いですが、安倍氏自民党の総裁の立場で、以下についてはよくやったと評価しています。

1.  自民党政権下で、消費税増税を2年近く引き伸ばした

2.  規模が足りず、尻すぼみで、配る先を間違えたが、かなり反緊縮だった。

3.  方向性が良くないし、やるべきことをやってないが、それでも完全雇用を目指すために、働き方改革ワークシェアを狙った。

4.  敗戦宣言の日の靖国参拝を思いとどまった。

--2020-09-02tu

(大事なのを一つわすれてましたので追記

5. 10万円を配ったおかげで、日本国民が、政府が本来やるべきことを思い出した。

パイロット PeTiT1 のペン先を削って<EF>に改造した

 パイロットの PeTiT 1 という万年筆が好きです。70年代の万年筆のように小さくて軽いのがとにかくいいです。ボディは全プラですが、フォルム自体は60~70年代スタイルで、本当にカッコイイです。

すごく好きなんですが、ペン太が<F>で、若干太いのが、どうも気に入りません。これが<EF>なら1万円出してもいいんですが...

(正確に言うと、インクの導出が穴溝ではなくフェルトなので、万年筆類になるようですが)

 

www.pilot.co.jp

 

■改造

 で、ないなら作れるということで、100円ショップのダイヤモンドヤスリでゴリゴリしました。上が改造前、下が改造後です

f:id:mangakoji:20200802124459j:plain

改造petit 1の筆記跡

上が削り前、下が削り後です。

 上はPeTiT用のBlueBlack インクを、下はパイロットのボトル・BlueBlackを使ってます。元純正のBlueBlackはだいぶ黒いので、太さが強調されますが、それでも削り後はだいぶ細くなったのがわかるかと。これなら<EF>と呼んでもいいでしょう。

 

こんな簡単に太さ調整できるなら、もっと早くやればよかった。実は学生時代にロットリングの万年筆を削ってダメにしたことがあったんで、躊躇してたんですよね。よく考えたら、製図インクを使った事の方がより敗因なんですが。

 

 インクは、合うコンバータがないので、もとのカートリッジにスポイトでボトルインクを詰めてます。スポイトは、100円ショップのポリの沢山入ってるやつで、吸込口をガスコンロで炙って、ペンチでムニューって伸ばして細く改造してます。

 

あとは、1週間も慣らしをすれば完成っぽいです。

 

PeTiT 1 は中がフェルトなので、固まりやすい本物のBlue Blackは不適合なんですが、気にせず使います。200円だし予備品も買ってあるし。最近のパイロットのボトル BlueBlackは固まらないという話もあるので、(いや、水に流れづらくなるので、酸化鉄じゃなくても固まるのは固まるか)

 

削りは簡単なので、みなさんもためしてみてはいかがかと。ダイヤヤスリを使うのが、勝利の鍵っぽいです。ただし、思い通りを狙うには、かなり熟練が必要っぽいです。横を細く縦を太くしたいんですが、なかなかうまくゆかないし、慣らすとスグ戻るとか。入門は簡単で奥深い系。

 enjoy!  mod your fontain pen . 

 

 

1chip MSX 本当に別品でコンパイル出来た。

 うあうあ。普通にコンパイルできる方法が!

 

以前、コンフィグROMを2コ使えば、CYCLONEじゃなくても、別のFPGAコンパイルできるじゃん!という記事を書きましたが(以下)

 

mangakoji.hatenablog.com

 

どうやら、コンフィグROM 1コでもコンパイルする方法があったみたいです。

 

= 見つけたよ

というのも、秋葉原ラジオデパートの 家電のケンちゃん

FPGAボードDE0またはDE0-CVに合体してMSX化するオーバーレイボード「DEOCM」なるもののデモを見まして

気になって、実装を調べたわけです。

 

= どうやってるのか?

DEOCMは、当初DE0での実装用だったんですが、@uniabis 氏がDE0-CVの方で実装してして、ソースをgithub公開してました。

それを見ると、問題の箇所は

U91 : cyclonev_asmiblock
port map(EPC_CK, EPC_CS, EPC_OE, EPC_DI, 'Z', 'Z', 'Z', not EPC_OE, '0', '0', '0', open, EPC_DO, open, open);

に変更されてました。いや、このmodule ベースのcyclone版とピン数ちがくない?

おまけにEPC_DIはdata0out,EPCDOはdata1outにつながってるんですけど。

こんなテクニカルなこと、どうしてわかるの?公開資料なしに。

 

= ほかのデバイスでは?

どうにも調べようがなかったんですが、ふと思いついて これを やってみました

1. quartus のIPCatalogでASMI Paralell IIをcleateします。

   デバイスは、なぜかMAX10ではcreateできないので、それ以外を選びます。

2. altera_asmi2_qspi_interface_asmiblock.svを探します。

   (本当は*_asmiblockを検索して見つけました)

   ここに、各デバイスでの対応asmiblockのモジュール名が列記されてます。

    MAX10はfiftyfivenm_asmiblock()で、cycloneと同じpin配置ですね。

    Cyclone IV Eもcycloneと同じpin配置。

    Cyclone IIIはv18.1ではサポート外れてるのでわかりませんでした。

    が、多分同じなので、スルニョと移植できたんでしょうね。

当時の私がMAX10で実験したのが敗因の様です。

   

MAX10ではこんな感じに実装できました。f:id:mangakoji:20200611213043j:plain

ただーし、MAX10のconfig ROMは内蔵なので、実は使えない可能性も残ってます。

 

 

= さらに私よりずっと前に!

なんと、2011年にもやってる例が。

1chipMSX on DE0-nano - ゲーム研究会(らいふゼロ)

実装方法はわかりませんが。

 

 

つうわけで、恥さらしlogを

 :-(

SNES(スーパーファミコン)用パッドの IF回路 for FPGA

SNES(スーパーファミコン)用のパッド IFの RTLコードです。
FPGAにでも使ってください。
PDS

先週のファミコンパッド記事は珍しくアクセスがあったので(ほんのちょっとですが)
今週はスーファミ編です。

pin配置はこちらを参考に
SFC Development Wiki Controller : Controller Ports

SNES(スーパーファミコン)のパッドは、ファミコン同様電源GND+3本しか使ってません
なので、先週のファミコン用の回路を恐竜進化させるだけでOKでした。

Pin# pad FPGA
1 +5V <- +3.3V
2 clock <- SCK_o
3 Latch <- XLATCH_o
4 Data1 -> DAT_i
5 Data2 ->N.C.
6 IOBIt -> N.C.
7 GND <- 0V
丸い方が7pinとしています。

とりあえす REQ_i はHに釣ってください。
C_F_CKにはclock/CK_EE_iの周波数を設定してください。
1Mbpsに合わせます。

PADのICは前記は3.0から8.0Vで動きますが、
中期以降はミツミのV520Bというカスタム品に変わってて、電源保証囲が変わりませんが
とりあえず3.3Vでは動いてる様です。


ソースは以下。

// SNES_PAD_IF.v
//        SNES_PAD_IF()
// @manga_koji
//
//K5OuK7 :start SNES_PAD_IF base on NES_PAD_IF
//K59sK1 :ok maye...
//K51xxx :1st

`default_nettype none
module SNES_PAD_IF
#(    
    parameter C_F_CK = 135_000_000
)(    
      input tri1    CK_i
    , input tri1    XARST_i
    , input tri1    CK_EE_i
    , input tri0    REQ_i       //at level H
    , input tri1    DAT_i
    , output wire   XLATCH_o
    , output wire   SCK_o
    , output wire   B_o         //H:push
    , output wire   Y_o
    , output wire   SELECT_o
    , output wire   START_o
    , output wire   UP_o
    , output wire   DOWN_o
    , output wire   LEFT_o
    , output wire   RIGHT_o
    , output wire   A_o
    , output wire   X_o
    , output wire   L_o
    , output wire   R_o
) ;
    // log2() for calc bit width from data N
    // constant function on Verilog 2001
    function integer log2 ;
        input integer value ;
    begin  value = value - 1 ;
        for(log2=0 ; value>0 ; log2=log2+1)
            value = value>>1 ;
    end endfunction

    localparam C_F_PDIV_CK =  500_000 ;

    // mastar prescaler
    localparam C_PDIV_N = C_F_CK / C_F_PDIV_CK ;
    integer PCTRs ;
    wire PCTR_cy = &( PCTRs | (~(C_PDIV_N-1))) ;
    reg[11:0] REGs ;
    reg[4:0] PC ;
    reg      XLATCH  ;
    reg      SCK     ;
    always@(posedge CK_i or negedge XARST_i)
        if(~XARST_i) 
        begin                           PCTRs <= (C_PDIV_N-1) ;
                                        XLATCH <= 1'b1 ;
                                        SCK <= 1'b0 ;
                                        REGs <= ~0 ;
                                        PC<=0;
        end else if(CK_EE_i)
        begin
            PCTRs <= (PCTR_cy)? (C_PDIV_N-1) : (PCTRs + 1) ;
            if(PCTR_cy)
            begin
                PC <= PC + 1 ;
                case( PC )
                    0:
                        begin //Idle
                            if( ~ REQ_i )
                            begin       SCK <= 1'b0 ;
                                        XLATCH <= 1'b1 ;
                                        PC<=PC ; //PAUSE
                            end else
                            begin       SCK  <= 1'b0 ;
                                        XLATCH <= 1'b0 ;
                                        PCTRs <= 0 ;
                                        PC <= 8 ;
                            end
                        end
                    8,10,12,14,16,18,20,22,24,26,28,30 :
                        begin           SCK  <= 1'b0 ;
                                        REGs[
                                          {   ~PC[4] ^ PC[3]
                                            , ~PC[3]
                                            , PC[2:1]
                                          }
                                        ] <= ~ DAT_i ;
                                        PCTRs <= 0 ;
                        end
                    9,11,13,15,17,19,21,23,25,27,29:
                        begin           SCK  <= 1'b1 ;
                                        PCTRs <= 0 ;
                        end
                    31: begin           XLATCH <= 1'b1 ;
                                        PCTRs <= 0 ;
                                        PC <= 0 ;
                        end
                    default : 
                        begin           XLATCH <= 1'b1 ;
                                        SCK <= 1'b0 ;
                                        PC<=0;
                        end
                endcase
            end
        end
    assign SCK_o = SCK ;
    assign XLATCH_o = XLATCH ;
    assign {
          R_o
        , L_o
        , X_o
        , A_o
        , RIGHT_o
        , LEFT_o
        , DOWN_o
        , UP_o
        , START_o
        , SELECT_o
        , Y_o
        , B_o
        } = REGs 
    ;
endmodule
//SNES_PAD_IF()

enjoy! make ;-)

NES(ファミコン)用パッドの IF回路 for FPGA

NES(ファミコン)用のパッド IFの RTLコードです。
FPGAにでも使ってください。
PDS

pin配置はこちらを参考に
NES DEV controller port pin out

NESファミコン本体パッド P1、ファミコン本体外付けPADはpin配置が異なるだけで
同じ回路がつ変えます。
pad FPGA
GND <- 0V

  1. 5V <- +3.3V

CLK <- SCK_o
OUT <- XLATCH_o
D0 -> DAT_i
D4 ->N.C.
D3 -> N.C.

とりあえす REQ_i はHに釣ってください。
C_F_CKにはclock/CK_EE_iの周波数を設定してください。
1Mbpsに合わせます。

PADのICは3.0から8.0Vで動くので、FPGAのポート耐圧に合わせてください。

// NES_PAD_IF.v
//  NES_PAD_IF()
// @manga_koji
//2020-05-13we
//K59sK1 :ok maybe...
//K51xxx :1st

`default_nettype none
`include "../MISC/define.vh"
module NES_PAD_IF
#(    
       `p C_DBG_ACC = 0
    ,  `p C_F_CK = 135_000_000
)(    
      `in `tri1             CK_i
    , `in `tri1             XARST_i
    , `in `tri1             CK_EE_i
    , `in `tri0             REQ_i       //at level H
    , `in `tri1             DAT_i
    , `out `w               XLATCH_o
    , `out `w               SCK_o
    , `out `w               A_o         //H:push
    , `out `w               B_o         //H:push
    , `out `w               SELECT_o    //H:push
    , `out `w               START_o     //H:push
    , `out `w               UP_o        //H:push
    , `out `w               DOWN_o      //H:push
    , `out `w               LEFT_o      //H:push
    , `out `w               RIGHT_o     //H:push
)  ;
    // log2() for calc bit width from data N
    // $clog2() is same constant function on Verilog 2001
    `func `int log2 ;
        `in `int value ;
    `b  value = value - 1 ;
        for(log2=0 ; value>0 ; log2=log2+1)
            value = value>>1 ;
    `e `efunc

    `lp C_F_PDIV_CK     = (C_DBG_ACC)? C_F_CK/4 : 500_000 ;

    // mastar prescaler
    `lp C_PDIV_N = C_F_CK / C_F_PDIV_CK ;
    `int PCTRs ;
    `w PCTR_cy = &( PCTRs | (~(C_PDIV_N-1))) ;
    `r[7:0] REGs ;
    `r[4:0] PC ;
    `r      XLATCH  ;
    `r      SCK     ;
    `ack
        `xar `b                     PCTRs <= (C_PDIV_N-1) ;
                                    XLATCH <= 1'b1 ;
                                    SCK <= 1'b0 ;
                                    REGs <= ~0 ;
                                    PC<=0;
        `e else `cke
        `b
            PCTRs <= (PCTR_cy)? (C_PDIV_N-1) : (PCTRs + 1) ;
            if(PCTR_cy)
            `b
                PC <= PC + 1 ;
                case( PC )
                    0:
                        `b //Idle
                            if( ~ REQ_i )
                            `b          SCK <= 1'b0 ;
                                        XLATCH <= 1'b1 ;
                                        PC<=PC ; //PAUSE
                            `e else
                            `b          SCK  <= 1'b0 ;
                                        XLATCH <= 1'b0 ;
                                        PCTRs <= 0 ;
                                        PC <= 8 ;
                            `e
                        `e
                    8,10,12,14,16,18,20,22 :
                        `b              SCK  <= 1'b0 ;
                                        REGs[{PC[3],~PC[2:1]}] <= ~ DAT_i ;
                                        PCTRs <= 0 ;
                        `e
                    9,11,13,15,17,19,21:
                        `b           SCK  <= 1'b1 ;
                                    PCTRs <= 0 ;
                        `e
                    23: `b        XLATCH <= 1'b1 ;
                                    PCTRs <= 0 ;
                                    PC <= 0 ;
                        `e
                    default : 
                        `b          XLATCH <= 1'b1 ;
                                    SCK <= 1'b0 ;
                                    PC<=0;
                        `e
                `ecase
            `e
        `e
    `a SCK_o = SCK ;
    `a XLATCH_o = XLATCH ;
    `a {
          A_o      
        , B_o      
        , SELECT_o 
        , START_o  
        , UP_o     
        , DOWN_o   
        , LEFT_o   
        , RIGHT_o  
        } = REGs 
    ;
endmodule


こちらはコマンド短縮用のマクロ。パスの通る場所においてください。

// ../MISC/define.vh
//@manga_koji
//2020-05-13we
    `define ack always@(posedge CK_i or negedge XARST_i)
    `define sck always@(posedge CK_i)
    `define xar if(~XARST_i)
    `define xsr if(~XSRST_i)
    `define cke if(CK_EE_i)
    `define b   begin
    `define C   begin
    `define e   end
    `define J   end
    `define D   end
    `define a   assign
    `define func function
    `define efunc endfunction
    `define s   signed
    `define Ds  $signed
    `define in  input
    `define out output
    `define io inout
    `define w   wire
    `define r   reg
    `define int integer
    `define gen generate
    `define egen endgenerate
    `define gv genvar
    `define p   parameter
    `define param parameter
    `define lp  localparam
    `define pe  posedge
    `define ne  negedge
    `define rep repeat
    `define init initial
    `define al always
    `define elif else if
    `define ecase endcase
    `define emodule endmodule
    `ifdef TANG_FPGA
        `define tri0 wire
        `define tri1 wire
    `else
        `define tri0 tri0
        `define tri1 tri1
    `endif

enjoy! make ;-)

立ち机がさらに進化

立ち机がさらに進化 !

 

2017年から立ち机をはじめたんですが、最近さらに進化しました。

f:id:mangakoji:20200510120324j:plain

立ち机K5Au

 

o モニター3枚

        USB給電のポータブルモニタ。なかなかいいです。

        モニタ追加は I・O DATAのUSB-RGB/D2にて。

                内蔵の様には速くないですが 、許容範囲。

                DVIなので、音声は諦め

 

o 冷蔵庫に磁石で固定できるキーボード/マウス固定具

        L字金具に磁石をつけて、さらにテープ状の磁石もガッチリ

        それでも、許容荷重500gくらいですかね。すぐ落ちます。

 

o シンク横から続く2m以上の机部

        本棚にも板を挟んだので、部屋の端から端まで机です。

 

o 疲れた時用の折りたたみ椅子

        これ重要。 椅子はあった方がいいです。

        座ると頭も凍って活動度が落ちますが

 

o プラモ組み立て図固定フック

        写真に入ってないですが、 手前本棚に

 

 

立ち机快適ですよ。

何より広いし、片付けも速い。

台所改善運動


「窓ひらくー一つの生活改善記録」東京シネマ1958年製作

 


A Step Saving Kitchen, 1949

 

とりあえず、台所改善運動のフィルムを見てたら、、部屋の片付けをしたくなった。
とりあえずシンク周りと、PCのデスクトップを片付けた。
あと、開きっぱなしのブラウザのtabも、どんどん閉じた。

なんか、いろいろやる気が出た気がする。

(何だそれ