Скачати 52.27 Kb.
|
Практическая работа № 5 Тема: приобретение навыков работы с САПР Quartus II. Создание блок-схемы. Создание описания на языке Verilog HDL. Цель: рассмотреть этапы создания блок-схемы верхнего уровня иерархии, создание описания на языке Verilog HDL (Создание текстового файла Verilog Design File для блока hvalues и для других блоков). После создания блока необходимо создать файл описания этого блока (если описание еще не создано). Система Quaitus позволяет сначала создать файл с основной (типовой) структурой описываемого блока, а затем наполнить эту структуру конкретным содержанием. 1. Создание описания блока hvalues на языке Verilog HDL. Для создания структуры текстового файла Verilog Design File (*v) блока hvalues выполните следующие действия: 1. Выделите блок hvalues. 2. Нажмите правую кнопку мыши и во всплывающем меню выберите команду Create Design File (создать файл проекта). 3. Под надписью File type (тип файла) выберите Verilog HDL (файл на языке Verilog HDL). 4. Включите функцию Add the new design file to the current project (добавить новый файл к текущему проекту). 5. Проверьте, чтобы в строке File name (имя файла) отображался файл hvalues.v, расположенный в рабочем каталоге проекта firjfilter 6. Нажмите кнопку ОК. Система Quartus сообщит об успешном создании файла и автоматически откроет окно текстового редактора (Text Editor) с загруженным в него новым файлом. Фрагмент созданного файла показан ниже Файл включает шаблон объявления модуля с именами портов соответствующим определенным в блоке данным. В тексте описания собержится несколько пар созданных системой комментариев, которые начинаются со слов "ALTERA" и заканчиваются словами "DO NOT REMOVE THIS LINE!" He вводите текст между этими комментариями, поскольку он впоследствии может быть изменен системой Quartus. ![]() 7. Для выполнения описания блока hvalues.v перед выражением endmodule введите следующие строки: ![]() Теперь описание hvalues.v примет следующий вид: ![]() ![]() 8. Сохраните файл проекта, выбрав в меню File (операции с файлами) команду Save (сохранить). Описание блока taps: // Module Declaration module taps ( // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE! clk, reset, sel, newt, d, x // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE! ); // Port Declaration // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! input clk; input reset; input [1:0] sel; input newt; input [7:0] d; output [7:0] x; // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! // Wire Declaration reg [7:0] x, xn, xn_1, xn_2, xn_3; // Register element always @(posedge clk or posedge reset) begin if (reset) begin xn = 8'b00000000; xn_1 = 8'b00000000; xn_2 = 8'b00000000; xn_3 = 8'b00000000; end else if (newt) begin xn_3 = xn_2; xn_2 = xn_1; xn_1 = xn; xn = d; end end // Mux element always @(sel or xn or xn_1 or xn_2 or xn_3) case (sel) 2'b 00: x = xn; 2'b 01: x = xn_1; 2'b 10: x = xn_2; 2'b 11: x = xn_3; default: x = 8'bXXXXXXXX; endcase endmodule Описание блока state_m: // Module Declaration module state_m ( // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE! clk, reset, newt, sel, follow, first // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE! ); // Port Declaration // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! input clk, reset, newt; output follow, first; output [1:0]sel; // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! // Wire Declaration reg follow, first; reg [1:0] sel; reg [2:0] filter; parameter idle = 0, tap1 = 1, tap2 = 2, tap3 = 3, tap4 = 4; always begin case (filter) idle: begin sel = 2'b0; follow = 1'b0; first = 1'b0; end tap1: begin sel = 2'b0; follow = 1'b0; first = 1'b1; end tap2: begin sel = 2'b01; follow = 1'b0; first = 1'b0; end tap3: begin sel = 2'b10; follow = 1'b0; first = 1'b0; end tap4: begin sel = 2'b11; follow = 1'b1; first = 1'b0; end default : begin sel = 2'b00; follow = 1'b0; first = 1'b0; end endcase end always @(posedge clk or posedge reset) begin if (reset) filter = idle; else case (filter) idle: begin if (newt) filter = tap1; end tap1: begin filter = tap2; end tap2: begin filter = tap3; end tap3: begin filter = tap4; end tap4: begin if (newt) filter = tap1; else filter = idle; end endcase end endmodule Описание блока acc: // Module Declaration module acc ( // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE! xh, clk, first, yn // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE! ); // Port Declaration // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE! input [10:0] xh; input clk; input first; output [7:0] yn; // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE! reg [7:0]yn; reg [11:0] ynm, result, a_in; wire [11:0] inter; // Describe Multiplexer always @(first or result) begin case (first) 1'b 0: ynm = result; 1'b 1: ynm = 12'b000000000000; endcase end always @(posedge clk) begin result = inter; end always @(xh) begin a_in[10:0] = (xh); a_in[11] = 0; end always @(result) begin yn[7:0] = result[11:4]; end accum inst_1(.dataa(a_in), .datab(ynm), .result(inter)); endmodule ^ Для рассматриваемого проекта необходимо создать функцию 12-разрядного арифметического сумматора. Вы можете создать ее на основе стандартной мегафункций lpm_add_sub. Например, так создана функция accum, представляемая файлом acc.v. Для создания таких функций удобно пользоваться встроенным в пакет Quartus мастером мегафункций MegaWizard. Создание текстового Verilog HDL-описания блока на основе мегафункции. Чтобы создать описание Verilog HDL функционального блока на основе готовой мегафункции lpm_add_sub с помощью мастера MegaWizard выполните следующие действия: 1. В меню ^ (инструментальные средства) выберите команду MegaWizard. Появится окно мастера MegaWizard 2. На вопрос: "Which action do you want to perform?" (какое действие вы хотите выполнить?) выберите Create a new custom megafunction variation (создать новый блок на основе мегафункции), нажмите кнопку Next (следующий шаг). 3. В списке Available Megafunctions (доступные мегафункции) раскройте папку арифметических мегафункции, щелкнув по значку "+", и затем выберите мегафункцию LPM_ADD_SUB (мегафункция сумматора/вычитателя). 4. На вопрос: "Which type of output file do you want to create?" (какой тип выходного файла вы хотите создать?) выберите Verilog HDL. 5. На вопрос: "What name do you want for the output file?" (как вы хотите назвать выходной файл?) введите d:\qdesigns\fir_filter\accum.v и нажмите кнопку Next (следующий шаг). 6. На вопрос: "How wide should the input buses be?" (какова требуемая разрядность входных шин 'dataa' и 'datab'?) введите 8. 7. На вопрос: "Which operating mode do you want for the adder/ subtracter?" (каков требуемый режим работы сумматора/вычитателя) выберите Addition only (только суммирование) и нажмите кнопку Next (следующий шаг). 8. На вопрос: "Is the 'dataa' or 'datab' bus value a constant?" (является ли шина dataa' или datab' константой?) выберите No (нет) — оба значения переменные, и нажмите кнопку Next (следующий шаг). 9. На вопрос: "Do you want any optional inputs or outputs?" (хотите использовать какие-либо дополнительные входы или выходы?) удостоверьтесь, что все дополнительные входы/выходы выключены и нажмите кнопку Next (следующий шаг). 10. На вопрос: "Do you want to pipeline the function?" (хотите реализовать эту функцию с использованием конвейера?) выберите No (нет) и нажмите ^ (следующий шаг) Появится итоговая страница со списком файлов созданных встроенным мастером 11. Нажмите кнопку Finish (готово) — мастер MegdWizard создаст файл accum.v, готовый к использованию в вашем проекте. Подключение к проекту файлов, созданных мастером MegaWizard Для того чтобы добавить созданные файлы acumen.v и mult.v к проекту fir_filter, выполните следующие действия: 1. В меню Project (проект) выберите команду Add Files to Project (добавить файлы к проекту). Автоматически появится вкладка Add Files. 2. В поле File Name (имя добавляемого файла) введите файл accum.v и, при необходимости, файл mult.v. 3. Нажмите кнопку ОК. Теперь вы создали все необходимые файлы и добавили их к проекту fir_filter. |
![]() | Практическая работа №3 Тема: приобретение навыков работы с сапр Тема: приобретение навыков работы с сапр quartus II. Работа с графическим редактором и редактором временных диаграмм. Компиляция... | ![]() | Практическая работа №1 Тема: приобретение навыков работы с сапр Тема: приобретение навыков работы с сапр quartus II. Работа с графическим редактором и редактором временных диаграмм. Компиляция... |
![]() | Практическая работа № Работа с диагностической программой общего назначения Цель работы: знакомство с классификацией и возможностями диагностических программам общего и специального назначения, приобретение... | ![]() | Лабораторная работа Приобретение студентами практических навыков описания бизнес процессов предприятия на основе стандарта ide получение навыков работы... |
![]() | Лабораторная работа №1 Цель работы : Изучение основных элементов рабочего стола и приобретение навыков работы с ними | ![]() | Лабораторная робота №5 Приобретение практических навыков разработки сложных цифровых устройств с помощью сапр max+plus ii'' |
![]() | Лабораторная работа №1 Тема : Планировка Цель работы: закрепление теоретических знаний о функциональных процессах подготовительного производства, применяемых подъемно-транспортных... | ![]() | Практическая работа №4 Тема: Файлы. Характеристики файлов Имя может быть до 255 символов и нести логическое направление. Например: Практическая работа №4. Которое характеризует содержимое... |
![]() | Практическая работа №6 Тема: управление процессами Цель: Изучить организацию размещения файлов на диске и технологию работы с ними в ntfs | ![]() | Практическая работа №6 Тема: компиляция проекта в с сапр Цель: изучение основных параметров компилятора, рассмотрение определения семейства и типа плис, определения режима компиляции, определения... |