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

 
 
> снова tristate bridge :(
DASM
сообщение Feb 28 2011, 14:34
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



чет не понимаю. У меня два чипа, у них data, addr, wr, rd - соединены на плате, разный только CS.
Беру компонент tristate bridge и вешаю два таких чипа.
в файле mysystem_inst.v вижу такое
.chip1_data (chip1_data)
.chip2_data (chip2_data)
.chip1_wr (chip1_wr)
.chip2_wr (chip2_wr)

и тд по всем этим ногам. Ну с CS все ясно - их действительно два. А со остальным что делать ? Ведь ПИНОВ например output chip1_wr и chip2_wr у меня нету, есть один общий chip_wr.
Пока решил проблему так
wire chip1_wr;
wire chip2_wr;
assign chip_wr = chip1_wr & chip2_wr; ну и далее подставляю их в inst как
.chip1_wr (chip1_wr)
.chip2_wr (chip2_wr)
а на top вывожу просто chip_wr; Работает, но это разве так и надо ? Нафига мне вообще тогда этот бридж нужен, ноги в Hiz я и сам могу перевести... ничо не понимаю...
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 18)
vadimuzzz
сообщение Feb 28 2011, 15:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



в настройках бриджа понатыкайте галочек "Shared Signals". вот прямо сейчас создал систему с бриджом и 2-мя SRAM.
у бриджа все галки взвел, вот что билдер сгенерил:
Код
  output           select_n_to_the_sram_0;
  output           select_n_to_the_sram_1;
  output  [ 19: 0] tri_state_bridge_0_address;
  output  [  3: 0] tri_state_bridge_0_byteenablen;
  inout   [ 31: 0] tri_state_bridge_0_data;
  output           tri_state_bridge_0_readn;
  output           tri_state_bridge_0_writen;
  input            clk_0;
  input            reset_n;
Go to the top of the page
 
+Quote Post
DASM
сообщение Feb 28 2011, 15:07
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



это в каком файле он такое генерит ?? Галки ставил - толку ноль. и в _штые файле по-прежнему сигналы предлагается делать "Example instantiation for system" как для раздельных шин =(
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Feb 28 2011, 15:31
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(DASM @ Feb 28 2011, 21:07) *
это в каком файле он такое генерит ?? Галки ставил - толку ноль. и в _штые файле по-прежнему сигналы предлагается делать "Example instantiation for system" как для раздельных шин =(

файл верхнего модуля системы
Go to the top of the page
 
+Quote Post
DASM
сообщение Feb 28 2011, 15:32
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



я ж его сам создал на верилоге...
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Feb 28 2011, 15:47
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(DASM @ Feb 28 2011, 21:32) *
я ж его сам создал на верилоге...

ну, тот, что SOPC-Builder генерит. вы его себе инстанцируете. вот в нем и смотрите, что билдер нагенерил.
Go to the top of the page
 
+Quote Post
DASM
сообщение Feb 28 2011, 15:51
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



так... он мне генерит файл lalalala_inst.v - вот из него я и беру. Но он упорно плюет на все галки, и даже шину данных предлагает выводить на разные ноги !!
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Feb 28 2011, 15:58
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



значит с компонентами что-то не так.. попробуйте 1 бридж и 2 SRAM из готовых.
Go to the top of the page
 
+Quote Post
DASM
сообщение Feb 28 2011, 16:03
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Угу, с готовыми все красиво. (то есть как и написали Вы) А с моим компонентом не хотит.. странно.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Feb 28 2011, 16:06
Сообщение #10


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(vadimuzzz @ Feb 28 2011, 18:58) *
значит с компонентами что-то не так.. попробуйте 1 бридж и 2 SRAM из готовых.

+1
Avalon Tristate Slave самописный, или из Template сделан?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 1 2011, 07:43
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Slave самописный, но какие-там грабли то ?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 1 2011, 07:57
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(DASM @ Mar 1 2011, 13:43) *
Slave самописный, но какие-там грабли то ?

грабли м.б. не в нем, а в tcl-файле компонента. ну, и не видя исходников, только телепат может указать на проблему.
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 1 2011, 08:19
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



щас поглядим-с....

Код
Упрощенно так. У меня в верилоге некая прослойка
module w5300
(
// avalon
  inout [31:0] avs_data;
  input avs_wr_n;
  input avs_rd_n;
// conduit
inout [15:0] data;
output nwr;
output nrd;
);
assign nwr = avs_wr_n;
assign nrd = avs_rd_n;
....//// далее небольшие махинации с data (отсекание старшей части, перевод в Hiz если rd_n неактивен итп, вобщем ничего особенного)
endmodule


В tcl тоже ничего страшного
Код
add_interface avalon_tristate_slave avalon_tristate end
add_interface_port avalon_tristate_slave avs_wr_n wr_n Input 1
add_interface_port avalon_tristate_slave avs_rd_n rd_n Input 1
и т д
# +-----------------------------------
# | connection point conduit_end
# |
add_interface conduit_end conduit end

set_interface_property conduit_end ENABLED true
add_interface_port conduit_end nwr export Output 1
add_interface_port conduit_end nrd export Output 1
итд


Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 1 2011, 08:40
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



УМВР ЧЯДНТ?
вот, сляпал компонент из темплейта (chipselect, правда, похерил - вместо него ресет вывелся на каждый чип)
W5300-hw.tcl:
CODE

# TCL File Generated by Component Editor 10.1
# Thu Jan 27 15:05:31 OMST 2011
# DO NOT MODIFY


# +-----------------------------------
# |
# | W5300 "W5300" v1.0
# | vadimuzzz 2011.01.27.15:05:31
# |
# |
# +-----------------------------------

# +-----------------------------------
# | request TCL package from ACDS 10.1
# |
package require -exact sopc 10.1
# |
# +-----------------------------------

# +-----------------------------------
# | module W5300
# |
set_module_property NAME W5300
set_module_property VERSION 1.0
set_module_property INTERNAL false
set_module_property OPAQUE_ADDRESS_MAP true
set_module_property GROUP "Peripherals/Microcontroller Peripherals"
set_module_property AUTHOR vadimuzzz
set_module_property DISPLAY_NAME W5300
set_module_property INSTANTIATE_IN_SYSTEM_MODULE false
set_module_property EDITABLE true
set_module_property ANALYZE_HDL AUTO
# |
# +-----------------------------------

# +-----------------------------------
# | files
# |
# |
# +-----------------------------------

# +-----------------------------------
# | parameters
# |
# |
# +-----------------------------------

# +-----------------------------------
# | display items
# |
# |
# +-----------------------------------

# +-----------------------------------
# | connection point s0
# |
add_interface s0 avalon_tristate end
set_interface_property s0 activeCSThroughReadLatency false
set_interface_property s0 associatedClock clock
set_interface_property s0 explicitAddressSpan 0
set_interface_property s0 holdTime 0
set_interface_property s0 isMemoryDevice true
set_interface_property s0 isNonVolatileStorage false
set_interface_property s0 maximumPendingReadTransactions 0
set_interface_property s0 printableDevice false
set_interface_property s0 readLatency 2
set_interface_property s0 readWaitStates 0
set_interface_property s0 readWaitTime 0
set_interface_property s0 setupTime 0
set_interface_property s0 timingUnits Cycles
set_interface_property s0 writeWaitTime 0

set_interface_property s0 ENABLED true

add_interface_port s0 ats_s0_address address Input 9
add_interface_port s0 ats_s0_read_n read_n Input 1
add_interface_port s0 ats_s0_data data Bidir 16
add_interface_port s0 ats_s0_write_n write_n Input 1
# |
# +-----------------------------------

# +-----------------------------------
# | connection point clock
# |
add_interface clock clock end
set_interface_property clock clockRate 0

set_interface_property clock ENABLED true

add_interface_port clock clk clk Input 1
# |
# +-----------------------------------

# +-----------------------------------
# | connection point reset
# |
add_interface reset reset end
set_interface_property reset associatedClock clock
set_interface_property reset synchronousEdges DEASSERT

set_interface_property reset ENABLED true

add_interface_port reset reset reset Input 1
# |
# +-----------------------------------

# +-----------------------------------
# | connection point irq0
# |
add_interface irq0 interrupt end
set_interface_property irq0 associatedAddressablePoint s0
set_interface_property irq0 associatedClock clock
set_interface_property irq0 associatedReset reset

set_interface_property irq0 ENABLED true

add_interface_port irq0 ins_irq0_irq irq Output 1
# |
# +-----------------------------------


добавил бридж и 2 компонента.

в бридже взвел все крыжики на вкладке "Shared Signals"

и вуаля:
Код
  //Example instantiation for system 'sopc1'
  sopc1 sopc1_inst
    (
      .clk_0                         (clk_0),
      .ins_irq0_irq_from_the_W5300_0 (ins_irq0_irq_from_the_W5300_0),
      .ins_irq0_irq_from_the_W5300_1 (ins_irq0_irq_from_the_W5300_1),
      .reset_n                       (reset_n),
      .reset_to_the_W5300_0          (reset_to_the_W5300_0),
      .reset_to_the_W5300_1          (reset_to_the_W5300_1),
      .tri_state_bridge_0_address    (tri_state_bridge_0_address),
      .tri_state_bridge_0_data       (tri_state_bridge_0_data),
      .tri_state_bridge_0_readn      (tri_state_bridge_0_readn),
      .tri_state_bridge_0_writen     (tri_state_bridge_0_writen)
    );


догадка: корень проблем тут:
Цитата
//// далее небольшие махинации с data (отсекание старшей части, перевод в Hiz если rd_n неактивен итп, вобщем ничего особенного)

//этими махинациями тристейт бридж и занимается
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 1 2011, 08:46
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



догадка по-моему неверна. Опять таки - вы не используете прослойку из verilog файла, а мне она нужна. Походе дело немного труба, вот на альтера форумс пишут
"The (avalon <-> verilog) part can not use tristate signals, since there are no tristate buses in most FPGA chips. If you do use tristate signals, the wired-bus will be transformed into a multiplexer by the compiler.

So you should connect the avalon signals writedata and readdata to your verilog component, and than code them in verilog into a tristate bus (to be exported). This way you create your own avalon_tristate_bridge instead using the one provided by Altera.

NOTE: most simple component interfaces (even tristate) can be created without any HDL code, just by using the desired avalon signals. For tristate interfaces you need the avalon_tristate_bridge that is already present in SOPC builder."
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 1 2011, 08:50
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(DASM @ Mar 1 2011, 14:46) *
NOTE: most simple component interfaces (even tristate) can be created without any HDL code, just by using the desired avalon signals. For tristate interfaces you need the avalon_tristate_bridge that is already present in SOPC builder."

именно это я и сделал выше. и вам советовал это же несколько недель назад. зачем вам вообще дополнительная прослойка?
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 1 2011, 08:59
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



ну вот нужна.. Тоесть иначе говоря, если мне надо на верилоге создать модуль, шарящий пины в т.ч. tri-state - то мне надо самому реализовывать tri state bridge в нем ? Зачем нужна ? ну допустим перед передачей данных их надо немного обработать и тп. Да и вопрос принципа немаловажен - можно или нет.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 1 2011, 09:08
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(DASM @ Mar 1 2011, 14:59) *
ну вот нужна.. Тоесть иначе говоря, если мне надо на верилоге создать модуль, шарящий пины в т.ч. tri-state - то мне надо самому реализовывать tri state bridge в нем ? Зачем нужна ? ну допустим перед передачей данных их надо немного обработать и тп. Да и вопрос принципа немаловажен - можно или нет.

значит вам надо свой бридж написать. вся логика д.б. в нем, а не в компоненте периферии (он тут по сути заглушка, чтобы показать, что ноги надо выводить наружу)
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 1 2011, 09:14
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



ну ясно все вобщем тогда, штатными средствами значит никак, что я собсно и хотел узнать. Спасибо,
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:49
Рейтинг@Mail.ru


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