VHDLベースのUARTトランシーバ設計
概要
このリポジトリは、VHDLで書かれたシンプルかつ合成可能なUARTトランシーバ実装を提供します。送信(TX)と受信(RX)のコアを中心に、ボーレート生成やフレーミング(スタート・ストップビット)を扱う基本機能を備え、設計の明快さとポータビリティを重視しています。主にFPGAやASIC設計での組み込み利用や教育目的の学習向けで、GHDL/ModelSim/Quartusなどのツールでのシミュレーションや合成が想定されています。テストベンチも同梱されており動作確認がしやすい点が特徴です。
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 10
- ファイル数: 3
- メインの言語: VHDL
主な特徴
- VHDLで記述された合成可能なUART送受信コア(軽量・単純設計)
- ボーレート生成とフレーミング処理を含む基本機能を実装
- シミュレーション用のテストベンチを同梱、主要ツールでの検証が容易
- 汎用的な設計でベンダー依存のプリミティブを使わず移植性が高い
技術的なポイント
このプロジェクトは、ハードウェアシリアル通信の基本要素を抑えた素直なVHDL実装です。典型的な構成としては、クロック周波数と目的のボーレートからクロック分周比を算出するボーレートジェネレータ、受信側でのスタートビット検出→サンプリング→シフトレジスタ格納という受信FSM、送信側でのロード→シフト送出を行う送信FSMという構成になっています。設計はジェネリック(パラメータ)でボーレートやデータビット長、ストップビット数を変更できるように記述されている想定で、これによって様々なクロック周波数や通信設定に適用可能です。
合成性を意識した実装は、std_logicやstd_logic_vectorといった標準ライブラリを用い、ベンダー固有のIPやプリミティブに依存しないためFPGA/ASIC双方での移植が容易です。テストベンチは送受信の基本的なシナリオ(ビット列送受信、フレーミングの検証、ボーレート一致確認など)を含み、GHDLやModelSimなどでの機能検証が可能です。実運用では、ボーレート生成に関わる分周値が整数であること、クロックジッタやクロック比に依存するためタイミング制約の適切な設定(SDC等)やクロックドメイン設計が重要になります。
また、シンプル設計ゆえの拡張性が魅力です。例えば受信バッファや送信FIFO、パリティチェック、ハードウェアフロー制御(RTS/CTS)などを追加することでプロダクション用途へ拡張できます。注意点としては、軽量コアは高スループットや複雑なフロー制御を前提としていないため、大量データや複数チャネルを扱う用途では周辺回路(バッファ・DMA・割り込み制御等)の追加を検討してください。
プロジェクトの構成
主要なファイルとディレクトリ:
- LICENSE: file
- README.md: file
- src: dir
- srcディレクトリにはVHDLソース(送信、受信、ボーレート関連)とテストベンチが含まれている構成想定です。実際のファイルはリポジトリを参照してください。
まとめ
シンプルで移植性の高いVHDL製UARTコア、学習や小規模FPGAプロジェクトに最適です(約50字)。
リポジトリ情報:
- 名前: vhdl-uart
- 説明: VHDL-based UART transceiver design for FPGA
- スター数: 1
- 言語: VHDL
- URL: https://github.com/Oubaidasl/vhdl-uart
- オーナー: Oubaidasl
- アバター: https://avatars.githubusercontent.com/u/220503814?v=4
READMEの抜粋:
vhdl-uart
A simple, synthesizable UART (Universal Asynchronous Receiver/Transmitter) implementation written in VHDL. This repository provides a lightweight UART core suitable for FPGA and ASIC projects, along with testbenches for simulation.
Overview
This project implements a configurable UART transmitter and receiver in VHDL with a focus on clarity and portability. The core is written to be synthesizable with common FPGA toolchains and easy to simulate with QHDL/ModelSim/Quartus.
Key g…