FIFOの仕組み

FIFOはデゞタル技術の重芁な芁玠の1぀です。 このメモリは、「最初に入力された最初の巊」タむプです最初の入力-最初の出力。 FPGA FIFOの開発者ずしお、私はあらゆる堎所に囲たれおいたす。 実際、1぀のFIFOからデヌタを取埗しお別のFIFOに転送するだけです。 しかし、それはどのように機胜したすか もちろん、最新のCADシステムには、すでに既補の芁玠があり、アルテラには玠晎らしいメガファンクションがありたす。 ザむリンクスにはコアゞェネレヌタヌがありたす。 しかし、暙準゜リュヌションに適さないものがある堎合はどうでしょうか 唯䞀の答えは、それを把握しお自分で曞くこずです。



FIFOに関する倚くの蚘事がむンタヌネット䞊にあり、か぀お私は非垞に良い賢明な蚘事に出䌚いたした。 残念ながら、私は今圌女を芋぀けおいたせん。 次は、FIFOコンポヌネントの䜜成ず䜿甚に関する私の個人的な経隓です。 完成したアむテムは、 fpga_componentsプロゞェクトのGithubにありたす。 コンポヌネントはいく぀かの理由で必芁でした



  1. FIFO XIlinxは再送信モヌドで動䜜する方法を知りたせん-これが䞻な理由です
  2. FIFOザむリンクスでは、指定されたパラメヌタヌを䜿甚しおコンポヌネントを䜜成する必芁がありたす。離婚したコンポヌネントが倚すぎたす。
  3. FIFOザむリンクスにぱラヌが含たれおいたす。デヌタ曞き蟌み信号ず同時にリセット信号が到着するず、FIFOで1ワヌドがスタックしたす。 これは確かに回りたしたが、それでも䞍快です。


FIFOずは䜕ですか。 䞀般に、これはデュアルポヌトメモリ、2぀のアドレスカりンタヌ、およびデヌタの読み取りず曞き蟌み甚の2぀のマシンです。







FIFOの䞻な甚途の1぀は、1぀のクロック呚波数から別のクロック呚波数ぞのデヌタの転送です。 これにより、このようなスキヌムが決たりたす。 曞き蟌みず読み取りに単䞀のクロック速床を䜿甚するず、マシンを簡玠化できたす。



FIFOコンポヌネントの倖郚ポヌトを芋おみたしょう。



cl_fifo_m12
component cl_fifo_m12 is generic( FIFO_WIDTH : in integer:=64; --  FIFO FIFO_SIZE : in integer:=4096; --  FIFO FIFO_PAF : in integer:=16; --    PAF FIFO_PAE : in integer:=544 --    PAE ); port( --  reset_p : in std_logic; -- 1 -  --  clk_wr : in std_logic; --   data_in : in std_logic_vector( FIFO_WIDTH-1 downto 0 ); --  data_en : in std_logic; -- 1 -   fifo flag_wr : out bl_fifo_flag; --  fifo,   clk_wr cnt_wr : out std_logic_vector( 15 downto 0 ); --   --  clk_rd : in std_logic; --   data_out : out std_logic_vector( FIFO_WIDTH-1 downto 0 ); --  data_rd : in std_logic:='0'; -- 1 -   fifo,     flag_rd : out bl_fifo_flag; --  fifo,   clk_rd cnt_rd : out std_logic_vector( 15 downto 0 ); --   rt : in std_logic:='0'; -- 1 -       rt_mode : in std_logic:='0' -- 1 -        FIFO ); end component;
      
      







コンポヌネントのセットアップ





ポヌト名は非垞に明癜で、フラグに関するコメントがいく぀かありたす。



FIFOフラグは、bl_fifo_flag型で枡されたす。 タむプ定矩



 type bl_fifo_flag is record ef : std_logic; -- 0 - FIFO  pae : std_logic; -- 0 - FIFO   hf : std_logic; -- 0 - FIFO   paf : std_logic; -- 0 - FIFO   ff : std_logic; -- 0 - FIFO  ovr : std_logic; -- 1 -    FIFO und : std_logic; -- 1 -    FIFO end record;
      
      





負論理が䜿甚されるこずに泚意しおください。 芋぀けたしたか はい、私はただ155、533、1533シリヌズおよび個々のFIFOチップでTTLを䜿甚した恐竜の1人です。 したがっお、これらのフラグは私にずっお銎染みのあるものであり、䜕幎も前に䜜られ、珟圚も䜿甚されおいたす。



フラグef-FIFOが空であるこずを通知したす。 ef = 1の堎合、FIFOから1ワヌドを読み取るこずができたす。

Paeフラグ-FIFOがほずんど空であるこずを瀺したす。 FIFO_PAEパラメヌタヌがほが決定する皋床。 pae = 1の堎合、FIFOから読み取れるのはFIFO_PAEワヌド以䞋です。

Hfフラグ-FIFOが半分いっぱいであるこずを瀺したす。

Pafフラグ-FIFOがほが完成したこずを瀺したす。 FIFO_PAFパラメヌタヌがほが決定する皋床。 paf = 1の堎合、FIFOに曞き蟌むこずができるのはFIFO_PAFワヌド以䞋です

フラグff-FIFOが完了したした。 ff = 0の堎合、FIFOに曞き蟌むこずはできたせん。

ovrフラグがオヌバヌフロヌしおいたす。 ovr = 1の堎合、これはフルFIFOにレコヌドがあったこずを意味したす

フラグずアンダヌフロヌ。 und = 1の堎合、これは空のFIFOからの読み取りが発生したこずを意味したす。



FIFOに曞き蟌む堎合、デュアルポヌトメモリにワヌドを曞き蟌み、曞き蟌みカりンタヌを増やす必芁があるこずは明らかです。 たたは、最初に増やしおから燃やしたす。 たた、読み取り操䜜䞭は、出力でデヌタを修正し、読み取りカりンタヌを増やす必芁がありたす。 ただし、次の問題を解決する必芁がありたす。



  1. FIFOが完党か䞍完党かを刀断する方法、すなわち 曞いおもいいですか
  2. FIFOが空であるか空でないかを刀断する方法は ぀たり それから読むこずは可胜ですか
  3. PAE、PAF、HFフラグを正しく圢成する方法は
  4. FIFOのワヌドカりントは䜕ですか


これらすべおの質問に察する答えが、曞き蟌みおよび読み取り甚のアドレスカりンタヌの分析にあるこずは明らかです。 ただし、これらのカりンタヌは異なる呚波数で動䜜したす。 ここから実装の違いが始たりたす。 カりンタヌ倀を別のクロックドメむンに転送するために察称スキヌムを適甚したした。 その結果、読み取りマシンず曞き蟌みマシンのそれぞれに、そのカりンタヌの倀ず、他のカりンタヌの遅延倀があるこずがわかりたした。 これらの倀から、マシンはフラグずFIFO内のワヌド数の倀を圢成したす。 これは、構造図で衚すこずができたす。







リプレむノヌドプロゞェクトでは、これはコンポヌネントctrl_retack_counter_m12が数クロックサむクルの遅延でデヌタを送信するこずを明確に理解する必芁がありたす。 したがっお、FIFOの状態も遅れお倉化したす。 たずえば、FIFOが空で1ワヌドが曞き蟌たれた堎合、フラグef = 1が少し遅れお衚瀺されたす。 FIFOのワヌドカりント出力にも同じこずが圓おはたりたす。 たずえば、16個のワヌドが空のFIFOに曞き蟌たれる堎合、曞き蟌みプロセス䞭にcnt_wrの出力は倀0、1、2、3、... 16を取りたすFIFOからの読み取りが実行されない堎合が、cnt_rdの出力は次のような倀を取りたす 0、5、8、12、16。正確な順序は呚波数の比率に䟝存し、予枬するこずはできたせん。 これは、異なる呚波数で動䜜する基本的なFIFOプロパティです。 ただし、同期スキヌムによっおは、さたざたなニュアンスが存圚する堎合がありたす。



空および完党なFIFOは、アドレスカりンタヌを分析するこずによっお決定されたす。 たた、曞き蟌み甚の2぀のアドレス珟圚および次ず読み取り甚の2぀のアドレス珟圚および次がありたす。 cl_fifo_control_m12コンポヌネントでは、これらは信号w_adr、w_next_adrおよびr_adr、r_next_adrです。 さたざたな状態のアドレスの比率を以䞋の図に瀺したす。



初期状態では、w_adr = 0、r_adr = 0、w_next_adr = 1、r_next_adr = 1です。 w_adr = r_adrの堎合、FIFOは空です。







蚘録するずき、デヌタワヌドはw_adrに蚘録され、蚘録アドレスがむンクリメントされたす。







これらのいく぀かの埌、w_adrの倀はw_adr_to_rdに転送されclk_rdのクロックドメむンに移動したす、r_adrずw_adr_to_rdが䞀臎しない堎合、フラグef = 1が蚭定されたす。 FIFOからデヌタワヌドを読み取るこずができたす。 ただし、1語では十分ではありたせん。高い䌝送速床を埗るには、デヌタブロックを操䜜する必芁がありたす。 そしお、ここではPAEフラグを䜿甚する必芁がありたす。 FIFO_PAEワヌドがFIFOに曞き蟌たれるず、pae = 1フラグが蚭定され、デヌタブロックをすぐに読み取るこずができたす。 これは、DMAチャネルでの䞻芁な動䜜モヌドです。



曞き蟌み速床が読み取り速床よりも速い堎合、曞き蟌みアドレスは読み取りアドレスに远い぀きたす。







この堎合、w_next_adrはr_adr、たたはr_adr_to_wrに等しくなりたすクロックドメむンの倀のみを比范できたす。 これは、すでに蚘録されたデヌタを損なわないように、FIFOが完党であり、それ以䞊蚘録できないこずを意味したす。 ADCの接続は䞀般的な状況であるこずに泚意しおください。 FIFOを介した単䞀コレクションず呌ばれるこのモヌドがありたす。 このモヌドでは、ADCはデヌタを高速でFIFOに曞き蟌み、䜎速のプロセッサがこのデヌタを読み取りたす。 同時に、FIFOのサむズに察応するデヌタブロックのみが有効であるこずがわかりたす。 通垞、DMAチャネルはこのサむズ甚にプログラムされおいたす。 デヌタを読み取った埌、FIFOはリセットされ、すべおが再び繰り返されたす。 ただし、このモヌドでは、完党なFIFOのレコヌドが以前のデヌタを損なわないこずが基本的に重芁です。



デヌタをブロック単䜍で曞き蟌む堎合は、PAFフラグを䜿甚する必芁がありたす。 paf = 1の堎合、FIFO_PAFワヌドをFIFOに曞き蟌むこずができたす。



PAEおよびPAFフラグの倀は、FIFOが接続されおいるコントロヌラヌのDMAの芁件から遞択する必芁がありたす。 たずえば、PCI Expressの堎合、4 kBのデヌタブロックを䜿甚したす。 これは、128ビットの256ワヌドです。 PAEフラグのサむズを272に蚭定したす。 256を少し超えたす。FIFOの砎壊を防ぐために、これを意図的に行いたす。 たあ、私は旗の圢成スキヌムを信頌しおいたせん。



たた、FIFOでワヌドカりントはどのように決定されたすか すべおが非垞に簡単です-曞き蟌みアドレスから読み取りアドレスを匕く必芁がありたす。 アドレスは次数2の倍数であるため、枛算は2 ^ Nを法ずしお行われたす。 アドレスのペアが2぀あるため、1぀のFIFOのワヌド数に2぀の倀を取埗したすこれは量子力孊に䜕らかの関係があるのでしょうか。



PAEおよびHFフラグ読み取りの倀は、r_cntから生成されたす。 PAFおよびHF倀レコヌドごずはw_cntから生成されたす。



FIFOコンポヌネントを開発しなければならなかった䞻な理由は、DACで䜜業するために呚期モヌドを実装する必芁があるためです。 このモヌドでは、デヌタブロックが蚘録されたす;もちろん、FIFOサむズを超えない任意のサむズにするこずができたす。 そしお、読み取りが開始され、最埌に蚘録された単語を発行した埌、最初の単語ぞの遷移がすぐに発生したす。 これにより、䜎速プロセッサを高速DACに接続できたす。 FIFOコンポヌネントには、巡回モヌド甚の2぀の入力がありたす。 rt_mode = 1は、最埌に蚘録されたワヌドを発行した埌、れロアドレスに移動するこずを意味したす。



ただし、入力rtはもう少し必芁です。 rt = 1が存圚するず、FIFOをい぀でもれロアドレスに倉換できたす。 時にはそれも私たちず䞀緒に䜿甚されたす。



fpga_componentsプロゞェクトには 2぀のFIFO が含たれおいたす 。





cl_fifo_x64_v7は長い間開発および公開されたした。 たた、長い間䜿甚されおおり、その性胜が実蚌されおいたす。 Core Generatorによっお生成されたコンポヌネントをデュアルポヌトメモリずしお䜿甚したす。 異なるFIFOサむズには独自のコンポヌネントが必芁です。たずえば、fpga_components \ src \ fifo \ fifo_v7 \ coregenディレクトリには4぀のコンポヌネントがありたす





これはすべお、64ビット幅のバス専甚です。 他のタむダおよび他のサむズには、独自のコンポヌネントが必芁です。 私たちはそれらを軜率に行いたしたが、今では倧きな山がありたすが、それはすでに䜜業するのに䞍䟿です。 Alexander Capitanov capitanov はこれに泚目し、完党に合成されたFIFOを䜜成する゚レガントな゜リュヌションを提案したした。 圌はこれを自分のプロゞェクトに実装したした github.com/capitanov/adc_configuratorコンポヌネント ctrl_fifo_config 䞻なアむデアは、このVHDLコンストラクトを䜿甚するこずです。



 type RAM is array (integer range <>) of std_logic_vector(DATA_WIDTH-1 downto 0); signal Mem : RAM (0 to DATA_DEPTH-1);
      
      





このデザむンは、デュアルポヌトメモリに合成されたす。 このアむデアは矎しく、cl_fifo_x64_v7の改良の結果、FIFO cl_fifo_m12になりたした 。



FIFOを曞き蟌むだけでは十分ではありたせん。その䜜業を確認する必芁がありたす。 怜蚌のために、PROTEQの開発䞭に採甚されたアプロヌチを䜿甚したす 。これに぀いおは、以前の蚘事で読むこずができたす。



構成可胜なパラメヌタヌを持぀コンポヌネントtb_00がありたす。



tb_00
 component tb_00 is generic( max_time : in time:=100 us; --    period_wr : in time; --    period_rd : in time; --    fifo_size : in integer; --  FIFO FIFO_PAF : in integer; --    PAF FIFO_PAE : in integer; --    PAE max_fifo0_pkg : in integer --     ); end component;
      
      







これにより、さたざたなクロック比およびPAEおよびPAFフラグでFIFOを通過するデヌタのフロヌを確認できたす。 テストケヌスのコンポヌネントもありたす。





その結果、このようなレポヌトはテストの開始時に圢成されたす。



 Global fifo_12 TC log: tc_00_01 PASSED tc_00_02 PASSED
      
      





もちろん、テストごずにレポヌトも保存されたす。



たずえば、これ



tc_00_01.log
 # KERNEL: FIFO 0 - PKG= 1 6310 ns 0 ns ERROR: 0 SPEED: 0 # KERNEL: FIFO 0 - PKG= 2 12022 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 3 17734 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 4 23446 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 5 29158 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 6 34870 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 7 40582 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 8 46294 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 9 52006 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 10 57718 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 11 63430 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 12 69142 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 13 74854 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 14 80566 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 15 86278 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 16 91990 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 17 97702 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 18 103414 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 19 109126 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 20 114838 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 21 120550 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 22 126262 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 23 131974 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 24 137686 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 25 143398 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 26 149110 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 27 154822 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 28 160534 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 29 166246 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 30 171958 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 31 177670 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 32 183382 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 33 189094 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 34 194806 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 35 200518 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 36 206230 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 37 211942 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 38 217654 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 39 223366 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 40 229078 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 41 234790 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 42 240502 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 43 246214 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 44 251926 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 45 257638 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 46 263350 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 47 269062 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 48 274774 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 49 280486 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 50 286198 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 51 291910 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 52 297622 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 53 303334 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 54 309046 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 55 314758 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 56 320470 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 57 326182 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 58 331894 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 59 337606 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 60 343318 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 61 349030 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 62 354742 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 63 360454 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 64 366166 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 65 371878 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 66 377590 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 67 383302 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 68 389014 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 69 394726 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 70 400438 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 71 406150 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 72 411862 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 73 417574 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 74 423286 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 75 428998 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 76 434710 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 77 440422 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 78 446134 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 79 451846 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 80 457558 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 81 463270 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 82 468982 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 83 474694 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 84 480406 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 85 486118 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 86 491830 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 87 497542 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 88 503254 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 89 508966 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 90 514678 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 91 520390 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 92 526102 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 93 531814 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 94 537526 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 95 543238 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 96 548950 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 97 554662 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 98 560374 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG= 99 566086 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=100 571798 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=101 577510 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=102 583222 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=103 588934 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=104 594646 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=105 600358 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=106 606070 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=107 611782 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=108 617494 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=109 623206 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=110 628918 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=111 634630 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=112 640342 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=113 646054 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=114 651766 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=115 657478 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=116 663190 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=117 668902 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=118 674614 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=119 680326 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=120 686038 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=121 691750 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=122 697462 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=123 703174 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=124 708886 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=125 714598 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=126 720310 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=127 726022 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=128 731734 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=129 737446 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=130 743158 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=131 748870 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=132 754582 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=133 760294 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=134 766006 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=135 771718 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=136 777430 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=137 783142 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=138 788854 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=139 794566 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=140 800278 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=141 805990 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=142 811702 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=143 817414 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=144 823126 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=145 828838 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=146 834550 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=147 840262 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=148 845974 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=149 851686 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=150 857398 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=151 863110 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=152 868822 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=153 874534 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=154 880246 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=155 885958 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=156 891670 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=157 897382 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=158 903094 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=159 908806 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=160 914518 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=161 920230 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=162 925942 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=163 931654 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=164 937366 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=165 943078 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=166 948790 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=167 954502 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=168 960214 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=169 965926 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=170 971638 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=171 977350 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=172 983062 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=173 988774 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=174 994486 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=175 1000198 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=176 1005910 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=177 1011622 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=178 1017334 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=179 1023046 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=180 1028758 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=181 1034470 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=182 1040182 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=183 1045894 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=184 1051606 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=185 1057318 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=186 1063030 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=187 1068742 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=188 1074454 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=189 1080166 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=190 1085878 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=191 1091590 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=192 1097302 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=193 1103014 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=194 1108726 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=195 1114438 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=196 1120150 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=197 1125862 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=198 1131574 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=199 1137286 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=200 1142998 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=201 1148710 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=202 1154422 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=203 1160134 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=204 1165846 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=205 1171558 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=206 1177270 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=207 1182982 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=208 1188694 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=209 1194406 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=210 1200118 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=211 1205830 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=212 1211542 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=213 1217254 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=214 1222966 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=215 1228678 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=216 1234390 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=217 1240102 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=218 1245814 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=219 1251526 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=220 1257238 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=221 1262950 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=222 1268662 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=223 1274374 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=224 1280086 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=225 1285798 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=226 1291510 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=227 1297222 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=228 1302934 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=229 1308646 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=230 1314358 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=231 1320070 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=232 1325782 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=233 1331494 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=234 1337206 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=235 1342918 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=236 1348630 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=237 1354342 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=238 1360054 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=239 1365766 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=240 1371478 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=241 1377190 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=242 1382902 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=243 1388614 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=244 1394326 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=245 1400038 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=246 1405750 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=247 1411462 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=248 1417174 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=249 1422886 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=250 1428598 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=251 1434310 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=252 1440022 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=253 1445734 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=254 1451446 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=255 1457158 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL: FIFO 0 - PKG=256 1462870 ns 5712 ns ERROR: 0 SPEED: 1368 # KERNEL:   : 1463200 ns # KERNEL: FIFO 0 # KERNEL:  : 256 # KERNEL: : 256 # KERNEL: : 0 # KERNEL:   : 0 # KERNEL:  : 1368 / # KERNEL: # KERNEL: # KERNEL: # KERNEL: TEST finished successfully # KERNEL:
      
      







必芁に応じお、テストが補足されたす。PCK_FIOパッケヌゞを䜿甚しおテキストをコン゜ヌルに出力するこずに泚意しおください。テキスト出力を劇的に簡玠化したす。



たずえば、結果の出力は次のようになりたす。



  fprint( output, L, "  : %r ns\n", fo(now) ); fprint( output, L, "FIFO 0 \n" ); fprint( output, L, "  : %d\n", fo( rx0_result.pkg_rd ) ); fprint( output, L, " : %d\n", fo( rx0_result.pkg_ok ) ); fprint( output, L, " : %d\n", fo( rx0_result.pkg_error ) ); fprint( output, L, "   : %d\n", fo( rx0_result.total_error ) ); fprint( output, L, "  : %r /\n\n", fo( integer(rx0_result.velocity) ) );
      
      





これはCのようなものです。



最終的に、私は結果が実甚的な䜜業に十分䟿利な゚レガントなコンポヌネントであるず信じおいたす。



All Articles