Files
APS/Labs/03. Register file and memory/board files/README.md

63 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Проверка работы регистрового файла на ПЛИС
Если вы не понимаете, что лежит в этой папке, или если надо вспомнить, как прошить ПЛИС, можно воспользоваться [`этой инструкцией`](../../../Vivado%20Basics/How%20to%20program%20an%20fpga%20board.md)
> [!NOTE]
> ## Список подключенной периферии
>
> - _Переключатели_ — установки адреса, данных.
> - `BTND` — запись
>
> ...
## Описание используемой периферии
- ### Переключатели и кнопки.
Для работы с регистровым файлом, необходимо выставлять сигналы адресов и данных.
У платы недостаточно переключателей для такого количества входов регистрового файла, поэтому адреса и данные задаются одним источником ввода:
1. Ввод **адресов** (`read_address1_i`/`read_address2_i`/`write_address_i`) регистрового файла осуществляется через переключатели `SW[14:0]`. Соответствие следующее:
- `SW[ 4: 0]``write_address_i`
- `SW[ 9: 5]``read_address2_i`
- `SW[14:10]``read_address1_i`
Для того чтобы выставить введенные адреса на входные порты регистрового файла, необходимо нажать кнопку `BTND`. Таким образом, происходит запоминание адресов в элемент памяти.
1. Ввод **данных** (`write_data_i`) регистрового файла осуществляется через переключатели `SW[15:0]`. Таким образом, можно выставить только нижние 16 бит данных. Для записи введенных данных по адресу `write_address_i` используется кнопка `BTNR`.
- ### Светодиоды
Светодиоды `LED[14:0]` отображают адреса (`read_address1_i`/`read_address2_i`/`write_address_i`), которые выставлены в данный момент на порты регистрового файла:
- `LED[ 4: 0]``write_address_i`
- `LED[ 9: 5]``read_address2_i`
- `LED[14:10]``read_address1_i`
- ### Семисегментные индикаторы
На левом блоке семисегментных индикаторов (индикаторы 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)
Запись информации по адресу А3.
![../../../.pic/Labs/board%20files/nexys_rf3.jpg](../../../.pic/Labs/board%20files/nexys_rf3.jpg)
Чтение по адресам А1 и А2.
![../../../.pic/Labs/board%20files/nexys_rf4.jpg](../../../.pic/Labs/board%20files/nexys_rf4.jpg)
Для того чтобы считать информацию по любому адресу, достаточно установить желаемый адрес на один из портов чтения и нажать на кнопку чтения.
![../../../.pic/Labs/board%20files/nexys_rf5.jpg](../../../.pic/Labs/board%20files/nexys_rf5.jpg)
Попробуйте записать информацию в нулевой регистр, затем по другим адресам, после чего считайте записанную информацию и убедитесь, что она соответствует той, которую вы записывали (с учетом особенностей регистрового файла RISC-V).