「Single Port ROM」とすることで、1ポートのROMとなります。RAMでもよいのですが、信号線が多くなるのでROMにしています。
「Port A Options」タブでは、以下のように設定を変更します。
Port A Depth: 2048
Enable Port Type: Always Enabled
Primitives Output Register: チェックOFF
「Port A Depth」で波形テーブルのデータ数を設定しています。「Enable Port Type」では「Always Enabled」にすることでイネーブル信号を不要としています。また「Primitives Output Register」をチェックOFFすることで出力にレジスタ(FF)を付けないようにしています。
また、「Create Output Products」の画面では、「Out of context per IP」を選択して、「Generate」をクリックします。「Out of context per IP」の場合、個々のIPごとに論理合成を行うので、全体の論理合成時間が短いというメリットがあります。一方、「Global」の場合、全体の論理合成時にIPを再合成するので、論理合成時間は長いが、生成ファイルが少ないという特徴があります。
これで、「Package IP」→「Files Groups」の「Merge changes from File Groups Wizard」をクリックして(図16)、「Synthesis(3)」となれば、問題ないです。
「Merge changes from File Groups Wizard」をクリックすると、「synthesis(3)」となる(図19)
「Add Sources」するときは「Add or create design sources」を選択して、「sin_gen/src/WAVE_TBL/WAVE_TBL.xci」を追加してください。また、Copy sources into IP DirectoryはチェックOFFしてください(図18)。
最後に「Package IP」→「Review and Package」の「Package IP」をクリックすることでIPが作成されます(図20)。
ダイアグラムが作り終わったら、「Validate Design」で回路のチェックを行います。つづいて、Sourcesペインで「design_1」を右クリックして、「Create HDL Wrapper...」を選択します。ラッパーを作成するときは、「Copy generated wrapper to allow user edits」を選択します。
「Project type」では、作成するプロジェクトのタイプを指定します。ここでは「RTL Project」を選択します。「Do not specify sources at this time」にもチェックONしておきます。チェックONしておくと、verilogファイルなどのソースファイルを追加する画面を省略します。あとで追加することもできるので基本的にチェックONしておきます。
制約ファイルをプロジェクトに読み込むには、「Project MANAGER」の「Add Sources」をクリックし、「Add or create constraints」を選択します。続いて、さきほどダウンロードしたZybo-Z7-Master.xdcをプロジェクトファイル(*.xpr)と同じ階層にコピーして、それを読み込みます。「Copy constraints files into project」はチェックOFFにしておきます。チェックONにすることで、プロジェクトフォルダのどこかに制約ファイルがコピーされて置かれますが、深い階層に置かれてしまって、制約ファイルの修正や確認がしづらくなるので、私はこのようにしています。「Finish」で制約ファイルが読み込まれます。
CRITICAL WARNING: [PSU-1] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 has negative value -0.050 . PS DDR interfaces might fail when entering negative DQS skew values.
CRITICAL WARNING: [PSU-2] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 has negative value -0.044 . PS DDR interfaces might fail when entering negative DQS skew values.
CRITICAL WARNING: [PSU-3] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 has negative value -0.035 . PS DDR interfaces might fail when entering negative DQS skew values.
CRITICAL WARNING: [PSU-4] Parameter : PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 has negative value -0.100 . PS DDR interfaces might fail when entering negative DQS skew values.
上位階層の作成
Sourcesペインにおいて、ダイアグラムで作成した階層「design_1」を選択し、右クリックから「Create HDL Wrapper...」を実行します。「Create HDL Wrapper...」によって、ダイアグラムで作った回路を使用するVerilogファイルが作成されます。「Options」では、「Copy generated wrapper to allow user edits 」を選択します。「Let Vivado manage wrapper and auto-update」を選択すると、自動的にラッパーが更新されるそうですが、経験的にポートが追加されないことがあったので、「Copy generated wrapper to allow user edits 」を選択します。
ビットストリームの作成
「PROGRAM AND DEBUG」の「Generate Bitstream」をクリックして、ビットストリームを作成します。論理合成と配置・配線をしていないので、「No Implementation Results Available」のダイアログが出ますが、「Yes」をクリックします。「Launch Runs」では、そのまま「OK」をクリックします。Number of jobsで使用するスレッドの数を指定できますが、デフォルトのままでいいと思います。
マイクロマウス(旧:ハーフサイズ)を始めました。学部生のころ、マイクロマウスを製作するサークルに入っていたのですが、全くわからなくて挫折してしまいました。ただ、いまならできるかなと思ったのでマイクロマウスを始めました。とりあえずの目標は4 x 4迷路の走破です。現在、設計までは終えていて、機械部品と基板を発注しているところです。ちなみに私は機械系ではなく情報系の人間なので、優しい目で見ていただければ幸いです。
コンセプト
コンセプトは「作りやすいマウス」です。このコンセプトのため、全日本マイクロマウス大会のテクニカルデータを見て、IC やモータなどのキーパーツについては一般に使われているものを選びました。また、オシロスコープがないため、電気的トラブルがないようにはんだ付けしやすい IC を選びました。あとは自分で加工する必要がないように機体を設計しました。
今後、このブログでは音楽データに対する処理結果を載せたいと思うのですが、なかなか掲載できる音楽データは見つかりません。そこで、Cambridge Music Techhologyのサイト運営者の方に「信号処理技術を紹介するためにCambridge Music Techologyのデータで処理した結果をブログにアップロードできないか」と質問してみました。返信としては、「教育目的に該当するので掲載しても大丈夫です」とのことでした。また、「アーティストとCambridge Music Technologyのクレジットを付けてください」とのことでした。返信がきたときは、かなり嬉しかったです。本当にありがとうございます。