Beschränken der Reset-Linie

Ich verwende Quartus II, um mein Verilog-Design zu kompilieren, und ich arbeite daran, meine Signale richtig einzuschränken.

Ich weiß, wie man Uhren einschränkt, zum Beispiel:

create_clock -name clk_i -period "157 MHz" [get_ports clk_i]

Ich weiß auch, wie man Eingangssignale relativ zu einer Uhr einschränkt, zum Beispiel:

set_input_delay -clock clk_i 0 [get_ports data_i*]

Ich weiß jedoch nicht, wie die (asynchrone) Reset-Leitung eingeschränkt werden sollte. Wie werden Reset-Leitungen eingeschränkt?

Antworten (1)

Normalerweise synchronisiere ich meinen asynchronen Reset über eine Verzögerungsleitung von einigen Flipflops (verlasse mich darauf, dass die FPGA-Konfiguration sie gelöscht hat) und verwende nur diesen synchronisierten Reset (auch wenn ich ihn als asynchronen Reset verwende).

In Xilinx-Land können die Tools das Timing von der in der Verzögerungsleitung verwendeten Uhr bis zum Reset-Eingang (entweder synchron oder asynchron) Ihrer Flipflops verfolgen, sodass keine explizite Timing-Einschränkung erforderlich ist. Ich werde überrascht sein, wenn Quartus nicht dasselbe tun kann.

Ich würde nicht empfehlen, zu versuchen, einen wirklich asynchronen Reset über den Chip zu verteilen.

Wenn Sie dies tun, haben Sie eine kleine Chance, dass die Freigabe des asynchronen Resets sehr nahe an der Taktflanke liegt. Aufgrund der Verzögerung über den Chip werden einige Flipflops es an einer Taktflanke sehen, und andere werden es einfach verpassen und es an der nächsten Taktflanke sehen. Im schlimmsten Fall bilden diese Flipflops (zum Beispiel) einen Teil eines Zustandsregisters und "ein Teil" der Zustandsmaschine wird vor einem anderen Teil aus dem Reset herauskommen! Schlechte Dinge neigen dazu, die Folge zu sein. Aber nur gelegentlich, was es zu einem Albtraum macht, es herauszufinden!