Octal D-type Transparent Latchの挙動について

このQ&Aのポイント
  • Octal D-type Transparent Latchとは、74HCT573という部品であり、データシートによると、LEがHIGHからLOWに移行する前に一度セットアップされると、電圧レベルがHIGHになることを意味します。
  • この部品は、enable and read register(メモリの命令を読み込むためにレジスタを使用する)とlatch and read register(レジスタから命令を取得して読み込む)という2つの異なる方法で命令を取得できます。
  • また、/OEがLOWかつ/LEがLOWの場合にのみ、DとQが接続され、InputのDに依存してOutputのQがHIGHまたはLOWになるという特徴があります。また、74HCT574という類似した部品も存在し、CPのHIGHとLOWが繰り返されますが、その使い方の違いは明確ではありません。
回答を見る
  • ベストアンサー

Octal D-type transparent latch;とかいう部品の挙動について

度々すみません。また電子回路のことでどなたかご助言下さい。 http://www.datasheetcatalog.com/datasheets_pdf/7/4/H/C/74HCT573.shtmlのDownload 74HCT573 datasheet from Philipsから74HCT573をダウンロードできます。この部品Octal D-type transparent latch; 3-stateとかいうらしいです。質問はこのデータシートの4ページの中段に書いてある説明です。「h = HIGH voltage level one set-up time prior to the HIGH-to-LOW LE transition」=「h = LEがHIGHからLOWへ移行する前に一度セットアップ(リセットのこと?)される時に電圧レベルがHIGHになる」と訳したのですが、これの意味するところがよく分かりません。それと、「enable and read register(レジスタ(メモリのようなもの?)を使用して命令を読み込む時?)」と「latch and read register(レジスタから命令を取り出して読み込む時?)」の違いが分かりません。それと4ページの下の方の図ですが、/OEがLOWになり、かつ/LEがLOWになった時のみDとQをつなぐ(つまりInputのDがHIGHならOutputのQもHIGH、LOWならLOWにする)部品と解釈してよいのでしょうか?これに類似した部品で74HCT574ってのもあるんですが、そちらはCPがHIGH、LOWを繰り返すみたいなんです…。この両者の使い方の違いもいまいち理解できないのです…。質問が多すぎてすみません。分かる範囲でご教示下さい。

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

  • ベストアンサー
  • inara
  • ベストアンサー率72% (293/404)
回答No.1

(h = HIGH voltage level one set-up time prior to the HIGH-to-LOW LE transition) set upというのはリセットではなくて、準備するという意味です。 理想的には、LE端子の電圧がHからLになった瞬間のD端子の状態をQに出力してそのまま保持するというのがラッチ動作です。しかし現実にはLE端子の電圧がHからLに遷移(transition)した瞬間のデータを保持するのでなく、そのちょっと前のデータが保持されます。つまり、「LEがHからLに遷移する時間からさかのぼったセットアップ時間のところでのH電圧レベル = h」 となります。データシートのFig.9(7ページ)に、そタイミング図が出ています。tsuと書いてある時間がセットアップ時間で、LEがHからLに変わる時間から、tsuだけさかのぼった時間でのDnの状態を読み込むことになります。ただしtsuの値はばらつきがあって、データシート(6ページ)には74HCTのtsuの最小値は13nsと書かれています。典型値(Typ)が7nsなのにそれより大きい10nsが何で最小なのかというと、ICの実力的にはtsu=4nsでも動作するのですが、10ns以上なら確実ですよという意味の最小なのです(これより大きくとっておけばいい)。このtsuと関連しているのが th (ホールド時間)です。これも同じFig.9にタイミングが書かれていますが、LEがHからLに変わった時間から th の時間はデータの状態を変えてはいけない(Hold=保持しなければならない)という時間で、この最小値は9nsです。Fig.9の説明のところに書いてあるように、逆に、これ以外の斜線部分は入力信号が変化してもいい時間です。 ( enable and read register と latch and read register ) enable and read register と書かれている動作モードは、下に ( transparent mode ) と書かれているように、Dnの信号がQnにそのまま筒抜ける(データを保持せずそのまま後ろに流す)という動作のことです。その次のlatch and read register と書かれている動作モードは、上で説明した本来のラッチ動作のことで、、LEがHからLに変わる時間のDnの状態をQnに反映させて、そのまま保持する(Dnが変わってもQnは換わらない)という動作です。次の latch register and disable output は Qn を高インピーダンス状態(LでもHでもない、電気的に浮いた状態)にするという動作モードです。これは複数の出力信号をつないで1本の線に送り出すときに、1つを除いてこの状態にしておいて、その1つのデータだけ1本の線に乗せるという使い方をします。レジスタというのはCPUのレジスタ(一時記憶装置)と同じ意味ですが、この場合はラッチ回路そのものがレジスタになっています(ラッチという動作は前の状態の記憶)。 (これに類似した部品で74HCT574ってのもあるんですが、そちらはCPがHIGH、LOWを繰り返すみたいなんです) 573はDタイプラッチ、574はDタイプフリップフロップです。573はLEがHからLに変わったときに、574はCPがLからHに変わったときにQが保持されます。ここまでは動作が似ていますが、573はLEをHにすると、DのデータがQにそのまま筒抜けるのに対して、574のほうは、CPをHからLに戻してもQは変化しません。 574のCP(クロックパルス)は出力でなく、入力端子ですので、勝手に繰り返すわけではありません(そういう信号を入れているだけです)。ここには普通クロック信号を入れますので、常時Qが変化するといえます。それに対して573のLE端子はクロックにつながず、必要なときだけQを変化させるという使い方になります。 ラッチというのは信号線の途中にある特殊スイッチと考えてください。ボタンを押している間だけ導通していて、ボタンを離すと、離した瞬間のデータの状態のままになっているスイッチです。一方フリップフロップも特殊スイッチですが、ボタンを押した瞬間にだけ導通して状態を保持するスイッチです。ボタンを押し続けても、離しても出力は変わりません。変わるのは押した瞬間だけです。 74HCT573 http://www.ortodoxism.ro/datasheets/philips/74HC_HCT573_CNV_2.pdf 74HCT574 http://www.ortodoxism.ro/datasheets/philips/74AHCT574PWDH.pdf

fg5_sinnyo
質問者

お礼

懇切丁寧なご説明に誠に感謝申し上げます。 とても多くのことが書かれているので理解するのに少し時間がかかりそうです。 不明点があれば、また近いうちにお尋ねしたいと思います。 ともかくありがとうございます。

その他の回答 (1)

  • inara
  • ベストアンサー率72% (293/404)
回答No.2

他(http://oshiete1.goo.ne.jp/qa3427662.html)でも同じ質問をされていますが、簡単に言えば回答にあるとおりです。 Webで調べてみると、「HIGH voltage level one set-up time 」という表現は他のロジックICでも慣用句のように使われていますが one の意味がよく分かりません。「LEがHからLに遷移する前の( prior to the HIGH-to-LOW LE transition)」というのは set-up time の説明ですから、HIGH voltage level at a set-up time なら理解できるのですが・・ いずれにしても、LEがHからLに遷移する前のある時間(set-up time)での電圧レベルのことです。

fg5_sinnyo
質問者

お礼

あなたのご回答を詳しく読ませていただきました結果、この部品の挙動がよく分かりました。とてもいい勉強になりました。本当にありがとうございます。ここまで詳細に書いて下さるとは正直思っておりませんでした。

関連するQ&A

  • 電子回路に関する部品のデータシートなんですが。。。

    電子回路を見て基板を修理する仕事をしています。それで、今修理している基板で着目しているのが、74HCT573という部品です。 このデータシートは​http://www.datasheetcatalog.com/datasheets_pdf/7/4/H/C/74HCT573.shtml​のDownload 74HCT573 datasheet from Philipsからダウンロードできます。 質問はこのデータシートの4ページの中段に書かれている英文についてです。 「h = HIGH voltage level one set-up time prior to the HIGH-to-LOW LE transition」=「h = LEがHIGHからLOWへ移行する前に一度セットアップ(リセットのこと?)される時に電圧レベルがHIGHになる」 と訳したのですが、one set-up timeの意味するところがよく分かりません。 LEというのはlatch enableのことでこの部品がレジスタ(命令やアドレスを記憶するところ)から命令を取ってくるということだと思います。 LEがHIGH(ここでは恐らく+5V)なら命令を取ってくる、LOW(0V)なら何もしないという判断で宜しいでしょうか? どなたかone set-up timeとは何なのかお分かりの方はいらっしゃいますでしょうか?よろしくお願い申し上げます。

  • Verilog-HDLによる設計において

    現在Z8085のCPUを設計しており、テンポラリレジスタにラッチする部分でなかなか上手くいきませんので質問させていただきます。 always文を使用したステートマシンにより制御しようとしているのですが次のようなWarningが出ます。 Warning: Latch IR[0]$latch has unsafe behavior Warning: Latch IR[1]$latch has unsafe behavior            : Warning: Latch IR[7]$latch has unsafe behavior Warning: Latch TMP1[0]$latch has unsafe behavior Warning: Latch TMP1[1]$latch has unsafe behavior            : Warning: Latch TMP1[7]$latch has unsafe behavior Warning: Latch TMP2[0]$latch has unsafe behavior Warning: Latch TMP2[1]$latch has unsafe behavior            : Warning: Latch TMP2[7]$latch has unsafe behavior Warning: Latch NEXT_STATE[0]$latch has unsafe behavior Warning: Latch NEXT_STATE[1]$latch has unsafe behavior <ソース> module CPU_TMP( CLK, nRST, FROM_DCD, IR, TMP1, TMP2, STATE, NEXT_STATE ); input CLK;//クロック input nRST;//リセット input [7:0] FROM_DCD;//入力命令 output [7:0] IR;//命令レジスタ output [7:0] TMP1;//テンポラリレジスタ1 output [7:0] TMP2;//テンポラリレジスタ2 output [1:0] STATE;//現在のステート output [1:0] NEXT_STATE;//次のステート reg [7:0] IR; reg [7:0] TMP1; reg [7:0] TMP2; reg [1:0] STATE; reg [1:0] NEXT_STATE; //状態 parameter S0 = 2'b00; parameter S1 = 2'b01; parameter S2 = 2'b10; parameter SD = 2'b11; //命令 parameter INRA = 8'h11; parameter MVIA = 8'h22; parameter JMP = 8'h33; always @( posedge CLK ) begin     if( nRST == 0 )       STATE <= SD;     else       STATE <= NEXT_STATE; end always @( STATE ) begin    case( STATE )      SD : begin            IR <= 0;            TMP1 <= 0;            TMP2 <= 0;            NEXT_STATE <= S0;          end      S0 : begin            IR <= FROM_DCD;            case( FROM_DCD )              INRA : NEXT_STATE <= S0;              MVIA : NEXT_STATE <= S1;              JMP : NEXT_STATE <= S2;            endcase          end      S1 : begin              TMP1 <= FROM_DCD;              NEXT_STATE <= S0;          end      S2 : begin              TMP2 <= FROM_DCD;              NEXT_STATE <= S0;          end endcase end endmodule どのようにしたらこのWarningを消すことができるでしょうか。

  • H8マイコンでled制御

    H8/3052FのマイコンとAKI-H8-USBのキットを使用しています。 ledを制御する際に、通常はportのデータレジスタの該当ビットをlow(0)にしたときに消灯、high(1)に点灯となると思うのですが、 なぜか逆になります。つまりlowレベルのとき点灯します。 他に接続しているスイッチも逆になっているみたいです。 回路の組み立てがおかしいのでしょうか? 理由が分からず悩んでいました。 よろしくお願いします。

  • デジIC:SN74LS273N(OCTAL D-FF)について

    お助け下さい。 8回路入りDラッチICのLS273Nで動作テストしたいのですが、 どうも思ったように動かずに困ってます。 電源は5Vで、各出力(Qx)には2Kの抵抗付でLEDを接続し出力確認をし、 クリアー端子とクロック端子には2Kの抵抗で電圧をかけHIGHにして 各入力(Dx)のいずれかに2Kの抵抗をつけ電圧をかけてHIGHにしても 出力が得られず(LED)が点灯しません。 DラッチなのでクロックがLOWにならない限りLEDが消灯しない はずなのに、LED自体が点灯せずにテストできずにおります。 回路的には↓の状態です。               _______________ VCC5V→R(2K)-----|1(CLR) (VCC)20|--←5V GND-LED-R(2K)←--|2(1Q)  (8Q)19|--→R(2K)-LED-GND TESTで5V→R(2K)--|3(1D)  (8D)18|--←R(2K)-TESTで5V TESTで5V→R(2K)--|4(2D)  (7D)17|--←R(2K)-TESTで5V GND-LED-R(2K)←--|5(2Q)  (7Q)16|--→R(2K)-LED-GND GND-LED-R(2K)←--|6(3Q)  (6Q)15|--→R(2K)-LED-GND TESTで5V→R(2K)--|7(3D)  (6D)14|--←R(2K)-TESTで5V TESTで5V→R(2K)--|8(4D)  (5D)13|--←R(2K)-TESTで5V GND-LED-R(2K)←--|9(4Q)  (5Q)12|--→R(2K)-LED-GND      GND←--|10(GND)(CLK)11|--←R(2K)-VCC5V               ---------------- 外ずけで何か付ける素子が必要なのでしょうか? それともクロックが本来の形?(HIGH→LOW→HIGH・・・)に ならないといけないのでしょうか? また、CLRは電源投入時は全てLEDが点灯しますので、 一度LOWにしてからHIGHにしてます。 ICは買ったばかりの新品です。 どうか教えて下さい。 宜しくお願い致します。

  • PIC12F683の入出力について

    GPIOレジスタとTRISIOレジスタの関係が理解できません、どなたか教えて頂けませんか。 1.GPIOのレジスタに「0」を設定すると電位は、H(ハイ)となるのですか、L(ロー)となるのですか。  2.TRISIOのレジスタに「0」を設定すると電位は、H(ハイ)となるのですか、L(ロー)となるのです。 3..TRISIOの「0」は、出力モードと説明がありますが、その時のp型FETに加えられる電位は、HですかLですか。 4.P型FETにはGPIO,TRISIOいずれか一方の電位が、Lであれば出力は、H、n型FETにはいずれも電位が、Lのとき出力は、Lと考えていいでしょうか。 5.TRISIOが「1」入力モードになるとなぜ、p型FET、n型FETとも動作しない様な説明がありますが なぜでしょうか。   以上の点が判然としませんのでGP(0.1.2.3.4.5)に、H出力するのか、L出力するのかわかりません。 教えていただけませんか。

  • H4のリレーハーネスについて

    Low:HID / Hi:ハロゲンの4灯式ヘッドライトの バッ直 H4リレーハーネスを探しています。 Hiはハロゲンなので「Low固定式」のハーネスを使用して 問題ないでしょうか? H4カプラーからHi用の配線がない場合は、追加すれば いいと思ってます。 尚、4灯同時点灯は考えておりません。 (Hiの時は、Lowは消灯する) 以上、詳しい方お願いします。

  • 非常に限定された条件での8バイト加算

    アセンブリプログラム上で16ビット同士を加算したいと考えています。 ただ、非常に条件が限定されていて、 【簡単な構成について】 ・レジスタは8ビットAレジスタ一つのみ ・8ビット演算器(ALU)は一つのみ ・条件コードはZフラグのみ(ただし、書き換わるのは命令7.、8.でのみ) 【使える命令】 1.Aレジスタに即値をロード 2.Aレジスタに指定アドレスのデータをロード 3.Aレジスタから指定アドレスにストア 4.無条件分岐 5.Aレジスタand即値=0ならば分岐 6.Aレジスタor即値=0ならば分岐 7.Aレジスタと即値のandをとって書き戻し 8.Aレジスタと即値のorをとって書き戻し 9.Aレジスタと即値を加算して書き戻し a.Aレジスタと指定アドレスのEORをとって書き戻し b.Aレジスタと指定アドレスのデータを加算して書き戻し c.間接アドレスのデータをAレジスタにロード d.Aレジスタの内容を間接アドレスにストア e.Aレジスタから即値を減算して書き戻し f.Aレジスタから指定アドレスデータを減算して書き戻し 普通に考えるならば、下位8ビット同士の加算、上位8ビット同士と下位8ビットのキャリーを加算すれば出来ます。 しかしながら、この限定された条件に於いてはなんらかの自由に使えるフラグ、もう少し汎用的に使える分岐命令が無ければ無理だと個人的には考えています。 出来るか、出来ないか、だけでも結構ですので、ご教授お願いします。

  • HID のスライド式と固定について

    ライフ(JB6)に海外製HIDの取り付けを検討しています。 純正は、H4ハロゲンです。 スライド式とLow固定式がありますが、違いが分かりませんので、分かる方教えてください。 スライド式とは、LowもHiもHIDで照射できるということで、Low固定式とは、Lowの時のみHID照射で、Hiは点かないということでしょうか? 田舎に住んでおり、夜間は対向車がなければHiで走行する事が多いのでLowのみの点灯だと辛いです。

  • ハロゲンライトをプロジェクター(HID)に換装

    H4の2灯ハロゲンライトを HB3+D4Sの4灯プロジェクターに換装しようと思ってます。 配線する際に ・スモール消灯時のパッシングでHighのHB3のみ点灯 ・スモール点灯時もパッシングでHighのHB3のみ点灯 ・LowのD4S点灯時のパッシングではHighのHB3のみ点灯 ・ライト上向き時はHigh+Lowの4灯同時点灯 という仕様にしたいのですが。 他所で拾った配線図を参考にしたところ、      「整流ダイオードは必要無いのではないか」 と現役整備士の方から言われました。 電気系統は素人の為、私では判断できません。。 詳しい方、ご教授頂ければ幸いですm(_ _)m 車はフィールダーです。

  • arduinoについて

    7セグledとボタンを使って、エレベーターの階数表示をさせる回路とプログラムを作っていてプログラムはある程度かけているのですがうまくいきません。何が足りないのでしょうか? プログラムは以下の通りです。 {#define LED_A 6 #define LED_B 7 #define LED_C 8 #define LED_D 9 #define LED_E 10 #define LED_F 11 #define LED_G 12 #define LED_DP 13 #include <Servo.h> Servo servo; int button1 = 5; int button2 = 4; unsigned long buttonGap ; void setup() { pinMode(LED_A, OUTPUT); pinMode(LED_B, OUTPUT); pinMode(LED_C, OUTPUT); pinMode(LED_D, OUTPUT); pinMode(LED_E, OUTPUT); pinMode(LED_F, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_DP, OUTPUT); pinMode(5, OUTPUT); pinMode(4, OUTPUT); servo.attach(11); } void loop() { digitalWrite(LED_A, HIGH); digitalWrite(LED_B, LOW); digitalWrite(LED_C, LOW); digitalWrite(LED_D, HIGH); digitalWrite(LED_E, HIGH); digitalWrite(LED_F, HIGH); digitalWrite(LED_G, HIGH); digitalWrite(LED_DP, HIGH); digitalWrite(LED_A, LOW); digitalWrite(LED_B, LOW); digitalWrite(LED_C, HIGH); digitalWrite(LED_D, LOW); digitalWrite(LED_E, LOW); digitalWrite(LED_F, HIGH); digitalWrite(LED_G, LOW); digitalWrite(LED_DP, HIGH); servo.write(180); delay(2000); servo.write(0); delay(2000); } void switchLights() { digitalWrite(LED_A, HIGH); digitalWrite(LED_B, LOW); digitalWrite(LED_C, LOW); digitalWrite(LED_D, HIGH); digitalWrite(LED_E, HIGH); digitalWrite(LED_F, HIGH); digitalWrite(LED_G, HIGH); digitalWrite(LED_DP, HIGH); delay(4000); digitalWrite(LED_A, LOW); digitalWrite(LED_B, LOW); digitalWrite(LED_C, HIGH); digitalWrite(LED_D, LOW); digitalWrite(LED_E, LOW); digitalWrite(LED_F, HIGH); digitalWrite(LED_G, LOW); digitalWrite(LED_DP, HIGH); delay(5000); }