150 likes | 312 Views
Handel-C 基礎 および 7セグとマウスのハンドリング. プロジェクト演習 CS28 川口 博. サウンドヒント. C:projExamplesPSLRC10RC10.hw MidiFlash のデモを楽しむ 動作を確認したら一度 reset C:projExamplesPSLRC10MidiFlashSamples にあるデータはフラッシュ ROM 上にあることを FTU で確認 (Index 200-203) サウンドが利用可能なことを覚えておきましょう. 設計フロー まとめ. Handel-C で回路を記述
E N D
Handel-C基礎 および7セグとマウスのハンドリングHandel-C基礎 および7セグとマウスのハンドリング プロジェクト演習 CS28 川口 博
サウンドヒント • C:\proj\Examples\PSL\RC10\RC10.hw • MidiFlashのデモを楽しむ • 動作を確認したら一度reset • C:\proj\Examples\PSL\RC10\MidiFlash\SamplesにあるデータはフラッシュROM上にあることをFTUで確認 (Index 200-203) • サウンドが利用可能なことを覚えておきましょう
設計フロー まとめ Handel-Cで回路を記述 DK上でシンセシス、デバッグ、エミュレーション ISEでFPGA上の配置配線(P&R)を決定し、マッピングデータ(.bitファイル)を作成 FTU (File Transfer Utility)で.bitファイルをRC10に転送 RC10で動作確認 エラーがあればHandel-Cの記述まで戻る Debug/ Emulation Handel-C Xilinx ISE Place & Route Netlist
DK まとめ 高位ハードウェア記述Handel-Cからネットリスト(ゲートレベルの回路記述)を生成する論理合成(シンセシス) デバッガ RC10がなくても、エミュレーション可能 (後日やりましょう)
ネットリストまとめ EDIFファイル(.edfファイル)ネットリストまとめ EDIFファイル(.edfファイル) • EDIFは論理回路のネットリストを表現する標準フォーマットの一つ (.edfファイル) • ネットリスト:セルの名前とその入出力ポートの接続関係が記述されたリスト Notepad/WordPadで.edfファイルを表示させると… (cell XOR2 (cellType GENERIC) (view view_1 (viewType NETLIST) (interface (port I0 (direction INPUT)) (port I1 (direction INPUT)) (port O (direction OUTPUT)) ) ) ) (cell OR4 (cellType GENERIC) …… ……
7セグを光らせる 1 • C:\proj\Tutorials\General\TutorialSevenSeg2\TutorialSevenSeg2.hw • Build>Configurations…
7セグを光らせる 2 • Add… • Configuration name: RC10>Copy setting from:>RC200
7セグを光らせる 3 • Project Settings (RC10)を先週のとおりに設定 たとえばRC10にする
7セグを光らせる 4 • PalSevenSegWriteDigit()とPalSevenSegWriteShape()についてはhttp://www28.cs.kobe-u.ac.jp/~kawapy/html/proj/PALManual.pdfのp.26を参照 • さまざまな表示を試そう(別紙seven_seg.hcc参照)どのビットが7セグのどこに対応するのか?
Handel-C言語仕様 • 別紙“Handel-C &DK Training”を参照 • par • ビット演算 • その他
par • C:\proj\Tutorials\General\TutorialHCBasics\TutorialHCBasics.hw • 同様にConfiguration: RC10を作る • 別紙のとおりSleep(500)を削除・追加 • Parをコメントアウトする・しないで挙動を比較
マウスのハンドリング 1 • C:\proj\Examples\PAL\Examples.hw • Mouse • このソースにコードを追加して7セグに“77”を光らせる • ヒント:別紙seven_seg.hccの☑を追加
マウスのハンドリング 2 • さらにコードを追加して、左ボタンクリックで7セグを-1減算右ボタンクリックで7セグを+1加算 • ヒント:while(1)ループif(PalMouseGetButton(MousePtr,0)) //左ボタンif(PalMouseGetButton(MousePtr,2)) //右ボタン1クリックごとに加減算しているか?(前クロックのボタンの状態を覚える1ビットレジスタを左右それぞれ用意し、そのレジスタが”1”で現在のボタンが”0”ならば,ボタンが離されたということ)カーソルが縞になっていないか?
問題 • unsigned 7 a;unsigned 3 b;unsigned 4 c;unsigned 1 d;a=0b1101101; • 1クリックごとに以下のサイクルを実行1: aの下位3ビットをbに代入2: aの上位4ビットをcに代入3: bを上位3ビット、cを下位4ビットとしてaに代入4: aの最下位ビットをdに代入5: dをcに代入6: cを上位4ビットにしてaに代入し、下位ビットは全て1
問題のヒント? • Case • マクロadju(variable,width) • キャスト(unsigned x)