FIFOについて

このQ&Aのポイント
  • FIFOとはデータの送受信に使う一時的なメモリであり、マイコンプログラムやチップなどでよく使用されています。
  • ICチップのデータシートに出てくるFIFOと情報処理の参考書に出てくるFIFOは関係があります。
  • FIFOが圧倒的に使われる理由は、データの順序を保持するために最も効率的で便利だからです。
回答を見る
  • ベストアンサー

FIFOについて

最近マイコンプログラム等の勉強をしております。 マイコンと通信させるチップのデータシートにFIFOという言葉が出てきます。データの送受信に使う一時的なメモリとしてFIFOがあるようで、他の様々なチップにおいても何らかの形でFIFOが使われていることが多いようなのですが、よくわからないことが何点かあります。 [質問] (1)ICチップのデータシートに出てくるデジタル回路の用語FIFOと 情報処理の参考書に出てくるFIFO(First In, First Out)とは別物なのでしょうか?関係があるのでしょうか? (2)(1)で関係がある場合、FIFOの他にもLIFO(Last In, First Out)があると思いますが、圧倒的にFIFOが使われるケースが多いのはなぜでしょうか?

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

(1) 基本的に「同じもの」と思っていいです. 情報処理の方で出てくるのは「概念としての FIFO」で, データシートに出てくるのは「物としての FIFO」なので「完全に同じ」とは言えません (「物としての FIFO」ではあふれたりするけど, 情報処理ではそういう面倒なことは考えないことが多いので) が. (2) 「データの送受信」のときに LIFO が「便利だ」と思える場面を想像してみてください.

関連するQ&A

  • FIFOの仕組みについて

    FIFO(First-In,First-Out)を使用したいと考えています.そこで,1度outputしたデータは,メモリ上には保持されず,押し出されるように消えてしまうのでしょうか.それとも他のRAMと同様,読み出してもデータは保持されるのでしょうか.その辺がいまいち理解できません. 宜しくお願い致します.

  • LILO の発音について

    Linux の LILO って、どう発音するのが正しいのでしょう? 私は、昔から FIFO(First In First Out)を「ファイフォ」と発音 しているので、そこからの連想で「ライロ」と発音していたんですが、 周囲の人を見ていると、「リロ」と発音する人の方が多いようです。 個人的には、どうも「リロ」というのはしっくりこないんですが、 (綴りが LILLO なら納得できるんですが…) 皆さんは、何と発音されていますでしょうか?

  • PHPのファイルオープンモードについて

    掲記事1件1件のログファイルをCSV形式で連ねて書いた、 示板記事保存用のPHPでファイルをオープンして、読み書きするときに、スタックのような、 LIFO(Last in First out)のような、ファイルオープンモードってありますか? ちなみに、'a+' だとファイルポイントをファイルの末尾に置く為に、読み出して、画面に書くと、 新しい記事ほど、ラストに表示されてしまいます。’w+’だと、ファイルポインタを先頭にもってくるが、 ファイルサイズを0にしてしまい、用をなしません。 新記事を上のほうに表示する(つまり、ファイルポインタを先頭にもってきて、かつ、前のレコードはしっかりそのあとに移動させる)には、どういうファイルオープンモードがあるでしょうか。

    • ベストアンサー
    • PHP
  • 文字の置換がうまくいかない

    ********** test.txt ************* $first = "abc"; $last = "xyz"; ********************************* ********** change.txt *********** $first $firstaaa $last ********************************* という2つのテキストファイルがあったとして、 open(IN,"test.txt"); @data = IN; close IN; open(A,"change.txt"); while(<A>){$a_data .= $_} close A; foreach (@data) { if(/(\$[a-zA-Z_]+)[\t\s]*=[\t\s]*"(.+)"[\t\s]*;/){ my $name = $1; my $value = $2; print "$name<br>"; #$nameに何が入っているか表示 $a_data =~ s/$name/$value/g; } } としても、change.txtの$firstや$lastがabcや、xyzに置換されないのですが、なにがいけないのでしょうか?print "$name<br>";のところではちゃんと$firstと$lastという風に出力されています。$a_data =~ s/$name/$value/g;を$a_data =~ s/\$first/$value/g; と変えると、ちゃんと$firstだけ置換されました。 なにか心当たりがある方、よろしくお願いします。

    • ベストアンサー
    • Perl
  • FPGA や CPLD は何に使うんですか?

    普段PICマイコンを使って遊んでいます。 調べごとをするときは当然のようにネットを使うんですが 時々FPGAやCPLDに関しての記載事項があったりして それについても調べてみたんですがイマイチ何に使うのかが判りません。 現状での僕の理解は以下のとおりです。 ・プログラムを書きICの中にあらかじめ道を作ってあげるため  内部での判断時間がなくINからOUTへ結果出力までの時間がマイコン  等に比べてものすごく早い。 ・一見するとICだけどイメージとしてはプログラムで指定したとおりの  道が入っている。 ・ピンが1から100まであったとして30番のピンと56番のピンに信号が入  ったら88番に出力するみたいな使い方をする。 この程度です。 そこで質問です。 質問1 処理が早いといってもFPGAやCPLDは単体ではなくマイコン等の先につけ て判断自体はマイコンがやるんだから結局マイコンのスピードになって しまう気がするんですがそもそもどういうところに使うんですか? 質問2 イメージとしてはICの中にプリント基板を作るようなことなんでしょうか?

  • マイコンのポートについて(CMOS?TTL?)

    マイコンのポートについて確証がもてず質問させてください。 マイコンのシリアル、I/Oなどの外部ポートは、CMOSレベルなのかTTLレベルなのか どちらなのでしょうか? 事の発端は、シリアルポートに電圧の異なる回路を接続しなければならず、レベルシフトICの使用を 検討していて、入力がTTL対応のもの(HD74LV1GT125ACM)を見つけました。 このICの入力(TTL)をマイコンに接続しようとしたときに、 マイコン側はCMOSレベルの信号なのか、TTLレベルの信号なのか疑 問がわき、データシートで確認することにしました。 直接名称の記載はありませんでしたが、付録の回路図を見たところCMOSの記号があり 電気特性でも入出力のレベルはCMOSの値(Vccを基準としたレベル)であったので、 このマイコンのシリアルポートはCMOSレベルの信号であると思いました。 念のため、このことを先輩へ確認したところ、 「シリアルポートはTTLレベル」といわれてしまいました。 そこでもう一度、データシートを確認しましたが、 電気特性はVccに対する比率(という表現でよいのかわかりませんが)で Hi、Loのレベルが規定されているのでCMOSレベルで間違いないと思いますが、 回路図のほうは入力(RXD)側のみ論理回路を通っていたため この部分がTTLレベルなのか?でも、どこにもそのような記載は見当たらないしと混乱しています。 ロジックICであればシリーズ(TTL-ICであればスタンダード、74LSなど、 CMOSであれば74HC、74LVC)で確認しやすいものもありますが、 マイコンの場合はどうやって確認するのでしょうか? 上記のように、データシートの回路図や電気特性から判断する方法でよいのでしょうか。 確認したマイコン H8/36064(参照頁は、回路図:付録38、電気特性は、21-4~21-6)を確認しました。

  • 記号的?で強烈な作品が見たいです(デビルマン等)

    先日、1stガンダムでララァが死ぬ話を見て、 かなりショックでしたが、演出がすごく強烈というか、 抽象的だけれども、有無を言わさぬような、 記号的なのにすごく真に迫るような表現というか、 とにかく圧倒されました。 こういったシーンは文庫本でデビルマンのラストを読んだ時以来久しぶりで、 他にこんな演出のシーンのある作品があれば見てみたいと思いました。 エヴァ(ラスト)、寄生獣(田村玲子)、スラムダンク(山王戦)、 ベルセルク(蝕)、BECK(ライブ)などは、 圧倒されましたが、今回求めている圧倒とは違うのです。 あまり上手く言えないのですが、 セカイがすごいとか感動がすごいというより、 個人を記号で描写するところの圧倒というか、 富野監督の言われるテーマの「主体」の描写なのかわからないのですが、 そんな圧倒をされる作品が他にあれば、ぜひ見てみたいのです。 もしお心当たりがあれば、漫画でも、アニメでも、何でも、ぜひご紹介ください。 よろしくお願いします。

  • ASUS TUSL2(オンボードRAID付き)について

    メインで使っていますがこの度CPUをアップグレード しようとCPUクーラーをはずしたところ チップ抵抗を破壊してしまいました。 幸いはんだ付けには自信があるのですが 抵抗値が分かりません。 WEBには抵抗値がわかるほどの拡大画像は在りませんし 電源ICのISL6524のデータシートからは推測できませんでした。 このソケットのすぐそばの電源ICのISL6524の近く にあります R66 と R67 の抵抗値を教えていただけませんでしょうか。チップに書いてある三桁の数字でも構いません。よろしくお願いします。

  • VBAでコピペした値がコピペ先の書式で表示できない

    こんにちは、お世話になっています。 表題のとおり、VBA内でコピペした値が、コピペ先の書式で表示ができなくて困っています。 状況としては、「指定したシート1上の範囲内のセルの文字列をコピーし、シート2で指定したセル内にペーストする」ということを行いたいのですが、貼り付けた値はコピペ元の書式で表示されてしまい、一度各セルをアクティブにしないとシート2の書式が適用されません。 どうすればアクティブにしなくても正常表示できるか、お知恵を貸してください。 なお、作成にあたり以下の条件があります。 (1)運用時に全シートはパスワード保護されるため、値に対しての入力や修正、及びショートカットやボタンによる動作は不可 (2)コピー元の書式は「文字列」固定、コピー先の書式は「ユーザー定義」固定で、さらに各行ごとに定義が異なる (3)当マクロはファイル呼出時に自動的に実行される 以下、ソースコードになります(Excel2003 SP3、VB6.5で作成) Dim first_Row As Integer 'シート1のデータ先頭行 Dim first_Col As Integer 'シート1のデータ先頭列 Dim last_Row As Integer 'シート1のデータ最終行 Dim last_Col As Integer 'シート1のデータ最終列 Dim first_KeyNo As Integer 'シート2のキー番号先頭行 Dim last_KeyNo As Integer 'シート2のキー番号最終行(今回省略) (中略、↑のデータを各ワークシートからセット) Dim i As Integer 'シート1のカウント用変数 Dim k As Integer 'シート2のカウント用変数 i = first_Row k = first_KeyNo 'データ最終行になるまで処理を繰り返す Do While(i >= first_Row and i < last_Row)      'シート1と2のキーNoがイコールならセット      If Worksheets("シート1").Cells(k, 1).Value = Worksheets("シート2").Cells(i, 2).value Then           Worksheets("シート1").Range(Cells(i, first_Col),Cells(i, last_Col).Copy           Worksheets("シート2").Range(Cells(k, 1),Cells(k, 20).PasteSpecial paste:=xlValues           Application.CutCopyMode = False      'イコールでないなら、イコールになるまでシート2のキー番号を検索      ElseIf Then           (中略)      EndIf      i = i + 1      k = k + 1 Loop VBAは今回初めて作成するので、見づらいかと思いますがよろしくお願いいたします。

  • 電源直結 or プルアップ

    マイコンの空端子処理やデータラインなどでプルアップまたはプルダウンすることがありますが、抵抗を介さずにGNDまたは電源に直結して動作モード設定を行うようなIC等もあると思います。 このような電源やGNDに直結してもよい端子としてはいけない端子はデータシートのどの項目を見れば判断できるのでしょうか? また、電源やGNDに直結してモード設定を行っているようなICの端子にプルダウン、プルアップ抵抗を使用すると逆に問題になるのでしょうか? 以上、よろしく御願いいたします。