Скачать 1.44 Mb.
|
Use – выполнив щелчок левой кнопкой мыши в соответствующем поле этого столбца, пользователь указывает какие компоненты из списка будут использоваться в создаваемой системе. Об этом будет свидетельствовать установленная галочка. Повторный щелчок мыши в этом поле приведет к запрету использования компонента в системе (галочка удаляется).
Вменю File содержатся следующие пункты (рис. 1.10): “New System…” – создание новой SOPC системы; “Open…” – открытие ранее созданной SOPC системы; “Save” – сохранение текущей SOPC системы; Рис. 1.10 – Меню File “Save As…” – сохранение текущей SOPC системы под другим именем ; “Refresh System” – проверка папок Quartus II и проекта на наличие IP компонентов; “New component…” – запуск мастера создания новых компонентов; “Browse Project Directory…” – отображение рабочей директории проекта; “Exit” – выход из приложения SOPC Builder. 1.3.2.2 Пункты меню Edit Меню Edit включает следующие три пункта (Рис. 1.11): “Remove Dangling Connections” – удаление неподключенного соединения; Рис. 1.11 – Пункты меню Edit “Undo” – отмена последнего действия; “Redo” – повтор последнего действия. 1.3.2.3 Пункты меню Module Представленные в меню Module пункты (рис. 1.12): “Edit…” – изменение параметров выбранного компонента; “Rename” – переименование выбранного компонента; “Duplicate” – создание копии выбранного компонента; “Remove” – удаление выбранного компонента; “Lock Base Address” – блокирование изменения адреса компонента; “Move To Top” – перемещение компонента на самую верхнюю позицию списка; “Move Up” – перемещение компонента на одну позицию вверх в списке; “Move Down” – перемещение компонента на одну позицию вниз в списке; Рис. 1.12 – Меню Module “Move To Bottom” – перемещение компонента на самую нижнюю позицию. 1.3.2.4 Пункты меню System Представленные в меню System пункты (рис. 1.13): “Assign Base Addresses” – автоматическое назначение адресов компонентов; “Assign Interrupt Numbers” – автоматическое назначение номеров прерываний для компонентов; Рис. 1.13 – Меню system “Insert Avalon-ST Adapters” – данный пункт меню запускает автоматическую вставку Avalon-ST Adapter для согласования интерфейсов шины Avalon. 1.3.2.5 Пункты меню View Меню View содержит пункты (рис.1.14), предназначенные для указания объектов, отображаемых в области проектирования процессорной системы. А именно: “Show Connected” – отображение всех соединений в системе; “Show Connections Column” – включение столбца «Connections» в область проектирования SOPC системы; “Show Arbitration Shares” – отображение приоритетов компонентов при разделении шин; “Show Description Column” – включение столбца описания компонентов в область проектирования SOPC системы; “Show Clock Column” – включение столбца синхросигналов; “Show Base Column” – отображение столбца с начальными адресами компонентов; Рис 1.14 – Меню View “Show End Column” – отображение столбца с конечными адресами компонентов; “Show Tags Column” – отображение столбца с комментариями; “Show IRQ Column” – включение столбца с назначенными номерами прерываний от компонентов; “Expand All” – раскрытие интерфейсов компонентов в области проектирования SOPC системы; “Collapse All” – скрытие интерфейсов компонентов в области проектирования SOPC системы; “Set Color…” – установка цветов для изображения интерфейсов и линий соединения. 1.3.2.6 Пункты меню Tools Меню Tools включает следующие пункты (рис.1.15): “System Console” – вызов системной консоли для исполнения TCL скриптов; “Options…” – настройка опций SOPC Builder; “Download Components…” – загрузка дополнительных компонентов. Рис. 1.15 – Меню Tools 1.3.2.7 Пункты меню Nios II Меню Nios II включает следующие пункты (рис. 1.16): “Nios II Software Build Tools for Eclipse” – запуск инструмента разработки программного обеспечения для процессора Nios II; Рис. 1.16 – Меню Nios II “Nios II Command Shell[gcc4]” – вызов командной консоли. 1.4 Основные операции SOPC Builder 1.4.1 Добавление нового компонента в систему Чтобы добавить IP компонент в процессорную систему, необходимо вначале выбрать его в библиотеке готовых компонентов SOPC Builder. Для этого наведите курсор мыши на соответствующее имя в окне библиотеки, при необходимости открыв некоторые вложенные папки. Затем выполните щелчок левой кнопкой мыши. Далее следует нажать кнопку “Add”, расположенную ниже. К такому же результату можно прийти, выполнив двойной щелчок левой кнопкой мыши по имени компонента в библиотеке. После этого на экране появится окно настройки IP ядра, в котором необходимо задать требуемые параметры. Добавление компонента считается завершенным после того, как он появится в рабочей области SOPC Builder. Пример добавления компонента в создаваемую систему представлен на рис. 1.17. В нем в систему включается модуль статической памяти IDT71V416, который должен присутствовать на отладочной плате. Настройка параметров этого модуля сводится к выбору объема памяти из предложенного списка. Рис. 1.17 – Добавление компонента в процессорную систему Рис. 1.18 – Редактирование компонента sram_0 1.4.2 Редактирование параметров IP компонента Редактирование компонента системы, представленного в рабочей области SOPC Builder, осуществляется следующим образом. Вначале курсор мыши наводится на имя соответствующего компонента в списке. Затем выполняется щелчок левой кнопкой мыши. После этого, соответствующая строка в списке выделится синим цветом. Далее следует нажать кнопку “Edit”, расположенную в нижней части рабочей зоны SOPC Builder, после чего появится окно настройки параметров соответствующего компонента. Аналогичный результат можно получить, выполнив двойной щелчок левой кнопкой мыши по имени редактируемого модуля в списке компонентов системы. На рис. 1.18 приведен пример выбора модуля статической памяти для последующего его редактирования. 1.4.3 Соединение IP компонентов Если в процессе добавления компонентов в систему они имеют соответствующие интерфейсы, то их соединение в системе осуществляется автоматически. Однако в ряде случаев может потребоваться ручная коммутация. В примере, представленном на рис.1.19, требуется выполнить соединение компонентов sram_0 и tri_state_bridge_0. Рис. 1.19 – Пример процессорной системы, в которой требуется ручная коммутация компонентов Чтобы создать соединение между компонентами, вначале необходимо навести курсор мыши на столбец Connections. После этого в этой области будут отражены все соединения, в том числе и возможные. Причем пустым кружком на пересечении соответствующих линий отображаются несоединенные компоненты. Чтобы их соединить, необходимо кликнуть левой кнопкой мыши по соответствующему кружку. В примере на рис. 1.20 показано выполнение соединения sram_0 и tri_state_bridge_0. Рис. 1.20 – Соединение компонентов в системе 1.4.4 Переименование компонента Чтобы переименовать компонент, дважды кликните его имя в списке имен компонентов системы. После этого редактируемое имя выделится в списке синим цветом. Затем введите новое имя, используя клавиатуру. Другой способ заключается в следующем. Нажмите правой кнопкой мыши по выбранному элементу из списка и в появившемся меню выберите “Rename”, как показано на рис. 1.21. Рис. 1.21 – Переименование компонента в системе 1.4.5 Установка начальных адресов, назначение сигналов синхронизации и прерываний Чтобы изменить начальный адрес некоторого компонента, дважды кликните по текущему значению начального адреса в столбце Base. Затем введите новое значение, используя клавиатуру. Соответствующий пример приведен на рис. 1.22. Если вводимое значение адреса является недопустимым, SOPC Builder сообщит об ошибке. В большинстве случаев задачу назначения адресов можно предоставить приложению SOPC Builder. Для этого надо выбрать пункт “Assign Base Addresses” в меню System. Рис. 1.22 – Установка начального адреса Подобным способом назначаются сигналы синхронизации для компонентов системы. Чтобы это сделать, кликните левой кнопкой мыши по столбцу Clock нужного компонента, и в появившемся списке выберите необходимый сигнал синхронизации, как это показано на рис. 1.23. Рис. 1.23 – Назначение сигналов синхронизации В процессоре Nios II для формирования запросов прерываний от компонентов процессорной системы, обладающих такой способностью, используется один из 32 входов IRQ0 – IRQ31. Каждый вход соединен с компонентом системы соответствующей линией. Причем, запросы, поступающие по линии IRQ0, имеют наибольший приоритет. По мере возрастания номера линии приоритет запросов убывает. Назначение соответствующей линии каждому компоненту выполняется в столбце IRQ рабочей области SOPC Builder. Подключенные к компонентам линии для передачи запросов прерываний отображаются в столбце IRQ в виде их номеров. Чтобы изменить номер линии, дважды щелкните левой кнопкой мыши по соответствующему числу и введите с клавиатуры его новое значение. Если необходимо отключить линию для формирования сигналов прерывания от некоторого компонента системы, то в этом случае следует удалить соответствующее число в столбце IRQ. Соединение линий передачи запросов прерываний осуществляется так же, как и соединение компонентов в системе. На рис. 1.24 приведен пример отключения линии формирования запросов прерываний от параллельного порта ввода/вывода PIO. 1.4.6 Удаление компонентов из процессорной системы Чтобы удалить компонент из процессорной системы, выберите его описанным ранее способом, затем нажмите кнопку “Remove” (рис. 1.25), либо кнопку “Delete” на клавиатуре. Рис. 1.24 – Удаление линии запроса прерываний от PIO Рис. 1.25 – Удаление компонента из процессорной системы
В данном разделе рассматривается пример создания простейшей процессорной системы, содержащей:
Вначале запускаем Quartus II и создаем проект, как это описано в учебном пособии [5]. Потом запускаем приложение SOPC Builder любым из способов, представленных в разделе 1.2. Задаем имя SOPC системы и расположение папки с ее проектными файлами в файловой системе инструментального компьютера. После чего, начинаем добавлять компоненты в процессорную систему. 1.5.1 Добавление внутрикристальной памяти в систему В рассматриваемом примере создание процессорной системы начинается с добавления внутрикристальной памяти. Соответствующий компонент присутствует в библиотеке готовых компонентов SOPC Builder. Для доступа к нему используется следующий путь: Memories and Memory Controllers/On-Chip/On-Chip Memory (RAM or ROM). Пример выбора памяти из библиотеки показан на рис. 1.26. После выбора памяти из библиотеки появляется окно, приведенное на рис. 1.27. В нем необходимо задать параметры выбранной памяти, представленные в группах: тип памяти (Memory type), размер памяти (Size), задержка чтения (Read latency) и необходимость инициализации памяти (Memory initialization). В первой группе определяется, будет ли память использоваться только для чтения (ROM) или разрешается выполнять также операции записи (RAM), будет ли память двухпортовой, или нет. Во второй группе параметров задаются размеры памяти, а именно разрядность и количество хранимых в памяти слов. В оставшихся вкладках определяются задержки чтения и способы инициализации памяти. Более подробное описание параметров приводится в приложении, в конце учебного пособия. В рассматриваемом примере оставляем все параметры без изменений и нажимаем кнопку “Finish”, рис. 1.27; Рис. 1.26 – Выбор компонента внутрикристальной памяти Рис. 1.27 – Окно настройки внутрикристальной памяти 1.5.2 Добавление процессора в систему Следующим шагом в создании процессорной системы является добавление процессора. Для этого выберите в библиотеке IP ядро Processors/Nios II Processor, как показано на рис. 1.28. Затем надо настроить процессор. Для этого необходимо определить его параметры во вкладках Core Nios II, Caches and Memory Interfaces, Advanced Features, MMU and MPU settings, JTAG Debug Module, Custom Instruction. Приведенное ниже описание вкладок отражает параметры процессора Nios II, используемого в процессорной системе «DE2-70 Media Computer», представленной в третьей части учебного пособия. Рис. 1.28 – Выбор процессора Nios II из библиотеки Во вкладке Core Nios II, приведенной на рис. 1.29, необходимо выбрать одну из трех конфигураций процессора: Nios II/e, Nios II/s или Nios II/f. Основные характеристики процессорных ядер представлены на вкладке. Более подробное их описание содержится в разделе 4 настоящего пособия. В этой же вкладке определяются векторы сброса и прерываний (адреса памяти, на которые передается управление в результате сброса или возникновения прерываний в процессорной системе), а также способы реализации умножения и деления. Вкладка Caches and Memory Interfaces предназначена для определения параметров используемых КЭШа инструкций и КЭШа данных, а также интерфейсов со сильносвязанной памятью в процессорной системе. Фрагмент вкладки изображен на рис. 1.30. Рис. 1.29 – Вкладка Core Nios II Рис. 1.30 – Фрагмент вкладки Cache and Memory Interfaces Во вкладке Advanced Features определяются дополнительные возможности процессора, такие как тип используемого контроллера прерываний, количество теневых регистров, особые исключения и прочее. Данная вкладка представлена на рис. 1.31. Рис. 1.31 – Вкладка Advanced Features Вкладка MMU and MPU settings предназначена для настройки модулей управления памятью и защиты памяти. Опции становятся активными при подключении соответствующих модулей во вкладке Core Nios II для процессора Nios II/f . Эти модули используются для организации виртуальной памяти, а также для выполнения защиты памяти. Следует заметить, что MMU и MPU подключаются, когда в приложении используется операционная система. Внешний вид вкладки представлен на рис. 1.32. Параметры вкладки JTAG Debug Module настраивают модуль отладки процессорной системы Nios II. Определение параметров осуществляется выбором одного из уровней отладки. Чем выше уровень, тем больше возможностей отладки. В то же время, для реализации более высокого уровня отладки требуется большее количество ресурсов кристалла. Заполненная вкладка для процессора системы «DE2-70 Media Computer» представлена на рис. 1.33. Вкладка Custom Instructions используется для подключения пользовательских инструкций к системе команд процессора. В левом списке данной вкладки находятся инструкции, готовые к подключению. Список справа содержит подключенные инструкции и их настройки. Нижняя часть вкладки содержит управляющие кнопки. Внешний вид вкладки заполненной для процессорной системы «DE2-70 Media Computer» представлен на Рис. 1.32 – Вкладка MMU and MPU Settings Рис. 1.33 – Вкладка настройки модуля отладки процессорной системы рис. 1.34. Как видно из рисунка, к процессорной системе «DE2-70 Media Computer» подключены пользовательские инструкции fpoint с номерами 252-255 для реализации 4 арифметических операций над числами с плавающей запятой. Рис. 1.34 – Вкладка Custom Instructions Рис. 1.35 – Настройка процессора Nios II Для создаваемой в примере процессорной системы, выбираем ядро Nios II/s, с аппаратным умножением и делением. Векторы сброса и исключений указываем на встроенную память onchip_memory2_0 со смещением 0x0 и 0x100, соответственно. Остальные параметры оставляем без изменений. Заполненное окно для рассматриваемого примера представлено на рис. 1.35. 1.5.3 Добавление параллельных портов ввода/вывода в систему Следующим шагом в создании процессорной системы является добавление двух портов ввода/вывода PIO, один из которых будет настроен как входной порт, с возможностью формирования сигналов прерывания, а второй как выходной порт. Параллельные порты ввода/вывода находятся в библиотеке в следующем разделе: Peripherals / Microcontroller Peripherals, рис. 1.36. После добавления компонента в процессорную систему, на экране появляется окно, представленное на рис. 1.37. В нем необходимо указать параметры параллельного порта ввода/вывода. Основными параметрами являются тип порта, ширина данных, подключение регистров захвата фронта и способ формирования прерываний. Все параметры организованы в 5 групп: базовые параметры (Basic Settings), параметры выходного регистра (Output Register), параметры регистра захвата фронта (Edge capture register), параметры формирования прерываний (Interrupt) и параметры для тестирования (Test bench wiring). Рис. 1.36 – Добавление параллельных портов ввода/вывода Для первого порта ввода/вывода (рис. 1.37) задаем следующие параметры:
Второй порт (рис. 1.38) настроим так:
Остальные параметры оставляем без изменений. Рис. 1.37 – Настройка первого параллельного порта ввода/вывода Рис. 1.38 – Настройка второго порта ввода/вывода 1.5.4 Генерация проектных файлов процессорной системы Последним шагом в создании процессорной системы является ее генерация. Это действие инициируется нажатием кнопки “Generate”, расположенной в нижней части окна SOPC Builder, рис.1.39. После завершения генерации, процессорная система станет доступна в Quartus II. На рис. 1.40 приведено условное графическое обозначение (символ) созданной системы. В дальнейшем к системе могут быть добавлены другие модули и узлы стандартным образом [5]. Рис. 1.39 – Кнопка запуска генерации процессорной системы Рис. 1.40 – Символ сгенерированной SOPC системы
Для получения возможности наблюдения сигналов шины Avalon за пределами процессорной системы, а также для подключения к системе внешних компонентов, целесообразно в проектируемой системе создать внешний интерфейс шины Avalon. Сделать это можно, создав новый компонент без указания HDL файла его описания. Для этого выполните следующую последовательность действий.
Рис. 1.41 – Запуск мастера создания новых компонентов
Рис. 1.42 – Окно создания нового компонента Рис. 1.43 – Выбор интерфейсного шаблона Рис. 1.44 – Определение разрядности шин данных и адреса интерфейса компонента
Рис. 1.45 – Задание имени нового компонента Рис. 1.46 – Вставка интерфейсного компонента в систему Рис. 1.47 – Символ процессорной системы с выведенным интерфейсом 1.7 Добавление нового компонента в систему В этом разделе рассматривается пример подключения аппаратного модуля, описанного на языке VHDL, к библиотеке готовых компонентов SOPC Builder, взятый из [7]. Чтобы быть подключенным, аппаратный модуль должен состоять, как минимум, из двух частей – блока, описывающего функционирование модуля и блока, реализующего интерфейс с шиной Avalon. Шина Avalon имеет достаточно широкий набор интерфейсов. Один аппаратный модуль может использовать несколько подобных интерфейсов. В рассматриваемом примере созданы блоки с использованием языка VHDL, описания которых приведено ниже. Блок my_register.vhd, представленный в листинге 1, реализует простой 32-битный регистр, а модуль my_register_slave_interface.vhd, представленный в листинге 2, описывает интерфейсную часть создаваемого компонента. Он подключает регистр через шину Avalon к процессорной системе с одной стороны, и соединяет выход регистра со светодиодами, содержащимися на стенде, с другой стороны. Следует отметить, что подключение к процессорной системе аппаратных модулей, реализующих специализированные инструкции, осуществляется похожим образом. Отличие состоит в использовании вместо интерфейсного модуля с шиной Avalon интерфейсного модуля с шиной nios custom instruction slave. В представленном ниже примере интерфейсный модуль предназначен для создания соединения с шиной Avalon посредством интерфейса Avalon-MM Slave [8]. Листинг 1. Блок my_register.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY my_register IS PORT ( clock, resetn : IN STD_LOGIC; --синхросигнал и сигнал сброса byte_enable : IN STD_LOGIC_VECTOR(3 DOWNTO 0); --побайтное разрешение записи data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); --вход данных q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); --выход регистра END my_register; ARCHITECTURE Behavior OF my_register IS BEGIN PROCESS ( clock, resetn) BEGIN IF resetn = '0' THEN q <= "00000000000000000000000000000000"; ELSIF clock'EVENT AND clock = '1' THEN IF byte_enable(0) = '1' THEN q(7 DOWNTO 0) <= data(7 DOWNTO 0); END IF; IF byte_enable(1) = '1' THEN q(15 DOWNTO 8) <= data(15 DOWNTO 8); END IF; IF byte_enable(2) = '1' THEN q(23 DOWNTO 16) <= data(23 DOWNTO 16); END IF; IF byte_enable(3) = '1' THEN q(31 DOWNTO 24) <= data(31 DOWNTO 24); END IF; END IF; END PROCESS; END Behavior; Листинг 2. Блок my_register_slave_interface.vhd LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY my_register_slave_interface IS PORT( clock, resetn, read, write, chip_select : IN STD_LOGIC; -- byte_enable : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -- Основные сигналы writedata : IN STD_LOGIC_VECTOR(31 DOWNTO 0); -- шины Avalon readdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); -- to_lights : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); -- вывод на светодиоды END my_register_slave_interface; ARCHITECTURE Structure OF my_register_slave_interface IS SIGNAL local_byteenable : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL to_reg, from_reg : STD_LOGIC_VECTOR(31 DOWNTO 0); COMPONENT my_register PORT ( clock, resetn : IN STD_LOGIC; data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); byte_enable : IN STD_LOGIC_VECTOR(3 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END COMPONENT; BEGIN my_instance: my_register PORT MAP( clock, resetn, to_reg, local_byteenable, from_reg ); to_lights <= from_reg; -- to_reg <= writedata; -- Создание Avalon MM Slave интерфейса readdata <= from_reg; -- для регистра WITH (chip_select AND write AND not read ) SELECT -- local_byteenable <=byte_enable WHEN '1', "0000" WHEN OTHERS; END Structure; Последовательность действий, выполняемых пользователем для создания нового компонента SOPC Builder, должна быть следующей.
Рис. 1.48 – Вкладка HDL Files
Рис. 1.49 – Выбор файлов HDL описания нового компонента Рис.1.50 – Заполненная вкладка HDL Files Рис. 1.51 – Вкладка Signals для рассматриваемого примера Рис. 1.52 – Корректировка параметров Сигнал chip_select является сигналом типа chip_select интерфейса avalon_slave_0. Шина to_lights предназначена для вывода содержимого регистра на светодиоды, поэтому она должна относиться к интерфейсу Conduit с типом сигналов export. Последним шагом является настройка сигнала clock. Для этого, необходимо перейти во вкладку Interfaces, так как редактор нового компонента неправильно распознал этот сигнал и необходимо изменить его тип. Во вкладке Interfaces представлены все используемые интерфейсы и их параметры, рис. 1.53. Здесь необходимо для интерфейса clock_reset установить тип “Clock Input”, выбрав его в выпадающем списке, рис. 1.54. После чего, необходимо вернуться во вкладку Signals и для сигнала clock установить тип сигнала – clk. Полностью заполненная правильными значениями вкладка представлена на рис. 1.55. Последним шагом по корректировке параметров является назначение сигнала синхронизации для интерфейса Avalon_slave_0 и временных задержек для него во вкладке Interfaces. Чтобы назначить синхросигнал, необходимо выбрать “clock_reset” в выпадающем списке рядом с надписью Associated Clock. Ввиду того, что при доступе к созданному аппаратному блоку отсутствует задержка, в полях раздела Timing интерфейса Avalon_slave_0 должны быть нулевые значения. Для удобства пользователя, в разделах Read Waveform и Write Waveform отображаются временные диаграммы работы интерфейса с учетом параметров задержек. Фрагмент заполненной вкладки представлен на рис. 1.56. Рис. 1.53 – Фрагмент вкладки Interfaces Рис. 1.54 – Выбор типа интерфейса Рис. 1.55 – Заполненная вкладка Signals
Рис. 1.56 – Фрагмент заполненной вкладки Interfaces Рис. 1.57 – Результат работы мастера создания новых компонентов |
Учебное пособие Москва Издательство Московского государственного... Рекомендовано к изданию Редакционно-издательским советом университета в качестве учебного пособия для студентов направления 230100... |
Учебное пособие Издательство Иркутского государственного технического университета 2012 Тимофеева С. С. Защита литосферы и обращение с опасными отходами : учеб пособие. – Иркутск : Изд-во Иргту, 2012. – 159 с |
||
Учебное пособие Издательство Иркутского государственного технического университета 2012 Тимофеева С. С. Защита литосферы и обращение с опасными отходами : учеб пособие. – Иркутск : Изд-во Иргту, 2012. – 159 с |
2015 удк 378 вестник рыбинского государственного авиационного технического... ... |
||
2015 удк 378 вестник рыбинского государственного авиационного технического... ... |
Учебное пособие «Основы современной социологии» Год издания: 2001... Григорьев С. И., Растов Ю. Е. Основы современной социологии. Учебное пособие. Барнаул: Издательство Алтайского государственного университета,... |
||
Учебное пособие (Краткий курс) Москва Издательство Российского университета дружбы народов Учебное пособие предназначено для студентов, обучающихся в магистратуре и специализирующихся по защите растений |
Учебное пособие Москва Издательство Российского Университета дружбы народов 1998 ... |
||
Учебное пособие Часть 1 Р89 Русский язык и культура речи для студентов-нефилологов. Ч. 1: учебное пособие/ Колпакова Л. В., Максименко Е. В., Михайлова О.... |
Рабочая программа размещена на сайте Университета http :// utmn ru... Н. В. Бакша, А. А. Данилюк. Корпоративная социальная ответственность: учебное пособие. Тюмень: Издательство Тюменского государственного... |
||
Учебное пособие Издание третье, исправленное и дополненное Москва... Б 17 Литературное редактирование: Учеб пособие., изд. 3 – М.: Рудн, 2010. – 249 с |
Учебное пособие. М.: Издательство Московского университета, 2004 «Вся Россия», «Моя провинция», «Новости – время местное» и др Представлены также некоторые особенности совместной работы журналистов... |
||
Учебное пособие Часть II РФ, заведующая кафедрой детских болезней лечебного факультета I московского Государственного Медицинского университета им. И. М.... |
Учебное пособие Издательство Иркутского государственного технического университета 2014 Курышова И. В. История и теория местного самоуправления : учеб пособие. – Иркутск : Изд-во Иргту, 2014. – 112 с |
||
Методические рекомендации по подготовке и защите выпускной квалификационной... Печатается по решению Ученого совета Московского государственного медико-стоматологического университета им. А. И. Евдокимова (г.... |
Бурлюкина Е. В., Васильченко Н. Г. Экономика отрасли Учебное пособие... Рецензенты: Кафедра «Экономики и управления предприятием» Московского государственного университета инженерной экологии, зав кафедрой:... |
Поиск |