デジタル集積回路の設計課題:順序論理とメモリの実装例
1. 基礎概念問題
1.1 ミーリ状態機械とムーア状態機械の特性と相互関係について説明してください。
ムーア状態機械:出力が現在の状態のみに依存する状態機械。
ミーリ状態機械:出力が現在の状態だけでなく入力にも依存する状態機械。
ミーリ機械とムーア機械は相互に変換可能です。任意のミーリ機械に対して等価なムーア機械が存在し、そのムーア機械の状態数は対応 ...
6月18日 23:06 投稿
デジタル回路における分周クロックのエッジ検出手法
システムの基幹クロックを分周して利用する際、その分周されたクロック信号の特定のタイミング、特に立ち上がりエッジを正確に識別し、それをフラグ信号として利用する必要が生じることがあります。このフラグ信号は、後続のデジタル回路の動作を分周クロックに同期させるために不可欠です。分周比が設計時に既知である場合でも、設計の柔軟性を高め、将来的な分周比の変更 ...
6月18日 00:03 投稿
Verilogで実装するエッジ検出回路:HDLbitsの3つの課題を用いた設計原理と実践的最適化
エッジ検出回路は、デジタルICおよびFPGA設計における基本かつ重要な構成要素であり、同期制御、イベント捕捉、状態遷移トリガなど、多様な用途で不可欠です。本稿では、HDLbits平台上の代表的な3つの課題(edgedetect、edgedetect2、dualedge)を軸に、エッジ検出の論理的根拠、合成可能な実装手法、および実務で直面する課題への対応策を体系的に解説します。
1. 単一エ ...
6月7日 16:58 投稿
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 投稿