IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

FPGAプログラミング大全 Xilinx編でZyboを使うとはまるところ

FPGAプログラミング大全 Xilinx編

FPGAプログラミング大全 Xilinx編

5章、6章はソフトマクロCPU MicroBlaze の解説になっています。その解説は、ArtyとBasys3向けの説明になっており、Zyboを使う場合は、適宜読み替える必要があります。Zybo用の設定はAppendixに記載されているのでそれに従えばよいです。ですが、書籍には明示的に記載されていない読み替え(実際は、読み飛ばし!)が必要でした。

書籍の手順通りに進めると下記のようなメッセージがでました。

f:id:naotoogawa:20180107173726p:plain

メッセージの一部をテキスト化しました。

[Place 30-58] IO placement is infeasible. Number of unplaced terminals (1) is greater than number of available sites (0).
The following are banks with available pins: 
 IO Group: 0 with : SioStd: LVCMOS18   VCCO = 1.8 Termination: 0  TermDir:  In   RangeId: 1  has only 0 sites available on device, but needs 1 sites.
    Term: RXD
[Place 30-374] IO placer failed to find a solution
Below is the partial placement that can be analyzed to see if any constraint modifications will make the IO placement problem easier to solve.

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                     IO Placement : Bank Stats                                                                           |
+----+-------+-------+------------------------------------------------------------------------+------------------------------------------+--------+--------+--------+-----+
| Id | Pins  | Terms |                               Standards                                |                IDelayCtrls               |  VREF  |  VCCO  |   VR   | DCI |
+----+-------+-------+------------------------------------------------------------------------+------------------------------------------+--------+--------+--------+-----+
|  0 |     0 |     0 |                                                                        |                                          |        |        |        |     |
| 13 |     0 |     0 |                                                                        |                                          |        |        |        |     |
| 34 |    50 |     1 | LVCMOS33(1)                                                            |                                          |        |  +3.30 |    YES |     |
| 35 |    50 |     5 | LVCMOS33(5)                                                            |                                          |        |  +3.30 |    YES |     |
+----+-------+-------+------------------------------------------------------------------------+------------------------------------------+--------+--------+--------+-----+
|    |   100 |     6 |                                                                        |                                          |        |        |        |     |
+----+-------+-------+------------------------------------------------------------------------+------------------------------------------+--------+--------+--------+-----+

IO Placement:
+--------+----------------------+-----------------+----------------------+----------------------+----------------------+
| BankId |             Terminal | Standard        | Site                 | Pin                  | Attributes           |
+--------+----------------------+-----------------+----------------------+----------------------+----------------------+
| 34     | RST                  | LVCMOS33        | IOB_X0Y36            | Y16                  |                      |
+--------+----------------------+-----------------+----------------------+----------------------+----------------------+
| 35     | CLK                  | LVCMOS33        | IOB_X0Y78            | L16                  |                      |
|        | LED[0]               | LVCMOS33        | IOB_X0Y54            | M14                  |                      |
|        | LED[1]               | LVCMOS33        | IOB_X0Y53            | M15                  |                      |
|        | LED[2]               | LVCMOS33        | IOB_X0Y99            | G14                  |                      |
|        | LED[3]               | LVCMOS33        | IOB_X0Y93            | D18                  |                      |
+--------+----------------------+-----------------+----------------------+----------------------+----------------------+

端子の数が合わないってどういうことなんでしょうか?

結論から言えば、Zyboでは、UARTブロックの追加をする必要がないということでした。 5章P.195に「UARTを接続」がありますが、この部分をまるっと無視する必要があります。

理由は、Appendixに「Zyboボード上のUSBシリアルインターフェースは、PSのMIOに接続されているので、PL側の回路では使用できません。(中略)JTAG経由でシリアル出力しますので、RDXやTXDなどの端子は不要です。」と説明されています。

なのでブロック図は下記のようになります。

f:id:naotoogawa:20180107174440p:plain

UARTを接続をせずに手順通りに進めるとHelloWorldがだせました。

f:id:naotoogawa:20180107174516p:plain

記念にHello FPGA Worldとしてみました。

f:id:naotoogawa:20180107174528p:plain

つまらないところで、嵌ってしまいました。