tableの要素(rows,cells)のブラウザ別の扱い

DOMで表を操作するためのコード

var obj; // テーブルのDOM
var i;   // 列(0〜)
var j;   // 行(0〜)
var str; // 書き変える文字列

// IE
obj.rows[i].cells[j].innerHTML = str;

// FireFox, Safari, GoogleChrome
obj.rows.item(i).cells.item(j).innerHTML = str;

// Opera
obj.rows(i).cells(j).innerHTML = str;

液晶のドットチェック(簡易版)

ドット欠けチェッカー等のソフトはありますが、もっと手軽に。

http://rezelk2.sakura.ne.jp/web/DotChecker.html
※sakura解約してしまったので公開停止中

手抜きです。
書き方も適当です。
タイトルすら指定してません。

使い方

1. ページを開きます
2. F11とかでブラウザを全画面化します
3. ページをクリックすると色が変わるので各色をチェックします

はい、これだけ。

ちなみに色は以下の順番で変わります

white black red lime blue magenta cyan yellow darkgray gray lightgray purple green orange

用途は

  • ディスプレイのドット欠けの確認
  • バックライトのむらの確認
  • 色味の調整(特にマルチディスプレイ)

色味はグラデーションのほうがよさそうだけど。
要望があれば少しだけ機能追加します。

range と length と subtype

signal の指定は range と length を使うと便利。

信号の宣言

signal s_addr0 : std_logic_vector(17 downto 0);
signal s_addr1 : std_logic_vector(17 downto 0);
signal s_addr2 : std_logic_vector(17 downto 0);

信号の宣言(range)

signal s_addr0 : std_logic_vector(17 downto 0);
signal s_addr1 : std_logic_vector(addr0'range);
signal s_addr2 : std_logic_vector(addr0'range);

こうすると、s_addr0 のバス幅を変えるだけですべてのバス幅が変わる。
アドレスやデータなど幅が統一な場合に使える。
この場合は、addr0'range = 17 downto 0 に変換される。

信号の宣言(subtype)

subtype ADDR_BUS is std_logic_vector(17 downto 0);
signal s_addr0 : ADDR_BUS;
signal s_addr1 : ADDR_BUS;
signal s_addr2 : ADDR_BUS;

C言語で言うところの typedef に相当。
自分の分かりやすい名前で型を定義できる。
一括変更も簡単。



length

バス幅を返す。
使い方は下記のような感じ。

signal s_addr0 : std_logic_vector (17 downto 0);
-----
s_addr0 <= conv_std_logic_vector(count/5 + 128, s_addr0'length);

conv_std_logic_vector(i,l) は第一引数i に integer の数値、
第二引数l に 変換後のバス幅を入れることで 幅l の std_logic_vector型 に
変換をしてくれる。
この場合は s_addr0'length = 18 に変換される。
こうすると、バス幅が変わった時に修正する必要がなくなる。


そんな感じ。

ISE を使いやすくする

ISE を使いやすくするための方法をいくつかメモ。
設定画面等は ISE 10.1 の画面。



1. ISE エディタの背景を黒くする

エディタは背景を暗くする方が好きなので
背景を黒くする方法。

Edit > Preferences > ISE Text Editor


赤い四角の部分をチェックすれば、背景黒系の設定になる。



2. コンパイル後の窓を表示しなくする

コンパイル後のレポート画面が邪魔なので
これを出さなくする方法。

Edit > Preferences > WebTalk


赤い四角の部分をチェックすれば、レポート画面が表示されなくなる。



3. 起動時に表示される「What's new」的なページを表示しなくする

ISE 起動時に「ここが新しくなった」的な画面が表示されて邪魔なので
これを出さなくする方法。

Edit > Preferences > ISE General


赤い四角の部分のチェックを外せば表示されません。

シンタックスハイライト テスト

はてな記法シンタックスハイライト(Syntax Highlight) 機能を試してみる。

シンタックスハイライト とはソースコードをキーワードで色分けする機能

VHDLサンプル

-- VGA : output sync
LCLK	<= clk25m;	-- for VGA
LCK	<= clk25m;	-- for LCD
nLBLANK	<= '1' when 2 <= s_dis_h_count
	 and s_dis_h_count < C_DISP_WIDTH + 2
	 and s_dis_v_count < C_DISP_HEIGHT else '0';
LHSYNC	<= '0' when (C_DISP_WIDTH  + 16 + 2) <= s_dis_h_count
	 and s_dis_h_count < (C_DISP_WIDTH  + 16 + 64 + 2) else '1';
LVSYNC	<= '0' when (C_DISP_HEIGHT + 10    ) <= s_dis_v_count
	 and s_dis_v_count < (C_DISP_HEIGHT + 10 +  2    ) else '1';

はてな記法 - シンタックスハイライト

>|形式|
〜コード〜
||&lt;

形式 は、上の場合は「vhdl」で他にもphp, ruby, cpp, cs等々。
詳しくは参考サイトへ。


色が気に入らないので CSS を編集して・・・。
こんなとこだろうか。
しかし、適宜改行いれないと見にくい。
というか pre だから改行されない。
右のエリアに文字がつっこんでしまうようだ。

ページ幅は 950px ともう限界に近いのでサイドバーを狭くして記事のエリアを広げよう。

クロック周りのエラー

ISE10.1より、クロックの配置配線する際に CLOCK_DEDICATED_ROUTE 制約を追加しないとエラーが出る。
クロックかどうかはたぶん論理合成ツールが rising_edgefalling_edge を使っている信号を判別してるんじゃないかと推測。

エラー内容

ERROR:Place:1018 - A clock IOB / clock component pair have been found
 that are not placed at an optimal clock IOB / clock site pair.

いろいろやったところ、どうも process文 にクロックとして使用した場合は
以下のように制約を追加してやる必要がありそう。

設定例(*.ucf):

NET "CAM_PCLK" CLOCK_DEDICATED_ROUTE = FALSE ;


それにしてもエラーが途中で切れて表示されるのをは何とかしてほしい。
せめて、Summary の方だけでも折り返していいから複数行表示とかしてほしい。



参考リンク
http://www.xilinx.com/itp/xilinx10j/books/docs/cgd/cgd.pdf