mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
Перенос drawio-изображений в svg-формат
This commit is contained in:
@@ -86,19 +86,19 @@ endmodule
|
||||
|
||||
Для начала, добавим на структурную схему входы и выходы модуля:
|
||||
|
||||

|
||||

|
||||
|
||||
В первую очередь, спецификация вводит понятия **запрос на чтение** и **запрос на запись**. Создадим вспомогательные провода, которые будут сигнализировать о том, что произошел **запрос на чтение** или **запрос на запись**:
|
||||
|
||||

|
||||

|
||||
|
||||
Далее, спецификация накладывает ограничение на допустимые адреса и значения. Поэтому создадим вспомогательные сигналы, сигнализирующие о том, что текущий адрес соответствует одному из регистров контроллера, а данные для записи соответствуют диапазону допустимых значений этих регистров:
|
||||
|
||||

|
||||

|
||||
|
||||
Теперь, когда подготовительные работы выполнены, начнем с реализации сброса этого контроллера. Сброс может произойти в двух случаях: когда `rst_i == 1` либо же в случае **запроса на запись** единицы по адресу `0x24`. Создадим вспомогательный провод `rst`, который будет равен единице в случае, если произойдет любое из этих событий. Этот сигнал будет сбрасывать все созданные в данном модуле регистры.
|
||||
|
||||

|
||||

|
||||
|
||||
Продолжим описание контроллера, создав первый из **архитектурных регистров** — `led_val`. Запись в этот регистр возможна только в случае выполнения трех условий:
|
||||
|
||||
@@ -108,7 +108,7 @@ endmodule
|
||||
|
||||
Создадим вспомогательный сигнал `val_en`, который будет равен единице только в случае выполнения этих трех условий:
|
||||
|
||||

|
||||

|
||||
|
||||
Теперь реализация регистра `lev_val` становится совершенно тривиальной задачей, ведь у нас есть:
|
||||
|
||||
@@ -116,11 +116,11 @@ endmodule
|
||||
* сигнал разрешения записи в регистр `val_en`;
|
||||
* сигнал данных для записи в регистр `write_data_i`(из которого мы будем брать только младшие 16 бит данных).
|
||||
|
||||

|
||||

|
||||
|
||||
Аналогичным образом реализуем еще один **архитектурный регистр** `led_mode`:
|
||||
|
||||

|
||||

|
||||
|
||||
Два этих регистра должны управлять поведением выходного сигнала `led_o` следующим образом:
|
||||
|
||||
@@ -140,7 +140,7 @@ endmodule
|
||||
* счетчик досчитал до 20 миллионов (`cntr >= 32'd20_000_000`);
|
||||
* в остальных ситуациях, счетчик инкрементирует свое значение.
|
||||
|
||||

|
||||

|
||||
|
||||
Последним этапом описания контроллера будет добавление логики управления выходным сигналом `read_data_o`.
|
||||
|
||||
@@ -154,4 +154,4 @@ endmodule
|
||||
|
||||
Таким образом, итоговая схема примет вид:
|
||||
|
||||

|
||||

|
||||
|
Reference in New Issue
Block a user