FPGA」カテゴリーアーカイブ

PolarFire SoC Icicle Kit ファーストインプレッション

Received a PolarFire SoC Icicle Kit today. かねてからリリースを待ちわびていた、Microsemi(現 Microchip)の PolarFire SoC Icicle Kit が届きました。元々は 9月中旬の出荷を目指していたようですが、FPGA のフラッシュプログラマの問題が見つかり、一月弱ほど予定がスリップしたようです。   TL; DR PolarFire SoC Icicle Kit の詳細については後述しますが、これに興味… 続きを読む »

TinyFPGA BX の SPI ROM 上で RISC-V のプログラムを直接実行する

Running code on SPI ROM of TinyFPGA BX with VexRiscv (small) Briey SoC, or XiP (execute-in-place) in short. 前回は、VexRiscv 上の RISC-V SoC に AXI4 のバスマスタを追加してみましたが、今回はその逆に、AXI4 のバススレーブを追加してみました。それだけでは面白くないので、TinyFPGA BX 上の SPI ROM にメモリマップでアクセスでき… 続きを読む »

AXI4 バスマスタを Briey SoC に追加してみた

Added an AXI4 bus master (DMA) to Briey, RISC-V SoC written by SpinalHDL. 久しぶりの投稿です。先日、TinyFPGA BX で、AXI4 クロスバ付きの VexRiscv SoC を動かしてみました。今回は重い腰を上げて、この AXI4 クロスバに新しいバスマスタ(つまり DMA)を設計して繋いでみましょう。 今回はデータの内容は特に問わないのですが、前回、外部クロック同期で SPI データを受信できる… 続きを読む »

TinyFPGA BX で、AXI4 クロスバ付きの VexRiscv SoC を動かしてみた

Running VexRiscv SoC with AXI4 crossbar on TinyFPGA BX. 前回まで、VexRiscv プロジェクトで公開されている Murax という SoC で遊んで来ました。Murax は非常に小型の SoC 実装例(デモ)となっていて、小さな論理規模で実装できるのがポイントです。しかしながら、私は今後、この SoC に CPU 以外のバスマスタ(DMA)を追加する実験をしたいと思っており、この Murax が持っているバス Mura… 続きを読む »

VexRiscv SoC Murax に、SPI ペリフェラルを追加してみた

Added SPI Peripheral functionality to Murax (free RISC-V SoC). 以前、TinyFPGA BX 上で動作する VexRiscv SoC Murax に PWM 機能を追加してみましたが、今回はもう少し実用的なペリフェラルとして、SPI ペリフェラルインターフェイスを追加してみました。目的の一つとして、クロックドメインをまたぐ設計を少し勉強してみたい、ということがあります。 SPI ペリフェラル機能の設計自身も、実は私… 続きを読む »

[SpinalHDL] FPGA に JTAG 機能を載せて Python から制御する

Deployed JTAG functionality of SpinalHDL on TinyFPGA BX and controlled it by Python. いままで、TinyFPGA BX に PWM 機能を載せてみたり、RISC-V を JTAG デバッグしてみたりしてきましが、今回は RISC-V を使わずに JTAG 機能だけを評価してみることにしました。JTAG というとマイコンデバッグのイメージが強いですが、本来、デジタル回路を外部から観測したり制御し… 続きを読む »

VexRiscv とメモリ間のバス信号を覗いてみる

Investigating bus transactions between VexRiscv core and memory. FPGA 用の RISC-V 実装である VexRiscv と、それを使った Murax SoC の素晴らしい点の一つに、標準で JTAG インターフェイスと、OpenOCD によるデバッグ機能が用意されていることが挙げられます。もちろん実デバイス(FPGA)でも JTAG デバッグができますが、それだけでなくシミュレーション上でも同様のことができ… 続きを読む »

VexRiscv (RISC-V) の Murax SoC に自作ペリフェラルを追加してみた

Added a PWM output control to VexRiscv (RISC-V) Murax Soc. 先日、VexRiscv Murax SoC を TinyFPGA-BX で動かす修正を御紹介しましたが、今回は自分で書いた小さな小さなペリフェラル(PWM 出力)を APB3 バス経由で Murax SoC に繋いでみました。 SpinalHDL によるコードは非常にシンプルで明解です。じゃん。 package flogics.vexriscv.pwm imp… 続きを読む »

TinyFPGA-BX 上の VexRiscv を FT232R チップで gdb する

Debugging VexRiscv, on TinyFPGA-BX, by OpenOCD + FT232R + GDB. 嬉しかったので、思わず欲張ってしまい、ブログのタイトルにキーワードを 4つも納めてしまいました。 先日、TinyFPGA-BX 上に RISC-V のソフトコアプロセッサ VexRiscv を載せて動かすところまで御紹介しましたが、今日は OpenOCD + gdb で VexRiscv 上のコードをデバッグしてみることにしました。Dolu1990 (… 続きを読む »

[SpinalHDL] VexRiscv を TinyFPGA-BX で動かしてみる

Just ran softcore processor VexRiscv (RISC-V of course) on TinyFPGA-BX without XIP functionality. 相変わらずの SpinalHDL 日和です。 🙂 今日は、RISC-V ソフトコアプロセッサ実装で有名な VexRiscv を、これまた有名な FPGA ボード TinyFPGA-BX で動かしてみました。技術的には難しくないと思うのですが、SpinalHDL を知らないと、ちょっと… 続きを読む »