Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Немного теории к 2 Лабе

.txt
Скачиваний:
0
Добавлен:
28.12.2023
Размер:
3.17 Кб
Скачать
??????????Вопросы:
Что значит недерменированный результат при обращении к адресу
Что такое однопортовая память
Если у нас слишком много строк в добавляемом файле, можно ли как-то не прописывть все при конкатенации
Что значит тернарный условный оператор
Как запихнуть в управляющий сигнал значение адреса ячейки

Может быть полезным:
Для адресации такой памяти потребуется адрес с разрядностью ceil(log2(16)) = 4 бита (ceil — операция округления вверх). Это однопортовая память.
Конкатенация - склейка малоразрядных сигналов в один или наоборот(assign имяМногоразрядногоСигнала = { имяМалоразрядногоСигнала1, имяМалоразрядногоСигнала2 [m:n] (если нужно указать какие из разрядов мы хотим поместить), итд };)
Дублирование сигнала конкатенацией (assign ..... {a, {число_повторений{повторяемый_сигнал}} ,b};)

1) модуль памяти инструкций
1.1) создать память(массив регистров) разрядность8 бит кол-во1024 ячейки:
logic[7:0] memory№ [0:1023]
1.2) добавить в проект файл с содержимым памяти инструкций(ссылка на гитхабе в конце, где ход заданий)
initial begin
$readmemh("program.txt", имя памяти В которую добавляем)
1.3) добавить выход read_data_o , вход addr_i и оператор конкинентации(в каком виде его добавлять ХЗ??????)
1.4) при привышении 1020 адреса должно возвращать 0 (это делается при помощи мультиплексора)
Y- выходной сигнал мультиплексора, S - управляющий сигнал, D1 и D0 - входные сигналы мультиплексора
Тернарый условный оператор
logic Y;
assign Y = S==1 ? D1 : D0;
Блок always
logic Y;
always_comb begin // 1) Используется always_comb, т.к. мы хотим подключить
// выход мультиплексора к проводу
if(S == ?) begin // 2) if-else может находиться только внутри блока always.
Y <= D1; // 3) Используется оператор неблокирующего присваивания.
end
else begin
Y <= D0;
end
end
2) модуль памяти данных
2.1) ВОООБЩЕ НЕ ПОНЯТНО