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

6.9 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.

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

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

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

  • Запись

    Рассмотрим последовательность действий, необходимых для осуществления записи в регистровый файл на примере. Запишем значение 0x1234 в регистр 5.

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

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

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

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

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

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

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

  • Чтение

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

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

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

    Рисунок 5. Чтение из регистра 5.

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

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