Shift Register
Часть раздела Основы путешествия по Verilog на Coddy. Урок 86 из 90.
Задание
Регистр сдвига сдвигает data слева направо на каждом фронте clk. Каждый бит перемещается на следующую позицию.
Как работает 4-битный регистр сдвига
Initial: q0=0, q1=0, q2=0, q3=0
Clock 1: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Clock 2: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2После 4 тактов clk первый входной бит достигает q3.
Интерфейс модуля
| Порт | Направление | Ширина | Описание |
|---|---|---|---|
clk | input | 1 бит | Сигнал clk |
reset | input | 1 бит | Сбросить все выходы в 0 |
d | input | 1 бит | Вход data |
q0 | output | 1 бит | Выход первого триггера |
q1 | output | 1 бит | Выход второго триггера |
q2 | output | 1 бит | Выход третьего триггера |
q3 | output | 1 бит | Выход четвертого триггера |
Ваша задача — завершить приведённый ниже модуль.
Что нужно сделать:
- При
resetустановить все выходы в 0 - На каждом восходящем фронте clk сдвигать data слева направо:
- В
q0записываетсяd - В
q1записывается oldq0 - В
q2записывается oldq1 - В
q3записывается oldq2
- В
Попробуйте сами
module shift_register (
input clk,
input reset,
input d,
output reg q0,
output reg q1,
output reg q2,
output reg q3
);
// TODO: Добавить always @(posedge clk or posedge reset)
// При сбросе: q0<=0, q1<=0, q2<=0, q3<=0
// Иначе: сдвиг данных: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog