かずの不定期便ブログ

備忘録代わりに書きます

FPGA

VexRiscvを用いたオリジナルSoCのJTAGデバッグ 実機編

JTAGデバッガをwslのUSBへ認識させる usbipdの環境を整えます。 wsl側に認識させる OpenOCDの実行 debugの実行 実機のJTAGを動作させるのにはまった点 参考にしたサイト 前回記事でverilator simでJTAGデバッグするという話を書きましたが、今回は実機デバッ…

VexRiscvを用いたオリジナルSoCをverilatorでJTAGデバッグ

VexRiscvの生成環境の構築 VexRiscvコアの作成 SoCの作成 Verilatorによるsimulation SIM TOP階層(C++階層)の作成 class BrieyWorkspace RAMデータ(命令コード)の読み込み makefileの代わりにsim実行スクリプトを作成します JTAGデバッグ OpenOCDの準備 Open…

vivado AXI APB Brdige につながるAPB slaveへアドレスがassignされない

vivado AXI APB Brdige につながるAPB slaveへアドレスがassignされない 原因 Vivadoへモジュールのアドレス範囲を教える。 APB slave モジュールのIP化 アドレスサイズの設定 元のvivado側に作成したIPを追加する 参考にしたサイト vivado AXI APB Brdige …

PicoRV32のプログラムをSDRAM上で動かす(TangNano20K)

はじめに 課題 フラッシュからITCMへ命令実行を遷移する方法の解析 _vsloader のアドレスの特定 リセット解除後、最初に実行される関数は? リンカはどうやってアドレスを決めているか? ITCM実行部分をSDRAM領域へ差し替えを行う(ソフト面) スタックポイン…

FPGA Sipeed Tang Nano 20KでIP Gowin_PicoRV32を動かす

FPGA Sipeed Tang Nano 20KでIP Gowin_PicoRV32を動かす FPGA Sipeed Tang Nano 20KでIP Gowin_PicoRV32を動かす はじめに PicoRV32のインスタンス方法 リファレンスデザインの実装 picorv32_demo.vの修正内容 picorv32.cstの修正内容 PicoRV32のインスタン…

FPGA Sipeed Tang Nano 20KでSDRAMを動かす

FPGA Sipeed Tang Nano 20KでSDRAMを動かす FPGA Sipeed Tang Nano 20KでSDRAMを動かす はじめに 設計方針 改造内容 バースト転送対応とPrechargeコマンドの投入について Logical side interface仕様 複数の要求元(最大3)に対応 ブロック図 cmd i/f 端子一覧…

FPGA Sipeed Tang Nano 9Kでフォトビューワーになりそこなったものを作りました

FPGA Sipeed Tang Nano 9Kでbmp画像を表示させる フォートビューワ FPGA Sipeed Tang Nano 9Kでbmp画像を表示させる はじめに フォトビューワー(のようなもの)の要件 HDMI表示の流れ ハード構成図(SDカード→PSRAM) PSRAM書き込み側制御回路 ハード構成図(…

FPGA Sipeed Tang Nano 9KでDualPortメモリの作成方法

FPGA Sipeed Tang Nano 9KでDualPortメモリの作成方法 FPGA Sipeed Tang Nano 9KでDualPortメモリの作成方法 BSRAMとは BSRAMの推論が上手くいかないRTL記述 BSRAMを直置きするとSIMが出来ない RTLから合成でBSRAMが推論されない理由が判明 結論。DualPortメ…

FPGA Sipeed Tang Nano 9Kを使ってPSRAMへアクセス

リーズナブルFPGAシリーズのTang Nano 9Kを使ってPSRAMへアクセスしました TERM表示 リーズナブルFPGAシリーズのTang Nano 9Kを使ってPSRAMへアクセスしました 1. PSRAMについて 2. コントローラの実装について PSRAMメモリーインターフェースIPの選択 チャ…

FPGA Sipeed Tang Nano 9Kを使ってSDカードアクセス(その2。ソフト設計編)

リーズナブルFPGAシリーズのTang Nano 9Kを使ってTFカードスロットにアクセスしました(その2。ソフト設計編) 今回はソフト設計編になります。 SDカードへのアクセスメニューを追加したpicotiny リーズナブルFPGAシリーズのTang Nano 9Kを使ってTFカードス…

FPGA Sipeed Tang Nano 9Kを使ってSDカードアクセス(その1。下調べとハード設計編)

リーズナブルFPGAシリーズのTang Nano 9Kを使ってTFカードスロットにアクセスしました(その1。下調べとハード設計編) picotinyへSDカードアクセスメニューを追加した

FPGA Sipeed Tang Nano 9Kを使ってHDMI表示(720p)

リーズナブルFPGAシリーズのTang Nano 9Kを使ってHDMI表示させましたまだ、wikiではTangNano 9KではHDMI表示サンプルがなかったのでTangNano 4K版を参考に作成しました。 wikiはこちら wiki.sipeed.com

Xilinx FPGA ILAを利用した簡易ロジックアナライザ―の製作(333MHz) その2

前回の記事でbit streamの作成まで終わりました。今回はその続きで、実際に信号をキャプチャするところまで記事にします。 前回の記事はこちら spend-carefree.hatenablog.com bit streamの書き込み ILAの操作(信号を取り込みます) PYNQがロジアナになりまし…

Xilinx FPGA ILAを利用した簡易ロジックアナライザ―の製作(333MHz)(bit stream作成まで)

背景 実現方法 ロジアナ化するための必要な要素 ロジアナの仕様決め RTLの作成 クロック生成モジュール メインモジュール 合成制約ファイル .xdcの準備 以下に今回作成したxdcファイル"logic_analyzer.xdc"を示します。 Vivadoでの合成作業 終わりに...(記事…

高位合成ブロックを手書きのRTLから制御する

目次 高位合成について 高位合成ブロックのインターフェースについて 高位合成ブロックのインターフェースのSIM 高位合成ブロックのインターフェースの改善 構造体 全体ブロック図 HLSブロックとRTLの結線 最後に 高位合成について xilinx社のVitis HLSではC…

PYNQしてみる。動きました!

目次 PYNQ-Z1ボードなのでpythonからPL部を動作させたい AXIバス幅を64bitへ改造する Pythonから動かしてみる ILAでAXI信号を観測する 考察 PYNQ-Z1ボードなのでpythonからPL部を動作させたい pythonからPL部のロジックを動かす事が目的ですが、ただ動かすだ…

PYNQしてみる。そして動かず

目次 PYNQ-Z1ボードなのでpythonからPL部を動作させたい DMAを作成する vivadoでの作業 Vitisでの作業 pythonから呼び出し ILAを使ってAXI信号をモニタしてみる PYNQ-Z1ボードなのでpythonからPL部を動作させたい pythonからPL部のロジックを動かす事が目的…

FPGAでOPMを鳴らしてみた(実機編)

目次 FPGAでOPMを鳴らしてみた(実機編) レシピ クロック決め DAC選定 68K→YM2151バスブリッジ回路(クロック乗り換え必要) 68K→AXIバスブリッジ回路(クロック乗り換え必要) CLK生成モジュール(68Kコアクロックとjt51用クロック生成) DAC駆動用jt51出力→I2S変…

FPGAでOPMを鳴らしてみた(シミュレーション編)

目次 FPGAでOPMを鳴らしてみた OPMドライバと制御用CPUの調達 論理シミュレーションの方針 68Kコアのバスインターフェース JT51のバスインターフェース 割込みコントローラ 68K→YM2151バスブリッジ回路 RAMモデル 68KコアへのDTACKX入力 テストドライバ 動作…

Xilinx FPGA開発環境の学習

目次 Xilinxの開発環境を学習する vivado環境を整える ボードファイルのインストール チュートリアル 書籍に従い学習 HDMI出力の利用 学習終了 出来るようになった事のまとめ 今後行いたい事 参考書 Xilinxの開発環境を学習する Xilinxの開発環境に初めて触…

FPGA買いました

目次 FPGAを買いました ブート(動作確認) network接続 端末接続 その他の設定 タイムゾーンの修正 チュートリアルやってみる FPGAを買いました PYNQ-Z1 というボードを購入しました。 これはCortex-A9x2とFPGAが統合されたZynq-7020というSoCが実装されて…