Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с добавлением IP Core в проект
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
RinettaFox
Здравствуйте!
Не могу решить следующую проблему:
Цитата
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
bogaev_roman
Цитата(RinettaFox @ Apr 14 2016, 17:01) *
Не могу решить следующую проблему:

Он же написал
Цитата
Multi-source in Unit <top> on signal <control<3>>; this signal is connected to multiple drivers.

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

Код
`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
likeasm
Внутри вашей ПЛИС нет буферов с z-состоянием. Вывод - нельзя использовать inout внутри ПЛИС. Вывод - пересматривайте дизайн вашей схемы. Посмотрите как организована шина wishbone.
RinettaFox
Возможно как-то использование этих IP Core для моей программы на этой ПЛИС, если буферы с z-состоянием отсутствуют?
Так же в моем коде выходным сигналам должны присваиваться в некоторых местах именно z-состояния.
Объясните пожалуйста подробнее. Программирую на ПЛИС не так давно, мне не совсем понятно.
likeasm
Цитата(RinettaFox @ Apr 15 2016, 05:50) *
Так же в моем коде выходным сигналам должны присваиваться в некоторых местах именно z-состояния.

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

Цитата(RinettaFox @ Apr 15 2016, 05:50) *
Возможно как-то использование этих IP Core для моей программы на этой ПЛИС

В том виде, в котором делаете вы, нельзя, так как шина control двунаправленная. Разделите прием и передачу на две независимые шины.
bogaev_roman
Цитата(RinettaFox @ Apr 15 2016, 04:50) *
Возможно как-то использование этих IP Core для моей программы на этой ПЛИС, если буферы с z-состоянием отсутствуют?
Так же в моем коде выходным сигналам должны присваиваться в некоторых местах именно z-состояния.
Объясните пожалуйста подробнее. Программирую на ПЛИС не так давно, мне не совсем понятно.

Что Вам требуется реализовать, конкретизируйте задачу? По поводу z - состояния ответили. Как правильно подключать в описании смотрите соседнюю ветку http://electronix.ru/forum/index.php?showtopic=134801 , пост 5.
XVR
Справедливости ради надо отметить, что синтезатор (XST) пытается шины с Z состоянием преобразовать в набор мультиплексоров. Так что иногда шины с 3мя состояниями внутри FPGA работать будут (несмотря на их физическое отсуствие в кристале), но в вашем случае синтезатор не справился (вы соединили вместе 3 двунаправленных порта и еще неизвестно что за ними стояло внутри модулей).
RinettaFox
Спасибо всем за ответ, буду разбираться сейчас.
Inanity
Принцип работы 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.
RinettaFox
Да, спасибо, я сама уже это поняла. Подключила ILA и VIO через два разных порта CONTROL. Все заработало. Но в ILA и VIO нужно было порт CONTROL изменить с inout на input. Без этого не работало. Почему так?

И еще такой вопрос. Сейчас пытаюсь включить анализатор, но он требует подсоединить кабель. Мне нужно проверить сначала не на реальной плате, а через VIO. Как его правильно настроить? Не нашла как.
kira66
Цитата(RinettaFox @ Apr 17 2016, 12:07) *
И еще такой вопрос. Сейчас пытаюсь включить анализатор, но он требует подсоединить кабель. Мне нужно проверить сначала не на реальной плате, а через VIO. Как его правильно настроить? Не нашла как.


Чипскоп не на реальной плате? Это что-то новое. Чипскоп работает только на реальной физической плате, для остального есть моделирование.
Возможно, в заблуждение вводят слова "виртуальный ввод-вывод". Виртуальность здесь только в том, что кнопки и индикаторы не физические, а программные sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.