2

Simulink (Xilink ライブラリ) のタイミング信号の概念を理解するのに苦労しています。

例を挙げて説明しますが、

シリアル ビットストリームがあり、奇数ビットと偶数ビットの合計を取りたいとします。

したがって、おそらく次のような Matlab コードを記述します。

Data_Bits=[1 2 3 0 4 5 1 2 0 9];

Sum_Bits=[];
for i=1:length(Data_Bits)/2
    Sum_Bits=[Sum_Bits Data_Bits(2*i-1)+Data_Bits(2*i)]
end

少しの間、このコードが機能しない可能性がある最適化と特殊なケースをすべて無視するとします。

これをハードウェアに実装する必要があると仮定すると、これData_Bitsはシリアルに行われるため、基本的に 2 クロック サイクル待って 2 入力ビットを取得し、それを追加して出力を生成します。

したがって、2 クロック サイクルごとに、出力があります。

有効な出力が得られるようにザイリンクスでタイミング信号を管理することは可能ですか。

だから私は出力で中間結果を得たくありません。

どうすればそれを達成できますか?フリーランニングクロック(カウンター)である種のイネーブル入力を使用することを考えています。

しかし、本当に複雑なシステムを設計する際に、これをどのように管理すればよいのでしょうか?

ハードウェア設計の経験はあまりありません。したがって、私の質問が危険なほど単純で愚かである場合、私の知性に申し訳ありません。

読んでくれてありがとう

キラン

4

2 に答える 2

2

出力が「有効」な場合にのみ変更する場合は、出力ピンでイネーブルレジスタを使用し、イネーブル信号を、レジスタに入力される値と同時に1クロックティックの間ハイになるものに接続します。出力に表示したいものです。

あなたの場合、「有効な」信号は交互のクロックサイクルで「1」と「0」の間で切り替わるので、出力がインバーターを介してフィードバックされるフリップフロップを使用できます。(daviddのコードでは、コメントされた行でこれを確認できます//tflipflop)。

サイクルに1回だけ有効なより複雑なシステムがある場合は、nサイクルごとにリセットするカウンターをn使用し、リセットパルスを「有効な」信号として使用できます。

于 2011-05-13T07:56:19.283 に答える
0
Input stream -------------> AddSub -> register -> output stream
Input stream -> register -> AddSub    register
                                      register
                           counter -> register(enable)

1サイクル遅れた入力ストリームと入力ストリームを追加します。1ビットカウンタ(またはTフリップフロップ)を使用して、加算器の出力のレジスタを有効にします。

それはあなたが探しているものですか?

また、複雑なシステムを実行しながらこれを「管理」するとはどういう意味ですか?このコンストラクトのverilogまたはvhdlは非常に単純であり、システムジェネレータブロックの代わりに使用できます。

//note: initialization/reset and limit handling is not included and would need to be considered.
always@(posedge clk)
begin
    databits_1dly <= databits;  //create a once cycle delayed version of databits
    sum <= databits_1dly + databits; //adder
    every_other <= !every_other //t flip flop.
    if (every_other)  //invert if you want the other every_other
       sum_every_other <= sum
end
于 2011-05-12T15:35:32.323 に答える