Скачиваний:
6
Добавлен:
31.05.2023
Размер:
71.45 Кб
Скачать

Выполнили:

Лабораторная работа 3

РАЗРАБОТКА МОДУЛЯ ПАМЯТИ ROM

Цель работы

Разработка модуля для реализации блочной памяти средствами ПЛИС. Исследование возможности инициализации памяти. Проверка на временной диаграмме. Проверка на железе.

RTL

Matlab – скрипт

clc

clear all

x = [ 0 : 2*pi/256 : 2*pi-2*pi/256 ]; % задаём интервал по x с шагом 2*pi/256

y = sin( 9 * x ) + 1; % задаём ф-ию с периодом равным 9 на данном промежутке

y2 = y./max(y); % нормируем каждый отсчёт

y3 = ceil(y2.*(2^8-1)); % приводим отсчёты к целому виду

fid = fopen('C:\\Users\\User\\Desktop\\sin_val.dat', 'wb'); % открываем в файл

% для записи бинарного кода

if fid == -1 % проверяем на

% корректность открытия

error('File is not opened');

end

for i = 1:256 % цикл для записи

% каждого отсчёта

fprintf(fid, '%s\n', dec2bin(y3(i), 8));

end

Принцип работы ROM

Проект считывает из файла ( 256 строк по 8 бит ) и записывает в соответствующий массив.

Листинги файлов

`timescale 1ns / 1ps

module ROM_4x2 (

output [7:0] ROM_data,

input [7:0] ROM_addr

);

reg [7:0] ROM [255:0];

assign ROM_data = ROM[ROM_addr];

initial

begin

$readmemb ( "C:\\Users\\User\\Desktop\\sin_val.dat", ROM, 0, 255 );

end

endmodule

`timescale 1ns / 1ps

module ROM_4x2_tb();

reg [7:0] swt;

wire [7:0] led;

ROM_4x2 DUT

(

.ROM_addr (swt),

.ROM_data (led)

);

integer i;

initial

begin

for( i = 0; i < 256; i = i + 1 )

#10 swt = i;

end

endmodule

xdc файлы

set_property PACKAGE_PIN M15 [get_ports {ROM_addr[7]}]

set_property PACKAGE_PIN H17 [get_ports {ROM_addr[6]}]

set_property PACKAGE_PIN H18 [get_ports {ROM_addr[5]}]

set_property PACKAGE_PIN H19 [get_ports {ROM_addr[4]}]

set_property PACKAGE_PIN F21 [get_ports {ROM_addr[3]}]

set_property PACKAGE_PIN H22 [get_ports {ROM_addr[2]}]

set_property PACKAGE_PIN F22 [get_ports {ROM_addr[1]}]

set_property PACKAGE_PIN G22 [get_ports {ROM_addr[0]}]

set_property PACKAGE_PIN U14 [get_ports {ROM_data[7]}]

set_property PACKAGE_PIN U19 [get_ports {ROM_data[6]}]

set_property PACKAGE_PIN W22 [get_ports {ROM_data[5]}]

set_property PACKAGE_PIN V22 [get_ports {ROM_data[4]}]

set_property PACKAGE_PIN U21 [get_ports {ROM_data[3]}]

set_property PACKAGE_PIN U22 [get_ports {ROM_data[2]}]

set_property PACKAGE_PIN T21 [get_ports {ROM_data[1]}]

set_property PACKAGE_PIN T22 [get_ports {ROM_data[0]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[7]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[6]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[5]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[4]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[3]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[2]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[1]}]

set_property IOSTANDARD LVCMOS18 [get_ports {ROM_addr[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[7]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[6]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[5]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[4]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[3]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[1]}]

set_property IOSTANDARD LVCMOS33 [get_ports {ROM_data[0]}]

Временные диаграммы

Вывод

Работа программы корректна, все вычисления верны.

Соседние файлы в предмете Основы проектирования электронных средств на ПЛИС