Jump to content

    

kreakozeablik

Участник
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

0 Обычный

About kreakozeablik

  • Rank
    Участник
  1. Я по xilinx-ам, правильность qsf и lpf не проверял. Буду рад замечаниям. https://bitbucket.org/kreakozeablik/pinextractor/
  2. Регистр bits размером в один бит. При записи в него значения 24, берется последний бит '0'. Замените на: reg [4:0] bits = 0;
  3. Сигнал Req требуется арбитру шины, для выбора одного из нескольких ведущих устройств, запрашивающих доступ, при этом неважно, что будет производиться чтение или запись. Сигнал R/W предназначен для ведомого.
  4. Входные данные загружаются в регистр. Затем, пока не будут обработаны все сигналы, производится сдвиг и увеличение на 1 счетчика. При появлении на выходе регистра «1», выдаем значение счетчика в качестве искомого номера.
  5. Там должен быть путь до проблемного модуля, он точно ведет в недра проекта edk? Можно создать проект заново и заменить новый mhs файл старым.
  6. Настройки map и par находятся в файле с расширением «opt» в папке etc. Формат файла описан в доках на утилиту xflow (папка_где_стоит_ISE\doc\usenglish\isehelp\devref.pdf, раздел 23). Можно EDK проект использовать как часть проекта ISE, тогда настройка производится в ISE.
  7. При создании проекта в EDK, при помощи "Base System Builder", на этапе "Board Selection" можно указать используемую отладочную плату. Для неё будет создан проект со всей переферией и соответствующим ucf файлом.
  8. 1 такт на один отсчет: module sort_list_cell(clk, rst, en, din, dprev, cprev, dout, cout); input clk; input en; input rst; input [15: 0] din; input [15: 0] dprev; // содержимое регистра предыдущего модуля input cprev; // значение на входе din больше чем dprev output [15: 0] dout; output cout; // значение на входе din больше чем dout reg [15: 0] dout; assign cout = din > dout; always @(posedge clk) if(rst) dout <= 16'd0; else if(en && cout) dout <= cprev? dprev: din; endmodule module sort_list(clk, rst, en, din, do0, d01, d02, do3); input clk; input en; input rst; input [15: 0] din; output [15:0] do0, do1, do2, do3; wire cprev0, cprev1, cprev2, cprev3; // Отсортированный список, наибольшее снизу sort_list_cell cell3 (.clk(clk), .en(en), .rst(rst), .din(din), .dprev(do2), .cprev(cprev2), .dout(do3), .cout(cprev3)); sort_list_cell cell2 (.clk(clk), .en(en), .rst(rst), .din(din), .dprev(do1), .cprev(cprev1), .dout(do2), .cout(cprev2)); sort_list_cell cell1 (.clk(clk), .en(en), .rst(rst), .din(din), .dprev(do0), .cprev(cprev0), .dout(do1), .cout(cprev1)); sort_list_cell cell0 (.clk(clk), .en(en), .rst(rst), .din(din), .dprev(15'd0), .cprev(1'b0), .dout(do0), .cout(cprev0)); endmodule Пример приведен для поиска четырех максимальных чисел, но легко масштабируется путем увеличения количества модулей sort_list_cell. Значение на входе сохраняется в модуле sort_list_cell, начиная с которого это значение превосходит значение регистра dout (условие позиции вставки: cprev = 0 и cout = 1). Остальные модули, у которых din > dout, берут новое значение регистра dout с выхода предыдущего модуля.