まつたろうの歩み

PythonやCの勉強中に「指し示す」いう表現がありました。それを知りたくて今はコンピュータシステムを勉強しています。

コンピュータシステムの理論と実装。プロジェクト03-aが終わりました。

第2章が終わり、2週間あまりかけプロジェクト03-aが終わりました。今回も本を読んで、自分なりに考えてはやってみての試行錯誤の繰り返しでした。

f:id:kmatsutaro:20220309154007j:plain

コンピュータシステムの理論と実装

リソースはプロジェクトにあります。それぞれにリンクが貼ってありました。右の2つは気がつきませんでした。

f:id:kmatsutaro:20220309154215j:plain

リソースはプロジェクトにある

・ビット

 フリップ・フロップは出力をから入力に戻し電荷を保持できます。その方法はハードウェア構築サバイバルキットを参考に。

レジスタ

 ビットを16個並べます。

・ラム8

 当初、デマルチプレクサ16-8Wayをつくって試しました。結果は出ませんでしたが、1週間ほどの勉強になりました。下の助言で、考え方をかえました。

f:id:kmatsutaro:20220309154948j:plain

Dmuxマルチビットバージョンは必要ありません。

 Mux8Way16をスイッチ替わりに使う(コントロールビット)で解決。

・ラム64

 ラム8を8個並べます。64+1(0~65)までの2進数を順に書いてみたら、上位3ビットと下位3ビットという意味が、はっきりわかります。

・プログラムカウンタ

 set the other control bits to 0. の表現で一つずつしか機能しないと思い込み、Dmux4Wayのマルチビットを作りました。これも結果にはつながらず、勉強になりました。下の動作をよく見ると、同時にコントロールビットが動作しています。

f:id:kmatsutaro:20220309170144j:plain

プログラムカウンタの動作

これを見て、それぞれ reset,inc,load の独立した動作をつくる必要があることがわかりました。回路を考えてコードを書きましたが、どうしてもインクリをしてくれません。サークルになっているとかビット幅が違うとかメッセージが出て、解決できませんでした。探していたら結果的に、答のあるやりとりを見てしまいました。このやりとりは最後、あきらめた時に見るようにして下さい。悔いが残ります。

f:id:kmatsutaro:20220309170615j:plain

プログラムカウンタ

少し残念な思いがありますが、近いところまではできた(out2の出力が近すぎた)のでまあ良いかと思い、進めます。これで、テーマである「指し示す」の一部がわかりました。

 

編集後記

 ロシアが戦争を始めました。毎日痛々しいニュースが聞こえます。戦争はやめてほしいです。孫くらいの、こどもが泣きながら一人で歩いていました。悲しいことです。戦争をしてはいけません。