Thomas Stoll wrote:
> Hallo Lothar, weshalb verwendest du den OLD SCHOOL Style nur noch
> ungern? Gibts da gewisse Gründe?
Ja. Gründe siehe dort:
http://www.lothar-miller.de/s9y/archives/16-Takt-im-Prozess.html
Und so ein böses Latch wie hier:
1 | process (reset,clk) begin -- Sesitivity-List unvollständig, weil "and clk'event" fehlt
|
2 | if (reset='1') then
|
3 | out <= '0';
|
4 | elsif (clk='1') then -- hier fehlt "and clk'event"
|
5 | out <= inp;
|
6 | end if;
|
7 | end process;
|
wird dir niemals mehr passieren.
Übrigens: diesen echt üblen Fehler wirst du wegen der unvollständigen
Sensitivity-List in der Simulation nicht sehen, dort sieht alles gut
aus: out ändert sich nur, wenn sich clk oder reset ändern :-o
Und weil
1 | process begin
|
2 | wait until rising_edge(clk);
|
3 | :
|
4 | end process;
|
keine solche Liste enthält, wird zwangsläufig korrekt simuliert. Zudem
gibt es keinen asynchronen Reset mehr.
>>> Reset Costs More Than You Think! <<<
sagt Xilinx dazu. Und im
Beitrag "Re: Fläche des Designs optimieren" bewahrheitet sich
das.