IanPo, case удобен только программисту. В железе он преобразуется в дешифратор а потом опять в шифратор, это всё прекрасно видно в RTL. Это не особо важно для жирной FPGA, но критично для CPLD. Правильно сказали за варианты: если case не полный (например, для 5ти битного числа следует описать все 32 варианта, так или иначе), то синтезатор начинает сходить с ума и мешает кашу.
А вот if это всего лишь атомарная логическая операция. При этом, даже сравнение вида Temp[4:0] == 5'h13 (которое в RTL показывается как сравнение) сворачивается в чипе в обычную AND функцию, которую, к слову, можно описать и самому (для вышеуказанного примера это будет Temp[4] & ~Temp[3] & ~Temp[2] & Temp[1] & Temp[0]). Если в кейсе всего 3 случая, то 3 таких if заметно выгодны, кроме организации варианта с default.
В конечном итоге, тем кто собрался всерьёз писать на xHDL я настоятельно советую изучать и цифровую схематехнику. Это позволяет описать будущую схему гораздо эффективнее.




Ответить с цитированием