• ベストアンサー

CPUがリセット状態のとき内部では何が起きている?

書籍「コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識」のP43にて >Z80CPUのRESETピンをいったん0にしてから1に戻すと、CPUがリセットされ、メモリー・アドレスの0番地に記憶されたプログラムから順に実行が開始されます。 上記の内容が掲載されていたのですが、Z80CPUにてリセットされるとき、Z80CPUのIC内部では何が起きているのでしょうか? Z80CPU内の「プログラムカウンタ」に初期設定の値「&H0000」が入るのでしょうか? 回答のほうお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#252929
noname#252929
回答No.2

Z80CPUなんて、枯れたCPUですし、メジャーなので、いくらでもマニュアルは見放題ですよ。それらくらい探されましょう。 仕様書なしでそういう参考書などだけでプログラムや回路を組むと、大抵動かなくて苦労する者なのですからね。 RESETに関する記述だけ、抜粋して載せておきます。 ーーーーーココから RESET. Reset (input, active Low). RESET initializes the CPU as follows: it resets the interrupt enable flip-flop, clears the Program Counter and registers I and R, and sets the interrupt status to Mode 0. During reset time, the address and data bus enter a high-imped- ance state, and all control output signals enter an inactive state. RESET must be active for a minimum of three full clock cycles before a reset operation is complete. ーーーーーここまで これだけのことが行われています。 オフィシャルのマニュアルなので、そのまま理解されてください。

その他の回答 (1)

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

Z80CPUのIC内部では色々なことが起きています。Z80CPU内の「プログラムカウンタ」に初期設定の値「&H0000」が入るのもその一つです。

関連するQ&A

  • タイミングを合わせるとはどういうことなのか?

    「コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識」書籍内の 「第2章:コンピュータを作ってみよう。」内の「他の制御ピンをつなぐ」(P42)のところで >M1ピンは、タイミングを合わせるためのピンで、INTピンは、Z80 PIOからZ80 CPUに割り込みを要求するためのピンです。 ↑このように記載されていますが、この >M1ピンは、タイミングを合わせるためのピンで、 ↑ということですが、「タイミングを合わせる」とはどういうことなんでしょうか? そもそも「Z80CPU」及び「Z80PIO」にて、「タイミング」とは、なんのことを指しているのでしょうか? わかりやすく教えてください。よろしくお願いします。

  • CPUのピンにグリスがついたまま使っていました。

    CPUのピンにグリスがついたまま使っていました。 その後、もうグリスはきれいにした後ですが、ブルースクリーン→シャットダウンに悩まされていますが、やはり、以前、CPUのピンにグリスがついたまま使っていたのが原因でしょうか。 ブルースクリーンの原因は不明で、ハードウェアについては、CPU以外は確実に原因ではありません。 ソフトウェアに原因がある可能性はまだあるのですが・・・・。 CPUはAthron LE-1640Bです。

  • PLDデバイスのリセット信号に関して

    PLDデバイス(CPLD、FPGA)でHDL言語できしょうしています、 always@(posedge clk or negedge rst)begin if(!rst)begin reg <= 0; end if begin レジスタのリセットを上記の様に記述しますが、この「rst」の信号はPLDデバイスの外部から 入力される設定なのですが、通常PLDのリセット信号をどの様な回路構成で生成するのでしょうか? PLD外部にCPUが有る場合はCPUから入力すればよいと思いますが、CPUなどが無くPLDデバイス 単体の場合、PLDデバイス用のリセットICなどあるのでしょうか? PLDデバイスはCPLDタイプであっても内部的にロジックをローディングするコンフィギュレーション動作が必要でこの間は数百msec程度かかると思われます。 ※CPUのリセット時間に比べかなり長いと思われます。 しかし通常のCPU用のリセットICはそんなに長い期間用はあまり無いと思います。 又はアルテラ社のデバイスを見ると「POR](パワーオンリセット)なる、ブロックが内蔵されていますが、このモジュールをリセット回路として使用できるのでしょうか。その場合、冒頭のVerilog言語で どの様に記述すればいいのでしょうか。 よろしくお願いします。

  • 組み込みマイコンでのソフトウェアによるリセット

    組み込み用マイコン向けのファームウェアをC言語で 書いています. ここで, ソフトウェア側からマイコンにリセットをかけ るにはどのような方法があるでしょうか? ※マイコン自体には内部的なハードウェアリセットを行 う機能は無いものとします. 素人考えで思いつく限りだと: ・リセットを行う場所の関数からmainまですべて戻る 経路を作っておく. main (または, mainを呼び出すスタートアップルーチ ンの部分)をループにしておき, その始めで内蔵周辺 機能のレジスタやstatic領域のメモリをすべて初期化 するようなコードを ひたすらハードコーディングしておく. (※static領域のメモリ初期化はどのみち行うからよ いとして, 内蔵周辺機能のレジスタをひたすら初期化 するのが面倒に思われます) ・ウォッチドッグタイマ機能があれば, わざとカウン タをオーバーフローさせてハードウェアリセットをか ける. ・外部リセット端子に何らかの形で出力ポートを 接続しておいて, 自分でハードウェアリセットをかける. 上記のものでもやればそれなりに動作しそうな気は しますが, どういう方法が一般的なのか知らないため どうしてよいか悩んでいます. どのようにリセットを行うのがスマートであるか ご教示いただけませんでしょうか?

  • なぜ「入力」「出力」の区別しなければならないのか?

    「コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識」書籍内の「第2章:コンピュータを作ってみよう。」内の「メモリーとI/Oを区別して入出力する仕組みを配線」(P42)のところで >メモリーやI/Oに対してCPUが入力と出力のどちらを行うのかも区別しなくてはなり>ません。そのために使われるのが、Z80 CPUの(Read=入力を意味し、入力動作で>0になる)ピンと(Write=出力を意味し、出力動作で0になる)ピンです。 ↑このように記載されていますが、この >「メモリーやI/Oに対してCPUが入力と出力のどちらを行うのかも区別しなくてはなりません。」 ↑なぜ「入力」・「出力」の区別が必要なんでしょうか? これはつまり、電気信号が衝突してしまう(いわばショート)を防ぐために区別する必要があるのでしょうか? わかりやすく教えてください。よろしくお願いします。

  • フリーズ、

    どうしてパソコンはフリーズするのでしょうか? 予想としては主記憶装置にプログラムを置けなくなった、 と考えています。CPUのプログラムカウンタがプログラムをとってこいと 命令しすぎって主記憶装置上におけなくなるからだと思います。 あってる??? たしかプログラムカウンタって次に命令するアドレスの番地を おいてあるんだっけ、、、、、 間違ってたら大恥です。 教えてください。

  • Z80PIOの配線にて、2つのピンの使う理由

    「コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識」書籍内の「第2章:コンピュータを作ってみよう。」内の「メモリーとI/Oを区別して入出力する仕組みを配線」(P42)のところで >Z80 PIOでは、同じことをCE(上線)ピンとIORQ(上線)ピンの両方を一緒に>「0」や「1」にすることで実現できます(2つのピンを使うのは、複数のI/Oが使わ>れた場合に便利だからです)。 ↑このように記載されていますが、この >「2つのピンを使うのは、複数のI/Oが使われた場合に便利だからです」 ↑この意味が理解できません。 これはつまり、 「2つの外部装置(ディップスイッチ・LED)が接続されている場合、並行して入出力ができる」 ↑ そうなるようにあえて、2つのピンを使うのでしょうか? わかりやすく教えてください。よろしくお願いします。

  • プログラムカウンタのハードウェアの動き方

    プログラムカウンタを変える命令が実行されたら、本当に即座にそこへ飛んでいき、追い越し・逆走何でもありだそうで、いちいち順に飛ばし読みをしたりはしないと聞きました。 ここで聞きたいのは プログラム実行後に順次進行、追い越し、逆走するときに(例えばカウンタ009から001)に即座に飛んでいくまでのハードウェアの働きのプロセスをプログラム的に教えてほしいということです。 自分が想像する例として 1.カウンタ009のプログラムを実行する。 2.プログラムカウンタを計算する。 3.プログラムカウンタを読んでそこだけに電気を流す? 4.・・・なぜ001のプログラムに即座に戻れるのか?なぜ002などほかのプログラムは無視できているのか?ほかのところは電気が流れないのか?というか電気が流れないとプログラムは実行できないのか?など 勉強不足ですいません。 自分はフローチャートを指でなぞっていく考えのせいか、順次進行でプログラムを進めていくという概念から離れることが困難で、即座に追い越し、即座に逆走をするハードウェアの動きがイメージできません。 何か詳しいサイト等がありましたらそれも教えていただけるとうれしいです。 長くなりましたがよろしくお願いします。

  • メモリーにも「スタック」という領域はあるの?

    「コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識」書籍内のP61のところにある「表3.1 Z80 CPUの主な命令」の表の「メモリーとCPUの入出力命令」の欄に 「PUSH reg:regをスタックに書き込む」 「POP reg:スタックからregに読みだす」 というのがあるのですが、これはつまりメモリーにも「スタック」領域はあるということなんでしょうか? 「スタック」と聞くと、CPUのレジスタ(記憶する箇所)のことをイメージしてしまい、メモリにはそんな領域はないと思われますが、メモリーにも「スタック」領域はあるのでしょうか? わかりやすく教えてください。 よろしくお願いいたします。

  • クロック信号のカウント方法について教えて下さい

    15MHZのクロックをカウントし、設定値と比較一致した場合外部に2μS巾のワンショット信号を出しタイミングによっては、カウント一致後約60μSで外部信号によってカウンタをリセットする回路を考えているのですが、いいデバイスが見つかりません。マイコン(AVR)のソフトウェア上でカウントするのは無理のようですし(?)、かといってカウンタICにもそのようなICが見つかりません。 どなたか方法をお教え頂けませんでしょうか?カウント数は10進4桁以内です。 マイコンから設定値を書き込めるカウンタICはZENIC製ZEN2024Fを見つけたのですが、使えるのかどうか今ひとつよくわかりません。マイコンはAVRを使おうと思っています。 全くのマイコン初心者です。よろしくお願いいたします。