読者です 読者をやめる 読者になる 読者になる

guruguru123’s diary

かなり雑な作業日記です。

ad9851駆動回路の追加

RAMコントローラが問題なく動いたため、AD9851の駆動用の回路を追加していく。ベースは以前作成したZPUinoに追加した回路。AD9851用の書き込みクロックであるW_CLKは、最小パルス幅が3.5nsであり、以前作成したものでは、カウンタを作ってそれでクロックの代わりにしていた。今回はDCMを用いてW_CLKの生成を行いたいと考えた。

f:id:guruguru123:20170418181830p:plain

さっそくcore-generatorでDCMを作成しくみこんでみた。生成するクロックの周波数は25MHz。論理合成を行ったところ次のようなエラーが出た。

ERROR:Xst:2035 - Port <clk> has illegal connections. This port is connected to an input buffer and other components.

バッファとコンポーネントが並列につながっているからダメらしい。正直この辺は勉強不足で知識が足りないので、改善策を探していきたい。とりあえず並列にならないようにバッファを入れてみた。

IBUFG_inst : IBUFG
port map (
O => clk_i, -- 1-bit output: Clock buffer output
I => clk -- 1-bit input: Clock buffer input
);

そうすると論理合成は通過した、がTranslateで引っかかった。

ERROR:NgdBuild:770 - IBUFG 'IBUFG_inst' and IBUFG 'clk_25/clkin1_buf' on net
'clk_i' are lined up in series. Buffers of the same direction cannot be
placed in series.
ERROR:NgdBuild:462 - input pad net 'clk_i' drives multiple buffers:

複数のバッファが直列に接続されているとこれが出るらしい。そういえばDCMでバッファ入れるとか入れないとかいう項目が会った気がする。今回はここまでにして、次回はこれの改善からはじめる。