タグ付けされた質問 「timing」

このタグは、プロトコルまたは標準のタイミングに関する問題に関連しています。これには、UART / IICなどのタイミングとモーターを駆動するためのタイミングが含まれます。

13
タイミング図を作成するソフトウェア
私の職業生活では、プロトコルのタイミング図(UART、SPIなど)を作成する必要がある場合があります。しかし、利用可能な優れたプログラムが見つかりません。これにはどのプログラムが推奨されますか、またそれらを使用した経験は何ですか?

3
一部の論理1でデータ行に奇妙な「ノッチ」が表示されるのはなぜですか?
レトロコンピューティングの楽しみのためにZ80自作コンピューターを構築し、電子設計の基礎を学ぼうとしています。概念実証のために、私は前の週にブレッドボード上に基本的なシステムをすでに組み立てました。 現在のプロトタイプは非常に単純です。Iは、システムクロックとして74HCT04ピアス発振器によって駆動される4 MHzの水晶を用い、透過モード(中の2つの74HCT573ラッチLE16ビットアドレスバスのためのバッファとして高い)により制御反対方向にさらに2 74HCT573 RDとNOT RD双方向データとしてバスバッファ。私は、添付の100nsの AT28C256 EEPROM(のみ16 KiBのがデコードさ)および2つの150ナノ秒のシステムバスに8 KiBのSRAMチップ。74HCT42を使用してCS信号を生成しOE、EEPROMをLow WEからHighにハードワイヤードし、EEPROM を制御するCS信号を1つだけ残しました。 ブレッドボード上のすべてがうるさいですが、すべてのステージを完了した後、システムは完全に動作しているように見えました。今では、EEPROMから命令をフェッチSRAMへ/からデータを読み取り、書き込み、およびそれは別のラッチ74HCT573から作られたシリアルポートを持っている、ことができますD0に接続されているD0、LEある(NOT (IOREQ NAND WR))、出力から出てくるQ1だけで一つの出力ポート、つまり、 adrressデコードロジックなし。CPU / RAMを多用するベンチマークプログラムを作成しましたが、コンピューターは期待どおりの結果を出力できます。Memdumpsは、Z80がEEPROMからすべてのバイトを正しく読み取ることができるため、すべてが機能していることも示しました。 しかしD0、データバスのピンをプローブしようとすると、論理1の出力に奇妙な「ノッチ」が見られました。 そしてCS、EEPROM の信号がアクティブになった直後に、いくつかの論理1で常に表示されるようです。たとえば、青色のEEPROM CS信号に重畳された奇妙なノッチのキャプチャです。 問題を切り分けようとしたので、SRAMのすべてのCSピンをHIGHに固定し、システムから効果的に削除し、メモリアクセスのない単純なテストプログラムを作成しました。 .org 0x00 di xor a loop: out (0x00), a inc a jp loop しかし、問題は依然として変わらず、奇妙な「ノッチ」でいつものために表示されるいくつかの論理1S、直後にMEMRQ(それが今、基本的にワンチップだから)、および/またはCS(青)はローになります。 SRAMのすべてのCSピンはHIGHであるため、システムにはほとんどメモリとしてAT28C256 EEPROMチップ、出力ポートとしてラッチがあります。システムには、DMA要求中にEEPROMをオンザフライで再プログラムするAtmega328pで作られたインシステムプログラマもありますが、プログラマのすべてのデータとアドレス出力をトライステートにしたので、それが原因ではないと思います。プログラマーを追加する前からノッチを見てきました。 そのため、オペコードフェッチサイクル中に「ノッチ」を作成する必要があります。彼らは何ですか? 私にはいくつかの仮説があります: 問題はありません。これはブレッドボードのシグナルインテグリティが悪いために発生したもので、適切に設計され、適切に分離されたPCBでは自動的に消えます。ブレッドボードには、インピーダンス不整合、反射、寄生容量、クロストーク、EMI / RFIなど、あらゆる種類の信号整合性の問題があります。ボード上を走る長いバスワイヤは、問題をある程度悪化させる可能性があります。 もしそうなら、「ノッチ」の性質を説明できますか?この現象はEEに名前がありますか?私は以前に多くのオーバーシュートとリンギングを見ましたが、「ノッチ」を見たことはありません。そして、なぜ私はいくつかの論理レベルでのみそれを見るのですか? タイミング。EEPROM出力または他の論理回路の短い「整定時間」がバスにこの奇妙な効果を引き起こしている可能性はありますか? 扇形に広がります。おそらく長いバスには大量の電流が流れ、静電容量が大きいため、EEPROM出力はバスを高く駆動するのに苦労していましたか?おそらく、オシロスコープのプローブもバスに負荷をかけていますか? バスの競合、または何かがデータバスをプルする原因となった他の論理エラー。ありそうもないと思う?バス上の他のコンポーネントは分離されており、単一のAT28C256 EEPROMまたはラッチがこれを行う方法を確認できませんでした。しかし、配線エラーやブレッドボードの隠れた内部短絡のために、それはまだ可能だと思います。 …

5
なぜレースハザード定理が機能するのですか?
知らない人のために、レースハザード定理(RHT)は次のように述べています。 A x B + A 'x C = A x B + A' x C + B x C RHTの他の部分、時間遅延などについては理解していますが、上記の論理ステートメントが正しいはずなのかわかりません。誰かがこれを理解するのを手伝ってくれますか?

4
Arduinoを使用したMIDIシーケンサーのタイミング精度
私はこれらの音楽シーケンサーを構築します。 ただシーケンサーではなく、シーケンサーの物理インターフェイスです。シーケンサーは、シーケンサーが接続するラップトップで実行されるアプリケーションです。これにより、ユーザーはその場でドラムループを作成できます。とても楽しいですが、シーケンサーが「オンボード」ではないため、ラップトップが必要です。 私の大好きなのは、私のデバイスに搭載されたシーケンスを実行することです。 USB MIDI接続のクラスコンプライアンスを解決する方法を知っているとしましょう。また、5ピンのDINポートからMIDIノートを送信するためにarduinoを接続する方法を理解できるとしましょう。私が最も心配しているのは、イベントループのすべての実行で、分単位のタイミングに一貫性がないため、時間の経過に伴うテンポのドリフトです。 私が知っているいくつかのこと: delay()テンポループの制御に依存すべきではありません。遅延はファームウェアのすべての操作を停止します。シーケンスの実行中に物理ユーザーインターフェイスに変更がないかポーリングする必要があるため、これは機能しません。 に基づく計算millis()は、ファームウェアが一定のカウントが経過しても動作し続けて動作できるため、より優れています。 私の物理的な制御のいずれも割り込みルーチンをトリガーしていませんが、一部の操作はメインのloop()実行を遅らせる可能性があります。ユーザー入力を待機する関数を設計すると、millis()カウントがはるかに大きい場合に「デッドライン」が機能しないという問題が明らかに発生する可能性があります。私はこの問題が私自身の設計によるものであることを知っています... 質問: A. AVRベースのarduinoは、ユーザーインターフェイスをポーリングしてミッションクリティカルなタイミングループを実行するための適切なマイクロコントローラーですか?ARMベースのArduinoがもっと高速になったことを知っています。Teensy 3.0はより良い代替手段でしょうか?これらはどちらも3.3Vボードであるため、これは作業するための別の問題セットですが、ここでは無視します。 B.タスクを2つのマイクロプロセッサに分割する必要がありますか?1つはユーザーインターフェイスのポーリングと更新を処理し、もう1つはミッションクリティカルなタイミングループ用です。 c。他に何か? 私の主な目標は、コンピュータをまったく使用する必要がないことです。スイングについても計算したいのですが、この場合、スイングは、ロックされたタイミングの正確なテンポが得られなければ意味がありません。助言ありがとう!
11 arduino  timing  midi 

3
Arduino:micros()よりも優れたマイクロ秒の解像度?
micros()のドキュメントでは、戻り値は常に4の倍数になることに注意しています。 より高い解像度のマイクロ秒クリック、できれば1マイクロ秒レベルまでのクリックを取得する方法はありますか? AVRレベルまで下がっても問題ありません。
11 arduino  timing 

2
SDCによるASICタイミング制約:多重化クロックを正しく指定する方法
前書き SDC形式でタイミング制約を作成する方法について、インターネットおよび一部のトレーニングクラスで複数の、時には矛盾する、または不完全な情報を見つけた正しく、EEコミュニティに、私が遭遇した一般的なクロック生成構造の助けを求めたいと思います。 ASICまたはFPGAに特定の機能を実装する方法には違いがあることを知っています(私は両方で作業しました)、タイミングを制約する一般的で正しい方法があるはずだと思います特定の構造のは、基礎となるテクノロジー-私がそれについて間違っているかどうか私に知らせてください。 異なるベンダーの実装とタイミング分析のためのさまざまなツールの間にもいくつかの違いがあります(SynopsysがSDCパーサーソースコードを提供しているにもかかわらず)。 質問 これは、次のクロックマルチプレクサー構造についてです。これは、clkgenモジュールの一部であり、これもより大きなデザインの一部です。 ext_clk入力はデザインの外部で生成される(入力ピンを介して入力される)と想定されていますが、clk0およびclk4信号も生成され、clkgenモジュールによって使用されます(詳細については、関連するリップルクロックの質問を参照してください)。baseclkとdiv4clk、それぞれ。 問題は、タイミングアナライザが 扱いcpu_clkのいずれかのソースクロックのいずれかとすることができる多重化クロックとして(fast_clkまたはslow_clkまたはext_clkアカウントに異なるANDとORゲートを介して遅れを取って、) 同時に、デザインの他の場所で使用されているソースクロック間のパスを切断しません。 オンチップ・クロック・マルチプレクサの最も簡単な場合は、必要とするように思えますが、単にset_clock_groupsSDC文: set_clock_groups -logically_exclusive -group {baseclk} -group {div4clk} -group {ext_clk} ...与えられた構造では、これは、(出力clk0を介してfast_clk)およびclk4(を介してslow_clk)がアサートされた場合のみにcpu_clk設定されているext_clk場合でも、デザインで引き続き使用されるという事実によって複雑になりますuse_ext。 ここで説明するように、上記のset_clock_groupsコマンドを実行すると、次のようになります。 このコマンドは、すべてのグループの各クロックから他のすべてのグループの各クロックへ、またはその逆にset_false_pathを呼び出すのと同じです。 ...他のクロックが他の場所でまだ使用されているため、これは正しくありません。 追加情報 use_clk0、use_clk4そしてuse_ext入力はそれらの一方のみが任意の時点で高くなるように生成されます。これは、すべてのuse_*入力が低い場合にすべてのクロックを停止するために使用できますが、この質問の焦点は、この構造のクロック多重化プロパティにあります。 回路図のX2インスタンス(単純なバッファー)は、自動配置配線ツールが通常どこでも(ピンand_cpu_1/zとor_cpu1/in2ピンの間など)バッファーを自由に配置できるという問題を強調するための単なるプレースホルダーです。理想的には、タイミング制約はその影響を受けないはずです。

3
FPGAでのプロセスタイミング
私はfpgasを使い始めたばかりですが、理解できないタイミングの微妙な点があります。すべての同期プロセスが同じエッジでトリガーされる場合、入力は1つの立ち上がりエッジで「キャプチャ」され、出力は同じエッジで変化しますか?次の立ち上がりエッジ? 2つのモジュールがあり、1つの出力が次の入力に流れ込む場合、私のモジュールへの入力(前のモジュールの出力)がキャプチャされると同時に変化する状況が発生する可能性があります。 205nsのマーカーは、私が話していることを示しています。opとdata_writeが私の入力です。このテストケースではすべてが「正常に機能」しているように見えますが、シミュレーションでは、いつ何がキャプチャされているのかが明確ではありません。data_write = "0001 ..."は205nsまたは(205ns + 1クロックサイクル)でキャプチャされていますか?ISimでセットアップおよびホールドタイムを示すより詳細な波形を取得する方法はありますか? ありがとう。


4
バス同期回路のタイミング制約
クロックドメイン間でワイドレジスタを渡すためのバスシンクロナイザー回路があります。 非同期リセットロジックを省略して、簡単な説明を提供します。 データは1クロックで生成されます。更新には多くの(少なくとも1ダース)クロックエッジがあります。 PROCESS (src_clk) BEGIN IF RISING_EDGE(clock) THEN IF computation_done THEN data <= computation; ready_spin <= NOT ready_spin; END IF; END IF; END PROCESS; NRZIエンコードされた新しいデータの制御信号(バス上の有効なワードは制御信号の遷移に対応します)。制御信号は、シンクロナイザーとして機能するDFFチェーンを通過します。 PROCESS (dest_clk) BEGIN IF RISING_EDGE(dest_clk) THEN ready_spin_q3 <= ready_spin_q2; ready_spin_q2 <= ready_spin_q1; ready_spin_q1 <= ready_spin; END IF; END PROCESS; シンクロナイザ回路は短い遅延を導入し、データバスが安定するのに十分な時間を提供します。データバスは、準安定性のリスクなしに直接サンプリングされます。 PROCESS (dest_clk) BEGIN IF …
10 fpga  clock  timing  sdc 

2
貧弱なアイダイアグラム、どこから探し始めますか?
100Mbitイーサネットボードをデバッグしようとしていますが、解決しようとしている問題に直面しています。 これは送信ペアのアイダイアグラムです。受信ペアは非常に似ています。これはLAN8700 PHYであり、MIIインターフェイスを事実上無効にしたので、PHYはIDLEコードシーケンスを送信しています。データシートに従って、100Mbit / FDXに強制されます。100Mbit / HDXは同一です。 修正:デザインはLAN8700の内部1.8V電源を使用してVDD_COREネットに電力を供給しています。以前の説明で1.8Vロジック電源とVDD_CORE電源を混同していたに違いありません。高、ゼロ、低レベルは実際にはかなりまともなので、電源ノイズはそれほど高い可能性ではないようです。つまり、目は「押しつぶされ」ていません。違反がすべて非常に良い遷移のように見え、時間的に「ゆがんだ」だけであるという事実は、問題がPHY内のクリスタルまたはクリスタルドライバー/ PLLの電源にあると思います。 アイダイアグラムを実行させた場合(約15分)、マスクの違反を「塗りつぶす」と、画像に表示される白い違反が青いマスクの右側の白いシェブロン(>)の形になります。これは、タイミング誤差が、ランダムな分布であり、正確な量からタイミングを引きずるある種の離散ノイズではなく、ランダムに分布していることを示しています。 PHYが使用しているクリスタルの30ppm仕様は100ppm 802.3仕様の範囲内であり、PHYが指定する50ppm推奨仕様内にもあります。私は水晶が探しているものと一致し、LAN8700がその公称静電容量として指定しているものにかなり近い負荷コンデンサを使用しています。 MIIインターフェイスを無効にする前に、(Linuxのifconfigプログラムで報告されているように)フレーミングエラーが表示されました。リンクを10Mビットに強制してもエラーは発生しません。 私が気付いた非常に奇妙なことの1つは、PHYからMACへのRX_ER(受信エラー)信号でトリガーするようにスコープを設定した場合、フレームエラーがMACレポートに蓄積されても、エラーを通知しないことです。PHYのデータシートを読むと、RX_ERがアサートする状況が実際に非常に少ないことは明らかですが、アイダイアグラムでは、エラーが実際にPHYとMAC。 私はアイダイアグラムの基本を理解していますが、特定のアイパターンマスク違反を可能性のあるソースに変換する経験を共有できることを期待して、より経験豊富なポスターを探しています。 (編集:回路図を追加、VDD_CORE電源ソースを修正)

3
どうすれば非常にシンプルな非同期DRAMコントローラを実装できますか?
必要最低限​​の非同期DRAMコントローラーを構築する方法を教えてください。自作のレトロコンピュータプロジェクトで使用したい30ピン1MB SIMM 70ns DRAM(1Mx9パリティ付き)モジュールがあります。残念ながらそれらのデータシートはないので、私はSiemens HYM 91000S-70とIBMの「DRAMの動作を理解する」から行ってきました。 私が終わらせたい基本的なインターフェースは / CS:入力、チップセレクト R / W:読み取り、書き込みなし RDY:出力、データの準備ができるとHIGH D:イン/アウト、8ビットデータバス A:入力、20ビットアドレスバス 更新を正しく行うには、いくつかの方法があります。行アドレスの追跡に古いカウンターを使用して、CPUクロックLOW(この特定のチップでメモリアクセスが行われない)中に分散(インターリーブ)RASのみの更新(ROR)を実行できるはずです。JEDECによると、すべての行を少なくとも64ミリ秒ごとに更新する必要があると思います(Seimensのデータシートによると、8ミリ秒ごとに512、つまり標準的な周期の更新/15.6us)。別の質問。読み書きをシンプルで正確にして、スピードまで何を期待すべきかを決定することに、もっと興味があります。 最初に、それがどのように機能するか、そしてこれまでに思いついた解決策について簡単に説明します。 基本的に、20ビットのアドレスを半分に分割し、半分を列に、もう半分を行に使用します。/ CASがLOWになったときに/ WがHIGHの場合、行アドレス、次に列アドレスをストローブします。それが読み取り、それ以外の場合は書き込みです。書き込みの場合、データはその時点ですでにデータバス上にある必要があります。しばらくすると、それが読み取りの場合、データは利用可能です。または、書き込みの場合、データは確実に書き込まれています。次に、/ RASと/ CASを、直観に反して名付けられた「プリチャージ」期間に再びHIGHにする必要があります。これでサイクルは完了です。 したがって、基本的には、各遷移間で不均一な特定の遅延があるいくつかの状態を介した遷移です。トランザクションの各フェーズの継続時間で索引付けされた「テーブル」としてリストアップしました。 t(ASR)= 0ns / RAS:H /現金 A0-9:RA / W:H t(RAH)= 10ns / RAS:L /現金 A0-9:RA / W:H t(ASC)= 0ns / RAS:L /現金 A0-9:CA / W:H t(CAH)= 15ns / …
9 memory  timing  dram  7400 

2
PICのSPIクロックが不安定
PIC18F25K22の MSSPモジュールをSPIマスターモードに構成しようとしています。タイミングを見ていると、送信全体を通してクロックが安定していません。写真は言葉よりもそれをよく示しています。 ビットが送信された後、クロックは短くなり、毎回同じ量ではありません。これまでにSPIを使用したことはありませんが、ウィキペディアや他のリソースで見つけた図には、これが表示されていません。私はArduinoも接続しましたが、この動作は見られませんでした。私のコードは: #pragma config FOSC = INTIO67 // Oscillator Selection bits (Internal oscillator block) #pragma config PLLCFG = OFF // 4X PLL Enable (Oscillator used directly) #pragma config BOREN = OFF // Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and software) #pragma config WDTEN = OFF // …
8 pic  spi  timing 

2
市販のマイクロプロセッサはどのようにギガヘルツクロックでタイミングを満たしていますか?
比較的単純なFPGAデザイン(アルテラのCyclone IV用)を250 MHzクロックで駆動されるロジックのタイミングに適合させるのに問題があります。これにより、市販のマイクロプロセッサ(Intel Core i7など)が、1桁以上高いクロック周波数でタイミングをどのように満たすのか不思議に思います。 FPGAの250 MHzで苦労しているときに、市販のマイクロプロセッサはどのようにして3.8 GHzでタイミングを満たすことができますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.