Проверка работы регистрового файла на ПЛИС
После того, как вы проверили на моделировании регистровый файл, вам необходимо проверить его работу на прототипе в ПЛИС.
Инструкция по реализации прототипа описана здесь.
На рис. 1 представлена схема прототипа в ПЛИС.
Рисунок 1. Структурная схема модуля nexys_rf_riscv
.
Описание используемой периферии
Периферия показана на рис. 2.
Рисунок 2. Периферия, доступная прототипу.
-
Переключатели и кнопки.
Для работы с регистровым файлом необходимо выставлять сигналы адресов и данных. У платы недостаточно переключателей для такого количества входов регистрового файла, поэтому адреса и данные задаются одним источником ввода:
-
Ввод адресов (
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). Таким образом, происходит запоминание адресов в элемент памяти. -
Ввод данных (
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
.-
Сразу после прошивки, как видно по негорящим светодиодам, на портах регистрового файла выставлены нулевые адреса. Нам нужно изменить адрес записи, поэтому выставим на переключателях значение
5
и нажмем кнопкуBTND
(см. рис. 3).Рисунок 3. Выставление адреса
5
на портwrite_addr_i
регистрового файла.Обратите внимание: на светодиодах сразу после нажатия кнопки отображается адрес
5
. -
Чтобы записать данные в указанный (пятый) регистр, выставим на переключателях значение
0x1234
и нажмем кнопкуBTNR
(см. рис. 4).Рисунок 4. Запись
0x1234
в регистр5
.
-
-
Запишем значение
0x5678
в регистр6
.-
Выставим на блок переключателей, отвечающих за порт записи, значение
6
и нажмем кнопкуBTND
(см. рис. 5).Рисунок 5. Выставление адреса
6
на портwrite_addr_i
регистрового файла.Обратите внимание: на светодиодах сразу после нажатия кнопки отображается адрес
6
. -
Чтобы записать данные в указанный (шестой) регистр, выставим на переключателях значение
0x5678
и нажмем кнопкуBTNR
(см. рис. 6).Рисунок 6. Запись
0x5678
в регистр6
.
-
-
-
Чтение
Рассмотрим последовательность действий, которые надо осуществить для чтения из регистрового файла, на примере. Прочитаем из регистров
5
и6
заранее записанные значения0x1234
и0x5678
соответственно и выведем его на оба блока семисегментных индикаторов 7-0 и 3-0.Выставим значение
5
и6
на блоки переключателейra1
иra2
(см. рис. 2) соответственно, и нажмем кнопкуBTND
, чтобы обновить адрес значением с переключателей (см. рис. 7).Рисунок 7. Чтение из регистров
5
и6
.Обратите внимание на то, что для чтения достаточно выставить нужный адрес на порт регистрового файла, и содержимое регистра оказывается считанным.
Note
Кнопка сброса
CPU_RESETN
не сбрасывает содержимое регистрового файла, т.к. сигнал сброса не заведен в модуль регистрового файла, а модульnexys_rf_riscv
самостоятельно его не сбрасывает. Для сброса можно осуществить перепрошивку ПЛИС.
Попробуйте записать информацию в нулевой регистр, затем по другим адресам. После чего считайте записанную информацию и убедитесь, что она соответствует той, которую вы записывали (с учетом особенностей регистрового файла RISC-V).