dlaczego przy module piszesz od razu co jest input i output? na uczelni pisalismy najpierw wszystkie wejscia wyjscia razem w nwiasie a potem dopiero co jest input i co output i reg
Tak się robiło wg standardu z 1995. Od 2001 jest możliwy bardziej zwarty sposób jak na tej stronie, bez pisania tego samego po kilka razy. Więcej na temat "nowości" tutaj http://www.asic-world.com/verilog/verilog2k1.html#Port_Declaration
Dlatego lepiej tego nie używać. Jak już koniecznie chcemy mieć wartość początkową to lepiej byłoby zrobić reset, zwłaszcza, że często układy PLD mają możliwość wyboru w jakim stanie są aktywne + przerzutniki i tak mają asynchroniczne wejścia resetujące.
dzieki za przyklady
OdpowiedzUsuńdlaczego przy module piszesz od razu co jest input i output? na uczelni pisalismy najpierw wszystkie wejscia wyjscia razem w nwiasie a potem dopiero co jest input i co output i reg
OdpowiedzUsuńTak się robiło wg standardu z 1995. Od 2001 jest możliwy bardziej zwarty sposób jak na tej stronie, bez pisania tego samego po kilka razy. Więcej na temat "nowości" tutaj http://www.asic-world.com/verilog/verilog2k1.html#Port_Declaration
OdpowiedzUsuńZ tym initialem to bym był ostrożny. Może w tym konkretnym przypadku [chip/środowisko] tak jest, ale ten blok niekoniecznie musi być syntezowalny.
OdpowiedzUsuńNatomiast zdecydowanie przydaje się do symulacji.
pzdr.
Sprawdziłem na Spartanie 3 i XC9572XL - działa :) a gdzieś czytałem, że initial wcale nie jest syntezowalny. Bywa różnie i zawsze mnie to irytuje.
OdpowiedzUsuńDlatego lepiej tego nie używać. Jak już koniecznie chcemy mieć wartość początkową to lepiej byłoby zrobić reset, zwłaszcza, że często układy PLD mają możliwość wyboru w jakim stanie są aktywne + przerzutniki i tak mają asynchroniczne wejścia resetujące.
OdpowiedzUsuńpzdr.
a Block RAM jak zainicjalizować bez initial i bez $readmemh lub $readmemb?
OdpowiedzUsuńWidzisz, dobre pytanie, będę musiał zgłębić ten temat ;) Jak się dowiem - dam znać ;)
OdpowiedzUsuń