реклама на сайте
подробности

 
 
> microblaze verilog, ошибка при компиляции
serg_k1
сообщение May 28 2013, 10:38
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



система с головной microblaze и подчиненный data_video_in_out . В microblaze добавлены

input [31:0] DIP_Switches_32Bits_GPIO_IO_I_pin;
input [4:0] Push_Buttons_5Bits_GPIO_IO_I_pin;
output clock_generator_0_CLKOUT4_pin;

RESET и clock_generator_0_CLKOUT4_pin входные для data_video_in_out ,
в нем data_v_out(DIP_Switches_32Bits_GPIO_IO_I_pin ) и strob_v_out(Push_Buttons_5Bits_GPIO_IO_I_pin )
выходы и входы для microblaze.
симуляция в Isim работает. правда для этого потребовалось убрать в сгенерированном Verilog Test Fixture

//reg [31:0] DIP_Switches_32Bits_GPIO_IO_I_pin;
//reg [4:0] Push_Buttons_5Bits_GPIO_IO_I_pin;

при компиляции выдает следующую ошибку

Multi-source in Unit <mb_top> on signal <Push_Buttons_5Bits_GPIO_IO_I_pin<4>>; this signal is connected to multiple drivers.
такая же выдается для всех Push_Buttons_5Bits_GPIO_IO_I_pin и DIP_Switches_32Bits_GPIO_IO_I_pin
но они же и должны быть для одного входы для другого выходы.
Сначала было

Код
assign  DIP_Switches_32Bits_GPIO_IO_I_pin = data_v_out;
...
.data_v_out(data_v_out ),
...
...
результат тот же.
где ошибка?

Код

// mb_top.v
//-----------------------------------------------------------------------------

module mb_top
  (
   ...
   RESET,
   ...
    DIP_Switches_4Bits_TRI_I,
    CLK_P,
    CLK_N,
    DIP_Switches_32Bits_GPIO_IO_I_pin,
    Push_Buttons_5Bits_GPIO_IO_I_pin,
    clock_generator_0_CLKOUT4_pin
  );
  
...
  input [3:0] DIP_Switches_4Bits_TRI_I;
  input CLK_P;
  input CLK_N;
  input [31:0] DIP_Switches_32Bits_GPIO_IO_I_pin;
  input [4:0] Push_Buttons_5Bits_GPIO_IO_I_pin;
  output clock_generator_0_CLKOUT4_pin;

  (* BOX_TYPE = "user_black_box" *)
  mb
    mb_i (
      
      ...
     ...
    
      .DIP_Switches_4Bits_TRI_I ( DIP_Switches_4Bits_TRI_I ),
      .CLK_P ( CLK_P ),
      .CLK_N ( CLK_N ),
      .DIP_Switches_32Bits_GPIO_IO_I_pin ( DIP_Switches_32Bits_GPIO_IO_I_pin ),
      .Push_Buttons_5Bits_GPIO_IO_I_pin ( Push_Buttons_5Bits_GPIO_IO_I_pin ),
      .clock_generator_0_CLKOUT4_pin ( clock_generator_0_CLKOUT4_pin )
    );

wire RESET, clock_generator_0_CLKOUT4_pin;
wire [31:0] DIP_Switches_32Bits_GPIO_IO_I_pin;
wire [4:0] Push_Buttons_5Bits_GPIO_IO_I_pin;



// Instantiate the module
data_video_in_out instance_name (
    ...

    .clock_mb(clock_generator_0_CLKOUT4_pin),
    .reset(RESET),
    .data_v_out(DIP_Switches_32Bits_GPIO_IO_I_pin ),

    ...

   .strob_v_out(Push_Buttons_5Bits_GPIO_IO_I_pin )
    );
    
endmodule


если задать разные имена , то ошибка будет
<DIP_Switches_32Bits_GPIO_IO_I_pin_1> is already implicitly declared earlier.
если же убрать декларацию wire , то ошибок нет . но тогда шины превращаются в одиночную. что не нужно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение May 28 2013, 13:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



module mb_top
input [31:0] DIP_Switches_32Bits_GPIO_IO_I_pin;
это 32 пина входных, то есть снаружи блока их могут менять

mb_i
.DIP_Switches_32Bits_GPIO_IO_I_pin ( DIP_Switches_32Bits_GPIO_IO_I_pin ),
это еще 32 пина которые идут в модуль МБ_И,
у них тоже имя, и среда их направила со входа главного модуля в этот

а дальше

data_video_in_out instance_name (
.data_v_out(DIP_Switches_32Bits_GPIO_IO_I_pin_wire ),
еще 32 пина которые идут из модуля видео_ин_аут, и поскольку
дальше
assign DIP_Switches_32Bits_GPIO_IO_I_pin = DIP_Switches_32Bits_GPIO_IO_I_pin_wire
фактически они тоже имя (DIP_Switches_32Bits_GPIO_IO_I_pin) и среда их воткнул на вход блока мб и подключила к ним вход верхнего блока

входной сигнал главного модуля и выходной ин оута конфликтуют.

допустим у вас есть MB с сигналом SIGNAL_IN
есть VIDEO_OUT с сигналом SIGNAL_OUT
делаете

wire [31:0] signal_wire

и даете им обоим на вход (поставьте в скобочки при подключении блока), это свяжет ваши 2 блока между собой.

MB(
....
.SIGNAL_IN(signal_wire)
...

VIDEO_OUT(
...
.SIGNAL_OUT(signal_wire)
...

в вашем последнем коде все верно, можно только использовать 1 wire, и надо убедиться что в объявлении верхнего модуля в котором вставлены эти 2 блока нет входов с тем же именем, а именно DIP_Switches_32Bits_GPIO_IO_I_pin,



как это нарушается разрядность? по каким критериям это видно? Внутри блоков правильная разрядность?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 04:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01579 секунд с 7
ELECTRONIX ©2004-2016