前回までは process が1つだけの例題でしたが、今回は複数の process を使う場合の書き方を学びます。
複数の process を使う場合は、それぞれの記述に加えて、接続関係を定義する トップレベル記述が必要になります。
process process1(clkin uint#1 clk, rstin uint#1 rst, in uint#2 din, out uint#2 dout)
{
while (1) {
dout = din;
}
}
process process2(clkin uint#1 clk, rstin uint#1 rst, in uint#2 din, out uint#2 dout)
{
while (1) {
dout = din;
}
}
toplevel logicboy(
in uint#1 pin<52> period<37> clk,
in uint#1 pin<3> rst,
in uint#2 pin<25,26> din,
out uint#2 pin<27,28> dout)
{
com uint#2 d;
process1(clk, rst, din, d);
process2(clk, rst, d, dout);
}
din をそのまま dout に出力するだけの単純な回路process を接続するための構造を記述com はプロセス間の接続用信号。ここでは d が中継役process1(clk, rst, din, d); で din を d に渡し、process2(clk, rst, d, dout); で d を dout に渡すclk は 52 ピン、rst は 3 ピンに割り当てperiod<37> はクロック周期が 37ns(27MHz)であることを示すdin のビット0が 25 ピン、ビット1が 26 ピンdout のビット0が 27 ピン、ビット1が 28 ピンpin<27,28> と pin<27-28> は同じ意味複数の process を組み合わせることで、より複雑な回路を構築できます。
Cherry Syn のトップレベル記述は、構造を明快に保ちながら、詩的な接続を可能にします。
次回はいよいよ、ブロック RAM の使い方を紹介します。お楽しみに!