Janis E. schrieb:
> Hallo,
>
> ich verwende die Active HDL Version 9.3, die bei Lattice Diamond 3.2
> mitgeliefert wird.
>
> Um mein Verilog Toplevel-Modul in einem sauberen Zustand starten zu
> lassen, möchte ich den GSR nutzen
>
(http://www.latticesemi.com/~/media/Documents/UserManuals/EI/HowtouseGSRPURandTSALL.PDF?document_id=31408).
>
> Soweit ich es verstehe, kann ich also mit
>
>
1 | > module mymodule(clk);
|
2 | > input clk;
|
3 | > wire reset;
|
4 | > GSR GSR_INST (.GSR (reset));
|
5 | > always @(posedge clk or negedge reset) begin
|
6 | > if(!reset) begin
|
7 | > //reset Anweisungen
|
8 | > end
|
9 | > else begin
|
10 | > //normaler Takt
|
11 | > end
|
12 | > end
|
13 | > endmodule
|
14 | >
|
>
> den Reset Fall, der bei jedem (FPGA-) Start initiiert wird, in
> synthetisierbarer Form verwenden, richtig?
>
> Wenn ich nun eine Simulation über den Simulationsassistenten starte,
> wird zwar kein Fehler erzeugt, aber die Reset Leitung bleibt immer auf
> 'z'.
>
> Mache ich etwas falsch?
>
Ja.
Die GSR Komponente macht nicht das was man naiverweise erwartet. Es
dient nicht nicht dazu das GSR nach der Konfiguration als Signal zur
Verfügung szu stellen, sondern umgekehrt das GSR Netzwerk gezielt auch
für ein Benutzerdefiniertes Reset zu nutzen (spart Resourcen). Das ist
aber nur in Ausnahmefällen nötig, die automatische Auswahl eines
Benutzer Resets für GSR beim Mappen funktioniert ziemlich gut.
Aber der Simulator weiss davon nichts, d.h. man muss im Toplevel der
Testbench, sowohl GSR, als auch PUR instanzieren damit die Zuweisung von
Initwerten funktioniert. Ein Signal muss man nicht zuweisen, es sei denn
man möchte in der Testbench ein Reset gezielt auslösen können.
1 | PUR PUR_INST(1'b1);
|
2 | GSR GSR_INST(1'b1);
|