Стилистические правки

This commit is contained in:
Andrei Solodovnikov
2024-07-01 16:58:11 +03:00
parent 6b12170f4a
commit 06dc07c03f
9 changed files with 26 additions and 30 deletions

View File

@@ -338,35 +338,31 @@ _Таблица 5. Описание портов дешифратора кома
Рассмотрим пример ниже. Внутри конструкции `always_comb`, перед конструкцией `case` указываются значения по-умолчанию. Благодаря этому пропадает необходимость указывать все сигналы внутри каждого обработчика `case`, достаточно указать только те, что имеют значение отличное от значения по-умолчанию. Представленный пример реализует комбинационную схему, которая при `cucumber == 4'b1100` будет выставлять сигнал `c == 1'b0`, то есть отличное, от значения по-умолчанию. Сигнал `a` никак не меняется, поэтому он не указан в соответствующем обработчике. Если сигнал `size == 1'b0`, то `b` будет равен 1, а `d` равен 0. Если сигнал `size == 1'b1`, то наоборот `b` будет равен 0, а `d` равен 1.
```SystemVerilog
// ... какие-то еще дефайны
module tequila (
input logic [3:0] cucumber;
input logic size;
module example (
input logic [3:0] control_signal;
input logic sub_signal;
output logic a, b, c, d;
);
parameter logic [3:0] PICKLE = 4'b1100;
parameter logic [3:0] SOME_PARAM = 4'b1100;
always_comb begin
a = 1'b0; // значения по-умолчанию
b = 1'b0; // обратите внимание, что в блоке
c = 1'b1; // always_comb используется оператор
d = 1'b0; // блокирующего присваивания
case(cucumber)
case(control_signal)
// ... какие-то еще комбинации
PICKLE: begin // если на cucumber значение PICKLE
SOME_PARAM: begin // если на control_signal значение SOME_PARAM
c = 1'b0;
case (size)
1'b0: b = 1'b1; // если на size значение 1'b0
1'b1: d = 1'b1; // если на size значение 1'b1
case (sub_signal)
1'b0: b = 1'b1; // если на sub_signal значение 1'b0
1'b1: d = 1'b1; // если на sub_signal значение 1'b1
endcase
end
// ... какие-то еще обработчики
// ... какие-то еще обработчики
default: begin // так как описаны не все значения
a = 1'b0; // cucumber, то чтобы case не было
b = 1'b0; // защелки (latch) на выходе
c = 1'b1; // нужно обязательно добавлять
a = 1'b0; // control_signal, то чтобы результатом
b = 1'b0; // case не было защелки (latch),
c = 1'b1; // на выходе нужно обязательно добавлять
d = 1'b0; // default
end
endcase