>>前プロジェクト

codexを使って,既存のGowinプロジェクトを元に,仕様の違うデザインを生成させます.

元デザインはモジュールを2つ使い,ドットマトリクス64列×16行に文字をスクロール表示するものです.
改変デザインはモジュールを4つ使い,ドットマトリクス128列×16行に文字をスクロール表示するものです.

元々,codexを使って生成したデザインであり,REAMDEもあります.
「これをベースとして使え」と指示し,次のように改変内容も指示します.

このフォルダに含まれるプロジェクトはマトリクスLEDモジュールを2つ使ったものです.2つ合わせて16行x64列の表示エリアを持っています.
このプロジェクトをもとに,マトリクスLEDモジュールを4つ使うものに改変してください.表示エリアは16行×128列になります.
行の点灯状態を選択する信号SIN1は,1回の表示で同じ16ビット情報を4回繰り返します.
信号SIN2はLSBから送信し,ビットの並びは,{[127:112],[95:80],[63:48],[31:16]}です
信号SIN3はLSBから送信し,ビットの並びは,{[111:96],[79:64],[47:32],[15:0]}です

codexはSVコードを読んで,ベース・プロジェクトの仕様を読み取ったようです.

16x64向けの既存実装を確認して、どの信号生成ロジックを16x128向けに広げるべきかを先に特定します。まず関連ファイルと現在の SIN1 SIN2 SIN3 周りの実装を読みます。

表示データの並べ替えとシフト長が src/matrix_led_top.v にまとまっていそうです。次に、その周辺を絞って読んで16x64前提の箇所を洗い出します。
省略

●リソースが超過したので修正させる

生成された改変済みSVコードをGowin EDAで合成したところ,LUTが33K程度になってしまい,Tang Primer 25K向けのビットストリームを生成できませんでした.

次の通り codexに指示をして,デザインを変更させます.

現在の設計内容では,LUTを使い過ぎるので,別なリソースを使うように変更してください

codex は次の通り,デザインを変更するようです.

16x128 化した設計を、LUT を食いやすい「全列ぶんの文字描画を毎スキャン組み合わせ生成する方式」から、16x128 の表示バッファを保持してスクロール時だけ 1 列ずつ更新する方式へ変えました。これで重い処理の中心が LUT から FF 側へ移り、走査時はバッファ内容を SIN2/SIN3 の 64bit シフト語へ組み替えるだけになります。

出力されたSVコードをGowin EDAで合成したところ,LUTの消費量は 904/23040 になりました.

コメントを残す