CLIPチュートリアル パート1: VHDLコードを作成する
- 更新日2025-03-06
- 4分で読める
コンポーネントレベルIP (CLIP) をFPGAターゲットに追加するには、FPGAターゲットにコンパイルするためにIPをVHDLコードとして用意する必要があります。
このチュートリアルでは、フリップフロップを使用した16ビット加算器を使用します。
以下のVHDLコードは、2つのI16数値を取得して、その合計を1つのI16数値で返します。また、VHDLコードにはFPGAモジュールからのリセット信号およびクロックが必要です。このサンプルコードを使用する場合は、コードをテキストファイルにコピーして、ファイルをDemoClipAdder.vhdという名前で保存します。
Library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity DemoClipAdder is port ( clk : in std_logic; aReset : in std_logic; cPortA : in std_logic_vector(15 downto 0); cPortB : in std_logic_vector(15 downto 0); cAddOut : out std_logic_vector(15 downto 0) := (others => '0') ); end DemoClipAdder; architecture rtl of DemoClipAdder is attribute keep_hierarchy : string; attribute keep_hierarchy of rtl : architecture is "yes"; begin process(aReset, clk) begin if(aReset = '1') then cAddOut <= (others => '0'); elsif rising_edge(clk) then cAddOut <= std_logic_vector(signed(cPortA) + signed(cPortB)); end if; end process; end rtl;
CLIPに制約を追加する
以下のUCFコードにより、合計出力のクロックレートは少なくとも100 MHzに制約されます。このサンプルコードを使用する場合は、コードをテキストファイルにコピーして、ファイルをDemoClipAdder.ucf (Xilinx ISE) またはDemoClipAdder.xdc (Xilinx Vivado) という名前で保存します。この制約を行うには、CLIPを構成ウィザードのシンセシスファイルとしてVHDファイルと一緒にこの制約ファイルを追加します。
(Xilinx ISE)
NET "%ClipInstancePath%/cAddOut*" TNM_NET = %ClipInstanceName%AddOut;TIMESPEC TS_%ClipInstanceName%ThruAdder = TO "%ClipInstanceName%AddOut" 10 ns;
(Xilinx Vivado)
create_clock -period 10.000 -name %ClipInstanceName%Clk -waveform {0.000 5.000} -add [get_pins %ClipInstancePath%/clk]set_clock_latency -clock [get_clocks {%ClipInstanceName%Clk}] 10.0 [get_pins {%ClipInstancePath%/cAddOut[0]}]
| 前: CLIPチュートリアル: コンポーネントレベルIPをFPGAプロジェクトに追加する | 次: CLIPチュートリアル パート2: インタフェースを定義する |