Перейти к содержанию
    

Проблема с добавлением IP Core в проект

Здравствуйте!

Не могу решить следующую проблему:

ERROR:Xst:528 - Multi-source in Unit <top> on signal <control<3>>; this signal is connected to multiple drivers.

Подключаю ICON, VIA и ILA.

Код топового файла следующий:

(Привожу часть кода, где используется переменная control)

`timescale 1ns / 1ps

module top
    (
        input clk, // опорный сигнал
        input enable, // кнопка
        
        output reg block_5V, // снятие блокировки
        output reg [4:0] cod, // код
        output reg comand, // команда
        output reg ready // готовность
    );
    
        wire [19:0] kod1; // массив исходных значений последовательностей кодов
        wire [19:0] kod2;
        wire [19:0] kod3;
        wire [19:0] kod4;
        wire [19:0] kod5;
        reg [4:0] i; // счетчик последовательностей кодов
        reg [20:0] cnt; // счетчик для установления времени интервалов
        wire [35:0] control;
        

sourse sourse
(
    .clk(clk),
    .kod1(kod1),
    .kod2(kod2),
    .kod3(kod3),
    .kod4(kod4),
    .kod5(kod5)
);

ipcore_icon_verilog ICON
(
    .CONTROL0 (control)
);

ipcore_ila_verilog ILA
(
    .CLK (clk),
    .CONTROL (control),
    .TRIG0 (block_5V),
    .TRIG1 (cod),
    .TRIG2 (comand),
    .TRIG3 (ready),
    .TRIG4 (enable)
    
);

ipcore_vio_verilog VIO
(
    .CLK (clk),
    .CONTROL (control)
);

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могу решить следующую проблему:

Он же написал

Multi-source in Unit <top> on signal <control<3>>; this signal is connected to multiple drivers.

Т.е. 3 разряд сигнала control имеет в качестве входного драйвера несколько источников, чего быть не может, т.е. скорее всего перепутали input/output. Приведите для всех модулей часть кода с описанием портов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вроде верно все.

 

`timescale 1ns / 1ps

module ipcore_icon_verilog(
    inout [35:0] CONTROL0
    );

ipcore_icon ICON (
    .CONTROL0(CONTROL0) // INOUT BUS [35:0]
);

endmodule

 

`timescale 1ns / 1ps
module ipcore_ila_verilog(
    inout [35:0] CONTROL,
    input CLK,
    input TRIG0,
    input [4:0] TRIG1,
    input TRIG2,
    input TRIG3,
    input TRIG4
    );

ipcore_ila ILA (
    .CONTROL(CONTROL), // INOUT BUS [35:0]
    .CLK(CLK), // IN
    .TRIG0(TRIG0), // IN BUS [0:0]
    .TRIG1(TRIG1), // IN BUS [4:0]
    .TRIG2(TRIG2), // IN BUS [0:0]
    .TRIG3(TRIG3), // IN BUS [0:0]
    .TRIG4(TRIG4) // IN BUS [0:0]
);

endmodule

 

`timescale 1ns / 1ps
module ipcore_vio_verilog(
    inout [35:0] CONTROL,
    input CLK,
    input [7:0] SYNC_IN,
    output [7:0] SYNC_OUT
    );
     
ipcore_vio VIO (
    .CONTROL(CONTROL), // INOUT BUS [35:0]
    .CLK(CLK), // IN
    .SYNC_IN(SYNC_IN), // IN BUS [7:0]
    .SYNC_OUT(SYNC_OUT) // OUT BUS [7:0]
);

endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Внутри вашей ПЛИС нет буферов с z-состоянием. Вывод - нельзя использовать inout внутри ПЛИС. Вывод - пересматривайте дизайн вашей схемы. Посмотрите как организована шина wishbone.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно как-то использование этих IP Core для моей программы на этой ПЛИС, если буферы с z-состоянием отсутствуют?

Так же в моем коде выходным сигналам должны присваиваться в некоторых местах именно z-состояния.

Объясните пожалуйста подробнее. Программирую на ПЛИС не так давно, мне не совсем понятно.

Изменено пользователем RinettaFox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так же в моем коде выходным сигналам должны присваиваться в некоторых местах именно z-состояния.

Буферы ввода-вывода с третим(z) состоянием имеются только на портах ввода-вывода. Иными словами вы можете использовать inout или out с z-состоянием только в top модуле, но никак не во внутренних. Такова аппаратная архитектура современных ПЛИС.

 

Возможно как-то использование этих IP Core для моей программы на этой ПЛИС

В том виде, в котором делаете вы, нельзя, так как шина control двунаправленная. Разделите прием и передачу на две независимые шины.

Изменено пользователем likeasm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно как-то использование этих IP Core для моей программы на этой ПЛИС, если буферы с z-состоянием отсутствуют?

Так же в моем коде выходным сигналам должны присваиваться в некоторых местах именно z-состояния.

Объясните пожалуйста подробнее. Программирую на ПЛИС не так давно, мне не совсем понятно.

Что Вам требуется реализовать, конкретизируйте задачу? По поводу z - состояния ответили. Как правильно подключать в описании смотрите соседнюю ветку http://electronix.ru/forum/index.php?showtopic=134801 , пост 5.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Справедливости ради надо отметить, что синтезатор (XST) пытается шины с Z состоянием преобразовать в набор мультиплексоров. Так что иногда шины с 3мя состояниями внутри FPGA работать будут (несмотря на их физическое отсуствие в кристале), но в вашем случае синтезатор не справился (вы соединили вместе 3 двунаправленных порта и еще неизвестно что за ними стояло внутри модулей).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Принцип работы tristate буфера здесь вообще ни при чём! У ICON модуля шина CONTROL нужна для управления, например, лог.анализатором ILA. Связкой ICON + ILA я когда-то пользовался, всё синтезировалось и работало, нужно просто соединить CONTROL от одного ядра к другому. Но у вас тут появился VIO. И что-то мне кажется, что нельзя ICON подключать одновременно на ILA и на VIO через одни CONTROL порт. В этом и конфликт.

 

На просторах xilinx форума вычитал это:

Please note that each ICON core can have multiple ILA cores by generating an ICON core with multiple CONTROL ports (one CONTROL port per ILA instance).

В вашем случае, по идее на один порт вешается ILA, а на другой VIO.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, спасибо, я сама уже это поняла. Подключила ILA и VIO через два разных порта CONTROL. Все заработало. Но в ILA и VIO нужно было порт CONTROL изменить с inout на input. Без этого не работало. Почему так?

 

И еще такой вопрос. Сейчас пытаюсь включить анализатор, но он требует подсоединить кабель. Мне нужно проверить сначала не на реальной плате, а через VIO. Как его правильно настроить? Не нашла как.

Изменено пользователем RinettaFox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще такой вопрос. Сейчас пытаюсь включить анализатор, но он требует подсоединить кабель. Мне нужно проверить сначала не на реальной плате, а через VIO. Как его правильно настроить? Не нашла как.

 

Чипскоп не на реальной плате? Это что-то новое. Чипскоп работает только на реальной физической плате, для остального есть моделирование.

Возможно, в заблуждение вводят слова "виртуальный ввод-вывод". Виртуальность здесь только в том, что кнопки и индикаторы не физические, а программные :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...