O HAI THIS BLOG PURPZIEZ 2 B UZED AZ MAH PLESIOUS MEM. :)

2009/11/28

SUPER_COMPUTER >> DIV_UU

ニュースやらblogやらtwitterやらでゴチャゴチャ五月蝿ぇので暴言を吐いたら,masatomon先生にRTされちまったので除算器のVHDLを晒すと言うネタをやってみる.

仕様から説明するか.入力は符号無し整数の被除数と除数,ビット幅は双方同一とするが特に大きさは制限しない.出力は商と剰余,それから零除算インジケータ.スループットは1 division/CLK,入出力レイテンシは制限しない.本来はもっと考えるトコロがあるケド,メンドイので他には制限無し.ただし,合成出来て,あんまりデカくなくて,なおかつそれなりに早く動く事.

で,実装.冗長2進数だの高基数だのはメンドイのでやらない.算術シフトとコンパレータと減算をパイプラインで行う.ソースはバケツに突っ込んだ.イメージ的にはタダの筆算.

で,シミュレーション.ビット数をデカくするとたるいので,3bitでやったのが,これ.


で,合成.アルテラ謹製のくぉーたすつーでプロジェクトの設定はデフォルトのまま突っ込んだら,こうなった.ちなみにビット幅は32bitね.
Fitter Status : Successful - Sat Nov 28 02:29:38 2009
Quartus II Version : 9.0 Build 184 04/29/2009 SP 1 SJ Web Edition
Revision Name : DIV_UU
Top-level Entity Name : DIV_UU
Family : Stratix III
Device : EP3SL70F780I4L
Timing Models : Final
Logic utilization : 10 %
    Combinational ALUTs : 2,018 / 54,000 ( 4 % )
    Memory ALUTs : 0 / 27,000 ( 0 % )
    Dedicated logic registers : 3,235 / 54,000 ( 6 % )
Total registers : 3235
Total pins : 133 / 488 ( 27 % )
Total virtual pins : 0
Total block memory bits : 0 / 2,267,136 ( 0 % )
DSP block 18-bit elements : 0 / 288 ( 0 % )
Total PLLs : 0 / 4 ( 0 % )
Total DLLs : 0 / 4 ( 0 % )

Analysis and Synthesis Status : Successful - Sat Nov 28 02:28:35 2009
Quartus II Version : 9.0 Build 184 04/29/2009 SP 1 SJ Web Edition
Revision Name : DIV_UU
Top-level Entity Name : DIV_UU
Family : Stratix III
Logic utilization : N/A
    Combinational ALUTs : 2,006
    Memory ALUTs : 0
    Dedicated logic registers : 3,235
Total registers : 3235
Total pins : 133
Total virtual pins : 0
Total block memory bits : 0
DSP block 18-bit elements : 0
Total PLLs : 0
Total DLLs : 0

------------------------------------------------------------
TimeQuest Timing Analyzer Summary
------------------------------------------------------------

Type  : Slow 900mV 100C Model Setup 'iCLK'
Slack : -5.132
TNS   : -7413.304

Type  : Slow 900mV 100C Model Hold 'iCLK'
Slack : 0.541
TNS   : 0.000

Type  : Slow 900mV -40C Model Setup 'iCLK'
Slack : -5.259
TNS   : -7461.099

Type  : Slow 900mV -40C Model Hold 'iCLK'
Slack : 0.507
TNS   : 0.000

Type  : Fast 900mV -40C Model Setup 'iCLK'
Slack : -1.902
TNS   : -1922.378

Type  : Fast 900mV -40C Model Hold 'iCLK'
Slack : 0.229
TNS   : 0.000

------------------------------------------------------------

これだけやってもiCLKは159.77MHzでしか動かない.ディジタル回路なめんなよ.スパコンはもっともっと大変なブツだぞ!!1 :P

更新:200MHz行かないのが納得出来んので,カッとなってパイプラインを三倍にした.今は反省はしていない. :DDD


再合成してみたら198.89MHzで動く様になったらしい.やっぱこの除算アルゴリズムで200MHzは無理か. :P
Fitter Status : Successful - Sat Nov 28 12:54:15 2009
Quartus II Version : 9.0 Build 184 04/29/2009 SP 1 SJ Web Edition
Revision Name : DIV_UU
Top-level Entity Name : DIV_UU
Family : Stratix III
Device : EP3SL70F780I4L
Timing Models : Final
Logic utilization : 18 %
    Combinational ALUTs : 2,039 / 54,000 ( 4 % )
    Memory ALUTs : 0 / 27,000 ( 0 % )
    Dedicated logic registers : 9,288 / 54,000 ( 17 % )
Total registers : 9288
Total pins : 133 / 488 ( 27 % )
Total virtual pins : 0
Total block memory bits : 0 / 2,267,136 ( 0 % )
DSP block 18-bit elements : 0 / 288 ( 0 % )
Total PLLs : 0 / 4 ( 0 % )
Total DLLs : 0 / 4 ( 0 % )
Analysis and Synthesis Status : Successful - Sat Nov 28 12:52:15 2009
Quartus II Version : 9.0 Build 184 04/29/2009 SP 1 SJ Web Edition
Revision Name : DIV_UU
Top-level Entity Name : DIV_UU
Family : Stratix III
Logic utilization : N/A
    Combinational ALUTs : 2,039
    Memory ALUTs : 0
    Dedicated logic registers : 9,288
Total registers : 9288
Total pins : 133
Total virtual pins : 0
Total block memory bits : 0
DSP block 18-bit elements : 0
Total PLLs : 0
Total DLLs : 0
------------------------------------------------------------
TimeQuest Timing Analyzer Summary
------------------------------------------------------------

Type  : Slow 900mV 100C Model Setup 'iCLK'
Slack : -3.580
TNS   : -14902.996

Type  : Slow 900mV 100C Model Hold 'iCLK'
Slack : 0.466
TNS   : 0.000

Type  : Slow 900mV -40C Model Setup 'iCLK'
Slack : -4.028
TNS   : -14569.313

Type  : Slow 900mV -40C Model Hold 'iCLK'
Slack : 0.447
TNS   : 0.000

Type  : Fast 900mV -40C Model Setup 'iCLK'
Slack : -1.117
TNS   : -2389.571

Type  : Fast 900mV -40C Model Hold 'iCLK'
Slack : 0.202
TNS   : 0.000

------------------------------------------------------------

0 件のコメント: