LiteX と Migen の勉強をしてみる(第1回)

Slowly start learning LiteX and Migen. 以前に、SpinalHDL というハードウェア記述言語や、オープンソース(あまり好きな言葉ではないが)の論理合成ツール Yosys、Place and Route ツール nextpnr を使って、設計した論理回路や RISC-V SoC を Lattice 社の FPGA 上で動かしてました。 SpinalHDL による SoC 設計は面白いのですが、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)を設計して繋いでみましょう。 今回はデータの内容は特に問わないのですが、前回、外部クロック同期で SPI データを受信できる… 続きを読む »

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 (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… 続きを読む »

[SpinalHDL] UART を作って FPGA で動かす(その1)

How software programmers design a UART peripheral on FPGA. ソフト屋のための SpinalHDL FPGA 設計入門の続編です。前回は SpinalHDL で PWM 回路を設計し、FPGA(TinyFPGA BX)で動かしてみました。今回はもう少し実用性と今後の発展を考えて、UART 送信回路を設計してみることにします。 ちなみに、SpinalHDL にはちゃんとした UART の設計例が載っているのですが、初めから… 続きを読む »

ソフト屋のための SpinalHDL FPGA 設計入門(その4)

Finally run the PWM LED on TinyFPGA BX. 前回までの続きです。いつまで立っても犯人の挙がらない刑事ドラマみたいになってきたので、今回は意地でも FPGA ボード上で LED をホワホワさせましょう。 前回は、PwmLed クラスを実装し、シミュレータ(Verilator + GTKwave)で回路の波形出力を確認しました。ところが、PwmLed のような論理回路を実際に FPGA 上で動かすにはそれだけではダメで、他にトップレベル(top… 続きを読む »

ソフト屋のための SpinalHDL FPGA 設計入門(その3)

Continue sleepy LED PWM project by SpinalHDL. 前回の続きです。前回までで PWM の基本ロジックが完成したので、今回は LED ホワホワルーチン、じゃなかった、ホワホワロジックを設計していきましょう。 前回までの流れ 初めての SpinalHDL: デジタル PWM を SpinalHDL で書いてみよう Verilog 生成とシミュレーション: 記述した回路をシミュレーションしてみよう 前々回に設計したブロック図を再掲します。 … 続きを読む »

ソフト屋のための SpinalHDL FPGA 設計入門(その1)

FPGA design tutorial by SpinalHDL for embedded software engineers. 先日、SpinalHDL というハードウェア記述言語を簡単に紹介しました。最終的な目標は RISC-V を使って FPGA 上に SoC を設計実装することですが、目標が高すぎるのでハードルを下げます。まずは、VexRiscv を実装しているハードウェア記述言語 SpinalHDL を(少し)勉強し、簡単な論理回路を FPGA(具体的には Ti… 続きを読む »