карамболь
Dec 8 2010, 13:15
Снова возникли проблемы с времянками. До последнего момента Ниос работал на 75 МГц, но после добавления в систему SRAM, CFI и еще кое чего по мелочи, при компиляции ругается -
Type : Clock Setup: 'altpll0:inst1|altpll:altpll_component|altpll_5pj2:auto_generated|clk[0]'
Slack : -0.802 ns
Required Time : 75.00 MHz ( period = 13.333 ns )
Actual Time : 70.75 MHz ( period = 14.135 ns )
From : nios_test1:sopc_system_inst|cpu_0:the_cpu_0|A_mem_baddr[27]
To : nios_test1:sopc_system_inst|onchip_memory2_0:the_onchip_memory2_0|altsyncram:the
_altsyncram|altsyncram_2bc1:auto_generated|ram_block1a149~porta_we_reg
From Clock : altpll0:inst1|altpll:altpll_component|altpll_5pj2:auto_generated|clk[0]
To Clock : altpll0:inst1|altpll:altpll_component|altpll_5pj2:auto_generated|clk[0]
Failed Paths : 2205
Пока в SDC файле присустствует только это (это только то, что касается тактовой, )
create_clock -period 20.00 -name clk_50 [ get_ports clk_50 ]
create_clock -period 8.00 -name clk_125 [ get_ports clk_125 ]
# Deriving PLL Clocks
derive_pll_clocks
# Providing easier to use clock names
#set System_Clock {enet_pll_inst|altpll_component|auto_generated|pll1|clk[0]}
set clk_75 {inst1|altpll_component|auto_generated|pll1|clk[0]}
set clk1_125 {inst1|altpll_component|auto_generated|pll1|clk[1]}
set clk2_125 {inst1|altpll_component|auto_generated|pll1|clk[2]}
Пока пользовался SDC файлом любезно предоставленным vadimuzzz, но в нем нет констрейнов для тактовой процессора.
Читал "Таймквест для чайников", пытался сделать констрейны по аналогии, но видимо неудачно.
PLL в моей системе является внешней для СОПЦа. На входе PLL clk_50, выход clk_75 завожу на клок Ниоса
Прошу помощи у специалистов.
vadimuzzz
Dec 8 2010, 15:38
это:
Код
create_clock -period 20.00 -name clk_50 [ get_ports clk_50 ]
+ это:
Код
derive_pll_clocks
задают все клоки, в т.ч. тактовую для процессора.
картина далека от ясности, но есть подозрение, что много всего навешали (особенно SRAM и CFI большой разрядности), а бриджами как следует не развязали, вот тактовая и просела. картинку из билдера покажите, еще можно html файлик с названием системы, что билдер генерит, там хорошее summary.
карамболь
Dec 8 2010, 16:04
SRAM 32 разрядов
CFI 16 разрядов
vadimuzzz
Dec 9 2010, 01:44
да, вроде похоже на то, о чем я говорил. тогда курите 4-й том квартус хендбука, глава 11 про
Avalon-MM Pipeline Bridge. он определенно должен помочь поднять тактовую ценой увеличения латентности,
проблема только в том, что решение не единственное. что точно стоит сделать - отрезать таким мостом
периферию типа UART, PIO (на них одного моста хватит). а вот с памятью надо разные варианты
попробовать, с разным количеством мостов, поиграть с топологией.
карамболь
Dec 9 2010, 09:51
спасибо.
У меня еще такая проблема с платой Altera Cyclon III DevBoard, постоянно приходится передергивать JTAG, иначе он отваливается и невозможно записать SOF в FPGA, регулярно при перетыкании вылезает сообщение, что обнаружено неизвестное устройство и с ним какие то проблемы. Это виндовские глюки ? Известно как с этим бороться ? Иногда SOF грузится нормально, но происходят проблемы при загрузке софта для Ниоса
vadimuzzz
Dec 9 2010, 10:25
может кабель или разъемы хреновые, посмотрите сигналы осциллографом
карамболь
Dec 9 2010, 10:55
развязал периферию (rs232, timer, PIO) через pipeline bridge, также добавил отдельный tristate bridge для флешки, пересобрал систему - Fmax не увеличилась. Что еще можно предпринять ?
vadimuzzz
Dec 9 2010, 13:22
ну, самая жирная шина у SRAM, отрежьте ее мостом (pipeline). потом FLASH и т.д. следите не только за Fmax (она по наихудшему сигналу измеряется), но и за количеством сигналов, не уложившихся в констрейны. в общем, поиграйтесь с мостами (можно тупо систему только проц + SRAM взять, замерить Fmax, добавить мост, замерить с ним).
карамболь
Dec 9 2010, 13:34
Цитата(vadimuzzz @ Dec 9 2010, 16:22)

ну, самая жирная шина у SRAM, отрежьте ее мостом (pipeline). потом FLASH и т.д. следите не только за Fmax (она по наихудшему сигналу измеряется), но и за количеством сигналов, не уложившихся в констрейны. в общем, поиграйтесь с мостами (можно тупо систему только проц + SRAM взять, замерить Fmax, добавить мост, замерить с ним).
простите, не совсем понял. Нужно поставить pipeline бридж между ЦПУ и Tristate бриджем SRAM (у меня в данный момент 2 Tristate бриджа, отдельно для SRAM и флешки)?
vadimuzzz
Dec 9 2010, 14:55
Цитата(карамболь @ Dec 9 2010, 19:34)

простите, не совсем понял. Нужно поставить pipeline бридж между ЦПУ и Tristate бриджем SRAM (у меня в данный момент 2 Tristate бриджа, отдельно для SRAM и флешки)?
да, м.б. получится одним обойтись, но надо пробовать разные варианты. смысла в 2 tristate мостах нет, там регистрятся только входы.
карамболь
Dec 9 2010, 15:04
установка pipeline бриджа позволила увеличить частоту на 10 МГц, т.е. в требуемые 75 МГЦ я вписался, но хочется большего, тем более, что у многих
Ниос на 120 МГц работает.
Тут еще такая бяка вылезла -
Type : Clock Setup: 'altpll0:inst1|altpll:altpll_component|altpll_5pj2:auto_generated|clk[2]'
Slack : -2.737 ns
Required Time : 125.00 MHz ( period = 8.000 ns )
Actual Time : N/A
From : nios_test1:sopc_system_inst|triple_speed_ethernet_0:the_triple_speed_ethernet_0|
altera_tse_mac:altera_tse_mac_inst|altera_tse_top_gen_host:top_gen_host_inst|alte
ra_tse_mac_control:U_MAC_CONTROL|altera_tse_register_map:U_REG|command_config[9]
To : nios_test1:sopc_system_inst|triple_speed_ethernet_0:the_triple_speed_ethernet_0|
altera_tse_mac:altera_tse_mac_inst|altera_tse_top_gen_host:top_gen_host_inst|alte
ra_tse_top_w_fifo_10_100_1000:U_MAC_TOP|altera_tse_top_w_fifo:U_MAC|altera_tse_to
p_1geth:U_GETH|altera_tse_mac_tx:U_TX|rd_3[3]
From Clock : clk_50
To Clock : altpll0:inst1|altpll:altpll_component|altpll_5pj2:auto_generated|clk[2]
Failed Paths : 90
Это уже слаки по 125 МГц, от которых тактируется передатчик МАС гигабитный, при это он работает, ставил заглушку, чего передаю, то и принимаю, ошибок не обнаружил, но боюсь на предельных температурах могу поиметь с этими слаками неприятности.
vadimuzzz
Dec 9 2010, 15:42
по поводу Fmax - я никогда не гоняюсь за тактовой, прирост производительности от ее увеличения небольшой, на
FPGA есть другие пути. 120МГц - это для простенькой системы с памятью DDR, при этом сильно не факт, что она реально
быстрее, скажем, системы из SRAM и ниос на 75МГц (сравнение теплого с мягким в общем-то). и в любом случае, имейте в
виду, что увеличение Fmax идет за счет латентности, так что на произвольном доступе идет даже потеря в скорости.
задайте другой критерий, на всю систему в целом. например, пропускная способность TCP/IP - хороший критерий, и для
увеличения ее не надо гнать частоту (вернее, можно, но есть и другие способы).
например (делал недавно), система на 85МГц (неточно, м.б. и меньше) без особого
напряга и оптимизаций "прокачивала" по UDP ~600Мбит.
что касается клоков, то забейте их как false path, т.к. в MAC`е стоят двухклоковые FIFO в обе стороны,
анализировать их не надо.
карамболь
Dec 9 2010, 16:14
большое спасибо. Хочу добавить, что SRAM SRAMу рознь, на альтеровской плате стоит память на 70 нсек, с такой большой производительности не добиться.
А флешка у меня вообще не работает, 100 раз уже все сигналы проверил, все вроде правильно, но не работает, даже LED Flash Active не мигает, SRAM запустилась с полпинка, куда копать ума не приложу. Еще вопрос по поводу паралельной загрузки, насколько я понял у каждой ПЛИС есть определенный набор ног для подключения CFI, нашел в сети документ ep3c120.xls (Pin Information for the Cyclone® III EP3C120 Device), но информация по ножкам в этом документе не стреляет с разводкой на плате Altera Cyclon III DevBoard ? Не подскажите как называется дока, в которой описано куда цеплять загрузочную CFI Flash, я планирую хранить в ней прошивку для FPGA и грузить с нее софт Ниоса в он-чип память.
vadimuzzz
Dec 10 2010, 01:59
ну, в доках на борду посмотрите, там есть схематик. еще там есть qsf-файлик с распиновкой, добавляете его
в qsf проекта (
Код
source cycloneIII_3c120_dev_golden_top.qsf
) и все (только ноги должны называться как в qsf). приложил в аттач.
вообще, для вашей платы есть хорошие примеры. вот, например:
http://nioswiki.com/ExampleDesigns/Nios_II..._Design_Example
карамболь
Dec 10 2010, 12:06
за совет спасибо, правда все не так просто оказалось -
мало добавить - source cycloneIII_3c120_dev_golden_top.qsf
нужно еще править сам файл cycloneIII_3c120_dev_golden_top.qsf
пришлось вставить в строке - set_global_assignment -name TOP_LEVEL_ENTITY golden_top
название своего TOP_LEVEL_ENTITY и еще удалить строки -
set_global_assignment -name VERILOG_FILE golden_top.v
set_global_assignment -name TEXT_FILE backup.txt
зато все пины автоматом определились )
Но все же вопрос распиновки флешки остался открытым, что если я решу в своем железе использовать другую FPGA, в какой доке брать распиновку для CFI или EPCS ?
vadimuzzz
Dec 10 2010, 14:04
Цитата(карамболь @ Dec 10 2010, 18:06)

Но все же вопрос распиновки флешки остался открытым, что если я решу в своем железе использовать другую FPGA, в какой доке брать распиновку для CFI или EPCS ?
а в чем вопрос-то? смотрите хендбук на циклон-3, там все схемы есть. самый простой вариант и самый дешевый - SPI флешки
(Numonyx, например), там всего 4 ноги подключить, объемы есть всякие за копейки. нужна быстрая загрузка - P30 (Intel) или P33(Numonyx), цепляются на выделенную шину. режим через MSEL выставляется.
карамболь
Dec 10 2010, 20:46
для меня главное, чтобы прошивка ПЛИС и программа для НИОСа влезла. Сейчас мой POF весит около 60Мбайт, сколько места он займет в EPCS ?
vadimuzzz
Dec 10 2010, 23:40
какой у вас циклон? 120-й? тогда максимум 28,6 Мбит, видимо в pof избыточность внесена. SPI-флешка на 128 Мбит 4-5 баксов
карамболь
Dec 11 2010, 10:52
спасибо. Думаю, EPCS на 128 Мбит мне хватит с запасом.
vadimuzzz
Dec 11 2010, 12:44
Цитата(карамболь @ Dec 11 2010, 16:52)

спасибо. Думаю, EPCS на 128 Мбит мне хватит с запасом.
главное, альтеровские флешки не берите, у них ценник невменяемый. Spansion, Numonyx - наше всё.
карамболь
Dec 12 2010, 11:49
а заливка конфигурации FPGA и софта через JTAG ? Или понадобится дополнительный костыль типа SFL ? Спасибо.
vadimuzzz
Dec 12 2010, 13:38
найдите в хендбуке на циклон Combining JTAG and AS Configuration Schemes,
при отладке используется JTAG, если надо конфигурацию сохранить в памяти -
используется nios2-flash-programmer или jic (если ниоса в системе нет)
карамболь
Dec 12 2010, 14:18
спасибо
Fynjisx
Feb 15 2012, 07:51
Цитата(vadimuzzz @ Dec 8 2010, 18:38)

это:
Код
create_clock -period 20.00 -name clk_50 [ get_ports clk_50 ]
create_clock -period 8.00 -name clk_125 [ get_ports clk_125 ]
# Deriving PLL Clocks
derive_pll_clocks
# Providing easier to use clock names
#set System_Clock {enet_pll_inst|altpll_component|auto_generated|pll1|clk[0]}
set clk_75 {inst1|altpll_component|auto_generated|pll1|clk[0]}
set clk1_125 {inst1|altpll_component|auto_generated|pll1|clk[1]}
set clk2_125 {inst1|altpll_component|auto_generated|pll1|clk[2]}
задают все клоки, в т.ч. тактовую для процессора.
картина далека от ясности, но есть подозрение, что много всего навешали (особенно SRAM и CFI большой разрядности), а бриджами как следует не развязали, вот тактовая и просела. картинку из билдера покажите, еще можно html файлик с названием системы, что билдер генерит, там хорошее summary.
Скажите вот приведенные выше строки надо добавить в автоматически сгенерированный SOOPC'ом файл "processor_name.sdc"??? Или его не трогат а создать свой собственный и через Setting на него указать?
Fynjisx
Feb 24 2012, 20:01
Цитата(vadimuzzz @ Dec 8 2010, 18:38)

это:
Код
create_clock -period 20.00 -name clk_50 [ get_ports clk_50 ]
+ это:
Код
derive_pll_clocks
задают все клоки, в т.ч. тактовую для процессора.
картина далека от ясности, но есть подозрение, что много всего навешали (особенно SRAM и CFI большой разрядности), а бриджами как следует не развязали, вот тактовая и просела. картинку из билдера покажите, еще можно html файлик с названием системы, что билдер генерит, там хорошее summary.
У меня подобная проблема. Что-тоне могу сообразить насчет вот чего -максимальный отрицательный слак у 66 элементов по hold = -0.032 с выхода pll 50MHz. Т.е уже не порядок. Какими способами это корректится? А то что-то у меня с 50 и уже такие проблемы))). Пока ограничения стоят только по тактовой в системе, как и у автора данного топика.
Цитата(Fynjisx @ Feb 15 2012, 11:51)

Скажите вот приведенные выше строки надо добавить в автоматически сгенерированный SOOPC'ом файл "processor_name.sdc"??? Или его не трогат а создать свой собственный и через Setting на него указать?
Вопрос остался пока не раскрыт. Если кто-нибудь может кратко описать как работать с этими констрейнами буду благодарен.
Что не понятно:
1. Создание - самому файл создавать или он должен генерироваться квартусом. Нигде не могу найти. Надо ли его добавлять в проект.
2. Содержание - про констрейны информация размазана по Quartus II Handbook на столько что незнаю с чего начать. Про скрипты тоже самое. Может посоветуете откуда начать изучение (пока интересуют констрейны и всё что там можно заскриптовать и описание синтаксиса).Немного с констрейнами разобрался, но не понятен вопрос такой:
как я понял для Top-level создаётся файл констрейнов с общими ограничениями, для low-level (для каждого) создаёься файл с "уточнёнными" констрейнами, так вот вопрос: Как я должен указывать какой файл констрейнов относится к какому суб-модулю?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.