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

2 Семестр / Отчеты / 17 варик / ЭИС лаб 8данные_удалены

.pdf
Скачиваний:
20
Добавлен:
07.06.2022
Размер:
1.99 Mб
Скачать

logic reset_s; logic [1:0] code; logic [5:0] data; logic [4:0] cnt;

always_ff@(posedge C_ext, posedge reset_s) if (reset_s) begin

reset_s <= 0; code <= 0; data <= 0; cnt <= 0;

end else begin

reset_s <= R; code <= Z; data <= D;

cnt <= cnt + 1;

end

logic [4:0] result; always_ff@(code, data)

case(code)

0: result <= cnt; 1:

case(data[4:0]) 5'b11110: result <= 0; 5'b01001: result <= 1; 5'b10100: result <= 2; 5'b10101: result <= 3; 5'b01010: result <= 4; 5'b01011: result <= 5; 5'b01110: result <= 6; 5'b01111: result <= 7; 5'b10010: result <= 8; 5'b10011: result <= 9; 5'b10110: result <= 10; 5'b10111: result <= 11; 5'b11010: result <= 12; 5'b11011: result <= 13; 5'b11100: result <= 14; 5'b11101: result <= 15; default: result <= 16; endcase

2: result <= {(~data[5:3]) & data[2:0], 2'b0}; 11

3: result <= {data[5:3] + data[2:0] + 1, 1'b0}; endcase

logic read_s;

always_ff@(posedge C_int, posedge reset_s, posedge flag_reset) if (reset_s)

read_s <= 0; else if (flag_reset) read_s <= 0;

else if (Read) read_s <= 1;

always_ff@(negedge C_int, posedge reset_s, posedge flag_reset) if (reset_s)

C_out <= 1; else if (flag_reset)

C_out <= 1; else if (read_s)

C_out <= ~C_out;

logic [2:0] cnt_result;

always_ff@(posedge C_out, posedge reset_s, posedge flag_reset) begin

if (reset_s) cnt_result <= 0;

else if (flag_reset) cnt_result <= 0;

else

cnt_result <= cnt_result + 1; Q <= result[4 - cnt_result];

end

logic flag_reset; always_ff@(code, cnt_result)

case(code)

0: flag_reset <= cnt_result[2] & (~cnt_result[1]) &

cnt_result[0] & C_int;

1: flag_reset <= cnt_result[2] & (~cnt_result[1]) &

cnt_result[0] & C_int;

2: flag_reset <= (~cnt_result[2]) & cnt_result[1] &

cnt_result[0] & C_int;

3: flag_reset <= cnt_result[2] & (~cnt_result[1]) &

(~cnt_result[0]) & C_int;

endcase

endmodule

12

В module… () описаны входы и выходы схемы. Далее были введены требуемые сигналы.

1 процесс – перевод входных данных в операционный блок.

2 процесс – описание работы мультиплексора, с контролем кода операции.

3 процесс – запись данных по активному уровню сигнала read.

4 процесс – вывод ответов в соответствии с кодом операции.

На рисунке 1.5.1 представлена схема из RTL Viewer для кода,

написанном на SV.

Рисунок 1.5.1 – Схема из RTL Viewer

1.6 Моделирование кода

На рисунке 1.6.1 и 1.6.2 представлено моделирования в двух режимах.

В промежутке 430-3200нс промоделирована работа первого сигнала,

3400-6200нс промоделирована работа второго сигнала, 6400-8200нс промоделирована работа третьего сигнала, 8400-10200 моделирование работы четвёртого сигнала, 10400-13200нс промоделирована работа пятого сигнала,

13

13500-16200нс промоделирована работа шестого сигнала, 16300-19200нс промоделирована работа седьмого сигнала, 19400-20200 восьмого сигнала,

20400-22800 девятого сигнала.

Рисунок 1.6.1 – Моделирование в режиме Timing

Рисунок 1.6.2 – Моделирование в режиме Functional

Результаты моделирования совпадают со значениями плана моделирования, представленных в таблице 1.4.1.

14

ВЫВОДЫ

В ходе данной работы были освоены навыки совместного использования устройств средней степени интеграции.

Разработана обобщенная функциональная схема и описаны его основные части.

Были составлены таблицы истинности для операционного блока и план моделирования.

Была собрана на холсте .bdf и промоделирована в двух режимах (timing

иfunctional) схема вычислительного блока, выполняющего заданные операции

иосуществляющего приём входных данных и выдачу результата.

С помощью VHDL было описано то же устройство.

Результаты моделирования каждой схемы соответствует её таблице истинности.

15