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

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

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

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

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

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

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

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

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

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 によるコードは非常にシンプルで明解… 続きを読む »

[SpinalHDL] 本家 UART コードを読み解く

Reading SpinalHDL original UART code to get better insight. いままで、SpinalHDL で自前の UART を書いてきましたが、今日は SpinalHDL 本家の UART コードを読んでみました。どうも私は人様の書いたコードを読むのがあまり好きでないようで、ちょっとモチベーションが湧かなかったのですが、優秀な先達技術者の設計を読むのは… 続きを読む »

[SpinalHDL] TinyFPGAを使い、自作UART + APB3で文字コード変換してみる

By adding APB3 and a state machine to my UART, convert character code on TinyFPGA BX. 前回まで、しばらく自作の UART 回路を改良(?)してきましたが、新学期も近いことですし(?)今回は以下を完成させ、自作 UART にいちおうケリをつけようと思います。 UART 受信回路にも APB3(AMBA 3 APB)… 続きを読む »

[SpinalHDL] 代入(assignment)について正しく理解する

Correct understanding of assignments in SpinalHDL. シミュレーション波形の見直し 先日、SpinalHDL で文字列送信のコードを設計しましたが、後になってシミュレーション波形を見ていて釈然としない点がありました。 以下に波形を示します。 io.payload の更新が 1クロック遅れる 最初のクロックエッジで io_payload g "H" に… 続きを読む »