January
SU MO TU WE TH FR SA
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31


February
SU MO TU WE TH FR SA
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28


March
SU MO TU WE TH FR SA
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


April
SU MO TU WE TH FR SA
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30


May
SU MO TU WE TH FR SA
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31


June
SU MO TU WE TH FR SA
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30


July
SU MO TU WE TH FR SA
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31


August
SU MO TU WE TH FR SA
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


September
SU MO TU WE TH FR SA
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30


October
SU MO TU WE TH FR SA
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31


November
SU MO TU WE TH FR SA
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


December
SU MO TU WE TH FR SA
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31


[ ANALOG DISCOVERY 2 ]
2019/01/09
2019/01/19

[ Audio Processor ]
2019/05/09
2019/05/10
2019/05/11
2019/05/12
2019/05/19
2019/05/22
2019/05/24
2019/05/26
2019/05/28
2019/10/02
2019/10/06
2019/10/07
2019/10/17
2019/10/18
2019/10/19
2019/10/20
2019/11/01
2019/11/04
2019/11/10
2019/11/25
2019/12/01
2019/12/08
2019/12/19

[ DSP ]
2019/10/17
2019/10/18
2019/10/19
2019/10/20
2019/11/01

[ FPGA ]
2019/03/15
2019/04/11
2019/05/02
2019/05/03
2019/05/04
2019/10/17
2019/10/18
2019/10/19
2019/10/20
2019/11/01
2019/11/25
2019/12/01
2019/12/08
2019/12/19

[ Fedora ]
2019/01/13

[ Fusion PCB ]
2019/10/01
2019/10/07
2019/10/15
2019/10/16
2019/11/04
2019/11/07
2019/11/08
2019/11/10

[ LVM サイズ変更方法 ]
2019/01/08

[ MAX10 ]
2019/03/15
2019/04/11
2019/05/02
2019/05/03
2019/05/04
2019/10/17
2019/10/18
2019/10/19
2019/10/20
2019/11/01
2019/11/25

[ NextCloud ]
2019/02/03

[ OpenVPN ]
2019/02/03

[ PIC ]
2019/06/23

[ Perfume ]
2019/03/31

[ Perl ]
2019/02/03

[ Python3 ]
2019/02/09
2019/02/10
2019/03/08

[ Raspberry Pi ]
2019/10/15
2019/10/17
2019/10/18

[ hashtag ]
2019/02/09
2019/02/10

[ おみくじ ]
2019/03/16

[ お気に入りの曲 ]
2019/03/30

[ かりんとう ]
2019/01/31

[ さつまいも ]
2019/01/31

[ オシロスコープ ]
2019/01/09
2019/01/19

[ サイクリングギア ]
2019/08/23

[ サーバー更新 ]
2019/01/13
2019/01/19
2019/02/03
2019/03/08

[ シグナルジェネレーター ]
2019/01/09
2019/01/19

[ スパムメール ]
2019/08/09

[ タピオカ ]
2019/02/06

[ デジタルアンプ ]
2019/10/02
2019/11/01
2019/11/04
2019/11/10

[ プリント基板 ]
2019/06/22
2019/10/01
2019/10/07
2019/10/15
2019/10/16
2019/11/04
2019/11/07
2019/11/08
2019/11/10

[ プログラム開発 ]
2019/06/23

[ プロジェクトびっくりちゃん ]
2019/11/25
2019/12/01
2019/12/08
2019/12/19

[ ユニゾイン ]
2019/02/26
2019/02/27

[ ロジックアナライザー ]
2019/01/09
2019/01/19

[ 不正アクセス ]
2019/08/09
2019/10/10

[ 今年の目標 ]
2019/01/06

[ 初乗り ]
2019/03/21

[ 初詣 ]
2019/03/16

[ 半田付け ]
2019/11/10

[ 回路設計 ]
2019/11/04
2019/11/10

[ 散髪 ]
2019/03/01
2019/05/10
2019/07/12
2019/10/04
2019/12/10

[ 新年会 ]
2019/03/16

[ 新幹線 ]
2019/02/26
2019/02/27

[ ]
2019/03/25
2019/03/26
2019/03/27
2019/03/28
2019/03/29
2019/04/01
2019/04/02
2019/04/03
2019/04/04
2019/04/05
2019/04/08
2019/04/09
2019/04/10
2019/04/11
2019/04/15
2019/04/16
2019/04/17
2019/04/18
2019/04/19

[ 流行 ]
2019/02/06

[ 盛岡市 ]
2019/02/26
2019/02/27

[ 積雪 ]
2019/02/10

[ 自動日記更新 ]
2019/02/09
2019/02/10
2019/03/08

[ 行天優莉奈 ]
2019/02/28
2019/04/15

[ 趣味の工作 ]
2019/04/26
2019/04/27
2019/04/28
2019/04/29
2019/04/30
2019/05/01
2019/05/02
2019/05/09
2019/05/10
2019/05/11
2019/05/12
2019/05/19
2019/05/22
2019/05/24
2019/05/26
2019/05/28
2019/06/22
2019/06/23

[ 電子レンジで一人分○○○ ]
2019/01/26
2019/01/27
2019/02/01

[ 飲み会 ]
2019/02/09


2019年12月31日(火) 17.5/1.4℃

Update: 07:34:37
サイクリング
今日もサイクリングは無しでした。
05:00 くらい一旦目が覚めたのですが、潔く二度寝しました。
走り納めをしようかなと思っていたのですが、そもそも今年は納めるほど乗ってないし。( ̄∀ ̄)
来年から頑張ります。

Update: 09:01:32
のだめカンタービレ
2、3週間くらい前に Amazon Prime に「のだめカンタービレ」が追加されているのに気がついて、毎週末ちょっとずつ観ています。
1週間前に第1期(全23話)を見終えて、今は第2期『巴里編』(全11話)を観ています。 『巴里編』は、まだ最初の方ですけど。 第3期『フィナーレ』(全11話)も追加されているので、先が楽しみです。

Update: 09:13:00
鬼滅の刃
前に「鬼滅の刃を26話一気観してしまいました」って書きましたが、年末年始休暇に入ってから復習を始めました。( ̄∀ ̄)
そもそもは、私の推しの娘の界隈で熱が上がっているようなのでどんなのかなって思って観てみたんですよ。 まだ熱狂するほどではないですが、ボチボチ面白いかなと思いつつまた観ています。(⌒〜⌒)

Update: 09:29:46
12月のまとめ
今日は色々と忙しいので、早めに今月のまとめをしておきます。

【アニメ】
今は、「とっても!ラッキーマン」、「のだめカンタービレ」、「鬼滅の刃」、「少女終末旅行」を毎日ちまちま観てます。( ̄∀ ̄)

とっても!ラッキーマンのナレーションの声を聞くと、ちょっと緊張してしまうのは私だけですかね? 最初自分でもよくわからなかったのですが、先日前にやっと謎が解けました。 木曜スペシャル・矢追純一UFOシリーズのせいです。 ナレーションの矢島正明さんは、バラエティとかのナレーションも数多くされていて、木曜スペシャル・矢追純一UFOシリーズも矢島正明さんさんでした。 ドキュメンタリー的な口調でナレーションされると、木曜スペシャル・矢追純一UFOシリーズの記憶のせいで、潜在意識から緊張を思い起こしてしまうのですね。 刷り込み、こわぁ〜。( ̄∀ ̄)

【趣味の電子工作】
プロジェクト「びっくりちゃん」が、順調に(?)進行中です。 年末年始休暇中に一気に進めてやろうと思って、頑張っています!o(^O^)o

日記には書いていませんが、Audio Processor 関係の FPGA プログラムを、VHDL から Verilog に書き換え中です。 intel FPGA (旧Altera) の Quartus Prime Lite で開発しているのですが、VHDL と Verilog のソースファイルを混在して開発できるので、便利ですね。

【YouTube 動画】
開発 PC を新しく組みたいと書きましたが、その関連で自作PCの動画を観ていたら、Macの改造動画をいくつか見つけて、今自作PC関係の動画にハマっています。

自作PC関連では動画配信されている方が多いですが、最近登録した方は
 Monorasさん、と
 macaron/マカロンさん
です。
動画は検索すれば出てくるので、登録とかはあまり積極的にはしないのですが、上のお二方については「まとめて観たいと」思ったので、登録しました。
特に、macaron/マカロンさんについては、世間的にはMac関係での改造動画は少ないように思うので、私的には貴重な存在です。 実はですね、私の iMac (Retina 5K, 27-inch, Late 2015) の HDD を SDD に換装してやろうと企んでいるのですよ。 何なら CPU も i7 あたりに交換してやりたいと思っています。

俺ら
西野未姫さんと村重杏奈さんのコンビ、マジで最高ですね。 村重杏奈さんのあの性格、マジで好き。( ̄∀ ̄) 村重杏奈さんは、以前 HKT48 が好きだったので、その頃から好きだったんですよ。 因みに、私の iMac (Retina 5K, 27-inch, Late 2015) の名前は、村重杏奈さんの愛称「あーにゃ」からもらって anya にしています。 2015年以前から好きだったってことですね。 それが、最近ますます好きになってきている感じです。( ̄∀ ̄)やばぁ〜い

Update: 22:10:23
今年の反省
昨年も同じこと書きましたが、年の暮れ感が全くないですね。
それでは、今年も厳かに書きたいと思います。

今年の目標は、優先順位順に書くと

  1. 新しいものに挑戦していくぜッ o(≧∇≦)o猪突猛進!
  2. サイクリングするぜッ: 目指せ VO2Max 60+ \(^O^)/頑張っていこーーッ!
  3. 今年もノーベル賞ねらっていくぜッ o(≧Δ≦)oいただくんだってばぁ〜!
でしたね。 今年も例の如く狼少年でした。( ̄∀ ̄)
それぞれについて、10点満点で採点していきます。

まずは、1. です。 個人的な趣味では、相変わらず FPGA にはまりまくりです。 VHDL から Velirog に移行することを決めて、今では両刀使いですよ。 更に、FPGA に自分でデザインした MPU を組み込むという、高校の時にコンピュータに初めて触れた時には想像もつかなかった事を始めるに至りました。 いやぁ、長生きはするものですね。
仕事では、H/W のデザイン(回路とPCB)、FPGA と DSP のプログラミング、GUI アプリケーション開発と、もう殆どのことを1人でこなせるようになっちゃいました。 いやぁ、我ながら成長したねぇ。
というわけで、10点 です。

次に 2. です。 ダメダメでしたね。 VO2Max 60+ とか、片腹痛いですねぇ。
来年は頑張りたいです。
というわけで、0点 です。

最後に 3. です。 偉い人は言いました、「努力は必ず報われる」と。
(⌒〜⌒)
というわけで、5点 です。

Update: 22:53:22
相互作用と宇宙の次元について
「私が興味を持っている課題の一つが宇宙の次元」と以前にも何回か書いていますが、2010年前後に考えていたのが相互作用との関係でした。 相互作用というのは、重力とか、電磁力とか、量子力学で出てくる弱い力とか強い力とかです。 重力相互作用や電磁相互作用が逆二乗に従うのは、空間が3次元だからなのですが、私は「もしかして逆に、相互作用が逆二乗の性質を持っているから 私たちが感知できる世界が3次元なのではないか?」という事を考えていました。 生物が活動するほとんど全てにおいては、重力を除くと電磁相互作用が支配的です。 今でこそ重力波を観測できるようになっていますが、ほとんど全ての観測においては、光や電波で行われていて、要するに電磁相互作用ですよね。 電磁相互作用がこの世の中を3次元に見せているのではないかと考えたのですよ。 もし他の相互作用、例えば強い力で世の中を観測できたら、3次元じゃないんじゃないのと考えたんです。
でも、残念ながら、そうだという理論的証拠を考えつきませんでした。 今は違う考え方をしています。
まあ、そんな感じのことを悶々と思いめぐらせているのです。( ̄∀+ ̄)つづく




2019年12月30日(月) 5.7/4.5℃

Update: 07:14:23
サイクリング
今日もサイクリングは無しでした。
昨夜寝たのは 03:00 過ぎで、今朝目が覚めたのは 07:00 でした。




2019年12月29日(日) 10.2/-0.5℃

Update: 05:37:09
サイクリング
今日もサイクリングは無しでした。
目が覚めたら 05:30 前でした。
ぅお、ちょっと早起きできるようになってる!




2019年12月28日(土) 10.0/0.0℃

Update: 05:59:10
サイクリング
今日もサイクリングば無しでした。
目が覚めたら 05:30 でした。

Update: 06:16:53
年末年始休暇
今日から休みでーーーーす。\(^O^)/
色々とやりたいこと満載なので、今日からは
 ・ 食べたい時に食べて
 ・ 寝たい時に寝て
 ・ 遊びたい時に遊ぶ
というめっちゃ不健康な生活を満喫したいと思っています!
楽しみッ。o(≧∇≦)oうきゃ

Update: 13:35:04
会社
と言うわけで今日は会社に来ています。
仕事が趣味なので。( ̄∀ ̄)
もう少し作業したら帰ります。




2019年12月27日(金) 12.8/3.2℃

Update: 06:18:22
サイクリング
今日もサイクリングは無しでした。
今年中にもう一回くらい乗りたいなぁ。

Update: 06:24:01
仕事納め
今日は、今年最後の仕事の日です。 昨日会社の大掃除が終わったので、今日は会社の PC の HDD の中身の整理します。 新しく SSD を買ったので、CentOS 8 を入れて、来年に備えます。o(^O^)o

Update: 07:21:54
ぴったり
今朝コンビニで買い物をしたら、Suica の残高が 5000円 ぴったりでした。
なんか、とってもラッキーな気分です。( ̄∀ ̄)v





2019年12月26日(木) 10.4/3.1℃

Update: 06:12:23
サイクリング
今日もサイクリングは無しでした。
クリスマスボケしてます。( ̄∀ ̄)




2019年12月25日(水) 8.6/0.3℃

Update: 06:47:27
サイクリング
今日もサイクリングは無しでした。
しょぼぉ〜〜〜〜〜ん。(´.`)

Update: 23:59:59
クリぼっち
今日は有給をもらって、一日中ぼーーーーーーーっとしてました。 甘いもの食べすぎて、ちょっと胃もたれです




2019年12月24日(火) 11.5/2.5℃

Update: 05:50:12
サイクリング
今日もサイクリングは無しでした。
だってめっちゃ寒いんだもん。
布団の中最高。

Update: 08:11:44
薄皮シリーズ
コンビニで新しい薄皮シリーズを見つけたので買ってきました。
ヤマザキ 薄皮 ふじりんご入りカスタードクリームパン。





2019年12月23日(月) 12.4/1.0℃

Update: 05:57:07
サイクリング
今日もサイクリングは無しでした。
雨が降っている上にめっちゃ寒いんですよぉ。(┳◇┳)




2019年12月22日(日) 8.1/4.0℃

Update: 07:54:39
サイクリング
今日もサイクリングは無しでした。
「今朝も早起きできた!」と思って目覚ましを見たら 07:00 でした。
外がまだ真っ暗だったしとっても静かだっので、早起きできたと勘違いしてしまいました。( ̄∀ ̄)

Update: 08:27:36
開発主力機
以前「うちの開発マシンの調子が悪くなったんですよ」って書きましたが、なんとか使えています。( ̄∀ ̄)
でも、めっちゃ遅くてなんでなのかと調べたら、FireFox で ShowRoom パラで4画面くらい表示させただけで、4スレッドのパワー使用率が 100% いっちゃうんですよ。 「マジで?」と思ってメモリ使用率を見たら 4GB しかないメモリを全部食っててしかもスワップまで発生していました。 もうダメダメですね。 あ、ちなみに Core i3-2120 です。 今時第2世代とかわらけるわ。(┳◇┳)

しょうがないので、とりあえず CPU を新しめのに交換して、メモリを 8GB くらいにしてやろうかなと思って調べたら、置き換えられる CPU がないんですよ。 理由は、CPU ソケットです。 i3-2120 は、LGA1155 ってタイプなのですが、もうこのタイプの CPU は売ってないんですね。 てか、ソケットタイプコロコロ変えるんじゃないよマジでうざいわ。

もうこうなったらサンタさんにお願いするしかないですよね。o(≧Δ≦)o
どうせだから、Ryzen 9 3950X にしようかとも思ったのですが、発売されたばっかりで値段が高騰気味なんですよね。 あと2、3ヶ月待たないとダメぽですね。
仕方ないので、Ryzen 9 3900X にしようと思ってパーツを見つくろって予算を出したら 18万円でした。 かなり価格抑えめのパーツを選んだんですけどね。 というわけで、サンタさん、お願いしまーーーす。\(^O^)/

実の話、順番は逆だったのですよ。
Ryzen 9 3950X を使いたくてあと3ヶ月待とうかと思って、とりあえず現在の開発機の CPU のバージョンアップとメモリ増設を暫定的にやっておこうかと思ったのです。 中途半端な CPU バージョンアップのためにマザーボードまで買い換えるくらいなら、Ryzen 9 3900X で組んじゃいますわ。
ってことですよ。




2019年12月21日(土) 8,1.0/4.5℃

Update: 05:11:48
サイクリング
今日もサイクリングは無しでした。
04:30 に起きれたんですけど、何気にやることあるので、サイクリングはパスです。
明日も早起きできるかなぁ。




2019年12月20日(金) 15.3/3.8℃

Update: 06:16:30
サイクリング
今日もサイクリングは無しでした。
昨夜は早く寝たんですよ。
したら 03:00 過ぎくらいに目が覚めて。
外は雨だし、ずっと寝れるって思ったら幸せでした。
:*:・(*´∀`*)・:*:
二度寝して起きたら 06:00 でした。




2019年12月19日(木) 9.5/6.0℃

Update: 06:20:49
サイクリング
今日もサイクリングは無しでした。
起きたら 06:00 過ぎでした。
早起きできなくなってしまいました。
というか、早寝できなくなってしまいました。

Update: 19:06:32
プロジェクト「びっくりちゃん」
「屁でもない」って書いた割には時間かかってます。(≧Δ≦)
とりあえず、今 PIC16F で動いているファームウエアを LLVM-IR にして FPGA に組み込むアセンブラの仕様を決めているところです。
ほとんどの部分は何も考えることないんですけど、
 (1) サブルーチンコール
 (2) Phi ノード
の2点でつまづいています。

(1) については、Bikkurichan Core はスタックを持っていないしローカルメモリもレジスタにアサインされているので、従来の言語が持っているようなサブルーチンコールの機能をどうやって実現しようかと悩んでいます。
スタックを持たせようと思えばできるんですけど、そんなのなんか糞ダサいんですよね。

(2) については、アセンブラとしては概念が高級かつ抽象的なんですよね。
どの経路で分岐してきたかによって代入する値を変えるような時に使うみたいなんですが、Phi ノード命令を実行するためには実行履歴を保持しなくちゃいけないんですよ。 ループ処理の時によく出てくるんですよね。
アセンブラにするには、結局ジャンプ命令の組み合わせにするしかないんですよね。 何か他にいい方法がないのか思案中です。

他には、select 命令や switch 命令っていうのがあって、if 文とか switch-case 文で出てくるみたいなんですが、これもジャンプ命令の羅列にするしかないよなぁと思っています。

とは言っても本当に大したことなくて、演算命令や比較命令については signed と unsigned があって命令数が倍になっちゃうんですけど、今のところ組み込む予定の命令の数は 60 弱ってとこです。 命令コードは8ビットとってあって 256 命令までいけるのですが、余裕のよっちゃんですわ。
余った分は、拡張命令やマクロ命令みたいに使えるようにできたらいいなと思っています。

命令長については、32ビットの固定長にしたかったのですが、16、32、48 ビットの可変長にすることにしました。 でも、常に48ビットをフェッチするようにして、命令フェッチは1クロックで済ませます。( ̄∀+ ̄) 当然ですが、命令実行中に次の命令をフェッチしますよ。

#FPGA #プロジェクトびっくりちゃん #Audio Processor




2019年12月18日(水) 16.1/6.3℃

Update: 06:17:36
サイクリング
今日もサイクリングは無しでした。
今朝はすっきりと目が覚めて、「お、まだ 04:00 くらいか。 早起きできたな。 でも、もうちょっと寝ちゃおうかな。」と思いつつ何気に目覚ましを見たら 06:00 過ぎでした。
やばぁ。(°Д°;)




2019年12月17日(火) 10.2/7.0℃

Update: 06:18:42
サイクリング
今日もサイクリングは無しでした。
昨夜暖かいなぁって思っていたら、今朝は雨です。
そうか、この季節、暖かくて乗れそうだと思ったら雨のか。
あ、起きたら 06:00 過ぎでした。
昨夜も、なんやかんややっていたら 00:00 過ぎになっちゃってました。




2019年12月16日(月) 11.5/0.5℃

Update: 06:27:17
サイクリング
今日もサイクリングは無しでした。
昨夜 01:00 くらいまで起きてて、今朝は目が覚めたら 06:00 過ぎでした。
まだ寝足りないくらいです。

Update: 20:19:18
CodeLite
今まで C/C++ の開発には Eclipse を使ってきたのですが、まじでもっさりどん臭くてストレスしかないので、CodeLite に切り替えました。 設定メニューも階層が浅くて分かりやすいし、サクサク快速で動作するのが気持ち良いです。
IDE は、軽いのに限りますよ。

最初 Fedora 30 にインストールして、使いやすかったので Mac にもインストールしたのですが、何も問題なく同じプロジェクトをシェアーできて快適です。
早く CodeLite にしておけば良かったと後悔してます。




2019年12月15日(日) 11.2/2.5℃

Update: 08:09:06
サイクリング
今日もサイクリングは無しでした。
寒いとなかなか早起きできないです。
今朝も起きたのは 07:00 でした。




2019年12月14日(土) 16.3/1.0℃

Update: 07:31:37
サイクリング
今日もサイクリングは無しでした。
昨夜あまりに早く寝たせいで、01:00 に目が覚めてしまいました。
その後 YouTube 観ながらしばらく起きていたのですが、いつの間にか寝落ちしてました。
起きたら 07:00 でした。

Update: 18:30:00
趣味の仕事
今日は、会社に雑用があったので朝会社に行ったのですが、ついでなので今やっている FPGA の仕事をやってきました。 音響の仕事をしているので、誰もいない会社で気兼ねなく音楽を鳴らしながらまったり過ごしました。
いやぁ、天職ですわ。o(^∇^)o




2019年12月13日(金) 10.0/7.0℃

Update: 03:53:47
サイクリング
今日もサイクリングは無しです。
なんか奇跡的に 03:00 過ぎに目が覚めてしまいました。
でもサイクリングは無しです。
寒いですからね。




2019年12月12日(木) 18.2/4.8℃

Update: 05:45:00
サイクリング
今日もサイクリングは無しでした。
今朝はなんとか 05:30 に起きれました。
早く春が来ないかなぁ。

Update: 06:57:11
黒蜜きな粉
コンビニ寄ったら新しいのがあったので買ってみました。
Mt.RAINIER も邪道に走り出したな。 残念。(┳◇┳)
Mt.RAINIER 黒蜜きな粉ラテ 豆乳仕立て。





2019年12月11日(水) 15.3/8.0℃

Update: 06:08:01
サイクリング
今日もサイクリングは無しでした。
めっちゃ寒いです。
さっき天気予報アプリで今日の天気をチェックしたのですが、今朝の気温は8℃ってなってました。 ははは、いやいやそんなことはないでしょう。 完全に零下でしょ!( ̄∀ ̄)




2019年12月10日(火) 13.2/7.0℃

Update: 05:38:13
サイクリング
今日もサイクリングは無しでした。
なんか寒い上に雨まで降ってます。
ずっと布団の中に潜っていたいです。

Update: 07:22:18
いちご
コンビニに寄ったら新しいのを見つけたので買ってみました。
スジャータめいらく すりつぶし苺 たっぷり果肉入り ミックススムージー。


Update: 15:20:00
髪を切りました
仕事が一段落ついたので、いつもの散髪屋さんに行って髪を切ってもらいました。 タイミングよく空いていて、店に入ったら直にやってもらえました。 今回もすっきり短くしてもらいました。 前回「髪の毛を切った」って書いたのは、10月4日だったんですね。

#散髪




2019年12月09日(月) 9.2/1.0℃

Update: 06:40:45
サイクリング
今日もサイクリングは無しでした。
起きたら 06:30 でまじでびっくりです。




2019年12月08日(日) 10.0/0.5℃

Update: 09:15:32
サイクリング
今日もサイクリングは無しでした。
昨日は、今巷で面白いと噂の「鬼滅の刃」を Amazon Prime で見つけてしまって、26話一気観してしまいました。
毎朝どんどん寒くなっていませんかねぇ。 今朝なんか、水道の水が「冷たい」を通り越して「痛い」になってましたよ。(┳◇┳)

Update: 23:59:58
プロジェクト「びっくりちゃん」
実は、今週末は金曜日に休みをもらって、3連休でした。 金曜日は何もせずに一日だらだらして、昨日の土曜日は鬼滅の刃を一気観して、今日はプロジェクト「びっくりちゃん」のバックエンドの開発をやっていました。

プロジェクト「びっくりちゃん」のバックエンドは、
 (1) 今 PIC で動作しているプログラムを FPGA に載せた時に実行させるプログラムに書き換えて、
 (2) それを clang でコンパイルして LLVM-IR を吐かせて、
 (3) 生成されたアセンブラを Bikkurichan 用に変換できるようにするバックエンドを開発する
というなんともややこしい方法をとっています。 この方が Bikkurichan に組み込むプログラムもバックエンドも同時に開発できるし、どうしたら良いか分からなくて仕様がなかなか固まらい部分がイメージできるようになって効率が良いのですよ。
でもまだ完成までは先が長そうです。

Update: 23:59:59
FPGA のプログラミング
FPGA の開発では、Hardware Description Language (HDL) というハードウエアをプログラムみたいに記述する言語で書くのですが、代表的なのに VHDL と Verilog というのがあるんです。 歴史的には VHDL の方が古くて、仕様的にはガチガチの堅苦しい言語なのに対して、Verilog はC言語みたいにやわやわ系なんですよ。 今までは、私は VHDL を使っていたのですが、今週から Verilog に切り替えました。 そういうわけで、Bikkurichan も Verilog で開発します。
というどうでも良い宣言でした。( ̄∀ ̄)

#FPGA #プロジェクトびっくりちゃん #Audio Processor




2019年12月07日(土) 6.9/3.9℃

Update: 07:17:40
サイクリング
今日もサイクリングは無しでした。
昨夜 02:00 くらいまで YouTube 動画で勉強していたら、当然のように起きれませんでした。
目が覚めたら 07:00 でした。
今朝もめっちゃ寒いです。




2019年12月06日(金) 9.9/3.9℃

Update: 07:47:04
サイクリング
今日もサイクリングは無しでした。
寒すぎて起きれません。(┳◇┳)




2019年12月05日(木) 15.4/2.0℃

Update: 06:37:11
サイクリング
今日もサイクリングは無しでした。
起きたら 06:30 前でした。 うわ、寝坊しちゃってやばいです。
昨日も早く寝たんですけどね。 早起きすらできなくなっちゃいました。




2019年12月04日(水) 16.4/3.0℃

Update: 06:08:32
サイクリング
今日もサイクリングは無しでした。
昨日は会社でなんだかとっても眠くて、昨日は早めにねたと思うのですが、今朝は起きれたのは 06:00 前でした。
今日も寒いです。




2019年12月03日(火) 16.1/6.1℃

Update: 05:46:59
サイクリング
今日もサイクリングは無しでした。
寒いし雨降るし。 もう無理。(´△`)




2019年12月02日(月) 19.2/6.5℃

Update: 05:53:36
サイクリング
今日もサイクリングば無しでした。
朝方から雨の予報だったので、目覚ましセットせずに寝ました。 セットしてても起きないけどねぇ。
起きたのは 05:30 でした。
てか雨降ってないですけど? これから降るのかな?




2019年12月01日(日) 12.0/2.0℃

Update: 08:19:29
サイクリング
今日もサイクリングは無しでした。
03:00 に目が覚めて YouTube を観てたんですが、残念ながら 04:30 に目覚ましが鳴っても外に出る気にはなりませんでした。
いやぁ、寒いですよ。
なので、05:00 過ぎに二度寝しました。

Update: 18:52:38
プロジェクト「びっくりちゃん」
先日「FPGA にカスタムでデザインした MCU を組み込む」と書いてから、なんとなく構想が固まってきました。
やるべきことは、大きく分けて
 (1) MCU のアーキテクチャを固める
 (2) ちゃんとした命令セットをデザインする
 (3) コンパイラも作らないとね
でしたね。

(1) のMCUアーキテクチャ(最大型)は、こんな感じです。 あくまでラスボス的な最大型で(笑)、PIC のプログラムを組み込むくらいなら MCU コアを含むイベント制御ブロック1個と GPIO だけで十分です。
ちなみに、私が組み込もうとしている MCU では レジスター(REGISTERS)は、32ビット(16ビットもありかもね)で、256個あります。 ほとんどの処理はレジスターだけで事足りるので、イベント制御ブロックの中の RAM はオプションになります。 スタックとか配列処理とか必要になったら組み込みます。


(2) と (3) については、LLVM を使わせてもらうことにしました。 LLVM については、clang というと知っている人が多いと思います。 clang は、GCC の何か新げなやつと思っている人もいるかもしれないですが、ライブラリの互換性はあるものの、全く違うものと思って良いと思います。
LLVM の基本的なアイデアは、コンパイラーやその他ツール類をモジュール化して、色々と柔軟性を持たせようというものです。
構成としては、(間違っているかもしれないですが)大まかには、
 (A) 多種多様な高級言語をハード依存のない中間言語に翻訳する「フロントエンド」
 (B) 中間言語を最適化する「最適処理」
 (C) 中間言語を機械語に翻訳する「バックエンド」
 (D) 翻訳された機械語をライブラリと結合して最終的な実行形式にする「リンカー」
 (E) その他のツール
のようになっています。
前記の clang は、(A) の部分に入っていて、C、C++、Mac でお馴染みの Objective-C などをコンパイルしてくれるプログラムです。

LLVM を使わせてもらうことの最大の利点は、Eclipse 等の統合環境(IDE)があるところですね。 C言語で開発して、最適化された中間言語コードまで半自動で出力してくれます。 最高ですよね。 私がやらなくちゃいけないのは、バックエンドを書くことです。 これは大したことではないですね。
私の場合のバックエンドの処理は、中間言語コードを自分で設計した MCU の機械語に変換して、FPGA の ROM イメージ(VHDLとか)に出力することです。 上図の ROM ってところに組み込むコードですね。

それでは、その中間言語ってどなものなのかという点ですが、LLVM では LLVM Intermediate Representation(IR) というアセンブラに似た言語になります。
例として、ロータリーエンコーダーの回転方向をチェックしてボリュームを上げ下げする処理を書きますと、C言語ではこんな感じですかね。 この re_event_handler() は、例えば 10[ms] のタイマーイベントとか、GPIO ポートの pahse-A のビットが変化したというイベントとかが発生したときに イベント制御から実行されるようにします。 GPIO ポートのアドレスは、仮に 0x80000000 としておきました。


#include <stdio.h>
#include <stdlib.h>

#define  _RE_PHASEA    (0x00000001)
#define  _RE_PHASEB    (0x00000002)
unsigned int*  GPIO = (unsigned int*)0x80000000u;

volatile static unsigned int  re_oPhaseA;
volatile static unsigned int  volume = 0;

int  re_event_handler()
{
    unsigned int  v;

    // check the phase-A for the value change
    v = *GPIO & _RE_PHASEA;
    if (re_oPhaseA != v) {
        // save the current value
        re_oPhaseA = v;

        // check the phase-B at phase-A rising-up timing
        if (v) {
            // check the phase-B for the rotation direction
            if ((*GPIO & _RE_PHASEB) == _RE_PHASEB) {
                // volume up
                ++volume;
            } else {
                // volume down
                --volume;
            }
        }
    }

    return 0;
}

で、このプログラムを clang にかけて、中間言語で最適化するとこんな感じのコードが生成されます。 実際に自分で設計した MCU コードに落とす段階で もうちょっと最適化が必要ですが、ここまで自動でやってくれるのなら、あとは屁でもないですよね。

@GPIO = dso_local local_unnamed_addr global i32* inttoptr (i64 2147483648 to i32*), align 8
@re_oPhaseA = internal global i32 0, align 4
@volume = internal global i32 0, align 4

; Function Attrs: norecurse nounwind uwtable
define dso_local i32 @re_event_handler() local_unnamed_addr #0 {
  %1 = load i32*, i32** @GPIO, align 8, !tbaa !2
  %2 = load i32, i32* %1, align 4, !tbaa !6
  %3 = and i32 %2, 1
  %4 = load volatile i32, i32* @re_oPhaseA, align 4, !tbaa !6
  %5 = icmp eq i32 %4, %3
  br i1 %5, label %16, label %6

; <label>:6:                                      ; preds = %0
  store volatile i32 %3, i32* @re_oPhaseA, align 4, !tbaa !6
  %7 = icmp eq i32 %3, 0
  br i1 %7, label %16, label %8

; <label>:8:                                      ; preds = %6
  %9 = and i32 %2, 2
  %10 = icmp eq i32 %9, 0
  %11 = load volatile i32, i32* @volume, align 4, !tbaa !6
  br i1 %10, label %14, label %12

; <label>:12:                                     ; preds = %8
  %13 = add i32 %11, 1
  store volatile i32 %13, i32* @volume, align 4, !tbaa !6
  br label %16

; <label>:14:                                     ; preds = %8
  %15 = add i32 %11, -1
  store volatile i32 %15, i32* @volume, align 4, !tbaa !6
  br label %16

; <label>:16:                                     ; preds = %6, %0, %14, %12
  ret i32 0
}

なんでこれが屁でもないのかが分からないという人のために解説します。(笑)
なんかごちゃごちゃした魔法みたいな訳の分からないコードに見えますが、アセンブラがわかる人ならすぐに理解できますが、基本的に処理するべき命令は
 load
 store
 and
 icmp
 br
 label(命令じゃないけど)
しかないんですよ。 あとは全部飾りです。(笑) つまり、上記の5つの命令を組み込めば、ロータリーエンコーダーの処理ができちゃうんですよ。 屁でもないでしょ!(笑)
実際のところ、マイコンでやっている処理なんて 上記の5つくらいの命令(あと足し算と、引き算と、掛け算が欲しいかも)がごちゃごちゃ組み合わされている程度のものなのですよ。 屁でもないでしょ?(笑)

#FPGA #プロジェクトびっくりちゃん #Audio Processor