忍者ブログ

[PR]

2025年04月25日
×

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

属性

2008年12月08日
再利用可能な部品を作るにはcomponent宣言、subproglam宣言、generic文だけではなく、
attribute(属性)の考え方が必要です。何も難しいことは無く、

signal A : STD_LOGIC_VECTOR(7 downto 0);と定義した場合。

A'left --Aのdowntoの左側の7を返す。
A'right --Aのdowntoの右側の0を返す。
A'length  --Aのビット幅である8を返す。

といった具合です。前述のsubproglam宣言と組み合わせた関数を作ってみました。
どんなビット幅のデータが入っても40bitにしてくれる関数です。Excel用です。
難しいことは無く、40bit以下のデータに0か1を付加して拡張しているだけです。
--追記:40bit以上のデータも対応しました。
--追記:40の部分をパラメータ化すればもっと汎用性の高い部品になりますね

function BITCHANGER(din : STD_LOGIC_VECTOR)
 return STD_LOGIC_VECTOR is
  variable dout   : STD_LOGIC_VECTOR(40-1 downto 0);
  variable all_zero : STD_LOGiC_VECTOR(40- din'length-1 downto 0):=(others=>'0');
  variable all_one  : STD_LOGiC_VECTOR(40- din'length-1 downto 0):=(others=>'1');
 begin
  if(din'length > 40)then
   dout := din(40-1 downto 0);
  else
   if(din(din'high)= '0')then
    dout:=(all_zero&din);
   elsif(din(din'high)= '1')then
    dout:=(all_one&din);
   else
    null
;
   end if;
  end if;
  return dout;
 end BITCHANGER;
PR
Comment
くでゅーさん
'lengthはサンプルでもよく見かけますが、'rightや'leftはあまり見かけませんね。

昨夜は、かなり飛ばしてましたね。
お疲れ様でした。
No title
昨日はそんな飲むつもりじゃなかったんだけど、空きっ腹がきたね~
おかげで一日潰してしまったよ。
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字