* 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>
Проверка работы регистрового файла на ПЛИС
После того, как вы проверили на моделировании регистровый файл, вам необходимо проверить его работу на прототипе в ПЛИС.
Инструкция по реализации прототипа описана здесь.
На рис. 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).