mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР13. Изменение спецификации на контроллеры uart
This commit is contained in:
@@ -473,7 +473,7 @@ endmodule
|
||||
Для того, чтобы передача данных была успешно осуществлена, приемник и передатчик на обоих концах одного провода должны договориться о параметрах передачи:
|
||||
|
||||
* её скорости (бодрейт);
|
||||
* контроля целостности данных (использование бита четности/нечетности/отсутствие контроля);
|
||||
* контроля целостности данных (использовать или нет [бит четности](https://en.wikipedia.org/wiki/Parity_bit));
|
||||
* длины стопового бита.
|
||||
|
||||
Вам будут предоставлены модули, осуществляющие прием и передачу данных по этому интерфейсу, от вас лишь требуется написать модули, осуществляющие управление предоставленными модулями.
|
||||
@@ -487,7 +487,7 @@ module uart_rx (
|
||||
output logic busy_o, // Сигнал о том, что модуль занят приемом данных
|
||||
input logic [16:0] baudrate_i, // Настройка скорости передачи данных
|
||||
input logic parity_en_i,// Настройка контроля целостности через бит четности
|
||||
input logic stopbit_i, // Настройка длины стопового бита
|
||||
input logic [1:0] stopbit_i, // Настройка длины стопового бита
|
||||
output logic [7:0] rx_data_o, // Принятые данные
|
||||
output logic rx_valid_o // Сигнал о том, что прием данных завершен
|
||||
|
||||
@@ -504,7 +504,7 @@ module uart_tx (
|
||||
output logic busy_o, // Сигнал о том, что модуль занят передачей данных
|
||||
input logic [16:0] baudrate_i, // Настройка скорости передачи данных
|
||||
input logic parity_en_i,// Настройка контроля целостности через бит четности
|
||||
input logic stopbit_i, // Настройка длины стопового бита
|
||||
input logic [1:0] stopbit_i, // Настройка длины стопового бита
|
||||
input logic [7:0] tx_data_i, // Отправляемые данные
|
||||
input logic tx_valid_i // Сигнал о старте передачи данных
|
||||
);
|
||||
@@ -544,7 +544,7 @@ module uart_rx_sb_ctrl(
|
||||
logic busy;
|
||||
logic [16:0] baudrate;
|
||||
logic parity_en;
|
||||
logic stopbit;
|
||||
logic [1:0] stopbit;
|
||||
logic [7:0] data;
|
||||
logic valid;
|
||||
|
||||
@@ -574,7 +574,7 @@ module uart_tx_sb_ctrl(
|
||||
logic busy;
|
||||
logic [16:0] baudrate;
|
||||
logic parity_en;
|
||||
logic stopbit;
|
||||
logic [1:0] stopbit;
|
||||
logic [7:0] data;
|
||||
|
||||
endmodule
|
||||
@@ -596,34 +596,38 @@ endmodule
|
||||
|
||||
В регистр `valid` модуля `uart_rx_sb_ctrl` записывается единица по положительному фронту clk_i, когда выход `rx_valid_o` равен единице. Данный регистр сбрасывается в ноль при выполнении **запроса на чтение** по адресу `0x00`, а также при получении сигнала `interrupt_return_i`. Сам регистр доступен для чтения по адресу `0x04`. Регистр `valid` подключается к выходу `interrupt_request_o`. Что позволяет узнать о пришедших данных и посредством прерывания.
|
||||
|
||||
На вход `tx_data_i` модуля `uart_tx` подаются данные из регистра `data` модуля `uart_tx_sb_ctrl`. Доступ на запись в этот регистр происходит по адресу `0x00` в моменты положительного фронта `clk_i`, когда сигнал `busy_o` равен нулю. Доступ на чтение этого регистра может осуществляться в любой момент времени.
|
||||
Доступ на запись в регистр `data` модуля `uart_tx_sb_ctrl` происходит по адресу `0x00` в моменты положительного фронта `clk_i`, когда сигнал `busy_o` равен нулю. Доступ на чтение этого регистра может осуществляться в любой момент времени.
|
||||
|
||||
На вход `tx_data_i` модуля `uart_tx` непрерывно подается младший байт входа `write_data_i`.
|
||||
|
||||
На вход `tx_valid_i` модуля `uart_tx` подается единица в момент выполнения **запроса на запись** по адресу `0x00` (при сигнале `busy` равном нулю). В остальное время на вход этого сигнала подается `0`.
|
||||
|
||||
В случае **запроса на запись** значения `1` по адресу `0x24` (адресу сброса), все регистры модуля-контроллера должны сброситься. При этом регистр `baudrate` должен принять значение `9600`, регистр `parity` должен принять значение `1`, регистр, `stopbit` должен принять значение `1`. Остальные регистры должны принять значение `0`.
|
||||
В случае **запроса на запись** значения `1` по адресу `0x24` (адресу сброса), все регистры модуля-контроллера должны сброситься. При этом регистр `baudrate` должен принять значение `9600`, регистр, `stopbit` должен принять значение `1`. Остальные регистры должны принять значение `0`.
|
||||
|
||||
Адресное пространство контроллера `uart_rx_sb_ctrl`:
|
||||
|
||||
|Адрес|Режим доступа|Допустимые значения| Функциональное назначение |
|
||||
|-----|-------------|-------------------|---------------------------------------------------------------------------------------------------------|
|
||||
|0x00 | R | [0:255] | Чтение из регистра `data`, хранящего значение принятых данных |
|
||||
|0x04 | R | [0:1] | Чтение из регистра `valid`, сообщающего о том, что есть непрочитанные данные в регистре `data` |
|
||||
|0x08 | R | [0:1] | Чтение из регистра `busy`, сообщающего о том, что модуль находится в процессе приема данных |
|
||||
|0x0C | RW | [0:131072] | Чтение/запись регистра `baudrate`, отвечающего за скорость передачи данных |
|
||||
|0x10 | RW | [0:1] | Чтение/запись регистра `parity`, отвечающего за включение отключение проверки данных через бит четности |
|
||||
|0x14 | RW | [0:1] | Чтение/запись регистра `stopbit`, отвечающего за длину стопового бита |
|
||||
|0x24 | W | 1 | Запись сигнала сброса |
|
||||
|Адрес|Режим доступа|Допустимые значения| Функциональное назначение |
|
||||
|-----|-------------|-------------------|------------------------------------------------------------------------------------------------------------|
|
||||
|0x00 | R | [0:255] | Чтение из регистра `data`, хранящего значение принятых данных |
|
||||
|0x04 | R | [0:1] | Чтение из регистра `valid`, сообщающего о том, что есть непрочитанные данные в регистре `data` |
|
||||
|0x08 | R | [0:1] | Чтение из регистра `busy`, сообщающего о том, что модуль находится в процессе приема данных |
|
||||
|0x0C | RW | [0:131072] | Чтение/запись регистра `baudrate`, отвечающего за скорость передачи данных |
|
||||
|0x10 | RW | [0:1] | Чтение/запись регистра `parity_en`, отвечающего за включение отключение проверки данных через бит четности |
|
||||
|0x14 | RW | [1:2] | Чтение/запись регистра `stopbit`, хранящего длину стопового бита |
|
||||
|0x24 | W | 1 | Запись сигнала сброса |
|
||||
|
||||
Адресное пространство контроллера `uart_tx_sb_ctrl`:
|
||||
|
||||
|Адрес|Режим доступа|Допустимые значения| Функциональное назначение |
|
||||
|-----|-------------|-------------------|---------------------------------------------------------------------------------------------------------|
|
||||
|0x00 | RW | [0:255] | Чтение и запись регистра `data`, хранящего значение отправляемых данных |
|
||||
|0x08 | R | [0:1] | Чтение из регистра `busy`, сообщающего о том, что модуль находится в процессе передачи данных |
|
||||
|0x0C | RW | [0:131072] | Чтение/запись регистра `baudrate`, отвечающего за скорость передачи данных |
|
||||
|0x10 | RW | [0:1] | Чтение/запись регистра `parity`, отвечающего за включение отключение проверки данных через бит четности |
|
||||
|0x14 | RW | [0:1] | Чтение/запись регистра `stopbit`, отвечающего за длину стопового бита |
|
||||
|0x24 | W | 1 | Запись сигнала сброса |
|
||||
|Адрес|Режим доступа|Допустимые значения| Функциональное назначение |
|
||||
|-----|-------------|-------------------|------------------------------------------------------------------------------------------------------------|
|
||||
|0x00 | RW | [0:255] | Чтение и запись регистра `data`, хранящего значение отправляемых данных |
|
||||
|0x08 | R | [0:1] | Чтение из регистра `busy`, сообщающего о том, что модуль находится в процессе передачи данных |
|
||||
|0x0C | RW | [0:131072] | Чтение/запись регистра `baudrate`, отвечающего за скорость передачи данных |
|
||||
|0x10 | RW | [0:1] | Чтение/запись регистра `parity_en`, отвечающего за включение отключение проверки данных через бит четности |
|
||||
|0x14 | RW | [1:2] | Чтение/запись регистра `stopbit`, хранящего длину стопового бита |
|
||||
|0x24 | W | 1 | Запись сигнала сброса |
|
||||
|
||||
В случае установки регистра `parity_en` в значение `1`, модуль uart_tx будет дополнять посылку битом четности (который вычисляется как исключающее ИЛИ по всем битам передаваемого байта). Модуль `uart_rx` же будет выполнять проверку этого бита с тем, что он рассчитает самостоятельно. Однако в случае появления ошибки, внешне его поведение никак не изменится (поскольку выход `err_o` данного модуля закомментирован ради простоты системы).
|
||||
|
||||
### Видеоадаптер
|
||||
|
||||
|
Reference in New Issue
Block a user