Hatena::ブログ(Diary)

菊やんの雑記帳

2008-06-24 部品を選んでるだけで

[] 部品を選んでるだけで一ヶ月たってしまった。 00:20  部品を選んでるだけで一ヶ月たってしまった。 - 菊やんの雑記帳 を含むブックマーク

あと、配線しようとしていたら、いつの間にか配線ゴルフになってたし…

2008-05-25 適当にキャプチャ

[] やはり配線がいい加減すぎた 03:01  やはり配線がいい加減すぎた - 菊やんの雑記帳 を含むブックマーク

いい加減に接続して、いい加減にファーム書いて、いい加減に吸い出したら、それっぽいのがでてきた。

とりあえずPATを見てみると

00000000: 47 60 00 1C 00 00 B0 1D 7F E0 ED 00 00 00 00 E0  G`..............
00000010: 10 14 00 E1 F0 04 05 E3 F0 05 80 FF C8 FF F0 FC  ................
00000020: F0 23 37 3F F2 FF FF FF FF FF FF FF FF FF FF FF  .#7?............
00000030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000040: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000070: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000080: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000090: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
000000A0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
000000B0: FF FF FF FF FF FF FF FF FF FF FF FF              ............
PAT: 00 E 29 7FE0 16 N 00 00 CRC(Fail)

微妙に化けている。正しいパケット

00000000: 47 60 00 17 00 00 B0 1D 7F E0 E1 00 00 00 00 E0  G`............
00000010: 10 04 00 E1 F0 04 01 E3 F0 05 80 FF C8 FF F0 FC  ................
00000020: F0 C1 E3 CC 32 FF FF FF FF FF FF FF FF FF FF FF  ....2...........
00000030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000040: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000070: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000080: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
00000090: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
000000A0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ................
000000B0: FF FF FF FF FF FF FF FF FF FF FF FF              ............
PAT: 00 E 29 7FE0 10 N 00 00 CRC(OK)
     : 0000 -> 0010
     : 0400 -> 01F0
     : 0401 -> 03F0
     : 0580 -> 1FC8
     : FFF0 -> 1CF0

だ。まあ大体あってるからチューナモジュールは動作してるっぽい。

動作確認用基板を改良してまともにすることはできるけど、

それよりは、本番基板を設計してプリント基板にしようと思う。

f:id:kikx:20080526024100j:image

f:id:kikx:20080526024139j:image

f:id:kikx:20080526024217j:image

そのへんに落ちてたケーブルを使ったので配線が長すぎるのが一番の原因だと思う。

最初はケーブルがばらけてて

                GND,3.3V
基板----------------------------------チューナ
    ---\                    ---------
        \                  /
         \    CLK,DAT     /
           ---------------/

な巨大ループになってたんだけど、あまりにのいぢだったのでケーブルまとめたら随分ましになった。

2008-05-22 4MHz*8bit

[] キャプチャの方法 02:51  キャプチャの方法 - 菊やんの雑記帳 を含むブックマーク

JDVBT-90502のTS出力は4MHz*8bitのパラレル出力だ。

TSCLK: ____/~~~~\____/~~~~\____/~~~~\____
TSVAL: _____/~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TSDAT: =====X===47H===X===01H===X==02H===

パラレルTSをFX2でキャプチャするにはSlaveFIFOを使うのが第一候補で

TUFX2
TSCLKIFCLK
TSVALSLWR
TSDATFD

と接続して同期モードでFIFOに書き込む方法が最初に思いつく。

しかし、FX2のマニュアルによると外部クロックは5MHz以上にいないといけないという制限があるので、

これは使えない。

次に思いつくのが非同期モードでSlaveFIFOを使う方法である。

TUFX2
TSCLKSLWR
TSVALSLCS or FIFOADDR
TSDATFD

と接続すれば一応動作はする。ただし、SLWRの立ち上がりでのFDのホールド時間10nsを守るのが大変になる。

確実に読もうと思うとGPIFを使うのが最良だと思う。

TUFX2
TSCLKRDY1
TSVALRDY0
TSDATFD

と接続する。そして48MHzのクロックで信号をサンプリングして、TSCLK & TSVALを3クロック連続で達成すれば1バイト読む。

その後TSCLKが下がるのを待つ。

f:id:kikx:20080523024708p:image

f:id:kikx:20080523024709p:image

// GPIF Waveform 0: TSRd                                                                    
//                                                                                         
// Interval     0         1         2         3         4         5         6     Idle (7) 
//          _________ _________ _________ _________ _________ _________ _________ _________
//                                                                                         
// AddrMode Same Val  Same Val  Same Val  Same Val  Same Val  Same Val  Same Val           
// DataMode NO Data   NO Data   NO Data   Activate  NO Data   NO Data   NO Data            
// NextData SameData  SameData  SameData  SameData  SameData  SameData  SameData           
// Int Trig No Int    No Int    No Int    No Int    No Int    No Int    No Int             
// IF/Wait  IF        IF        IF        Wait 1    IF        Wait 1    Wait 1             
//   Term A TSVAL     TSVAL     TSVAL               TSCLK                                  
//   LFunc  AND       AND       AND                 AND                                    
//   Term B TSCLK     TSCLK     TSCLK               TSCLK                                  
// Branch1  Then 1    Then 2    Then 3              Then 4                                 
// Branch0  Else 0    Else 0    Else 0              ElseIdle                               
// Re-Exec  Yes       Yes       Yes                 Yes                                    
// Sngl/CRC Default   Default   Default   Default   Default   Default   Default            
// TP0          0         0         0         0         0         0         0         0    
// TP1          0         0         0         1         0         0         0         0    
// TP2          0         0         0         0         0         0         0         0    
// unused       0         0         0         0         0         0         0         0    
// unused       0         0         0         0         0         0         0         0    
// unused       0         0         0         0         0         0         0         0    

信号が安定しているところで読み出すので、リンギングやクロストークには強いはず。たぶん

2008-05-14 I2Cで設定してみた

[] BonDriverの作者に感謝 02:08  BonDriverの作者に感謝 - 菊やんの雑記帳 を含むブックマーク

I2C設定はBonDriver付属のUSBログを解析してほぼ予想はついていたのだが、

こればっかりは送ってみないとわからない。

WriteI2C @30:  FE C1 ... OK
ReadI2C @30:  B4 ... OK
WriteI2C @30:  01 40 ... OK
WriteI2C @30:  04 38 ... OK
WriteI2C @30:  05 40 ... OK
WriteI2C @30:  07 40 ... OK
WriteI2C @30:  0F 4F ... OK
WriteI2C @30:  11 21 ... OK
WriteI2C @30:  12 0B ... OK
WriteI2C @30:  13 2F ... OK
WriteI2C @30:  14 31 ... OK
WriteI2C @30:  16 02 ... OK
WriteI2C @30:  21 C4 ... OK
WriteI2C @30:  22 20 ... OK
WriteI2C @30:  2C 79 ... OK
WriteI2C @30:  2D 34 ... OK
WriteI2C @30:  2F 00 ... OK
WriteI2C @30:  30 28 ... OK
WriteI2C @30:  31 31 ... OK
WriteI2C @30:  32 DF ... OK
WriteI2C @30:  38 01 ... OK
WriteI2C @30:  39 78 ... OK
WriteI2C @30:  3B 33 ... OK
WriteI2C @30:  3C 33 ... OK
WriteI2C @30:  48 90 ... OK
WriteI2C @30:  51 68 ... OK
WriteI2C @30:  5E 38 ... OK
WriteI2C @30:  71 00 ... OK
WriteI2C @30:  72 08 ... OK
WriteI2C @30:  77 00 ... OK
WriteI2C @30:  C0 21 ... OK
WriteI2C @30:  C1 10 ... OK
WriteI2C @30:  E4 1A ... OK
WriteI2C @30:  EA 1F ... OK
WriteI2C @30:  77 00 ... OK
WriteI2C @30:  71 00 ... OK
WriteI2C @30:  71 00 ... OK
WriteI2C @30:  76 0C ... OK
WriteI2C @30:  FE C0 12 ED B2 08 ... OK
WriteI2C @30:  FE C0 12 ED 9A 50 ... OK
WriteI2C @30:  B0 ... OK
ReadI2C @30:  60 ... OK
WriteI2C @30:  80 ... OK
ReadI2C @30:  6F ... OK
WriteI2C @30:  89 ... OK
ReadI2C @30:  00 00 00 00 00 5B 00 00 54 05 ... OK

最初はシリアル転送だと思ってたので、PBVALやSBYTEをロジアナで見てた。

PBVALやRSCK0はそれっぽい動きをしている。

でも、データっぽい名前の端子がなかったので、パラレルなのかと思い直して、

PBVALの立ち上がりでトリガをかけてRS[0...7]を一本ずつ観察すると、RS[0...7]はわりとランダムに動いてるんだけど、

PBVALの立ち上がりではつねにRS[0...7]は固定で

RS[0] = 0
RS[1] = 1
RS[2] = 0
RS[3] = 0
RS[4] = 0
RS[5] = 1
RS[6] = 1
RS[7] = 1

でした。どうみてもTSです。本当にありがとうございました。

f:id:kikx:20080515021001j:image

f:id:kikx:20080515021144j:image

2008-05-13 TC90502XBG初期値

[] 初期値を読む 02:27  初期値を読む - 菊やんの雑記帳 を含むブックマーク

I2Cにアクセスできるようになったので、TC90502の初期設定を読む。

アドレス0x30に読みたいアドレスを書き込んで、アドレス0x30を読み出すと読めるっぽい。

00:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 4F
10:  00 20 0B 42 8F 40 00 70  31 13 31 13 80 00 00 00
20:  4D FF 00 4C 4C 00 00 F4  60 6B 40 40 FF 00 FF 00
30:  20 0D E0 14 2F 00 00 00  00 D3 10 30 00 10 08 0C
40:  0C 00 00 4F FF 00 20 00  60 E6 02 54 00 FF 10 05
50:  00 1A 20 0F 57 F1 20 70  FF 1C 71 00 50 00 00 00
60:  1E 20 24 30 53 20 20 25  25 25 20 20 26 28 34 00
70:  38 00 00 96 00 00 00 00  00 00 00 00 00 00 00 00
80:  AF 10 FF FF 00 00 00 00  03 00 00 00 00 00 06 00
90:  00 04 02 BD 00 00 00 FF  D7 00 00 00 00 00 02 00
A0:  00 00 00 00 00 00 02 00  02 00 02 00 60 04 00 00
B0:  50 02 3C 70 6F FF FF FF  FF FC 00 00 00 00 00 00
C0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
D0:  30 26 1C 00 00 00 00 CD  00 82 00 00 00 00 00 00
E0:  58 5F 00 06 06 00 24 52  03 40 10 00 00 00 00 00
F0:  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

0x80が0xAFなのでたぶんあってる。