mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
Стилистические правки
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user