Die allgemeine Faustregel in allen Büchern, die ich bisher gelesen habe, ist, dass Sie nicht blockierende Zuweisungen in immer Blöcken verwenden müssen, die von der steigenden oder fallenden Flanke der Uhr gesteuert werden. Im Gegensatz dazu müssen blockierende Zuweisungen für die kombinatorische Logikbeschreibung verwendet werden. Diese Regel macht für mich Sinn und Autoren von Beispielen folgen ihr gründlich.immer @ * blockieren mit einer einzigen nicht-blockierenden Zuordnung - gut, schlecht oder irrelevant?
Jedoch entdeckte ich das folgende Stück Verilog in einer der Produktionscode:
always @* begin
in_ready <= out_ready || ~out_valid;
end
Man beachte, daß nicht-blockierende Zuordnung <=
verwendet wird. Ich denke nicht, dass es in diesem Fall einen Unterschied macht, da es keine Mehrfachaufgaben gibt. Ich kann jedoch keine Erklärung dafür finden. Die Frage ist also - macht es keinen Unterschied, sowohl im Rahmen eines gegebenen immer Block und als Teil des größeren Designs?
kommen wird es Ihnen danken. Ja, dein Codebeispiel zeigt definitiv nicht nur eine schlechte Übung, sondern wird auch nicht so funktionieren, wie es beabsichtigt war, es sei denn, es war wirklich beabsichtigt, so zu sein, was wenig Sinn macht. Ich frage mich, was die Meinung der Downvoter zu diesem Thema war. Du hast eigentlich recht. Ich habe dasselbe als Teil einer größeren Frage von mir auf dem EE-Stapelaustausch bestätigt (electronics.stackexchange.com/questions/34287/flip-flop-vs-combinatorial-description-what-exactly-is-the-difference/). Danke für Ihre Hilfe! –
Vielen Dank für das Feedback, bekam 2 downvotes aber keine Kommentare zu sagen, warum. – Morgan