Ich stehe zur Zeit auf dem Schlauch und bekomme einfach das Timing
Constrain für einen einfachen SPI Core nicht gebacken:
Mein Test-Design:
Einen Takteingang (clk_in) mit 50MHz. Gefolgt von einer PLL die daraus
einen clk_cpu von 90MHz erzeugt. Im SOPC-Builder ein Nios und ein SPI
IP-Core. Der Core ist so eingestellt dass der SPI-Takt 15MHz beträgt.
Daher: Der SPI-Takt ist 1/6 des CPU-Taktes (=IP-Core Takt). Ich benutzen
am SPI nur die Ausgänge. MISO ist unbenutzt (konstant Low) und benötigt
daher kein Constraining.
Nun werden alle SPI-Signale (SPI-Takt, MOSI und CS) vom CPU-Takt
abgeleitet. Alle Ausgänge kommen aus einem FF das vom CPU-Takt getaktet
wird. Daher: Der SPI-Takt ist nicht der Takt für das MOSI und daher
nicht der Taktgeber für das Schieberegister.
Im Anhang ist nun mein Grundlegendes sdc-File. Daraus wird näheres
ersichtlich. Kann mit da jemand helfen?
Und hier noch die Reportaufrufe dazu:
1 | report_timing \
|
2 | -from_clock clk_cpu \
|
3 | -to_clock clk_spi_out \
|
4 | -setup \
|
5 | -npaths 20 -detail path_and_clock \
|
6 | -panel_name {Display | SPI Timing | setup}
|
7 |
|
8 | report_timing \
|
9 | -from_clock clk_cpu \
|
10 | -to_clock clk_spi_out \
|
11 | -hold \
|
12 | -npaths 20 -detail path_and_clock \
|
13 | -panel_name {Display | SPI Timing | hold}
|