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;
液晶のドットチェック(簡易版)
ドット欠けチェッカー等のソフトはありますが、もっと手軽に。
- Dot Checker with Javascript
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
用途は
- ディスプレイのドット欠けの確認
- バックライトのむらの確認
- 色味の調整(特にマルチディスプレイ)
色味はグラデーションのほうがよさそうだけど。
要望があれば少しだけ機能追加します。
FPGA 有用情報サイト
下記のサイトは、FPGA や マイコン といった組み込み関係の情報を掲載している。
(有名かな?)
私的メモということでついでに紹介。
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 を使いやすくする
シンタックスハイライト テスト
はてな記法 の シンタックスハイライト(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';
クロック周りのエラー
ISE10.1より、クロックの配置配線する際に CLOCK_DEDICATED_ROUTE 制約を追加しないとエラーが出る。
クロックかどうかはたぶん論理合成ツールが rising_edge や falling_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