Ref(03/board/md):Переписывание

This commit is contained in:
alexkharl
2024-02-27 16:00:55 +03:00
parent ef6c66eb40
commit 92ce029427

View File

@@ -12,51 +12,70 @@
## Описание используемой периферии ## Описание используемой периферии
Периферия показана на _рис. 2_.
![../../../.pic/Labs/board%20files/nexys_rf_riscv_control.drawio.svg](../../../.pic/Labs/board%20files/nexys_rf_riscv_control.drawio.svg)
_Рисунок 2. Описание периферии, доступной прототипу, в виде рисунка._
- ### Переключатели и кнопки. - ### Переключатели и кнопки.
Для работы с регистровым файлом, необходимо выставлять сигналы адресов и данных. Для работы с регистровым файлом, необходимо выставлять сигналы адресов и данных.
У платы недостаточно переключателей для такого количества входов регистрового файла, поэтому адреса и данные задаются одним источником ввода: У платы недостаточно переключателей для такого количества входов регистрового файла, поэтому адреса и данные задаются одним источником ввода:
1. Ввод **адресов** (`read_address1_i`/`read_address2_i`/`write_address_i`) регистрового файла осуществляется через переключатели `SW[14:0]`. Соответствие следующее: 1. Ввод **адресов** (`read_addr1_i`/`read_addr2_i`/`write_addr_i`) регистрового файла осуществляется через переключатели `SW[14:0]`. Соответствие следующее:
- `SW[ 4: 0]``write_address_i` - `SW[ 4: 0]``write_addr_i`
- `SW[ 9: 5]``read_address2_i` - `SW[ 9: 5]``read_addr2_i`
- `SW[14:10]``read_address1_i` - `SW[14:10]``read_addr1_i`
Для того чтобы выставить введенные адреса на входные порты регистрового файла, необходимо нажать кнопку `BTND`. Таким образом, происходит запоминание адресов в элемент памяти. Для того чтобы выставить введенные адреса на входные порты регистрового файла, необходимо нажать кнопку `BTND` (`addr_en` на _рис. 2_). Таким образом, происходит запоминание адресов в элемент памяти.
1. Ввод **данных** (`write_data_i`) регистрового файла осуществляется через переключатели `SW[15:0]`. Таким образом, можно выставить только нижние 16 бит данных. Для записи введенных данных по адресу `write_address_i` используется кнопка `BTNR`. 1. Ввод **данных** (`write_data_i`) регистрового файла осуществляется через переключатели `SW[15:0]`. Таким образом, можно выставить только нижние 16 бит данных. Для записи введенных данных по адресу `write_addr_i` используется кнопка `BTNR` (`we` на _рис. 2_).
- ### Светодиоды - ### Светодиоды
Светодиоды `LED[14:0]` отображают адреса (`read_address1_i`/`read_address2_i`/`write_address_i`), которые выставлены в данный момент на порты регистрового файла: Светодиоды `LED[14:0]` отображают адреса (`read_addr1_i`/`read_addr2_i`/`write_addr_i`), которые выставлены в данный момент на порты регистрового файла:
- `LED[ 4: 0]``write_address_i` - `LED[ 4: 0]``write_addr_i`
- `LED[ 9: 5]``read_address2_i` - `LED[ 9: 5]``read_addr2_i`
- `LED[14:10]``read_address1_i` - `LED[14:10]``read_addr1_i`
- ### Семисегментные индикаторы - ### Семисегментные индикаторы
На левом блоке семисегментных индикаторов (индикаторы 7-4) отображаются нижние 16 бит порта `read_data1_o`, а не правом блоке семисегментных индикаторов (индикаторы 3-0) отображаются нижние 16 бит порта `read_data2_o`. На левом блоке семисегментных индикаторов (индикаторы 7-4) отображаются нижние 16 бит порта `read_data1_o`, а не правом блоке семисегментных индикаторов (индикаторы 3-0) отображаются нижние 16 бит порта `read_data2_o`.
Управление регистровым файлом. Числа отображаются в **шестнадцатеричном** формате.
![../../../.pic/Labs/board%20files/nexys_rf_riscv_control.drawio.svg](../../../.pic/Labs/board%20files/nexys_rf_riscv_control.drawio.svg) ## Выполнение операций с регистровым файлом на прототипе
Ниже показан пример последовательности действий для работы с платой. Доступные операции: запись, чтение.
Установка значения `5'b10101` на входы `A1`,`A2`,`A3`. - ### Запись
![../../../.pic/Labs/board%20files/nexys_rf2.jpg](../../../.pic/Labs/board%20files/nexys_rf2.jpg) Рассмотрим последовательность действий, необходимых для осуществления записи в регистровый файл на примере. Запишем значение 0x1234 в регистр 5.
Запись информации по адресу А3. 1. Сразу после прошивки, как видно по не горящим светодиодам, на портах регистрового файла выставлены нулевые адреса. Нам нужно изменить адрес записи, поэтому выставим на переключателях значение 5 и нажмем кнопку `BTND` (смотри _рис. 3_).
![../../../.pic/Labs/board%20files/nexys_rf3.jpg](../../../.pic/Labs/board%20files/nexys_rf3.jpg) ![../../../.pic/Labs/board%20files/nexys_rf_riscv_write_addr.drawio.svg](../../../.pic/Labs/board%20files/nexys_rf_riscv_write_addr.drawio.svg)
Чтение по адресам А1 и А2. _Рисунок 3. Выставление адреса 5 на порт `write_addr_i` регистрового файла._
![../../../.pic/Labs/board%20files/nexys_rf4.jpg](../../../.pic/Labs/board%20files/nexys_rf4.jpg) Обратите внимание: на светодиодах сразу после нажатия кнопки отображается адрес 5.
1. Чтобы записать данные в регистр выставим на переключателях значение 0x1234 и нажмем кнопку `BTNR` (смотри _рис. 4_).
Для того чтобы считать информацию по любому адресу, достаточно установить желаемый адрес на один из портов чтения и нажать на кнопку чтения. ![../../../.pic/Labs/board%20files/nexys_rf_riscv_write_data.drawio.svg](../../../.pic/Labs/board%20files/nexys_rf_riscv_write_data.drawio.svg)
![../../../.pic/Labs/board%20files/nexys_rf5.jpg](../../../.pic/Labs/board%20files/nexys_rf5.jpg) _Рисунок 4. Запись 0x1234 в регистр 5._
Попробуйте записать информацию в нулевой регистр, затем по другим адресам, после чего считайте записанную информацию и убедитесь, что она соответствует той, которую вы записывали (с учетом особенностей регистрового файла RISC-V). - ### Чтение
Рассмотрим последовательность действий, необходимых для осуществления чтения из регистрового файла на примере. Прочитаем из регистра 5 заранее записанное значение 0x1234 и выведем его на оба блока семисегментных индикаторов 7-0 и 3-0.
Выставим значение 5 на блоки переключателей `ra1` и `ra2` (см. _рис. 2_), и нажмем кнопку `BTND`, чтобы обновить адрес значением с переключателей (см. _рис. 5_).
![../../../.pic/Labs/board%20files/nexys_rf_riscv_read.drawio.svg](../../../.pic/Labs/board%20files/nexys_rf_riscv_read.drawio.svg)
_Рисунок 5. Чтение из регистра 5._
Обратите внимание на то, что для чтения достаточно выставить нужный адрес на порт регистрового файла, и содержимое регистра оказывается считанным.
Попробуйте записать информацию в нулевой регистр, затем по другим адресам. После чего считайте записанную информацию и убедитесь, что она соответствует той, которую вы записывали (с учетом особенностей регистрового файла RISC-V).