12.Cコンパイル例
12.1 RTL
RTL シミュレーションでは、シミュレータ上で走らせるために、Cプログラムの出力をUARTから、コンソールに変更しています。また、実時間で数十msで終わるようにCプログラムを書いています。実時間で数十msでも、RTLシミュレータ上では、長大な時間を要することに注意してください。(特にXilinxでは、遅いです。RAMの記述方法が違うためです。)
フォルダ | C プログラム | 内容 | バッチファイル | Veritak Project(\bench\verilog) |
\bench\c_src\count | count_tak.c | Steve Rhords氏によるCPU動作チェック | compile.bat | altera_rtl/xilinx_rtl |
\bench\c_src\pi | pi2.c | π十桁計算プログラム | compile.bat | altera_rtl_no_wave/xilinx_rtl_no_wave |
\bench\c_src\dhrystone | dhry21_tak.c | ドライストーンプログラム | compile.bat | altera_rtl_no_wave/xilinx_rtl_no_wave |
\bench\c_src\reed solomon | rs_tak.c | Phil Karn氏のプログラムを組み込みCPU用にポート | compile.bat | altera_rtl_no_wave/xilinx_rtl_no_wave |
\bench\c_src\calculator | uart_echo_test.c | PCターミナルを利用した電卓プログラム。割り込みのチェックに使用 | compile.bat | altera_calculator_test_using_uart_echo/xilinx_calculator_test_using_uart_echo |
RTLシミュレーション手順
12.2 ゲートシミュレーション
RTLシミュレーションのcountでのメモリ初期化ファイルをコピーしゲートシミュレーションを行いました。ゲートシミュレーションは、RTLのさらに数倍時間がかかるので、UART出力を待っていられません。そのため、コンソールに出力させます。RTLのIFを使って合成しています。StratixUでは、例によって、非同期リセットがうまく合成されていないので、IFDEF対応しました。(yacc2.v)
また、駆動周波数は、ポストレイアウト後の駆動可能最大周波数にテストベンチを設定し直し、コンソール出力がRTLと同じ結果になることを確認しました。
フォルダ | Veritakプロジェクトファイル | 駆動周波数 |
\syn\altra_stratix2\simulation\custom | Gate_altera | 165MHz |
\syn\altera\simulation\custom | Gate_altera | 100MHz |
\syn\xilinx | Gate_xilinx | 25MHz |
12.3 FPGA実動作用
RTLとの違いは、出力をUARTにしている点です。また、実時間に見合ったループ数(Cプログラム)にしています。
フォルダ | C プログラム | バッチファイル | 内容 |
\syn\c_src\count | count_tak.c | compile.bat | Steve Rhords氏によるCPU動作チェック |
\syn\c_src\pi | pi2.c | compile.bat | π800桁計算プログラム |
\syn\c_src\reed solomon | rs_tak.c | compile.bat | Phil Karn氏のプログラムを組み込みCPU用にポート |
\syn\yacc\bench\c_src\calculator | uart_echo_test.c | compile.bat | PCターミナルを利用した電卓プログラム。 |
<合成方法>
12.4 FPGA 動作確認
FPGA | FPGA BOARD | Device | Clock | CPU CLOCK | UARTボーレート | 合成 |
Altera | Future Electronics Cyclone/Nios II Development Board | EP1C12Q240C6 | 50MHz | 50MHz | 115.2KBPS | Quartus4.2 |
Xilinx | Xilinx Spartan3 Starter Kit | XC3S200-4FT256C | 50MHz | 25MHz | 57.6KBPS | ISE7.1 |
Future Electronics Cyclone/Nios II Development Board Spartan3 Starter Kit
(1) count
RTL と同様の画面が流れます。無限ループになっています。
(2) pi
3.1415...と800桁続きます。PCで計算した値と同じです。
(3)Interactiveな電卓
(4)リードソロモン
大変複雑な処理を120回行い、誤訂正は、0です。255個のデータの内、32BYTEのECCが付加され21バイトの訂正を行っています。(Erasure含む)