You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Labs/13. Peripheral units/README.md
+28-24Lines changed: 28 additions & 24 deletions
Original file line number
Diff line number
Diff line change
@@ -473,7 +473,7 @@ endmodule
473
473
Для того, чтобы передача данных была успешно осуществлена, приемник и передатчик на обоих концах одного провода должны договориться о параметрах передачи:
474
474
475
475
* её скорости (бодрейт);
476
-
* контроля целостности данных (использование бита четности/нечетности/отсутствие контроля);
476
+
* контроля целостности данных (использовать или нет [бит четности](https://en.wikipedia.org/wiki/Parity_bit));
477
477
* длины стопового бита.
478
478
479
479
Вам будут предоставлены модули, осуществляющие прием и передачу данных по этому интерфейсу, от вас лишь требуется написать модули, осуществляющие управление предоставленными модулями.
@@ -487,7 +487,7 @@ module uart_rx (
487
487
output logic busy_o, // Сигнал о том, что модуль занят приемом данных
488
488
input logic [16:0] baudrate_i, // Настройка скорости передачи данных
489
489
input logic parity_en_i,// Настройка контроля целостности через бит четности
490
-
input logic stopbit_i, // Настройка длины стопового бита
490
+
input logic [1:0] stopbit_i, // Настройка длины стопового бита
491
491
output logic [7:0] rx_data_o, // Принятые данные
492
492
output logic rx_valid_o // Сигнал о том, что прием данных завершен
493
493
@@ -504,7 +504,7 @@ module uart_tx (
504
504
output logic busy_o, // Сигнал о том, что модуль занят передачей данных
505
505
input logic [16:0] baudrate_i, // Настройка скорости передачи данных
506
506
input logic parity_en_i,// Настройка контроля целостности через бит четности
507
-
input logic stopbit_i, // Настройка длины стопового бита
507
+
input logic [1:0] stopbit_i, // Настройка длины стопового бита
508
508
input logic [7:0] tx_data_i, // Отправляемые данные
509
509
input logic tx_valid_i // Сигнал о старте передачи данных
510
510
);
@@ -544,7 +544,7 @@ module uart_rx_sb_ctrl(
544
544
logic busy;
545
545
logic [16:0] baudrate;
546
546
logic parity_en;
547
-
logic stopbit;
547
+
logic [1:0] stopbit;
548
548
logic [7:0] data;
549
549
logic valid;
550
550
@@ -574,7 +574,7 @@ module uart_tx_sb_ctrl(
574
574
logic busy;
575
575
logic [16:0] baudrate;
576
576
logic parity_en;
577
-
logic stopbit;
577
+
logic [1:0] stopbit;
578
578
logic [7:0] data;
579
579
580
580
endmodule
@@ -596,34 +596,38 @@ endmodule
596
596
597
597
В регистр `valid` модуля `uart_rx_sb_ctrl` записывается единица по положительному фронту clk_i, когда выход `rx_valid_o` равен единице. Данный регистр сбрасывается в ноль при выполнении **запроса на чтение** по адресу `0x00`, а также при получении сигнала `interrupt_return_i`. Сам регистр доступен для чтения по адресу `0x04`. Регистр `valid` подключается к выходу `interrupt_request_o`. Что позволяет узнать о пришедших данных и посредством прерывания.
598
598
599
-
На вход `tx_data_i` модуля `uart_tx` подаются данные из регистра `data` модуля `uart_tx_sb_ctrl`. Доступ на запись в этот регистр происходит по адресу `0x00` в моменты положительного фронта `clk_i`, когда сигнал `busy_o` равен нулю. Доступ на чтение этого регистра может осуществляться в любой момент времени.
599
+
Доступ на запись в регистр `data` модуля `uart_tx_sb_ctrl` происходит по адресу `0x00` в моменты положительного фронта `clk_i`, когда сигнал `busy_o` равен нулю. Доступ на чтение этого регистра может осуществляться в любой момент времени.
600
+
601
+
На вход `tx_data_i` модуля `uart_tx` непрерывно подается младший байт входа `write_data_i`.
600
602
601
603
На вход `tx_valid_i` модуля `uart_tx` подается единица в момент выполнения **запроса на запись** по адресу `0x00` (при сигнале `busy` равном нулю). В остальное время на вход этого сигнала подается `0`.
602
604
603
-
В случае **запроса на запись** значения `1` по адресу `0x24` (адресу сброса), все регистры модуля-контроллера должны сброситься. При этом регистр `baudrate` должен принять значение `9600`, регистр`parity` должен принять значение `1`, регистр, `stopbit` должен принять значение `1`. Остальные регистры должны принять значение `0`.
605
+
В случае **запроса на запись** значения `1` по адресу `0x24` (адресу сброса), все регистры модуля-контроллера должны сброситься. При этом регистр `baudrate` должен принять значение `9600`, регистр, `stopbit` должен принять значение `1`. Остальные регистры должны принять значение `0`.
604
606
605
607
Адресное пространство контроллера `uart_rx_sb_ctrl`:
606
608
607
-
|Адрес|Режим доступа|Допустимые значения| Функциональное назначение |
В случае установки регистра `parity_en` в значение `1`, модуль uart_tx будет дополнять посылку битом четности (который вычисляется как исключающее ИЛИ по всем битам передаваемого байта). Модуль `uart_rx` же будет выполнять проверку этого бита с тем, что он рассчитает самостоятельно. Однако в случае появления ошибки, внешне его поведение никак не изменится (поскольку выход `err_o` данного модуля закомментирован ради простоты системы).
0 commit comments