忍者ブログ
凡人の日々の経過を記録
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



構造体もランダムを生成することができる.

次のような構造体がすでにあるとする。


struct data_t {
sc_uint<12> addr;
unsigned char payload[5];
};


addrとpayload[5]の6つの変数の値をランダムとするには、次を別途用意する。

template<>
class scv_extensions<data_t> : public scv_extensions_base<data_t>
{
public:
sc_extensions<sc_uint12> > addr;
sc_extensions<unsigned char [5]> payload;

SCV_EXTENSIONS_CTOR( data_t ) {
SCV_FIELD( addr );
SCV_FIELD( paylaod );
}
};



使い方はつぎのようになる。


scv_smart<data_t> data_p( "data_p" );

data_p->addr.keep_out(0, 100);
for (int i=0; i<5; ++i)
data_p->payload[i].keep_only( 0, 100 );

for (int i=0; i<10; ++i) {
data->next();

printf( "addr = %d, ", (int)data_p->addr );
printf( "payload = " );
printf( "%d, ", (int)data_p->payload[0] );
printf( "%d, ", (int)data_p->payload[1] );
printf( "%d, ", (int)data_p->payload[2] );
printf( "%d, ", (int)data_p->payload[3] );
printf( "%d\n", (int)data_p->payload[4] );
}



実行結果
------------------------------------
addr = 31, payload = 84, 33, 24, 48, 65
addr = 85, payload = 41, 16, 72, 21, 81
addr = 99, payload = 80, 9, 53, 68, 20
addr = 64, payload = 68, 47, 13, 53, 53
addr = 38, payload = 58, 68, 83, 4, 11
addr = 33, payload = 98, 71, 90, 41, 80
addr = 58, payload = 24, 19, 58, 62, 99
addr = 96, payload = 21, 18, 27, 69, 47
addr = 25, payload = 70, 49, 23, 24, 41
addr = 11, payload = 71, 42, 55, 9, 19
------------------------------------

拍手[0回]

PR


この記事にコメントする
HN:
TITLE:
COLOR:
MAIL:
URL:
COMMENT:
PASS:
この記事へのトラックバック
この記事にトラックバックする:

Powered by 忍者ブログ  Design by © まめの
Copyright © [ ずくのない凡人の日記 ] All Rights Reserved.
http://bambooflow.blog.shinobi.jp/