Files
APS/Labs/03. Register file and memory/board files/README.md
BROsandr f8efc0bab5 brosandr.lab_03_rf (#66)
* Feat(labs/03/board):Переписывание топа

* Ref(labs/03/board/top):Уд-ие лишнего условия в we

* Repo(labs/03/board/top):Изм-кредита

* Repo(pic/03/struct):Доб-ие начального drawio

* Feat(pic/03/board/struct):Нарисовка картинки

* Feat(pic/03/board/struct):Доб-ие цветов в схему

* Ref(pic/03/board/struct):Различные улучшения

* Ref(pic/03/board/struct):Выделение wa

* Ref(pic/03/board/struct):Различные улучшения

* Ref(pic/03/board/struct):Подвижка nexys_rf_riscv

* Ref(pic/03/board/struct):Изм-ие цвета шины

* Ref(pic/03/board/struct):Утолщение шины

* Ref(pic/03/board/struct):Изм-ие цветов, выд кнопок

* Ref(pic/03/board/struct):Изм-ие цвета ra2

* Feat(pic/03/board/control):Начальный комит

* Ref(pic/03/board/control):Обрезка пикчи платы

* Ref(03/board):Выпиливание старой пикчи контроля

* Ref(03/board/md):Некоторые испр-ия

* Ref(03/board/md):Доб-ие описание остальной периф

* Ref(03/board/md):Выделеине в заголовки перефирии

* Fix(03/board/nexys_rf):Испр-ие мапинга кнопок

* Ref(pic/03/board/write_addr):Перерисовка пикчи

* Ref(pic/03/board/write_data):Перерисовка пикчи

* Ref(pic/03/board/read):Перерисовка пикчи

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

* Feat(03/board/md):Доб-ие рисунка структуры

* Ref(03/board/md):Улучшение

* Ref(03/board/nexys_rf_riscv):Уд-ие reg wd

Тк не нужно и усложняет схему

* Ref(03/board/md):Испр-ие содержимого note

* Fix(03/board):Apply suggestions from code review

Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>

* Ref(03/board/md):Замена нижние->младшие

* Ref(03/board):Ren картинок

* Ref(pic/03/board/wa_5):Crop image

* Feat(03/board):Доб-ие записи в регистр 6

* Ref(pic/03/board/struct):Вырав-ие портов rf

* Ref(03/board/md):Изм-ие подписи рис. 2

* Ref(03/board/md/control):Доб-ие обводки

* Revert "Ref(03/board/md/control):Доб-ие обводки"

This reverts commit d55735e859.

* Ref(pic/03/board/struct):Улуч-ие разрядности рег

* Ref(pic/03/board):Выделение фона у текстов

* Fix(pic/03/board/control):Испр-ие фона теста

---------

Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>
2024-03-06 17:06:38 +03:00

8.7 KiB
Raw Blame History

Проверка работы регистрового файла на ПЛИС

После того, как вы проверили на моделировании регистровый файл, вам необходимо проверить его работу на прототипе в ПЛИС.

Инструкция по реализации прототипа описана здесь.

На рис. 1 представлена схема прототипа в ПЛИС.

../../../.pic/Labs/board%20files/nexys_rf_riscv_structure.drawio.svg

Рисунок 1. Структурная схема модуля nexys_rf_riscv.

Описание используемой периферии

Периферия показана на рис. 2.

../../../.pic/Labs/board%20files/nexys_rf_riscv_control.drawio.svg

Рисунок 2. Периферия, доступная прототипу.

  • Переключатели и кнопки.

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

    1. Ввод адресов (read_addr1_i/read_addr2_i/write_addr_i) регистрового файла осуществляется через переключатели SW[14:0]. Соответствие следующее:

      • SW[ 4: 0]write_addr_i
      • SW[ 9: 5]read_addr2_i
      • SW[14:10]read_addr1_i

      Для того чтобы выставить введенные адреса на входные порты регистрового файла, необходимо нажать кнопку BTND (addr_en на рис. 2). Таким образом, происходит запоминание адресов в элемент памяти.

    2. Ввод данных (write_data_i) регистрового файла осуществляется через переключатели SW[15:0]. Таким образом, можно выставить только младшие 16 бит данных. Для записи введенных данных по адресу write_addr_i используется кнопка BTNR (we на рис. 2).

  • Светодиоды

    Светодиоды LED[14:0] отображают адреса (read_addr1_i/read_addr2_i/write_addr_i), которые выставлены в данный момент на порты регистрового файла:

    • LED[ 4: 0]write_addr_i
    • LED[ 9: 5]read_addr2_i
    • LED[14:10]read_addr1_i
  • Семисегментные индикаторы

    На левом блоке семисегментных индикаторов (индикаторы 7-4) отображется значение младших 16-ти бит порта read_data1_o, а на правом блоке семисегментных индикаторов (индикаторы 3-0) отображается значение младших 16-ти бит порта read_data2_o.

    Числа отображаются в шестнадцатеричном формате.

Выполнение операций с регистровым файлом на прототипе

Доступные операции: запись, чтение.

  • Запись

    Рассмотрим последовательность действий, которые надо осуществить для записи в регистровый файл, на примере.

    1. Запишем значение 0x1234 в регистр 5.

      1. Сразу после прошивки, как видно по негорящим светодиодам, на портах регистрового файла выставлены нулевые адреса. Нам нужно изменить адрес записи, поэтому выставим на переключателях значение 5 и нажмем кнопку BTND (см. рис. 3).

        ../../../.pic/Labs/board%20files/nexys_rf_riscv_write_addr_5.drawio.svg

        Рисунок 3. Выставление адреса 5 на порт write_addr_i регистрового файла.

        Обратите внимание: на светодиодах сразу после нажатия кнопки отображается адрес 5.

      2. Чтобы записать данные в указанный (пятый) регистр, выставим на переключателях значение 0x1234 и нажмем кнопку BTNR (см. рис. 4).

        ../../../.pic/Labs/board%20files/nexys_rf_riscv_write_data_1234.drawio.svg

        Рисунок 4. Запись 0x1234 в регистр 5.

    2. Запишем значение 0x5678 в регистр 6.

      1. Выставим на блок переключателей, отвечающих за порт записи, значение 6 и нажмем кнопку BTND (см. рис. 5).

        ../../../.pic/Labs/board%20files/nexys_rf_riscv_write_addr_6.drawio.svg

        Рисунок 5. Выставление адреса 6 на порт write_addr_i регистрового файла.

        Обратите внимание: на светодиодах сразу после нажатия кнопки отображается адрес 6.

      2. Чтобы записать данные в указанный (шестой) регистр, выставим на переключателях значение 0x5678 и нажмем кнопку BTNR (см. рис. 6).

        ../../../.pic/Labs/board%20files/nexys_rf_riscv_write_data_5678.drawio.svg

        Рисунок 6. Запись 0x5678 в регистр 6.

  • Чтение

    Рассмотрим последовательность действий, которые надо осуществить для чтения из регистрового файла, на примере. Прочитаем из регистров 5 и 6 заранее записанные значения 0x1234 и 0x5678 соответственно и выведем его на оба блока семисегментных индикаторов 7-0 и 3-0.

    Выставим значение 5 и 6 на блоки переключателей ra1 и ra2 (см. рис. 2) соответственно, и нажмем кнопку BTND, чтобы обновить адрес значением с переключателей (см. рис. 7).

    ../../../.pic/Labs/board%20files/nexys_rf_riscv_read.drawio.svg

    Рисунок 7. Чтение из регистров 5 и 6.

    Обратите внимание на то, что для чтения достаточно выставить нужный адрес на порт регистрового файла, и содержимое регистра оказывается считанным.

Note

Кнопка сброса CPU_RESETN не сбрасывает содержимое регистрового файла, т.к. сигнал сброса не заведен в модуль регистрового файла, а модуль nexys_rf_riscv самостоятельно его не сбрасывает. Для сброса можно осуществить перепрошивку ПЛИС.

Попробуйте записать информацию в нулевой регистр, затем по другим адресам. После чего считайте записанную информацию и убедитесь, что она соответствует той, которую вы записывали (с учетом особенностей регистрового файла RISC-V).