Разработка и функционально-временное моделирование средствами САПР QUARTUS II блока регистров общего назначения и его схемотехнического окружения

Описание модели регистрового запоминающего устройства общего назначения и характеристика параметров его микропроцессора. Построение параметрического блока для хранения данных входного и выходного сдвигателя. Описание библиотек запоминающего устройства.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид лабораторная работа
Язык русский
Дата добавления 02.04.2015
Размер файла 179,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

11

МИНОБРНАУКИ РОССИИ

Федеральное государственное автономное образовательное учреждение высшего профессионального образования

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ИНЖЕНЕРНАЯ ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ В Г. ТАГАНРОГЕ

(ТРТИ Южного федерального университета)

Факультет АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

Кафедра ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

ОТЧЕТ

Лабораторная работа №4

«Разработка и функционально-временное моделирование средствами САПР QUARTUS II блока регистров общего назначения и его схемотехнического окружения»

по учебной дисциплине: «Микропроцессорные системы»

Проверил:

к.т.н., доцент, Пьявченко Алексей Олегович

Выполнил:

студент гр. А_41, Фетисов А.В.

Таганрог, 2014 г.

Цель работы:

Изучение основ построения с применением VHDL и методики отладки в САПР Quartus II регистровых запоминающих устройств общего назначения, обладающих требуемыми параметрами и входящих в состав вычислительных блоков микропроцессоров.

Постановка задачи.

В соответствии с вариантом задания разработать в базисе ПЛИС Altera VHDL-описание модели регистрового запоминающего устройства общего назначения, обладающего требуемыми параметрами. Устройство входит в состав проектируемого в рамках цикла лабораторных работ вычислительного блока микропроцессора. При разработке компонентов и всего РЗУ в целом допускается смешанное VHDL-описание проекта, т.е. как структурное, так и поведенческое описание.

Осуществить проверку разработанных моделей, выполнив их функционально-временное моделирование средствами САПР Quartus II.

Результаты разработки проекта РЗУ на VHDL оформить в виде библиотечного компонента (пакета).

В качестве исходных данных студенту перед проектированием задаются:

Ш n - число разрядов регистра общего назначения из состава РЗУ;

Ш М - количество n-разрядных регистровых ячеек общего назначения (РОН), составляющих РЗУ;

Ш Pin - число входных информационных шин (портов) РЗУ, используемых для записи данных в его внутренние n-разрядные ячейки;

Ш SHin - число установленных по входам РЗУ параллельных многоразрядных сдвигателей (не превышает числа входных портов);

Ш n1 - количество сдвигателей в схеме на входах или выходах блока РОН;

Ш n2 - число разрядов, на которые сдвигатель может сдвинуть двоичный код, установленный на его входе. Причем в общем случае n2 может принимать числовое значение от 0 до n (разрядность информационной шины порта РЗУ);

Ш Us - направление сдвига, если последний разрешен, определяемое как R/L/U (вправо/влево/универсально (или влево/ или вправо));

Ш Ts - тип сдвига A/Ma/L.1/L.0/C/CC (арифметический (A), модифицированный арифметический (Ma), логический с установкой 1 (L.1) или 0 (L.0) в освобождающиеся разряды, циклический (С), циклический через признак С (CC));

Ш Pout - число выходных информационных шин (портов) РЗУ, используемых для считывания данных из его внутренних n-разрядных ячеек;

Ш SHout - число установленных по выходам РЗУ параллельных многоразрядных сдвигателей (не превышает числа входных портов);

Ш OEZ - наличие буферов с Z-состоянием по выходу.

Задание.

VHDL код РОН 32 на 8:

--РОН 6 регистров

Library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_signed.all;

entity RonParam is

generic(

nR: natural := 7

);

port( AI: in std_logic_vector (nR downto 0); -- входная данных шина A

BI: in std_logic_vector (nR downto 0); -- входная данных шина B

ADR_AI: in std_logic_vector (4 downto 0); -- адрес записи А

ADR_BI: in std_logic_vector (4 downto 0); -- адрес записи В

ADR_AO: in std_logic_vector (4 downto 0); -- адрес чтения А

ADR_BO: in std_logic_vector (4 downto 0); -- адрес чтения В

WR_AI: in std_ulogic; -- разрешение записи А

WR_BI: in std_ulogic; -- разрешение записи В

EN_AO,EN_BO: in std_ulogic; -- разрешение чтения

CLK,RST: in std_ulogic;

AO: out std_logic_vector (nR downto 0); -- выходная шина А

BO: out std_logic_vector (nR downto 0) -- выходная шина В

);

end RonParam;

Architecture RON of RonParam is

Type TOutReg is array (0 to 31) of std_logic_vector(nR downto 0);

signal WR_RgB: std_logic_vector(31 downto 0); -- выбор регистра для записи по В

signal WR_RgA: std_logic_vector(31 downto 0); -- выбор регистра для записи по А

signal DRg:TOutReg; -- регистр для считывания данных

BEGIN

--Выбор регистра для записи в РОН по шине AI

DCA: process (ADR_AI, WR_AI)

begin

if WR_AI = '1' then

case ADR_AI (4 downto 0) is

when "00000" => WR_RgA <= X"00000001";

when "00001" => WR_RgA <= X"00000002";

when "00010" => WR_RgA <= X"00000004";

when "00011" => WR_RgA <= X"00000008";

when "00100" => WR_RgA <= X"00000010";

when "00101" => WR_RgA <= X"00000020";

when "00110" => WR_RgA <= X"00000040";

when "00111" => WR_RgA <= X"00000080";

when "01000" => WR_RgA <= X"00000100";

when "01001" => WR_RgA <= X"00000200";

when "01010" => WR_RgA <= X"00000400";

when "01011" => WR_RgA <= X"00000800";

when "01100" => WR_RgA <= X"00001000";

when "01101" => WR_RgA <= X"00002000";

when "01110" => WR_RgA <= X"00004000";

when "01111" => WR_RgA <= X"00008000";

when "10000" => WR_RgA <= X"00010000";

when "10001" => WR_RgA <= X"00020000";

when "10010" => WR_RgA <= X"00040000";

when "10011" => WR_RgA <= X"00080000";

when "10100" => WR_RgA <= X"00100000";

when "10101" => WR_RgA <= X"00200000";

when "10110" => WR_RgA <= X"00400000";

when "10111" => WR_RgA <= X"00800000";

when "11000" => WR_RgA <= X"01000000";

when "11001" => WR_RgA <= X"02000000";

when "11010" => WR_RgA <= X"04000000";

when "11011" => WR_RgA <= X"08000000";

when "11100" => WR_RgA <= X"10000000";

when "11101" => WR_RgA <= X"20000000";

when "11110" => WR_RgA <= X"40000000";

when "11111" => WR_RgA <= X"80000000";

when others => WR_RgA <= (others => '0'); -- иначе 0

end case;

else WR_RgA <= (others => '0'); -- иначе 0

end if;

end process DCA;

--Выбор регистра для записи в РОН по шине BI

DCB: process (ADR_BI, WR_BI)

begin

if WR_BI = '1' then

case ADR_BI (4 downto 0) is

when "00000" => WR_RgB <= X"00000001";

when "00001" => WR_RgB <= X"00000002";

when "00010" => WR_RgB <= X"00000004";

when "00011" => WR_RgB <= X"00000008";

when "00100" => WR_RgB <= X"00000010";

when "00101" => WR_RgB <= X"00000020";

when "00110" => WR_RgB <= X"00000040";

when "00111" => WR_RgB <= X"00000080";

when "01000" => WR_RgB <= X"00000100";

when "01001" => WR_RgB <= X"00000200";

when "01010" => WR_RgB <= X"00000400";

when "01011" => WR_RgB <= X"00000800";

when "01100" => WR_RgB <= X"00001000";

when "01101" => WR_RgB <= X"00002000";

when "01110" => WR_RgB <= X"00004000";

when "01111" => WR_RgB <= X"00008000";

when "10000" => WR_RgB <= X"00010000";

when "10001" => WR_RgB <= X"00020000";

when "10010" => WR_RgB <= X"00040000";

when "10011" => WR_RgB <= X"00080000";

when "10100" => WR_RgB <= X"00100000";

when "10101" => WR_RgB <= X"00200000";

when "10110" => WR_RgB <= X"00400000";

when "10111" => WR_RgB <= X"00800000";

when "11000" => WR_RgB <= X"01000000";

when "11001" => WR_RgB <= X"02000000";

when "11010" => WR_RgB <= X"04000000";

when "11011" => WR_RgB <= X"08000000";

when "11100" => WR_RgB <= X"10000000";

when "11101" => WR_RgB <= X"20000000";

when "11110" => WR_RgB <= X"40000000";

when "11111" => WR_RgB <= X"80000000";

when others => WR_RgB <= (others => '0'); -- иначе 0

end case;

else WR_RgB <= (others => '0'); -- иначе 0

end if;

end process DCB;

-- Реализация блока регистров общего назначения и

-- организация записи в выбранную ячейку

RGi: process (CLK,BI,AI,RST)

begin

if RST='1' then

for j in 0 to 31 loop

DRg(j)<=(others=>'0');

end loop;

--Изменим текущие значения регистров

elsif CLK='1' and CLK'event then

for j in 0 to 31 loop -- Запись по AI более приоритетная

if (WR_RgA(j)='1') then DRg(j)<=AI;

elsif (WR_RgB(j)='1') then DRg(j)<=BI;

end if;

end loop;

end if;

end process;

-- выбор источника и подключение его к шине АО

RD_AO: process (EN_AO,ADR_AO,DRg)

begin

if EN_AO = '1' then

case ADR_AO (4 downto 0) is

when "00000" => AO <= DRg(0);

when "00001" => AO <= DRg(1);

when "00010" => AO <= DRg(2);

when "00011" => AO <= DRg(3);

when "00100" => AO <= DRg(4);

when "00101" => AO <= DRg(5);

when "00110" => AO <= DRg(6);

when "00111" => AO <= DRg(7);

when "01000" => AO <= DRg(8);

when "01001" => AO <= DRg(9);

when "01010" => AO <= DRg(10);

when "01011" => AO <= DRg(11);

when "01100" => AO <= DRg(12);

when "01101" => AO <= DRg(13);

when "01110" => AO <= DRg(14);

when "01111" => AO <= DRg(15);

when "10000" => AO <= DRg(16);

when "10001" => AO <= DRg(17);

when "10010" => AO <= DRg(18);

when "10011" => AO <= DRg(19);

when "10100" => AO <= DRg(20);

when "10101" => AO <= DRg(21);

when "10110" => AO <= DRg(22);

when "10111" => AO <= DRg(23);

when "11000" => AO <= DRg(24);

when "11001" => AO <= DRg(25);

when "11010" => AO <= DRg(26);

when "11011" => AO <= DRg(27);

when "11100" => AO <= DRg(28);

when "11101" => AO <= DRg(29);

when "11110" => AO <= DRg(30);

when "11111" => AO <= DRg(31);

when others => AO <= (others => '0');

end case;

else AO <= (others => '0');

end if;

end process RD_AO;

-- выбор источника и подключение его к шине ВО

RD_BO: process (EN_BO,ADR_BO,DRg)

begin

if EN_BO = '1' then

case ADR_BO (4 downto 0) is

when "00000" => BO <= DRg(0);

when "00001" => BO <= DRg(1);

when "00010" => BO <= DRg(2);

when "00011" => BO <= DRg(3);

when "00100" => BO <= DRg(4);

when "00101" => BO <= DRg(5);

when "00110" => BO <= DRg(6);

when "00111" => BO <= DRg(7);

when "01000" => BO <= DRg(8);

when "01001" => BO <= DRg(9);

when "01010" => BO <= DRg(10);

when "01011" => BO <= DRg(11);

when "01100" => BO <= DRg(12);

when "01101" => BO <= DRg(13);

when "01110" => BO <= DRg(14);

when "01111" => BO <= DRg(15);

when "10000" => BO <= DRg(16);

when "10001" => BO <= DRg(17);

when "10010" => BO <= DRg(18);

when "10011" => BO <= DRg(19);

when "10100" => BO <= DRg(20);

when "10101" => BO <= DRg(21);

when "10110" => BO <= DRg(22);

when "10111" => BO <= DRg(23);

when "11000" => BO <= DRg(24);

when "11001" => BO <= DRg(25);

when "11010" => BO <= DRg(26);

when "11011" => BO <= DRg(27);

when "11100" => BO <= DRg(28);

when "11101" => BO <= DRg(29);

when "11110" => BO <= DRg(30);

when "11111" => BO <= DRg(31);

when others => BO <= (others => '0');

end case;

else BO <= (others => '0');

end if;

end process RD_BO;

END RON;

Получившийся параметрический блок РОН 32 на 8:

Результат функционирования РОН:

Схема входного арифметического универсального циклического сдвигателя на 4 разрядов:

библиотека запоминающее устройство микропроцессор

VHDL код входного свдигателя:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_signed.all;

entity Shift_OUT is

port(FI: in std_logic_vector (8 downto 6);

MI: in std_logic_vector (1 downto 0);

DI: in std_logic_vector (7 downto 0);

NI: in std_logic_vector (2 downto 0);

QO: out std_logic_vector (7 downto 0)

);

end Shift_OUT;

Architecture SHIFT of Shift_OUT is

begin

ShiftMux: process(FI, MI, DI, NI)

variable MF : std_logic_vector (4 downto 0);

variable BUF : std_logic_vector (7 downto 0);

begin

MF := MI & FI;

-- сдвиг вправо

if MF = "01101" then

case NI is

when "001" => BUF := DI(0) & DI(7 downto 1);

when "010" => BUF := DI(1 downto 0) & DI(7 downto 2);

when "011" => BUF := DI(2 downto 0) & DI(7 downto 3);

when "100" => BUF := DI(3 downto 0) & DI(7 downto 4);

when others => BUF := DI;

end case;

-- сдвиг влево

elsif MF = "01111" then

case NI is

when "001" => BUF := DI(6 downto 0) & DI(7);

when "010" => BUF := DI(5 downto 0) & DI(7 downto 6);

when "011" => BUF := DI(4 downto 0) & DI(7 downto 5);

when "100" => BUF := DI(3 downto 0) & DI(7 downto 4);

when others => BUF := DI;

end case;

else

BUF := DI;

end if;

QO <= BUF;

end process;

end SHIFT; library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_signed.all;

entity Shift_OUT is

port(FI: in std_logic_vector (8 downto 6);

MI: in std_logic_vector (1 downto 0);

DI: in std_logic_vector (7 downto 0);

NI: in std_logic_vector (2 downto 0);

QO: out std_logic_vector (7 downto 0)

);

end Shift_OUT;

Architecture SHIFT of Shift_OUT is

begin

ShiftMux: process(FI, MI, DI, NI)

variable MF : std_logic_vector (4 downto 0);

variable BUF : std_logic_vector (7 downto 0);

begin

MF := MI & FI;

-- сдвиг вправо

if MF = "01101" then

case NI is

when "001" => BUF := DI(0) & DI(7 downto 1);

when "010" => BUF := DI(1 downto 0) & DI(7 downto 2);

when "011" => BUF := DI(2 downto 0) & DI(7 downto 3);

when "100" => BUF := DI(3 downto 0) & DI(7 downto 4);

when others => BUF := DI;

end case;

-- сдвиг влево

elsif MF = "01111" then

case NI is

when "001" => BUF := DI(6 downto 0) & DI(7);

when "010" => BUF := DI(5 downto 0) & DI(7 downto 6);

when "011" => BUF := DI(4 downto 0) & DI(7 downto 5);

when "100" => BUF := DI(3 downto 0) & DI(7 downto 4);

when others => BUF := DI;

end case;

else

BUF := DI;

end if;

QO <= BUF;

end process;

end SHIFT;

Схема РЗУ:

VHDL код РЗУ:

-- Copyright (C) 1991-2010 Altera Corporation

-- Your use of Altera Corporation's design tools, logic functions

-- and other software and tools, and its AMPP partner logic

-- functions, and any output files from any of the foregoing

-- (including device programming or simulation files), and any

-- associated documentation or information are expressly subject

-- to the terms and conditions of the Altera Program License

-- Subscription Agreement, Altera MegaCore Function License

-- Agreement, or other applicable license agreement, including,

-- without limitation, that your use is for the sole purpose of

-- programming logic devices manufactured by Altera and sold by

-- Altera or its authorized distributors. Please refer to the

-- applicable agreement for further details.

-- PROGRAM"Quartus II"

-- VERSION"Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Web Edition"

-- CREATED"Tue May 20 15:35:09 2014"

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY work;

ENTITY rzu IS

PORT

(

CLK : IN STD_LOGIC;

RST : IN STD_LOGIC;

WR_AI : IN STD_LOGIC;

WR_BI : IN STD_LOGIC;

EN_AO : IN STD_LOGIC;

EN_BO : IN STD_LOGIC;

ADR_AI : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

ADR_AO : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

ADR_BI : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

ADR_BO : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

AI : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

BI : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

I : IN STD_LOGIC_VECTOR(8 DOWNTO 6);

M : IN STD_LOGIC_VECTOR(1 DOWNTO 0);

N : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

AO : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

BO : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

);

END rzu;

ARCHITECTURE bdf_type OF rzu IS

COMPONENT ronparam

GENERIC (nR : INTEGER

);

PORT(WR_AI : IN STD_LOGIC;

WR_BI : IN STD_LOGIC;

EN_AO : IN STD_LOGIC;

EN_BO : IN STD_LOGIC;

CLK : IN STD_LOGIC;

RST : IN STD_LOGIC;

ADR_AI : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

ADR_AO : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

ADR_BI : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

ADR_BO : IN STD_LOGIC_VECTOR(4 DOWNTO 0);

AI : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

BI : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

AO : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

BO : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

);

END COMPONENT;

COMPONENT shift_out

PORT(DI : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

FI : IN STD_LOGIC_VECTOR(8 DOWNTO 6);

MI : IN STD_LOGIC_VECTOR(1 DOWNTO 0);

NI : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

QO : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

);

END COMPONENT;

COMPONENT shift_out_a

PORT(DI : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

FI : IN STD_LOGIC_VECTOR(8 DOWNTO 6);

MI : IN STD_LOGIC_VECTOR(1 DOWNTO 0);

NI : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

QO : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

);

END COMPONENT;

SIGNALAout : STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNALBout : STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

b2v_inst : ronparam

GENERIC MAP(nR => 7

)

PORT MAP(WR_AI => WR_AI,

WR_BI => WR_BI,

EN_AO => EN_AO,

EN_BO => EN_BO,

CLK => CLK,

RST => RST,

ADR_AI => ADR_AI,

ADR_AO => ADR_AO,

ADR_BI => ADR_BI,

ADR_BO => ADR_BO,

AI => AI,

BI => BI,

AO => Aout,

BO => Bout);

b2v_inst1 : shift_out

PORT MAP(DI => Bout,

FI => I,

MI => M,

NI => N,

QO => BO);

b2v_inst2 : shift_out_a

PORT MAP(DI => Aout,

FI => I,

MI => M,

NI => N,

QO => AO);

END bdf_type;

Вывод

В ходе выполнения данной лабораторной работы, я с применением VHDL и методики отладки в САПР Quartus II сумел построить параметрический блок РОН, входной и выходной сдвигатели. Затем собрал РЗУ используя написанные библиотеки (РОН, сдвигатели).

Размещено на Allbest.ru


Подобные документы

  • Характеристика проектирования устройства вычислительной техники. Расчёт количества микросхем памяти, распределение адресного пространства, построение структурной и принципиальной электрической схемы управления оперативного запоминающего устройства.

    контрольная работа [848,1 K], добавлен 23.11.2010

  • Проектирование модуля оперативного запоминающего устройства и программы его тестирования, основные технические требования. Описание работы программы функционального контроля памяти, алгоритм теста. Программа тестирования устройства на ассемблере.

    курсовая работа [56,7 K], добавлен 29.07.2009

  • Блок регистров выходных данных, принцип его работы. Принципиальная электрическая схема блока памяти. Согласование по электрическим параметрам входных цепей памяти. Проверка допустимости значения времени нарастания сигнала на входе адреса микросхемы.

    курсовая работа [1,3 M], добавлен 24.06.2015

  • Основные этапы проектирования контрольной аппаратуры. Анализ цифрового вычислительного комплекса. Разработка устройства контроля ячеек постоянного запоминающего устройства с использованием ЭВМ. Описание функциональной схемы устройства сопряжения.

    дипломная работа [1,9 M], добавлен 24.09.2012

  • Структурная схема устройства. Общая характеристика микропроцессора Z80, его особенности. Описание выводов. Схемотехника и принцип работы блоков. Схема микропроцессорного блока и памяти. Программное обеспечение микроконтроллера. Расчёт блока питания.

    контрольная работа [355,3 K], добавлен 07.01.2013

  • Разработка структурной и принципиальной схемы микропроцессора. Подключение шины адреса, данных и управления к соответствующим блокам на схеме. Формирование блока устройства памяти (ОЗУ и ПЗУ) и подключение его к шинам блока центрального процессора.

    контрольная работа [220,5 K], добавлен 08.07.2012

  • Разработка общего алгоритма и функционирования цифрового фильтра. Составление и описание электрической принципиальной схемы устройства, расчет его быстродействия. Листинг программного модуля вычисления выходного отсчета. Оценка устойчивости устройства.

    курсовая работа [236,2 K], добавлен 03.12.2010

  • Структурная схема разрабатываемого устройства. Синтез схемы блока АЛУ и блока признаков результата. Номинальные значения параметров компонентов. Открытие созданной принципиальной схемы. Анализ переходных процессов. Выполнение логических операций.

    дипломная работа [1,5 M], добавлен 29.09.2014

  • Разработка структурной схемы устройства. Изучение принципиальной электрической схемы устройства с описанием назначения каждого элемента. Характеристика программного обеспечения: секции деклараций, инициализации микропроцессора и основного цикла.

    курсовая работа [260,3 K], добавлен 14.11.2017

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

    курсовая работа [197,8 K], добавлен 03.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.