Gast
#818912
Ich bin Neuling bei den FPGAs und habe nur die grundlegenden Digitaltechnikkenntnisse aus dem Studium und dem ASIC-Sektor. Es geht mir um die grundsätzliche Beschaltung der FFs, wie sie von der Synthese anhand des Codes bewerkstelligt wird. Wie wirkt z.B. ein logischer Reset? wie wikren Initalwerte etc. Im VHDL schreibe ich z.B. folgendes (Ich habe das jetzt mal Allgemein gemacht) :
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
Das heisst, ich möchte das Register (und auch alle anderen vectoren z.B.) bei einem Reset in einem Urzustand bringen, bei einem logischen Reset (init) in einen Startzustand (das brauchen einige Schaltungen) und im normalen Modus soll das register vom input gespeist werden, während bei power save das Schaltwerk steht! power save, reset und clock müssen dazu in die liste, nicht aber init, da synchron, Stimmt das soweit? Nun die Frage: Was geschieht mit den FPGA-Registern bei einem physikalischen device_reset ? Das ist ja nicht automatisch der Reset von oben, oder ? Was haben dann die Register für Werte ? Stehen dann da die Werte drin, die ich bei der Signalgeneration signal : std_logic_vector (7 downto 0) := "01101110" z.B? Wann werden diese Initialwerte überhaupt geladen? Schon beim Hardwarereset, oder erstnachdem das FPGA aus dem Flash gealden wurde? Ich dachte bisher, daß diese Initwerte genauso wie die RAMs im Initfile des FPGAs stecken, das FPGA also keine definierten Werte hat, solange es nicht geladen ist. Jetzt zurück zur Schaltung: Abgesehen von dieser Initproblematik ist es ja wohl so, daß ich in jedem Fall irgend einen Pin brauche, den ich als Reset benutze. Wo und wann wirkt der ? Wirkt der auf den asynch clr der Register? Wie wird das dann gemacht, wenn ich ein FF per reset auf Null resetten will? Wird dann die Schaltung vom Tool negiert, so wie man das beim ASIC machen würde (also überall ein "Not" hin?) - clr geht ja nur auf Null,oder ? Oder wirkt der über einen synchronen Eingang? Da der Reset von Aussen kommt, muss man ihn ja oftmals (mehrfach) einsynchronisieren, da die Schaltungen sonst nicht 100% gesynched sein können. Macht es dann überhaupt Sinn, den als asynch-eingang zu deklarieren, zu betrachten? Wie macht das das Tool? Geht es z.B. über der Register-Load Pin? MAchen das alle Tools gleich? Meinen logischen Init von oben müsste das tool jedenfalls über einen load oder preset-Eingang verarbeiten können. Wie erfährt man in Xlinx ISE, wie das real angeschlossen wurde? Ist das voll deterministisch, oder passiert es, daß das toll bei FPGA Überfüllung Sachen anders baut, um Register zu sparen, oder was auch immer ? Kann ich am VHDL etwas verbessern, um das noch zielorientierter zu machen, oder anders, kann ich etwas weglassen, um dem tool mehr Freitheitsgrade zu geben und trotzdem dasselbe erhalten ? Fragen über Fragen ...