Verilog generate 構文によるパラメトリックなハードウェア設計

generate 構文の概要 Verilog における generate 構文は、ハードウェアの記述において反復的な構造や条件付きのインスタンス化を効率的に行うための機能です。この構文を用いることで、同じモジュールを多数並列に配置する場合や、パラメータに応じて回路構成を変更する場合に、コードの冗長性を削減し、保守性を向上させることができます。主に generate_for、generate_if ...

6月4日 17:51 投稿

Verilogにおける識別子の命名規則:基本識別子とエスケープ識別子

Verilog HDLにおいて、オブジェクトを参照するために割り当てられる名前を識別子と呼びます。識別子には、基本的な文字列で構成される「基本識別子」と、特殊な記法を用いる「エスケープ識別子」の2種類が存在します。 基本識別子の構文規則 基本識別子は、英字、数字、アンダースコア(_)、およびドル記号($)を組み合わせて構成されます。大文字と小文字は区別されま ...

6月1日 21:54 投稿

シフトレジスタとバレルシフタの実装

論理シフトと算術シフトの8ビットレジスタ module shift_unit_8bit ( input clock, input reset, input [2:0] operation, input [7:0] parallel_input, input serial_data, input shift_direction, output reg [7:0] parallel_output ); reg [7:0] storage_reg; always @(posedge clock or ...

6月1日 02:58 投稿

FPGAによる14ビットDDS信号発生器のVerilog実装とDAC波形出力

DDS信号発生器の基本構造 DDS(直接デジタル周波数合成)は波形データを生成する技術です。以下に14ビット解像度のコアモジュールを示します。 module dds_generator( input clk, // クロック入力 input rst_n, // リセット input [31:0] freq_ctrl, // 周波数制御 input [1:0] wave_sel, // 波形選択 input [4:0] amp ...

5月31日 19:43 投稿

ARMメモリコンパイラの調査と使用

複数のバージョンのツールを入手し、それぞれ「sram_dp_hsd_svt_mvt」と「sram_sp_hde_svt_mvt」が存在する。前者はデュアルポート型、後者はシングルポート型である。各々の「hsd」は高速、「hde」は高密度を意味し、最後の「svt_mvt」はトランジスタの種類を示す。実行ファイルを直接起動することでGUIを開くことができる。 ツール内のドキュメントを確認すると、"s ...

5月28日 18:28 投稿

Verilogを用いた4ビットALU(演算回路)の設計と実装

設計の目的 デジタル回路設計の基礎となる、算術演算および論理演算を行うALU(Arithmetic Logic Unit)を設計します。Vivadoを用いたシミュレーションおよびFPGA開発ボードへの実装を通じて、ハードウェア記述言語(Verilog HDL)による演算ロジックの構築と、7セグメントディスプレイによる結果表示の仕組みを理解します。 仕様定義 本設計では、2つの4ビット入力(A, B ...

5月27日 03:48 投稿

Design Compilerを用いたハードウェア合成の実践ガイド

ハードウェア合成の基本原理 ハードウェア記述言語(HDL)から物理回路を生成する合成処理は、主に3段階で構成される。最初にHDL記述を技術非依存のRTLネットリストに変換(変換フェーズ)、次にターゲット技術ライブラリの論理素子へマッピング(マッピングフェーズ)、最後に遅延や面積の制約条件に基づきネットリストを最適化(最適化フェーズ)する。 Verilog記述と回路 ...

5月18日 01:19 投稿

数値表現と高速算術回路のVerilog実装

1. 基礎的な数値表現 1.1 10進数と16進数の相互変換 10進整数を16進数に変換する方法は主に2つある。 方法1:10進数を2進数に変換(除2取余法)し、その2進数を下位から4ビットずつ区切り、各グループを16進数に置き換える。 方法2:10進数を直接16で割り続け、余りを下位から並べる(除16取余法)。 例:3010 → 1E16 1.2 原码・反码・補数表現 原码:最上位ビットが符 ...

5月17日 09:08 投稿