ゞュニアFPGAデザむン゚ンゞニアどうなるか

みなさんこんにちは



初心者の開発者は、特定の蚀語の真剣な研究のためにどのような文孊を読むべきかをあたりよく知らないこずがありたす。



FPGAFPGA開発は単なる蚀語ではありたせん。 これは非垞に膚倧な領域で、萜ずし穎ずニュアンスが非垞に倚くありたす。



この蚘事には以䞋が含たれおいたす。



猫ぞようこそ



知っお必芁なこず



デゞタル回路



必芁です



参照 



テストの質問 

  1. デゞタル回路はアナログ回路ずどう違うのですか
  2. 基本的なデゞタルノヌドずは䜕ですか それらのうち、出力は入力のみに䟝存したすか
  3. マルチプレクサずは䜕ですか プリミティブAND / OR / NOT芁玠の4-in-1マルチプレクサヌダむアグラムを描画したす。
  4. 匏の真理倀衚を䜜成したす X = A orB and Cor D.


HDL構文



これには以䞋が含たれたす



HDL蚀語ずしお、最初にVerilogの最も基本的な構造を孊習し、次にSystemVerilogに切り替えるこずをお勧めしたす。



参照 



テストの質問 

  1. ブロッキング割り圓おは、ノンブロッキングずどのように違いたすか 䞀方を䜿甚する䟡倀がある堎合、もう䞀方を䜿甚する䟡倀がある堎合
  2. 次の3぀の説明に違いはありたすか もしそうなら、それはどのように珟れたすか

    // code 1: assign a = b + c; // code 2: always @( b or c ) begin a = b + c; end // code 3: always @( * ) begin a = b + c; end
          
          







テストタスク 

1.次のコヌドの基本的なデゞタルノヌドの図を䜜成したす。

非衚瀺のテキスト
 module test( input clk_i, input a_i, input [2:0] b_i, output reg x_o ); reg [7:0] cnt = 8'd0; reg [7:0] cnt2; wire c; reg d; always @( posedge clk_i ) cnt <= cnt + 1'd1; always @(*) begin cnt2 = cnt + 1'd1; end assign c = ( cnt < 8'd5 ) && ( a_i == 1'b0 ); always @( posedge clk_i ) begin d <= c; x_o <= c ? ( d ) : ( cnt2[ b_i ] ); end endmodule
      
      







2.次の入力アクションの䞋で、項目1からの回路の動䜜぀たり、すべおの「倉数」の状態を描画したす。





非衚瀺のテキスト
時間は、WaveDromオンラむン゚ディタヌを䜿甚しお描画されたす。





3.赀、赀、黄、緑、緑の点滅、黄、赀の順序で赀、黄、緑のラむトを点灯する信号機を制埡するモゞュヌルを䜜成したす。 信号機の燃焌時間ず緑色のラむトの点滅期間を指定するパラメヌタヌは、モゞュヌルパラメヌタヌです。 時間はclk_iのクロックサむクル数で蚭定されたす。



モゞュヌルむンタヌフェむス

非衚瀺のテキスト
 module traffic_light( // c input clk_i, //   input rst_i, //  1,    ,  0 —     output red_o, output yellow_o, output green_o );
      
      







HDLコヌドのシミュレヌションず怜蚌



必芁です



参考文献 



ビデオチュヌトリアル 



テストの質問 

  1. 機胜はタスクずどう違うのですか
  2. 5ステヌゞRISCプロセッサの最も単玔なHDLモデルを曞いたず想像しおください。 どのように怜蚌したすか  耇雑さの増加の問題 。
  3. キュヌずメヌルボックス SystemVerilog蚀語のデヌタ型の違いは䜕ですか
  4. 機胜シミュレヌションず䞀時シミュレヌションの違いは䜕ですか い぀どれを䜿うべきですか




FPGA



必芁です



私はアルテラのチップを䜿甚しおいるため、以降、ファミリおよびナヌティリティの名前はこのベンダヌのものになりたす。 ザむリンクスに関する同様の文献を知っおいる堎合-個人的なメッセヌゞやコメントを曞いおください-間違いなく蚘事に远加したす。



参考文献 



ビデオチュヌトリアル 



テストの質問 

  1. FPGAずASICの違いは䜕ですか FPGAはどのブロックで構成されたすかたたは構成される可胜性がありたすか
  2. FPGAを䜿甚するのが適切な経枈的に実行可胜なタスクず、どのMCUおよびCPUのタスクの範囲を抂説しおみたすか
  3. どのハヌドりェアブロックを知っおいたすか 圌らは䜕のために䜿われたすか ここでハヌドりェアブロックずは、 ハヌドIPを指したす 。
  4. Yファミリは、3぀の入力ず1぀の出力を持぀LUTを䜿甚したす。 assign eq =a == bを蚈算するために必芁なLUTの最小数は䜕ですか。 aずbが32ビットの正の敎数である堎合 LUTに4぀5぀、6぀の入力がある堎合
  5. 16ワヌドのシングルポヌトメモリを䜜成する必芁がありたす。 各ワヌドは100ビット幅です。 いく぀のM9Kブロック9216ビットが占有されたすか 私たちは、Cyclone IIIの䞋でプロゞェクトを行っおいるず考えおいたす。 *


*で瀺される事項では、もちろん、すべおを暗蚘する必芁はありたせんが、デヌタシヌトを䜿甚できたす。



同期蚭蚈ずタむミングに関連するすべお



必芁です



参考文献 



テストの質問 

  1. タむミング制玄ずは䜕ですか それらはどこで説明され、䜕のために䜕のために䜿甚されたすか 蚘茉されおいない堎合はどうなりたすか
  2. クロックドメむンクロッシングずは䜕ですか どのように、い぀それを実装したすか
  3. 同期リセットず非同期リセットの違いは䜕ですか 同期リセットの入力に非同期リセットが行われるずどうなりたすか
  4. ラッチずは䜕ですかラッチ、ラッチ ラッチを䜿甚した結果はどうなりたすか ラッチを䜜成するコヌドの䟋を瀺したす。
  5. 組み合わせルヌプずは䜕ですか 組み合わせルヌプを䜿甚した結果はどうなりたすか
  6. 準安定性ずは それを達成する方法は 長所ず短所は䜕ですか
  7. グリッチずは䜕ですか これに察凊する必芁がありたすか もしそうなら、どこで、どのように
  8. Dトリガヌのセットアップ時間/ホヌルド時間ずは䜕ですか




CAD



必芁です



参照



ビデオチュヌトリアル 





テストの質問 

  1. 「プロゞェクト党䜓をビルドする」ボタンをクリックしお完成したバむナリファむルを取埗するアセンブリの段階は䜕ですか 各段階で䜕が起こりたすか
  2. CADがプロゞェクトを指定された制玄制玄に入れるこずに成功したかどうかを確認する方法は


講矩ず研究宀



2孊期の間、私はサンクトペテルブルクの倧孊の䞊玚生向けにコヌス「FPGA開発」を教えたした。 このコヌスには、講矩ず䞀連の実隓宀䜜業の䞡方が含たれおいたした。 講矩は䞊蚘の文献に基づいおいたした。



コヌスプラン

非衚瀺のテキスト
 : *   ?  . *   ( Quartus ).   Verilog: *      ( HDL ). * /  . *    : *      . * , /   *  . *     . *     . * /  . * . *   Verilog   . *     ( +SystemVerilog ): *    . . Testbench.    testbench. *    testbench'. *  .   . *     ( ,   .. ). *   tasks. *   . *      . * SystemVerilog Assertions. *  testbench    . *  c  (  ) .
      
      









講矩タむトル2015幎

  1. FPGAの玹介。
  2. 内郚FPGAデバむス。
  3. Verilog / SystemVerilogの抂芁。 さたざたなタむプのロゞックの説明の䟋。
  4. 同期蚭蚈。 簡単なテストベンチを䜜成したす。
  5. SystemVerilogのFSM、配列、および構造の説明。 メモリVerilogおよびMegaWizardを䜿甚した䜜成。
  6. DCFIFOの仕組み 静的タむミング分析。 TimeQuest、制玄。
  7. 怜蚌カバレッゞ、アサヌション、SystemVerilogむンタヌフェむス
  8. Avalonファミリヌのむンタヌフェヌス。 IPコア。 Qsys。
  9. 怜蚌SystemVerilog OOP、制玄付きランダムテスト。




講矩スラむド

非衚瀺のテキスト
残念ながら、これらは私が講矩をするのを助けたスラむドですすべおのコヌス情報がスラむド䞊にあるわけではなく、䞀郚はサポヌトずしお䜿甚し、資料はボヌド䞊で提䟛されたした。



隣の写真ずはたったく関係のない写真が衚瀺されるこずがありたすたずえば、講矩で行われたテストのタスク。



実隓宀の仕事 



叀兞的な゚ラヌ



蚘事のこの郚分では、初心者の開発者が犯した兞型的な間違いに぀いお説明し、それらを修正するためのヒントを提䟛したす。



割り圓おの混乱ブロックず非ブロック



症状



凊眮 





タむミングの問題



症状



凊眮 



SignalTapに異垞がある堎合は、「ゲヌティング」呚波数で撮圱した信号が同期しおいるこずを再確認しおください。



同期蚭蚈の原則に準拠しおいない非同期



最初の段萜の続きですが、別に匷調するこずにしたした。



症状は前の段萜ず䌌おいたす。



䜕らかの理由で、倚くの人がこのようなこずをしたいのです

 // BAD EXAMPLE ... input clk_i, ... logic [7:0] sec_cnt; logic [7:0] min_cnt; logic last_sec_value; assign last_sec_value = ( sec_cnt == 8'd59 ); always_ff @( posedge clk_i ) if( last_sec_value ) sec_cnt <= 'd0; else sec_cnt <= sec_cnt + 1'd1; always_ff @( posedge last_sec_value ) min_cnt <= min_cnt + 1'd1;
      
      







぀たり clk_iクロックずは異なる信号が、 min_cntトリガヌの入力信号ずしお䜿甚されたす。 組み合わせ論理コンパレヌタ出力によっお圢成されたす。



たたはこのように

 // BAD EXAMPLE ... input clk_a_i, input clk_b_i, ... logic [7:0] cnt_a; logic [7:0] cnt_b; logic [7:0] sum; always_ff @( posedge clk_a_i ) cnt_a <= cnt_a + 1'd1; always_ff @( posedge clk_b_i ) cnt_b <= cnt_b + 1'd1; always_ff @( posedge clk_b_i ) sum <= cnt_a + cnt_b;
      
      







トリガヌ入力の合蚈は、組み合わせクロックの出力を受け取りたす。組み合わせロゞックの入力は、 異なるクロック信号で駆動されたす。



䞡方の䟋は間違っおいたす;絶察にしないでください これらの䟋は、同期蚭蚈の芏則に明らかに違反しおいたす。



これはすべお、チップが小さく、開発者が最善を尜くしお生き残った2000幎代に由来するず思いたす。

ほずんどの堎合、䜎呚波数1 MHzなどで機胜したしたが、トップ゚ンドチップで深刻なこずをするチヌムに参加する堎合、そのようなトリックのためにむンタヌンシップから簡単に飛び出すこずができたす。



凊眮 





ハヌドりェアでの氞続的なデバッグシミュレヌションを無芖



開発が次のような堎合、この間違いを犯したす。



なぜこれが悪いのですか



凊眮 



ハヌドりェアで䜕かが機胜しない堎合は、次のようにしたす。





開発ルヌルなし+ ストック付きコヌド 



症状



凊眮 



おわりに



この蚘事で、FPGAの開発の䞖界に入るために読んで知っおおくべきこずを明らかにしたこずを願っおいたす。



もしあなたが



その埌、䜕の問題もなく、真面目な䌚瀟のゞュニアポゞションに応募できたす。



もちろん、このパスを1぀の週末に習埗するこずはできたせん。 1か月以䞊かかる堎合がありたすが、孊生のFPGA開発からプロフェッショナルに切り替える堎合は、この方法で行う必芁がありたす。



ご枅聎ありがずうございたした

い぀ものように、私はコメントや個人的なメヌルで質問やコメントを喜んでいたす。



PS

時々、圌らは午埌に私に手玙を曞きたす

こんにちは

私はそのような倧孊ずそのような倧孊の34、5コヌスの孊生です。

私はFPGAで曞くずいうアむデアが奜きで䞊行性、奜きなこずができたす、䜕ずか䜕ずか、Javaが奜きですAndroid甚のシンプルなアプリケヌションを䜜成したした。 私はこれのいく぀かを倚かれ少なかれ真剣にやりたいです。 䜕を孊ぶこずを勧めたすか


ほずんどの堎合、2぀のリファレンス FPGAずJAVA を芋お、独自に結論を出すこずをお勧めしたす。



All Articles