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

6
シリアルプロトコルの区切り/同期技術
非同期シリアル通信は今日でも電子機器に広く普及しているため、私たちの多くはそのような質問に時々出くわしたと思います。電子デバイスDと、PCシリアル回線(RS-232または同様のもの)で接続され、継続的に情報を交換する必要があるコンピューターを検討してください。すなわち、PCそれぞれコマンドフレームを送信しており、それぞれステータスレポート/テレメトリーフレームで応答しています(レポートはリクエストへの応答として、または独立して送信できます-ここでは実際には関係ありません)。通信フレームには、任意のバイナリデータを含めることができます。通信フレームが固定長パケットであると仮定します。X msDY ms 問題: プロトコルは継続的であるため、受信側は同期を失ったり、進行中の送信フレームの途中で「結合」したりする可能性があるため、フレームの開始(SOF)がどこにあるかはわかりません。Aデータは、SOFに対する相対的な位置に基づいて異なる意味を持ち、受信したデータは破損する可能性があり、永久に破損する可能性があります。 必要なソリューション 短い回復時間でSOFを検出するための信頼性の高い区切り/同期スキーム(つまり、再同期に1フレーム以上かかることはありません)。 私が知っている(そして使用している)既存のテクニック: 1)ヘッダー/チェックサム -事前定義されたバイト値としてのSOF。フレームの最後のチェックサム。 長所:シンプル。 短所:信頼できません。不明な回復時間。 2)バイトスタッフィング: 長所:信頼性が高く高速な回復で、どのハードウェアでも使用可能 短所:固定サイズのフレームベースの通信には適していません 3)9番目のビットマーキング -各バイトに追加ビットを追加します。SOFでマークされたSOF 1とデータバイトには次のマークが付けられ0ます。 長所:信頼性が高く、高速な回復 短所:ハードウェアサポートが必要です。ほとんどのPCハードウェアおよびソフトウェアでは直接サポートされていません。 4)8番目のビットマーキング -上記の一種のエミュレーション。9番目ではなく8番目のビットを使用し、各データワードに7ビットのみを残します。 長所:信頼性の高い高速リカバリは、どのハードウェアでも使用できます。 短所:従来の8ビット表現と7ビット表現の間のエンコード/デコードスキームが必要です。やや無駄だ。 5)タイムアウトベース -定義されたアイドル時間の後に来る最初のバイトとしてSOFを想定します。 長所:データオーバーヘッドなし、シンプル。 短所:それほど信頼できません。Windows PCなどのタイミングの悪いシステムではうまく動作しません。潜在的なスループットのオーバーヘッド。 質問: 問題に対処するために存在する他の可能な技術/解決策は何ですか?上記のリストで簡単に回避できる短所を指摘できますか?システムプロトコルをどのように設計しますか(または設計しますか)?
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

1
ModelSIMで赤信号をデバッグするにはどうすればよいですか?
コンビナトリアルパーツにはNANDゲート、シーケンシャルロジックにはDフリップフロップのみを使用してステートマシンを設計する必要があります。すべては1ghz / 53のクロックで実行する必要があります。 さて、「私たちはあなたのために宿題をやらない」と私に暴行する前に、私は仕事の日々を投資した後、私はすべてを廃棄し、より厳格にすべてを再び始めたと言ってみましょう。私は自分でこれをやりたいのですが、プロジェクトの最も単純な部分でランダムな未定義の信号を絶えず受け取り、イライラさせられます。 さて、まず最初に、ステートマシンとそれに対して行った真理値表を次の図に示します。 次はkmapsです。 DフリップフロップD = Q +の場合、組み合わせロジックの配線(単純化したブロックに構築した後)はそれほど難しくないはずです。 しかし、私の最初の問題はQ3 +のテストベンチで発生します。情報を簡素化するために、Q3 +で作成した高速なダイアグラムをここに配置します。 ポストの後半では、VHDLで実際に入力をin1Q3plusからin11Q3plus(11入力)と名付けました。これは最終ブロックではないためです(最終組み合わせロジックブロックは4つのQ3 +、Q2 +、Q1 +、Q0 +信号に)。 そのため、NANDゲートを使用してすべてを作成する必要がありました。つまり、構造的なアプローチをとる必要がありました。すべてのゲートは基本的にNANDゲートに基づいており、複雑になります(ただし、NANDゲートから構造的に記述されるのはAND、OR、NOTゲートのみです)。次に、3つの入力を持つORゲート、3つの入力を持つANDゲート、5つの入力を持つORゲート(論理図の例のように)があり、それぞれ前の2つの入力AND&ORゲートに基づいています。 Q3plus 1(上記の図)が機能するまでのすべてのテストベンチ。テストの手順は、各入力に対して信号を作成することです。これにより、シミュレーションウィンドウで信号を簡単に見ることができます。たとえば、3入力ANDゲートには次の信号があります。 process begin a1 <= '0' ; wait for 4ns; a1 <= '1' ; wait for 4ns; end process; process begin b1 <= '0' ; wait for 8ns; b1 <= …

2
Modelsimテストベンチを外部刺激とインターフェースできますか
私は、ドライバーソフトウェアとFPGA開発の両方を行っているチームに取り組んでいます。FPGAシミュレーションはModelsimで行われ、ドライバーソフトウェアはCで記述されています。統合リスクを最小限に抑えるために、ハードウェアに配置する前に製品の2つの半分の間の相互作用をモデル化できるようにしたいと思います。 Modelsimが、時間と値を入力するテキストファイルの形式で刺激を提供できるテストベンチをサポートしていることを知っています。Modelsimに、パイプを外部アプリケーション(ドライバーなど)に接続し、ソフトウェアが値をテストベンチにプッシュして、後で結果を観察できるような分散シミュレーションを実行できるモードがあるかどうか疑問に思います。 私がテキストファイル入力で行うことができないトリックは、製品の2つの半分を相互作用させることです。ソフトウェアで値をFPGAシミュレータに「書き込み」、結果を読み取ってから、読み取った結果に応じて新しい値をFPGAに書き込む必要があります。テキストファイルでは、入力が出力から独立している必要があります。 StackExchangeとgoogleの両方で検索を実行しましたが、探している動作を特定したり、存在しないと判断したりするために検索を絞り込むためのキーワードセットを思い付くことができませんでした。

2
PIC12F675 GP4が機能しない
プロジェクトにPIC12F675を使用していますが、1つの点を除いてすべて正常に動作します。GP4はデジタルIOとして機能しません。設定とコードをよく見てきましたが、何も見つかりませんでした。 構成: #pragma config FOSC = INTRCCLK #pragma config WDTE = OFF #pragma config PWRTE = OFF #pragma config MCLRE = OFF #pragma config BOREN = ON #pragma config CP = OFF #pragma config CPD = OFF コード: #include <xc.h> #include <math.h> #include "config.h" #define _XTAL_FREQ 4000000 void delay(unsigned int …
9 pic  c  embedded  programming  audio  oscillator  spark  dc-dc-converter  boost  charge-pump  eagle  analog  battery-charging  failure  humidity  hard-drive  power-supply  battery-charging  charger  solar-energy  solar-charge-controller  pcb  eagle  arduino  voltage  power-supply  usb  charger  power-delivery  resistors  led-strip  series  usb  bootloader  transceiver  digital-logic  integrated-circuit  ram  transistors  led  raspberry-pi  driver  altium  usb  transceiver  piezoelectricity  adc  psoc  arduino  analog  pwm  raspberry-pi  converter  transformer  switch-mode-power-supply  power-electronics  dc-dc-converter  phase-shift  analog  comparator  phototransistor  safety  grounding  current  circuit-protection  rcd  batteries  current  battery-operated  power-consumption  power-electronics  bridge-rectifier  full-bridge  ethernet  resistance  mosfet  ltspice  mosfet-driver  ftdi  synchronous  fifo  microcontroller  avr  atmega  atmega328p  verilog  error  modelsim  power-supply  solar-cell  usb-pd  i2c  uart 

1
シフトレジスタのこの単純なVHDLパターンが期待どおりに機能しないのはなぜですか
一見すると、以下のVHDLソースコードがシフトレジスタとして動作することが予想されます。そのqでは、時間が経つと "UUUU0", "UUU00", "UU000", "U0000", "00000", .... ただし、常にU5(以上)の連続したクロックサイクルの後です。 どうしてこれなの? このコードは、実際にははるかに複雑なシミュレーションを大幅に簡略化したものです。しかし、それは私が見る症状を示しています。 ModelSimとActiveHDLの両方でのシミュレーション中に、この興味深い予想外の結果が示されます。他のシミュレーターを試したことがなく、(原因の説明として)他のシミュレーターが同じように動作するかどうかを知りたいと思っています。 この質問に適切に回答するには、次のことを理解する必要があります。 これはシフトレジスタを実装する最良の方法ではないことを知っています RTL合成の場合、これにはリセットが必要です。 std_logicの配列はstd_logic_vectorです。 集計演算子を知ってい&ます。 私が見つけたもの: 割り当てtemp(0)<='0';がプロセス内で移動された場合、機能します。 ループがラップされていない場合(コメント付きのコードを参照)、ループは機能します。 これは、予想外のシミュレーション結果を純粋に表示するように構成された(パイプラインCPUの)より複雑な設計の非常に簡略化されたバージョンであることを繰り返します。実際の信号タイプは単なる簡略化です。このため、フォームのコードをそのまま使用して回答を検討する必要があります。 私の推測では、VHDLシミュレーションエンジンのオプティマイザーは誤って(または仕様に従って)ループ内の信号を変更しないため、ループ内で式を実行する必要がありませんが、ループにラップされていないループを配置することでこれを反証することができます。 したがって、この質問への答えは、コード例が何かを行う最善の方法であるかどうかではなく、VHDLシミュレーションの標準ではないVHDL構文の標準と、VHDLシミュレーションエンジンが最適化をどのように行うかであると思います。 そして今私がシミュレートしているコードに: library ieee; use ieee.std_logic_1164.all; entity test_simple is port ( clk : in std_logic; q : out std_logic ); end entity; architecture example of test_simple is type t_temp …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.